You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ri...@apache.org on 2008/11/24 15:16:31 UTC
svn commit: r720200 - in /incubator/qpid/trunk/qpid/java/common/src:
main/java/org/apache/qpid/transport/Connection.java
test/java/org/apache/qpid/transport/ConnectionTest.java
Author: ritchiem
Date: Mon Nov 24 06:16:30 2008
New Revision: 720200
URL: http://svn.apache.org/viewvc?rev=720200&view=rev
Log:
QPID-1251 : Applied patch from JIRA (With correct code style). Augemented ConnectionTest to correctly test for the special os.name = windows case.
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.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=720200&r1=720199&r2=720200&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 Mon Nov 24 06:16:30 2008
@@ -181,7 +181,17 @@
{
ConnectionException t = error;
error = null;
- close();
+ try
+ {
+ close();
+ }
+ catch (ConnectionException ce)
+ {
+ if (!(t instanceof ProtocolVersionException))
+ {
+ throw ce;
+ }
+ }
t.rethrow();
}
Modified: incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java?rev=720200&r1=720199&r2=720200&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java Mon Nov 24 06:16:30 2008
@@ -35,6 +35,8 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
+import java.util.Collections;
+import java.io.IOException;
/**
* ConnectionTest
@@ -56,18 +58,6 @@
port = AvailablePortFinder.getNextAvailable(12000);
- ConnectionDelegate server = new ServerDelegate() {
- @Override public Session getSession(Connection conn, SessionAttach atc)
- {
- Session ssn = super.getSession(conn, atc);
- ssn.setSessionListener(ConnectionTest.this);
- return ssn;
- }
- };
-
- IoAcceptor ioa = new IoAcceptor
- ("localhost", port, ConnectionBinding.get(server));
- ioa.start();
}
public void opened(Session ssn) {}
@@ -163,8 +153,78 @@
return conn;
}
+ public void testProtocolNegotiationExceptionOverridesCloseException() throws Exception
+ {
+ // Force os.name to be windows to exercise code in IoReceiver
+ // that looks for the value of os.name
+ System.setProperty("os.name","windows");
+
+ // Start server as 0-9 to froce a ProtocolVersionException
+ startServer(new ProtocolHeader(1, 0, 9));
+
+ Condition closed = new Condition();
+
+ try
+ {
+ connect(closed);
+ fail("ProtocolVersionException expected");
+ }
+ catch (ProtocolVersionException pve)
+ {
+ //Expected code path
+ }
+ catch (Exception e)
+ {
+ fail("ProtocolVersionException expected. Got:" + e.getMessage());
+ }
+ }
+
+ private void startServer()
+ {
+ startServer(new ProtocolHeader(1, 0, 10));
+ }
+
+ private void startServer(final ProtocolHeader protocolHeader)
+ {
+ ConnectionDelegate server = new ServerDelegate()
+ {
+ @Override
+ public void init(Connection conn, ProtocolHeader hdr)
+ {
+ conn.send(protocolHeader);
+ List<Object> utf8 = new ArrayList<Object>();
+ utf8.add("utf8");
+ conn.connectionStart(null, Collections.EMPTY_LIST, utf8);
+ }
+
+ @Override
+ public Session getSession(Connection conn, SessionAttach atc)
+ {
+ Session ssn = super.getSession(conn, atc);
+ ssn.setSessionListener(ConnectionTest.this);
+ return ssn;
+ }
+ };
+
+ IoAcceptor ioa = null;
+ try
+ {
+ ioa = new IoAcceptor
+ ("localhost", port, ConnectionBinding.get(server));
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ fail("Unable to start Server for test due to:" + e.getMessage());
+ }
+
+ ioa.start();
+ }
+
public void testClosedNotificationAndWriteToClosed() throws Exception
{
+ startServer();
+
Condition closed = new Condition();
Connection conn = connect(closed);
@@ -223,6 +283,8 @@
public void testResumeNonemptyReplayBuffer() throws Exception
{
+ startServer();
+
Connection conn = new Connection();
conn.setConnectionListener(new FailoverConnectionListener());
conn.connect("localhost", port, null, "guest", "guest");
@@ -276,6 +338,8 @@
public void testResumeEmptyReplayBuffer() throws InterruptedException
{
+ startServer();
+
Connection conn = new Connection();
conn.setConnectionListener(new FailoverConnectionListener());
conn.connect("localhost", port, null, "guest", "guest");