Author: rhs
Date: Fri Oct 10 12:09:00 2008
New Revision: 703559
URL: http://svn.apache.org/viewvc?rev=703559&view=rev
Log:
QPID-1344: modified Connection to preserve the originating stack traces when
throwing exceptions
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionException.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolVersionException.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/SessionClosedException.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/SessionException.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/TransportException.java
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java?rev=703559&r1=703558&r2=703559&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
Fri Oct 10 12:09:00 2008
@@ -75,7 +75,7 @@
private Object lock = new Object();
private long timeout = 60000;
private ConnectionListener listener = new DefaultConnectionListener();
- private Throwable error = null;
+ private ConnectionException error = null;
private int channelMax = 1;
private String locale;
@@ -172,18 +172,10 @@
if (error != null)
{
- Throwable t = error;
+ ConnectionException t = error;
error = null;
close();
-
- if (t instanceof ProtocolVersionException)
- {
- throw (ProtocolVersionException) t;
- }
- else
- {
- throw new ConnectionException(t);
- }
+ t.rethrow();
}
switch (state)
@@ -325,20 +317,7 @@
public void exception(Throwable t)
{
- synchronized (lock)
- {
- switch (state)
- {
- case OPENING:
- case CLOSING:
- error = t;
- lock.notifyAll();
- break;
- default:
- listener.exception(this, new ConnectionException(t));
- break;
- }
- }
+ exception(new ConnectionException(t));
}
void closeCode(ConnectionClose close)
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionException.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionException.java?rev=703559&r1=703558&r2=703559&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionException.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionException.java
Fri Oct 10 12:09:00 2008
@@ -62,4 +62,9 @@
return close;
}
+ @Override public void rethrow()
+ {
+ throw new ConnectionException(getMessage(), close, this);
+ }
+
}
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolVersionException.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolVersionException.java?rev=703559&r1=703558&r2=703559&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolVersionException.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolVersionException.java
Fri Oct 10 12:09:00 2008
@@ -32,13 +32,18 @@
private final byte major;
private final byte minor;
- public ProtocolVersionException(byte major, byte minor)
+ public ProtocolVersionException(byte major, byte minor, Throwable cause)
{
- super(String.format("version missmatch: %s-%s", major, minor));
+ super(String.format("version mismatch: %s-%s", major, minor), cause);
this.major = major;
this.minor = minor;
}
+ public ProtocolVersionException(byte major, byte minor)
+ {
+ this(major, minor, null);
+ }
+
public byte getMajor()
{
return this.major;
@@ -49,4 +54,9 @@
return this.minor;
}
+ @Override public void rethrow()
+ {
+ throw new ProtocolVersionException(major, minor, this);
+ }
+
}
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/SessionClosedException.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/SessionClosedException.java?rev=703559&r1=703558&r2=703559&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/SessionClosedException.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/SessionClosedException.java
Fri Oct 10 12:09:00 2008
@@ -33,7 +33,17 @@
public SessionClosedException()
{
- super(null);
+ this(null);
+ }
+
+ public SessionClosedException(Throwable cause)
+ {
+ super(null, cause);
+ }
+
+ @Override public void rethrow()
+ {
+ throw new SessionClosedException(this);
}
}
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/SessionException.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/SessionException.java?rev=703559&r1=703558&r2=703559&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/SessionException.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/SessionException.java
Fri Oct 10 12:09:00 2008
@@ -32,15 +32,25 @@
private ExecutionException exception;
- public SessionException(ExecutionException exception)
+ public SessionException(ExecutionException exception, Throwable cause)
{
- super(String.valueOf(exception));
+ super(String.valueOf(exception), cause);
this.exception = exception;
}
+ public SessionException(ExecutionException exception)
+ {
+ this(exception, null);
+ }
+
public ExecutionException getException()
{
return exception;
}
+ @Override public void rethrow()
+ {
+ throw new SessionException(exception, this);
+ }
+
}
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/TransportException.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/TransportException.java?rev=703559&r1=703558&r2=703559&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/TransportException.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/TransportException.java
Fri Oct 10 12:09:00 2008
@@ -43,4 +43,9 @@
super(cause);
}
+ public void rethrow()
+ {
+ throw new TransportException(getMessage(), this);
+ }
+
}