@Override public void forceUpdateRegistration(ConnectorId id, ConnectorDescription connectorDescription) { if (!instances.containsKey(id)) { forceCreateService(id, connectorDescription); } else if (connectorDescription.getAttributes() == null) { forceUpdateAttributes(id, connectorDescription.getAttributes()); } Map<String, Object> properties = connectorDescription.getProperties(); if (properties != null) { updateProperties(id, properties); } };
@Override public void updateRegistration(ConnectorId id, ConnectorDescription connectorDescription) throws ConnectorValidationFailedException { if (!instances.containsKey(id)) { createService(id, connectorDescription); } else if (connectorDescription.getAttributes() != null) { updateAttributes(id, connectorDescription.getAttributes()); } Map<String, Object> properties = connectorDescription.getProperties(); if (properties != null) { updateProperties(id, properties); } }
private void applyConfigChanges(ConnectorDescription old, ConnectorDescription diff) { Map<String, String> updatedAttributes = updateAttributes(old.getAttributes(), diff.getAttributes()); old.setAttributes(updatedAttributes); updateProperties(old.getProperties(), diff.getProperties()); }
private ConnectorDescription applyChanges(ConnectorDescription persistenceContent, ChangeSet changes) throws MergeException { MapDifference<String, String> changedAttributes = changes.getChangedAttributes(); Map<String, String> attributes = persistenceContent.getAttributes(); Map<String, String> newAttributes = ConfigUtils.updateMap(attributes, changedAttributes); Map<String, Object> newProperties = ConfigUtils.updateMap(persistenceContent.getProperties(), changes.getChangedProperties()); return new ConnectorDescription(newAttributes, new Hashtable<String, Object>(newProperties)); }
private void finishCreatingInstance(ConnectorId id, ConnectorDescription description, DomainProvider domainProvider, ConnectorInstanceFactory factory) { Connector serviceInstance = factory.createNewInstance(id.toString()); if (serviceInstance == null) { throw new IllegalStateException("Factory cannot create a new service for instance id " + id.toString()); } factory.applyAttributes(serviceInstance, description.getAttributes()); serviceInstance.setDomainId(id.getDomainType()); serviceInstance.setConnectorId(id.getConnectorType()); String[] clazzes = new String[]{ OpenEngSBService.class.getName(), Domain.class.getName(), domainProvider.getDomainInterface().getName(), }; Map<String, Object> properties = populatePropertiesWithRequiredAttributes(description.getProperties(), id); ServiceRegistration serviceRegistration = bundleContext.registerService(clazzes, serviceInstance, MapAsDictionary.wrap(properties)); registrations.put(id, serviceRegistration); instances.put(id, serviceInstance); }
private void createService(ConnectorId id, ConnectorDescription description) throws ConnectorValidationFailedException { DomainProvider domainProvider = getDomainProvider(id.getDomainType()); ConnectorInstanceFactory factory = getConnectorFactory(id); Map<String, String> errors = factory.getValidationErrors(description.getAttributes()); if (!errors.isEmpty()) { throw new ConnectorValidationFailedException(errors); } finishCreatingInstance(id, description, domainProvider, factory); }
private void forceCreateService(ConnectorId id, ConnectorDescription description) { DomainProvider domainProvider = getDomainProvider(id.getDomainType()); ConnectorInstanceFactory factory = getConnectorFactory(id); Connector serviceInstance = factory.createNewInstance(id.toString()); factory.applyAttributes(serviceInstance, description.getAttributes()); finishCreatingInstance(id, description, domainProvider, factory); }