/** {@inheritDoc} */
@Override
public OperationResult execute(final OperationContext context, final ModelNode operation, final ResultHandler resultHandler) {
final PathAddress rootAddress = PathAddress.pathAddress(PathAddress.pathAddress(operation.require(OP_ADDR)).getLastElement());
final ModelNode result = new ModelNode();
final ModelNode subModel = context.getSubModel();
final ModelNode subsystemAdd = new ModelNode();
subsystemAdd.get(OP).set(ADD);
subsystemAdd.get(OP_ADDR).set(rootAddress.toModelNode());
result.add(subsystemAdd);
if(subModel.hasDefined(CommonAttributes.CONNECTION_FACTORY)) {
for(final Property property : subModel.get(CommonAttributes.CONNECTION_FACTORY).asPropertyList()) {
final ModelNode address = rootAddress.toModelNode();
address.add(CommonAttributes.CONNECTION_FACTORY, property.getName());
result.add(ConnectionFactoryAdd.getAddOperation(address, property.getValue()));
}
}
if(subModel.hasDefined(CommonAttributes.QUEUE)) {
for(final Property property : subModel.get(CommonAttributes.QUEUE).asPropertyList()) {
final ModelNode address = rootAddress.toModelNode();
address.add(CommonAttributes.QUEUE, property.getName());
result.add(JMSQueueAdd.getOperation(address, property.getValue()));
}
}
if(subModel.hasDefined(CommonAttributes.TOPIC)) {
for(final Property property : subModel.get(CommonAttributes.TOPIC).asPropertyList()) {
final ModelNode address = rootAddress.toModelNode();
address.add(CommonAttributes.TOPIC, property.getName());
result.add(JMSTopicAdd.getOperation(address, property.getValue()));
}
}