QPID-7531: [Java Broker, AMQP 1.0] Prevent possible NullPointerException in dynamic source creation
Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/16caf690 Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/16caf690 Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/16caf690 Branch: refs/heads/master Commit: 16caf69050feb337e8d42b014fc1d85d9c735f5b Parents: 56cf7b8 Author: Lorenz Quack <lqu...@apache.org> Authored: Fri Sep 22 16:27:55 2017 +0100 Committer: Lorenz Quack <lqu...@apache.org> Committed: Thu Sep 28 14:30:17 2017 +0100 ---------------------------------------------------------------------- .../qpid/server/protocol/v1_0/Session_1_0.java | 24 +++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/16caf690/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java ---------------------------------------------------------------------- diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java index 2c44be0..801810e 100644 --- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java +++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java @@ -696,8 +696,15 @@ public class Session_1_0 extends AbstractAMQPSession<Session_1_0, ConsumerTarget if (Boolean.TRUE.equals(source.getDynamic())) { - MessageSource tempQueue = createDynamicSource(link, source.getDynamicNodeProperties()); - source.setAddress(tempQueue.getName()); // todo : temporary topic + MessageSource tempSource = createDynamicSource(link, source.getDynamicNodeProperties()); + if(tempSource != null) + { + source.setAddress(_primaryDomain + tempSource.getName()); + } + else + { + throw new AmqpErrorException(AmqpError.INTERNAL_ERROR, "Cannot create dynamic source"); + } } String address = source.getAddress(); @@ -763,10 +770,10 @@ public class Session_1_0 extends AbstractAMQPSession<Session_1_0, ConsumerTarget return exchangeDestination; } - private MessageSource createDynamicSource(final Link_1_0<?, ?> link, - Map properties) + private MessageSource createDynamicSource(final Link_1_0<?, ?> link, Map properties) throws AmqpErrorException { - final String queueName = _primaryDomain + "TempQueue" + UUID.randomUUID().toString(); + // TODO temporary topics? + final String queueName = "TempQueue" + UUID.randomUUID().toString(); try { Map<String, Object> attributes = convertDynamicNodePropertiesToAttributes(link, properties, queueName); @@ -776,12 +783,7 @@ public class Session_1_0 extends AbstractAMQPSession<Session_1_0, ConsumerTarget } catch (AccessControlException e) { - Error error = new Error(); - error.setCondition(AmqpError.UNAUTHORIZED_ACCESS); - error.setDescription(e.getMessage()); - - _connection.close(error); - return null; + throw new AmqpErrorException(AmqpError.UNAUTHORIZED_ACCESS, e.getMessage()); } catch (AbstractConfiguredObject.DuplicateNameException e) { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org