From 5e439283c99363706a649b2a7cd92cd3b7f8a5ae Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Wed, 28 Nov 2012 16:34:40 +0000 Subject: QPID-4472 : [Java Broker] NPE with non-SASL AMQP 1.0 Connection merged from trunk r1413627, r1413724 git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.20@1414799 13f79535-47bb-0310-9956-ffa450edef68 --- .../protocol/MultiVersionProtocolEngine.java | 2 +- .../qpid/server/protocol/ProtocolEngine_1_0_0.java | 6 ++++- .../MultiVersionProtocolEngineFactoryTest.java | 26 ++++++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java index cb7680e9b6..c62f1b56f0 100755 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java @@ -329,7 +329,7 @@ public class MultiVersionProtocolEngine implements ServerProtocolEngine public ServerProtocolEngine getProtocolEngine() { - return new ProtocolEngine_1_0_0(_appRegistry,_id); + return new ProtocolEngine_1_0_0(_network, _appRegistry,_id); } }; diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java index da70e497d6..b5110a21d8 100755 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java @@ -97,10 +97,14 @@ public class ProtocolEngine_1_0_0 implements ServerProtocolEngine, FrameOutputHa - public ProtocolEngine_1_0_0(final IApplicationRegistry appRegistry, long id) + public ProtocolEngine_1_0_0(final NetworkConnection networkDriver, final IApplicationRegistry appRegistry, long id) { _appRegistry = appRegistry; _connectionId = id; + if(networkDriver != null) + { + setNetworkConnection(networkDriver, networkDriver.getSender()); + } } diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactoryTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactoryTest.java index 6081be8efd..e951dd494b 100644 --- a/qpid/java/broker/src/test/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactoryTest.java +++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactoryTest.java @@ -20,12 +20,31 @@ */ package org.apache.qpid.server.protocol; +import java.util.UUID; +import java.util.concurrent.ScheduledFuture; import org.apache.commons.configuration.XMLConfiguration; import org.apache.qpid.protocol.ServerProtocolEngine; +import org.apache.qpid.server.binding.BindingFactory; import org.apache.qpid.server.configuration.ServerConfiguration; +import org.apache.qpid.server.configuration.VirtualHostConfiguration; +import org.apache.qpid.server.connection.IConnectionRegistry; +import org.apache.qpid.server.exchange.ExchangeFactory; +import org.apache.qpid.server.exchange.ExchangeRegistry; +import org.apache.qpid.server.protocol.v1_0.LinkRegistry; +import org.apache.qpid.server.queue.QueueRegistry; import org.apache.qpid.server.registry.ApplicationRegistry; +import org.apache.qpid.server.registry.IApplicationRegistry; +import org.apache.qpid.server.security.*; +import org.apache.qpid.server.stats.StatisticsCounter; +import org.apache.qpid.server.store.MessageStore; +import org.apache.qpid.server.txn.DtxRegistry; import org.apache.qpid.server.util.TestApplicationRegistry; +import org.apache.qpid.server.virtualhost.HouseKeepingTask; +import org.apache.qpid.server.virtualhost.State; +import org.apache.qpid.server.virtualhost.VirtualHost; +import org.apache.qpid.server.virtualhost.VirtualHostImpl; +import org.apache.qpid.server.virtualhost.VirtualHostRegistry; import org.apache.qpid.test.utils.QpidTestCase; import org.apache.qpid.transport.TestNetworkConnection; @@ -42,6 +61,12 @@ public class MultiVersionProtocolEngineFactoryTest extends QpidTestCase //the factory needs a registry instance ApplicationRegistry.initialise(new TestApplicationRegistry(new ServerConfiguration(new XMLConfiguration()))); + // AMQP 1-0 connection needs default vhost to be present + VirtualHostRegistry virtualHostRegistry = ApplicationRegistry.getInstance().getVirtualHostRegistry(); + VirtualHostImpl vhostImpl = new VirtualHostImpl(ApplicationRegistry.getInstance(), new VirtualHostConfiguration("default",new XMLConfiguration())); + virtualHostRegistry.registerVirtualHost(vhostImpl); + virtualHostRegistry.setDefaultVirtualHostName("default"); + } protected void tearDown() @@ -160,6 +185,7 @@ public class MultiVersionProtocolEngineFactoryTest extends QpidTestCase assertEquals("ID was not as expected following receipt of the AMQP version header", expectedID, engine.getConnectionId()); previousId = expectedID; + engine.closed(); } } -- cgit v1.2.1