This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/master by this push:
new 2ec96bf ARTEMIS-2488: Handle the case where source address is null
new 8d9cf04 This closes #2834
2ec96bf is described below
commit 2ec96bf46de0366fcf5332eb87eacb0f27f09db2
Author: Ulf Lilleengen <[email protected]>
AuthorDate: Fri Sep 13 16:44:01 2019 +0200
ARTEMIS-2488: Handle the case where source address is null
---
.../amqp/proton/ProtonServerSenderContext.java | 2 +-
.../amqp/proton/ProtonServerSenderContextTest.java | 54 ++++++++++++++++++++++
2 files changed, 55 insertions(+), 1 deletion(-)
diff --git
a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
index 580c4ce..8c4495a 100644
---
a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
+++
b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
@@ -320,7 +320,7 @@ public class ProtonServerSenderContext extends
ProtonInitializable implements Pr
addressToUse =
SimpleString.toSimpleString(CompositeAddress.extractAddressName(source.getAddress()));
queueNameToUse =
SimpleString.toSimpleString(CompositeAddress.extractQueueName(source.getAddress()));
} else {
- addressToUse = new SimpleString(source.getAddress());
+ addressToUse = SimpleString.toSimpleString(source.getAddress());
}
//check to see if the client has defined how we act
boolean clientDefined = hasCapabilities(TOPIC, source) ||
hasCapabilities(QUEUE, source);
diff --git
a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContextTest.java
b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContextTest.java
new file mode 100644
index 0000000..9b2980d
--- /dev/null
+++
b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContextTest.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.artemis.protocol.amqp.proton;
+
+import org.apache.activemq.artemis.core.server.AddressQueryResult;
+import org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback;
+import
org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPNotFoundException;
+import org.apache.qpid.proton.amqp.messaging.Source;
+import org.apache.qpid.proton.engine.Sender;
+import org.junit.Test;
+
+import java.util.Collections;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class ProtonServerSenderContextTest {
+
+ @Test(expected = ActiveMQAMQPNotFoundException.class)
+ public void testAcceptsNullSourceAddressWhenInitialising() throws Exception
{
+ Sender mockSender = mock(Sender.class);
+ AMQPConnectionContext mockConnContext =
mock(AMQPConnectionContext.class);
+
+ AMQPSessionCallback mockSessionCallback =
mock(AMQPSessionCallback.class);
+
+ AddressQueryResult queryResult = new AddressQueryResult(null,
Collections.emptySet(), 0, false, false, false, false, 0);
+ when(mockSessionCallback.addressQuery(any(), any(),
anyBoolean())).thenReturn(queryResult);
+ ProtonServerSenderContext sc = new ProtonServerSenderContext(
mockConnContext, mockSender, null, mockSessionCallback);
+
+ Source source = new Source();
+ source.setAddress(null);
+ when(mockSender.getRemoteSource()).thenReturn(source);
+
+
+ sc.initialise();
+ }
+
+}