use of org.osgi.framework.Constants.SERVICE_PID in project ddf by codice.
the class ConfigurationAdminImpl method getServices.
private List<Service> getServices(String serviceClass, String serviceFilter, boolean ocdRequired) throws InvalidSyntaxException {
List<Service> serviceList = new ArrayList<>();
// service.factoryPid cannot be searched, but service.pid can be searched,
// and can contain a factoryPid
String newFilter = null;
if (serviceFilter != null) {
newFilter = serviceFilter.replace("service.factoryPid", "service.pid");
}
// find all ManagedServiceFactories to get the factoryPIDs
ServiceReference[] refs = this.getBundleContext().getAllServiceReferences(serviceClass, newFilter);
for (int i = 0; refs != null && i < refs.length; i++) {
Object pidObject = refs[i].getProperty(SERVICE_PID);
// only include valid PIDs
if (pidObject instanceof String && isAllowedPid((String) pidObject)) {
String pid = (String) pidObject;
String name = pid;
boolean haveOcd = !ocdRequired;
final ObjectClassDefinition ocd = getObjectClassDefinition(refs[i].getBundle(), pid);
if (ocd != null) {
name = ocd.getName();
haveOcd = true;
}
if (haveOcd && ocd != null) {
Service service = new ServiceImpl();
String description = ocd.getDescription();
service.setId(pid);
if (StringUtils.isNotEmpty(description)) {
service.setDescription(description);
}
service.setName(name);
serviceList.add(service);
}
}
}
return serviceList.stream().filter(service -> isPermittedToViewService(service.getId())).collect(Collectors.toList());
}
use of org.osgi.framework.Constants.SERVICE_PID 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