/** * parses a full connector id (format <domainType>+<connectorType>+<instanceId>) and sets the corresponding values * in the event. Example: "scm+git+projectx-main-repo" */ public void parseConnectorId(String connectorId) { ConnectorId id = ConnectorId.fromFullId(connectorId); domainId = id.getDomainType(); connectorId = id.getConnectorType(); instanceId = id.getInstanceId(); }
private Map<String, Object> populatePropertiesWithRequiredAttributes( final Map<String, Object> properties, ConnectorId id) { Map<String, Object> result = new HashMap<String, Object>(properties); for (Entry<String, Object> entry : properties.entrySet()) { result.put(entry.getKey(), entry.getValue()); } result.put(Constants.DOMAIN_KEY, id.getDomainType()); result.put(Constants.CONNECTOR_KEY, id.getConnectorType()); result.put(Constants.ID_KEY, id.toFullID()); return result; }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() == obj.getClass()) { ConnectorId other = (ConnectorId) obj; return equals(other); } if (Map.class.isInstance(obj)) { Map<?, ?> metadata = (Map<?, ?>) obj; return toMetaData().equals(metadata); } if (obj instanceof String) { return toFullID().equals(obj); } return false; }
private void validateId(ConnectorId id) { Preconditions.checkNotNull(id); Preconditions.checkNotNull(id.getConnectorType()); Preconditions.checkNotNull(id.getDomainType()); Preconditions.checkNotNull(id.getInstanceId()); }
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); }
protected ConnectorInstanceFactory getConnectorFactory(ConnectorId id) { String connectorType = id.getConnectorType(); Filter connectorFilter = serviceUtils.makeFilter(ConnectorInstanceFactory.class, String.format("(&(%s=%s)(%s=%s))", Constants.DOMAIN_KEY, id.getDomainType(), Constants.CONNECTOR_KEY, connectorType)); ConnectorInstanceFactory service = serviceUtils.getOsgiServiceProxy(connectorFilter, ConnectorInstanceFactory.class); return service; }
public ConnectorConfiguration(ConnectorId id, ConnectorDescription content) { this.metaData = id.toMetaData(); this.content = content; }
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); }
public ConnectorFile(File connectorFile) { connectorId = ConnectorId.fromFullId(FilenameUtils.removeExtension(connectorFile.getName())); update(connectorFile); }
@Override public String toString() { return toFullID(); }
private void addDefaultLocations(ConnectorId id, ConnectorDescription connectorDescription) { Map<String, Object> properties = connectorDescription.getProperties(); if (properties.get("location.root") != null) { return; } Map<String, Object> copy = new HashMap<String, Object>(properties); copy.put("location.root", id.getInstanceId()); connectorDescription.setProperties(copy); }
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); }
/** * generates a new unique ConnectorID for the given domain and connector. * * A {@link UUID} is used as unique string-identifier. */ public static ConnectorId generate(String domainType, String connectorType) { String instanceId = UUID.randomUUID().toString(); return new ConnectorId(domainType, connectorType, instanceId); }
public ConnectorId getConnectorId() { return ConnectorId.fromMetaData(metaData); }
private void checkForExistingServices(ConnectorId id) { try { List<ConnectorConfiguration> list = getConfigPersistence().load(id.toMetaData()); if (!list.isEmpty()) { throw new IllegalArgumentException("connector already exists"); } } catch (PersistenceException e) { throw new RuntimeException(e); } }
@Override public void uninstall(File artifact) throws PersistenceException { LOGGER.debug("ConnectorDeployer.uninstall(\"{}\")", artifact.getAbsolutePath()); login(); try { String name = FilenameUtils.removeExtension(artifact.getName()); ConnectorId fullId = ConnectorId.fromFullId(name); serviceManager.delete(fullId); } finally { logout(); } }
/** * parses a ConnectorId object from a Map-representation used in * {@link org.openengsb.core.api.persistence.ConfigPersistenceService} */ public static ConnectorId fromMetaData(Map<String, String> metaData) { return new ConnectorId(metaData.get(Constants.DOMAIN_KEY), metaData.get(Constants.CONNECTOR_KEY), metaData.get(Constants.ID_KEY)); }
private ConnectorDescription getOldConfig(ConnectorId id) { List<ConnectorConfiguration> list; try { list = getConfigPersistence().load(id.toMetaData()); } catch (PersistenceException e) { throw new RuntimeException(e); } if (list.isEmpty()) { throw new IllegalArgumentException("no connector with id " + id + " found"); } if (list.size() > 1) { throw new IllegalStateException("multiple connectors with id " + id + " found"); } return list.get(0).getContent(); }
/** * parses a connectorID from a string-representation of the format: * * "<domainType>+<connectorType>+<instanceId>" * * Example: "scm+git+projectx-main-repo" */ public static ConnectorId fromFullId(String fullId) { Scanner s = new Scanner(fullId); s.useDelimiter("\\+"); String domain = s.next(); String connector = s.next(); String instanceId = s.next(); if (s.hasNext()) { s.useDelimiter("\\\n"); instanceId += s.next(); } return new ConnectorId(domain, connector, instanceId); }
@Override public ConnectorDescription getAttributeValues(ConnectorId id) { try { List<ConnectorConfiguration> list = getConfigPersistence().load(id.toMetaData()); if (list.isEmpty()) { throw new IllegalArgumentException("no connector with metadata: " + id + " found"); } if (list.size() < 1) { LOGGER.error("multiple values found for the same meta-data"); throw new IllegalStateException("multiple connectors with metadata: " + id + " found"); } return list.get(0).getContent(); } catch (PersistenceException e) { throw new RuntimeException(e); } }