in systests/src/main/java/org/apache/qpid/systest/core/brokerj/AmqpManagementFacade.java [67:141]
public Map<String, Object> createEntityUsingAmqpManagement(final String name,
final String type,
Map<String, Object> attributes,
final Session session)
throws JMSException
{
Destination replyToDestination = session.createQueue(AMQP_0_X_REPLY_TO_DESTINATION);
Destination replyConsumerDestination = session.createQueue(AMQP_0_X_CONSUMER_REPLY_DESTINATION);
MessageConsumer consumer = session.createConsumer(replyConsumerDestination);
MessageProducer producer = session.createProducer(session.createQueue(_managementAddress));
MapMessage createMessage = session.createMapMessage();
createMessage.setStringProperty("type", type);
createMessage.setStringProperty("operation", "CREATE");
createMessage.setString("name", name);
createMessage.setString("object-path", name);
createMessage.setJMSReplyTo(replyToDestination);
for (Map.Entry<String, Object> entry : attributes.entrySet())
{
createMessage.setObject(entry.getKey(), entry.getValue());
}
producer.send(createMessage);
if (session.getTransacted())
{
session.commit();
}
producer.close();
Message response = consumer.receive(getManagementResponseTimeout());
try
{
if (response != null)
{
int statusCode = response.getIntProperty("statusCode");
if (statusCode == 201)
{
if (response instanceof MapMessage)
{
MapMessage bodyMap = (MapMessage) response;
Map<String, Object> result = new HashMap<>();
Enumeration keys = bodyMap.getMapNames();
while (keys.hasMoreElements())
{
final String key = String.valueOf(keys.nextElement());
Object value = bodyMap.getObject(key);
result.put(key, value);
}
return result;
}
else if (response instanceof ObjectMessage)
{
Object body = ((ObjectMessage) response).getObject();
if (body instanceof Map)
{
@SuppressWarnings("unchecked")
Map<String, Object> bodyMap = (Map<String, Object>) body;
return new HashMap<>(bodyMap);
}
}
}
else
{
throw new OperationUnsuccessfulException(response.getStringProperty("statusDescription"),
statusCode);
}
}
throw new OperationUnsuccessfulException("Cannot get the results from a management create operation", -1);
}
finally
{
consumer.close();
}
}