Search in sources :

Example 16 with MetaTypeInformation

use of org.osgi.service.metatype.MetaTypeInformation in project felix by apache.

the class MetaTypeServiceImplTest method testAfterCretionManagedService.

public void testAfterCretionManagedService() {
    MetaTypeService mts = new MetaTypeServiceImpl(bundleContext);
    MetaTypeInformation mti = mts.getMetaTypeInformation(bundleContext.getBundle());
    // assert still empty
    checkEmpty(mti);
    // register a service with PID
    String pid = "testAfterCreation";
    MockManagedService service = new MockManagedService();
    Dictionary props = new Hashtable();
    props.put(Constants.SERVICE_PID, pid);
    ServiceRegistration sr = bundleContext.registerService(ManagedService.class.getName(), service, props);
    // locales should contain MockMetaTypeProvider.LOCALES
    assertNotNull(mti.getLocales());
    assertTrue(mti.getLocales().length == 1);
    assertEquals(MockMetaTypeProvider.LOCALES[0], mti.getLocales()[0]);
    // pids must contain pid
    assertNotNull(mti.getPids());
    assertTrue(mti.getPids().length == 1);
    assertEquals(pid, mti.getPids()[0]);
    // change the service PID
    String pid2 = "testAfterCreation2";
    Dictionary props2 = new Hashtable();
    props2.put(Constants.SERVICE_PID, pid2);
    sr.setProperties(props2);
    // pids must contain pid2
    assertNotNull(mti.getPids());
    assertTrue(mti.getPids().length == 1);
    assertEquals(pid2, mti.getPids()[0]);
    // factoryPids must be empty
    assertTrue(mti.getFactoryPids() == null || mti.getFactoryPids().length == 0);
    // unregister the service
    sr.unregister();
    // ensure everything is clear now again
    checkEmpty(mti);
}
Also used : ManagedService(org.osgi.service.cm.ManagedService) Dictionary(java.util.Dictionary) MetaTypeService(org.osgi.service.metatype.MetaTypeService) Hashtable(java.util.Hashtable) MetaTypeInformation(org.osgi.service.metatype.MetaTypeInformation) ServiceRegistration(org.osgi.framework.ServiceRegistration)

Example 17 with MetaTypeInformation

use of org.osgi.service.metatype.MetaTypeInformation in project felix by apache.

the class MetaTypeServiceImplTest method testEmpty.

public void testEmpty() {
    MetaTypeService mts = new MetaTypeServiceImpl(bundleContext);
    MetaTypeInformation mti = mts.getMetaTypeInformation(bundleContext.getBundle());
    checkEmpty(mti);
}
Also used : MetaTypeService(org.osgi.service.metatype.MetaTypeService) MetaTypeInformation(org.osgi.service.metatype.MetaTypeInformation)

Example 18 with MetaTypeInformation

use of org.osgi.service.metatype.MetaTypeInformation in project fabric8 by jboss-fuse.

the class MetaTypeFacade method metaTypeSummary.

@Override
public MetaTypeSummaryDTO metaTypeSummary() {
    MetaTypeSummaryDTO answer = new MetaTypeSummaryDTO();
    Bundle[] bundles = bundleContext.getBundles();
    for (Bundle bundle : bundles) {
        MetaTypeInformation info = getMetaTypeInformation(bundle);
        if (info != null) {
            answer.addTypeInformation(bundle, info);
        }
    }
    return answer;
}
Also used : MetaTypeSummaryDTO(io.fabric8.api.jmx.MetaTypeSummaryDTO) Bundle(org.osgi.framework.Bundle) MetaTypeInformation(org.osgi.service.metatype.MetaTypeInformation)

Example 19 with MetaTypeInformation

use of org.osgi.service.metatype.MetaTypeInformation in project fabric8 by jboss-fuse.

the class MetaTypeFacade method getPidMetaTypeObject.

@Override
public MetaTypeObjectDTO getPidMetaTypeObject(String pid, String locale) {
    Bundle[] bundles = bundleContext.getBundles();
    MetaTypeObjectDTO answer = null;
    for (Bundle bundle : bundles) {
        MetaTypeInformation info = getMetaTypeInformation(bundle);
        if (info != null) {
            ObjectClassDefinition object = MetaTypeSummaryDTO.tryGetObjectClassDefinition(info, pid, locale);
            if (object != null) {
                if (answer == null) {
                    answer = new MetaTypeObjectDTO(object);
                } else {
                    answer.appendObjectDefinition(object);
                }
            }
        }
    }
    return answer;
}
Also used : Bundle(org.osgi.framework.Bundle) MetaTypeInformation(org.osgi.service.metatype.MetaTypeInformation) MetaTypeObjectDTO(io.fabric8.api.jmx.MetaTypeObjectDTO) ObjectClassDefinition(org.osgi.service.metatype.ObjectClassDefinition)

Example 20 with MetaTypeInformation

use of org.osgi.service.metatype.MetaTypeInformation 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<>();
    }
}
Also used : Arrays(java.util.Arrays) StringUtils(org.apache.commons.lang.StringUtils) Constants(org.osgi.framework.Constants) Enumeration(java.util.Enumeration) LoggerFactory(org.slf4j.LoggerFactory) ConfigurationStatus(org.codice.ddf.admin.core.api.ConfigurationStatus) LogSanitizer(org.codice.ddf.log.sanitizer.LogSanitizer) Locale(java.util.Locale) MetatypeAttribute(org.codice.ddf.admin.core.api.MetatypeAttribute) Map(java.util.Map) Bundle(org.osgi.framework.Bundle) ServiceReference(org.osgi.framework.ServiceReference) Service(org.codice.ddf.admin.core.api.Service) InvalidSyntaxException(org.osgi.framework.InvalidSyntaxException) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Metatype(org.codice.ddf.admin.core.api.Metatype) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) ConfigurationAdminPlugin(org.codice.ddf.ui.admin.api.plugin.ConfigurationAdminPlugin) BundleContext(org.osgi.framework.BundleContext) ConfigurationDetails(org.codice.ddf.admin.core.api.ConfigurationDetails) Permissions(ddf.security.permission.Permissions) List(java.util.List) Stream(java.util.stream.Stream) Entry(java.util.Map.Entry) ConfigurationAdmin(org.osgi.service.cm.ConfigurationAdmin) SecurityUtils(org.apache.shiro.SecurityUtils) ConfigurationProperties(org.codice.ddf.admin.core.api.ConfigurationProperties) Dictionary(java.util.Dictionary) SERVICE_PID(org.osgi.framework.Constants.SERVICE_PID) HashMap(java.util.HashMap) MetaTypeInformation(org.osgi.service.metatype.MetaTypeInformation) ArrayList(java.util.ArrayList) SERVICE_FACTORYPID(org.osgi.service.cm.ConfigurationAdmin.SERVICE_FACTORYPID) Configuration(org.osgi.service.cm.Configuration) Subject(org.apache.shiro.subject.Subject) Hashtable(java.util.Hashtable) ManagedServiceFactory(org.osgi.service.cm.ManagedServiceFactory) Logger(org.slf4j.Logger) IOException(java.io.IOException) AttributeDefinition(org.osgi.service.metatype.AttributeDefinition) MetaTypeService(org.osgi.service.metatype.MetaTypeService) Filter(org.osgi.framework.Filter) ServiceTracker(org.osgi.util.tracker.ServiceTracker) ManagedService(org.osgi.service.cm.ManagedService) ObjectClassDefinition(org.osgi.service.metatype.ObjectClassDefinition) KeyValueCollectionPermission(ddf.security.permission.KeyValueCollectionPermission) Collections(java.util.Collections) FrameworkUtil(org.osgi.framework.FrameworkUtil) Configuration(org.osgi.service.cm.Configuration) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Service(org.codice.ddf.admin.core.api.Service) MetaTypeService(org.osgi.service.metatype.MetaTypeService) ManagedService(org.osgi.service.cm.ManagedService) MetaTypeInformation(org.osgi.service.metatype.MetaTypeInformation) IOException(java.io.IOException) Metatype(org.codice.ddf.admin.core.api.Metatype) InvalidSyntaxException(org.osgi.framework.InvalidSyntaxException) ObjectClassDefinition(org.osgi.service.metatype.ObjectClassDefinition)

Aggregations

MetaTypeInformation (org.osgi.service.metatype.MetaTypeInformation)21 Bundle (org.osgi.framework.Bundle)14 MetaTypeService (org.osgi.service.metatype.MetaTypeService)12 ObjectClassDefinition (org.osgi.service.metatype.ObjectClassDefinition)9 ArrayList (java.util.ArrayList)7 HashMap (java.util.HashMap)6 Dictionary (java.util.Dictionary)5 Hashtable (java.util.Hashtable)5 Map (java.util.Map)5 BundleContext (org.osgi.framework.BundleContext)4 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)3 Service (org.codice.ddf.admin.core.api.Service)3 Arrays (java.util.Arrays)2 Collections (java.util.Collections)2 List (java.util.List)2 Locale (java.util.Locale)2 Collectors (java.util.stream.Collectors)2 Stream (java.util.stream.Stream)2 BundleInfo (org.apache.karaf.features.BundleInfo)2 SystemService (org.apache.karaf.system.SystemService)2