/** * {@inheritDoc} * * @see org.osgi.service.cm.ManagedServiceFactory#updated(java.lang.String, java.util.Dictionary) */ @Override public void updated(String pid, Dictionary properties) throws ConfigurationException { // Get the agent properties String nameConfig = (String) properties.get("id"); if (isEmpty(nameConfig)) { throw new ConfigurationException("id", "must be specified"); } nameConfig = nameConfig.trim(); String urlConfig = (String) properties.get("url"); if (isEmpty(urlConfig)) { throw new ConfigurationException("url", "must be specified"); } urlConfig = urlConfig.trim(); String orgConfig = (String) properties.get("organization"); if (isEmpty(orgConfig)) { throw new ConfigurationException("organization", "must be specified"); } orgConfig = orgConfig.trim(); String schedulerRolesConfig = (String) properties.get("schedulerRoles"); if (isEmpty(schedulerRolesConfig)) { throw new ConfigurationException("schedulerRoles", "must be specified"); } schedulerRolesConfig = schedulerRolesConfig.trim(); // If we don't already have a mapping for this PID, create one if (!pidMap.containsKey(pid)) { pidMap.put(pid, nameConfig); } AgentImpl agent = getAgent(nameConfig, orgConfig); if (agent == null) { agent = new AgentImpl(nameConfig, orgConfig, UNKNOWN, urlConfig, new Properties()); } else { agent.url = urlConfig.trim(); agent.organization = orgConfig.trim(); agent.state = UNKNOWN; String[] schedulerRoles = schedulerRolesConfig.split(","); for (String role : schedulerRoles) { agent.schedulerRoles.add(role.trim()); } } // Update the database logger.info("Roles '{}' may schedule '{}'", schedulerRolesConfig, agent.name); updateAgentInDatabase(agent); }