static ConnectorServiceConfiguration createConnectorServiceConfiguration(final OperationContext context, final String name, final ModelNode model) throws OperationFailedException { final String factoryClass = CommonAttributes.FACTORY_CLASS.resolveModelAttribute(context, model).asString(); Map<String, String> unwrappedParameters = CommonAttributes.PARAMS.unwrap(context, model); Map<String, Object> parameters = new HashMap<String, Object>(unwrappedParameters); return new ConnectorServiceConfiguration() .setFactoryClassName(factoryClass) .setParams(parameters) .setName(name); }
@Override public int hashCode() { int result = getConnectorName() != null ? getConnectorName().hashCode() : 0; result = 31 * result + (getFactoryClassName() != null ? getFactoryClassName().hashCode() : 0); result = 31 * result + (getParams() != null ? getParams().hashCode() : 0); return result; } }
@Override public Collection<Pair<ConnectorServiceFactory, ConnectorServiceConfiguration>> getConnectorServices(List<ConnectorServiceConfiguration> configs) { if (configs != null) { for (final ConnectorServiceConfiguration config : configs) { if (connectorServices.get(config.getConnectorName()) == null) { ConnectorServiceFactory factory = loadClass(config.getFactoryClassName()); addConnectorService(factory, config); } } } return connectorServices.values(); }
public synchronized void createService(ConnectorServiceConfiguration info, ConnectorServiceFactory factory) throws Exception { if (connectors.containsKey(info.getConnectorName())) { throw ActiveMQExceptionType.GENERIC_EXCEPTION.createException("Connector service " + info.getConnectorName() + " already created"); } if (info.getParams() != null) { Set<String> invalid = ConfigurationHelper.checkKeys(factory.getAllowableProperties(), info.getParams().keySet()); if (!invalid.isEmpty()) { throw ActiveMQExceptionType.GENERIC_EXCEPTION.createException("Invalid connector keys for connector service " + info.getConnectorName() + ": " + ConfigurationHelper.stringSetToCommaListString(invalid)); } } Set<String> invalid = ConfigurationHelper.checkKeysExist(factory.getRequiredProperties(), info.getParams().keySet()); if (!invalid.isEmpty()) { throw ActiveMQExceptionType.GENERIC_EXCEPTION.createException("Missing connector keys for connector service " + info.getConnectorName() + ": " + ConfigurationHelper.stringSetToCommaListString(invalid)); } ConnectorService connectorService = factory.createConnectorService(info.getConnectorName(), info.getParams(), storageManager, postOffice, scheduledPool); connectorService.start(); connectors.put(info.getConnectorName(), connectorService); }
@Override public void removeConnectorService(ConnectorServiceConfiguration configuration) { connectorServices.remove(configuration.getConnectorName()); }
@Override public ConnectorServiceFactory getConnectorService(ConnectorServiceConfiguration configuration) { return loadClass(configuration.getFactoryClassName()); }
@Override public void addConnectorService(ConnectorServiceFactory connectorServiceFactory, ConnectorServiceConfiguration configuration) { connectorServices.put(configuration.getConnectorName(), new Pair<>(connectorServiceFactory, configuration)); }
static ConnectorServiceConfiguration createConnectorServiceConfiguration(final OperationContext context, final String name, final ModelNode model) throws OperationFailedException { final String factoryClass = CommonAttributes.FACTORY_CLASS.resolveModelAttribute(context, model).asString(); Map<String, String> unwrappedParameters = CommonAttributes.PARAMS.unwrap(context, model); Map<String, Object> parameters = new HashMap<String, Object>(unwrappedParameters); return new ConnectorServiceConfiguration() .setFactoryClassName(factoryClass) .setParams(parameters) .setName(name); }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ConnectorServiceConfiguration that = (ConnectorServiceConfiguration) o; if (getFactoryClassName() != null ? !getFactoryClassName().equals(that.getFactoryClassName()) : that.getFactoryClassName() != null) return false; if (getConnectorName() != null ? !getConnectorName().equals(that.getConnectorName()) : that.getConnectorName() != null) return false; if (getParams() != null ? !getParams().equals(that.getParams()) : that.getParams() != null) return false; return true; }
@Override public synchronized void start() throws Exception { Collection<Pair<ConnectorServiceFactory, ConnectorServiceConfiguration>> connectorServiceFactories = serviceRegistry.getConnectorServices(configuration.getConnectorServiceConfigurations()); for (Pair<ConnectorServiceFactory, ConnectorServiceConfiguration> pair : connectorServiceFactories) { try { createService(pair.getB(), pair.getA()); } catch (Throwable e) { ActiveMQServerLogger.LOGGER.errorStartingConnectorService(e, pair.getB().getConnectorName()); } } isStarted = true; }
private ConnectorServiceConfiguration parseConnectorService(final Element e) { Node nameNode = e.getAttributes().getNamedItem("name"); String name = nameNode != null ? nameNode.getNodeValue() : null; String clazz = getString(e, "factory-class", null, Validators.NOT_NULL_OR_EMPTY); Map<String, Object> params = new HashMap<>(); NodeList paramsNodes = e.getElementsByTagName("param"); for (int i = 0; i < paramsNodes.getLength(); i++) { Node paramNode = paramsNodes.item(i); NamedNodeMap attributes = paramNode.getAttributes(); Node nkey = attributes.getNamedItem("key"); String key = nkey.getTextContent(); Node nValue = attributes.getNamedItem("value"); params.put(key, nValue.getTextContent()); } return new ConnectorServiceConfiguration().setFactoryClassName(clazz).setParams(params).setName(name); } }
@Override public void createConnectorService(final String name, final String factoryClass, final Map<String, Object> parameters) throws Exception { checkStarted(); clearIO(); try { final ConnectorServiceConfiguration config = new ConnectorServiceConfiguration().setName(name).setFactoryClassName(factoryClass).setParams(parameters); ConnectorServiceFactory factory = server.getServiceRegistry().getConnectorService(config); server.getConnectorsService().createService(config, factory); } finally { blockOnIO(); } }
/** * Test that the connectors added via the config are added to the connectors service. * * @throws Exception */ @Test public void testConnectorsServiceUsesConfiguredConnectorServices() throws Exception { ConnectorServiceConfiguration connectorServiceConfiguration = new ConnectorServiceConfiguration().setFactoryClassName(FakeConnectorServiceFactory.class.getCanonicalName()).setParams(new HashMap<String, Object>()).setName("myfact"); List<ConnectorServiceConfiguration> connectorServiceConfigurations = new ArrayList<>(); connectorServiceConfigurations.add(connectorServiceConfiguration); configuration.setConnectorServiceConfigurations(connectorServiceConfigurations); ConnectorsService connectorsService = new ConnectorsService(configuration, null, null, null, serviceRegistry); connectorsService.start(); assertTrue(connectorsService.getConnectors().size() == 1); }
/** * Test that the connectors added via the service registry are added to the connectorsService, * * @throws Exception */ @Test public void testConnectorsServiceUsesInjectedConnectorServiceFactory() throws Exception { ConnectorServiceConfiguration connectorServiceConfiguration = new ConnectorServiceConfiguration().setFactoryClassName(null).setParams(new HashMap<String, Object>()).setName("myfact"); // Creates a fake connector service factory that returns the fake connector service object ConnectorService connectorService = new FakeConnectorService(); FakeConnectorServiceFactory connectorServiceFactory = new FakeConnectorServiceFactory(); serviceRegistry.addConnectorService(connectorServiceFactory, connectorServiceConfiguration); ConnectorsService connectorsService = new ConnectorsService(configuration, null, null, null, serviceRegistry); connectorsService.start(); assertTrue(connectorsService.getConnectors().size() == 1); assertTrue(connectorsService.getConnectors().values().contains(connectorServiceFactory.getConnectorService())); }
public void testConnectorServiceUsedDirectly() throws Exception { ConnectorServiceConfiguration connectorServiceConfiguration = new ConnectorServiceConfiguration().setFactoryClassName(FakeConnectorServiceFactory.class.getCanonicalName()).setParams(new HashMap<String, Object>()).setName("myfact"); configuration.setConnectorServiceConfigurations(Arrays.asList(connectorServiceConfiguration)); ConnectorServiceConfiguration additionalServiceConfiguration = new ConnectorServiceConfiguration().setFactoryClassName(FakeConnectorServiceFactory.class.getCanonicalName()).setParams(new HashMap<String, Object>()).setName("myfact2"); connectorsService.createService(additionalServiceConfiguration, connectorServiceFactory); assertEquals(2, connectorsService.getConnectors().size());