private void parseDivertConfiguration(final Element e, final Configuration mainConfig) { String name = e.getAttribute("name"); String routingName = getString(e, "routing-name", null, Validators.NO_CHECK); String address = getString(e, "address", null, Validators.NOT_NULL_OR_EMPTY); String forwardingAddress = getString(e, "forwarding-address", null, Validators.NOT_NULL_OR_EMPTY); boolean exclusive = getBoolean(e, "exclusive", ActiveMQDefaultConfiguration.isDefaultDivertExclusive()); String transformerClassName = getString(e, "transformer-class-name", null, Validators.NO_CHECK); ComponentConfigurationRoutingType routingType = ComponentConfigurationRoutingType.valueOf(getString(e, "routing-type", ActiveMQDefaultConfiguration.getDefaultDivertRoutingType(), Validators.COMPONENT_ROUTING_TYPE)); TransformerConfiguration transformerConfiguration = null; String filterString = null; NodeList children = e.getChildNodes(); for (int j = 0; j < children.getLength(); j++) { Node child = children.item(j); if (child.getNodeName().equals("filter")) { filterString = getAttributeValue(child, "string"); } else if (child.getNodeName().equals("transformer")) { transformerConfiguration = getTransformerConfiguration(child); } } if (transformerConfiguration == null && transformerClassName != null) { transformerConfiguration = getTransformerConfiguration(transformerClassName); } DivertConfiguration config = new DivertConfiguration().setName(name).setRoutingName(routingName).setAddress(address).setForwardingAddress(forwardingAddress).setExclusive(exclusive).setFilterString(filterString).setTransformerConfiguration(transformerConfiguration).setRoutingType(routingType); mainConfig.getDivertConfigurations().add(config); }
static DivertConfiguration createDivertConfiguration(final OperationContext context, String name, ModelNode model) throws OperationFailedException { final ModelNode routingNode = DivertDefinition.ROUTING_NAME.resolveModelAttribute(context, model); final String routingName = routingNode.isDefined() ? routingNode.asString() : null; final String address = DivertDefinition.ADDRESS.resolveModelAttribute(context, model).asString(); final String forwardingAddress = DivertDefinition.FORWARDING_ADDRESS.resolveModelAttribute(context, model).asString(); final boolean exclusive = DivertDefinition.EXCLUSIVE.resolveModelAttribute(context, model).asBoolean(); final ModelNode filterNode = CommonAttributes.FILTER.resolveModelAttribute(context, model); final String filter = filterNode.isDefined() ? filterNode.asString() : null; DivertConfiguration config = new DivertConfiguration() .setName(name) .setRoutingName(routingName) .setAddress(address) .setForwardingAddress(forwardingAddress) .setExclusive(exclusive) .setFilterString(filter); final ModelNode transformerClassName = CommonAttributes.TRANSFORMER_CLASS_NAME.resolveModelAttribute(context, model); if (transformerClassName.isDefined()) { config.setTransformerConfiguration(new TransformerConfiguration(transformerClassName.asString())); } return config; }
static DivertConfiguration createDivertConfiguration(final OperationContext context, String name, ModelNode model) throws OperationFailedException { final ModelNode routingNode = DivertDefinition.ROUTING_NAME.resolveModelAttribute(context, model); final String routingName = routingNode.isDefined() ? routingNode.asString() : null; final String address = DivertDefinition.ADDRESS.resolveModelAttribute(context, model).asString(); final String forwardingAddress = DivertDefinition.FORWARDING_ADDRESS.resolveModelAttribute(context, model).asString(); final boolean exclusive = DivertDefinition.EXCLUSIVE.resolveModelAttribute(context, model).asBoolean(); final ModelNode filterNode = CommonAttributes.FILTER.resolveModelAttribute(context, model); final String filter = filterNode.isDefined() ? filterNode.asString() : null; DivertConfiguration config = new DivertConfiguration() .setName(name) .setRoutingName(routingName) .setAddress(address) .setForwardingAddress(forwardingAddress) .setExclusive(exclusive) .setFilterString(filter); final ModelNode transformerClassName = CommonAttributes.TRANSFORMER_CLASS_NAME.resolveModelAttribute(context, model); if (transformerClassName.isDefined()) { config.setTransformerConfiguration(new TransformerConfiguration(transformerClassName.asString())); } return config; }
@Override public void createDivert(final String name, final String routingName, final String address, final String forwardingAddress, final boolean exclusive, final String filterString, final String transformerClassName, final Map<String, String> transformerProperties, final String routingType) throws Exception { checkStarted(); clearIO(); try { TransformerConfiguration transformerConfiguration = transformerClassName == null ? null : new TransformerConfiguration(transformerClassName).setProperties(transformerProperties); DivertConfiguration config = new DivertConfiguration().setName(name).setRoutingName(routingName).setAddress(address).setForwardingAddress(forwardingAddress).setExclusive(exclusive).setFilterString(filterString).setTransformerConfiguration(transformerConfiguration).setRoutingType(ComponentConfigurationRoutingType.valueOf(routingType)); server.deployDivert(config); } finally { blockOnIO(); } }
@Override @Before public void setUp() throws Exception { super.setUp(); CoreQueueConfiguration queueConfig = new CoreQueueConfiguration().setAddress(RandomUtil.randomString()).setName(RandomUtil.randomString()).setDurable(false); CoreQueueConfiguration forwardQueueConfig = new CoreQueueConfiguration().setAddress(RandomUtil.randomString()).setName(RandomUtil.randomString()).setDurable(false); divertConfig = new DivertConfiguration().setName(RandomUtil.randomString()).setRoutingName(RandomUtil.randomString()).setAddress(queueConfig.getAddress()).setForwardingAddress(forwardQueueConfig.getAddress()).setExclusive(RandomUtil.randomBoolean()). setTransformerConfiguration(new TransformerConfiguration(AddHeadersTransformer.class.getName())); TransportConfiguration connectorConfig = new TransportConfiguration(INVM_CONNECTOR_FACTORY); Configuration config = createDefaultInVMConfig().setJMXManagementEnabled(true).addQueueConfiguration(queueConfig).addQueueConfiguration(forwardQueueConfig).addDivertConfiguration(divertConfig).addConnectorConfiguration(connectorConfig.getName(), connectorConfig); server = addServer(ActiveMQServers.newActiveMQServer(config, mbeanServer, false)); server.start(); }