summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsb <sb@openoffice.org>2011-01-20 10:22:28 +0100
committersb <sb@openoffice.org>2011-01-20 10:22:28 +0100
commit2a23ff5f014e266c24c39f862815edbd7fddb724 (patch)
treecc0d12c483942b35a8e99b2c462847b746a571dd
parent9616f9f8306e88c42eda6141fd895cbaf67ba59b (diff)
sb139: #i116530# improve Java URP bridge error notification by utilizing the java.lang.Throwable cause facility
-rw-r--r--jurt/com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge.java15
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/IThreadPool.java6
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/JobQueue.java9
3 files changed, 17 insertions, 13 deletions
diff --git a/jurt/com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge.java b/jurt/com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge.java
index e37273be6902..221870b0b035 100644
--- a/jurt/com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge.java
+++ b/jurt/com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge.java
@@ -155,7 +155,7 @@ public class java_remote_bridge
new Job(obj, java_remote_bridge.this, msg));
}
} catch (Throwable e) {
- dispose(new DisposedException(e.toString()));
+ dispose(e);
}
}
@@ -478,12 +478,12 @@ public class java_remote_bridge
dispose = _life_count <= 0;
}
if (dispose) {
- dispose(new com.sun.star.uno.RuntimeException("end of life"));
+ dispose(new Throwable("end of life"));
}
}
public void dispose() {
- dispose(new com.sun.star.uno.RuntimeException("user dispose"));
+ dispose(new Throwable("user dispose"));
}
private void dispose(Throwable throwable) {
@@ -604,7 +604,8 @@ public class java_remote_bridge
_iProtocol.writeReply(exception, threadId, result);
} catch (IOException e) {
dispose(e);
- throw new DisposedException("unexpected " + e);
+ throw (DisposedException)
+ (new DisposedException("unexpected " + e).initCause(e));
} catch (RuntimeException e) {
dispose(e);
throw e;
@@ -633,9 +634,9 @@ public class java_remote_bridge
oid, TypeDescription.getTypeDescription(type), operation,
threadId, params);
} catch (IOException e) {
- DisposedException d = new DisposedException(e.toString());
- dispose(d);
- throw d;
+ dispose(e);
+ throw (DisposedException)
+ new DisposedException(e.toString()).initCause(e);
}
if (sync && Thread.currentThread() != _messageDispatcher) {
result = _iThreadPool.enter(handle, threadId);
diff --git a/jurt/com/sun/star/lib/uno/environments/remote/IThreadPool.java b/jurt/com/sun/star/lib/uno/environments/remote/IThreadPool.java
index c70ccfa7e934..71961737fd55 100644
--- a/jurt/com/sun/star/lib/uno/environments/remote/IThreadPool.java
+++ b/jurt/com/sun/star/lib/uno/environments/remote/IThreadPool.java
@@ -110,10 +110,10 @@ public interface IThreadPool {
/**
* Disposes this thread pool, thus releasing
- * all threads by throwing the given
- * <code>Throwable</code>.
+ * all threads by throwing a <code>DisposedException</code> with the given
+ * <code>Throwable</code> cause.
* <p>
- * @param throwing the Throwable
+ * @param throwing the cause
*/
public void dispose(Throwable throwable);
diff --git a/jurt/com/sun/star/lib/uno/environments/remote/JobQueue.java b/jurt/com/sun/star/lib/uno/environments/remote/JobQueue.java
index f7568a30cef7..62e49cc44f16 100644
--- a/jurt/com/sun/star/lib/uno/environments/remote/JobQueue.java
+++ b/jurt/com/sun/star/lib/uno/environments/remote/JobQueue.java
@@ -27,6 +27,7 @@
package com.sun.star.lib.uno.environments.remote;
+import com.sun.star.lang.DisposedException;
/**
* The <code>JobQueue</code> implements a queue for jobs.
@@ -200,7 +201,7 @@ public class JobQueue {
* @return a job or null if timed out
* @param waitTime the maximum amount of time to wait for a job
*/
- private Job removeJob(int waitTime) throws Throwable {
+ private Job removeJob(int waitTime) {
if(DEBUG) System.err.println("##### " + getClass().getName() + ".removeJob:" + _head + " " + _threadId);
Job job = null;
@@ -210,7 +211,8 @@ public class JobQueue {
while(_head == null && (waitTime == 0 || !waited)) {
if(_doDispose == _disposeId) {
_doDispose = null;
- throw _throwable;
+ throw (DisposedException)
+ new DisposedException().initCause(_throwable);
}
// notify sync queues
@@ -250,7 +252,8 @@ public class JobQueue {
if(_doDispose == _disposeId) {
_doDispose = null;
- throw _throwable;
+ throw (DisposedException)
+ new DisposedException().initCause(_throwable);
}
try {