use of org.osgi.service.cm.ConfigurationAdmin.SERVICE_FACTORYPID in project ddf by codice.
the class ConfigurationAdminImpl method listServices.
@Override
public List<Service> listServices(String serviceFactoryFilter, String serviceFilter) {
List<Service> serviceList = null;
List<Service> serviceFactoryList = null;
Map<Long, MetaTypeInformation> metaTypeInformationByBundle = new HashMap<>();
try {
// Get ManagedService instances
serviceList = getServices(ManagedService.class.getName(), serviceFilter, true);
Map<String, ObjectClassDefinition> configPidToOcdMap = getPidObjectClasses(metaTypeInformationByBundle);
// Get ManagedService Metatypes
List<Metatype> metatypeList = addMetaTypeNamesToMap(configPidToOcdMap, serviceFilter, SERVICE_PID);
// Get ManagedServiceFactory instances
serviceFactoryList = getServices(ManagedServiceFactory.class.getName(), serviceFactoryFilter, true);
// Get ManagedServiceFactory Metatypes
metatypeList.addAll(addMetaTypeNamesToMap(getFactoryPidObjectClasses(metaTypeInformationByBundle), serviceFactoryFilter, SERVICE_FACTORYPID));
for (Service service : serviceFactoryList) {
service.setFactory(true);
for (Metatype metatype : metatypeList) {
if (metatype.getId() != null && metatype.getId().equals(service.getId())) {
service.putAll(metatype);
}
}
Configuration[] configs = configurationAdmin.listConfigurations("(|(service.factoryPid=" + service.getId() + ")(service.factoryPid=" + service.getId() + "_disabled))");
if (configs != null) {
addConfigurationData(service, configs, configPidToOcdMap);
}
}
for (Service service : serviceList) {
service.setFactory(false);
for (Metatype metatype : metatypeList) {
if (metatype.getId() != null && metatype.getId().equals(service.getId())) {
service.putAll(metatype);
}
}
Configuration[] configs = configurationAdmin.listConfigurations("(" + SERVICE_PID + "=" + service.getId() + ")");
if (configs != null) {
addConfigurationData(service, configs, configPidToOcdMap);
}
}
serviceList.addAll(serviceFactoryList);
} catch (IOException e) {
LOGGER.warn("Unable to obtain list of Configuration objects from ConfigurationAdmin.", e);
} catch (InvalidSyntaxException e) {
LOGGER.info("Provided LDAP filter is incorrect: {}", LogSanitizer.sanitize(serviceFilter), e);
}
if (serviceList != null) {
return serviceList.stream().filter(service -> isPermittedToViewService(service.getId())).collect(Collectors.toList());
} else {
return new ArrayList<>();
}
}
Aggregations