Search in sources :

Example 1 with ImportedService

use of org.apache.aries.application.modelling.ImportedService in project aries by apache.

the class ApplicationServiceModeller method computeRequirementsAndCapabilities.

@Override
public ServiceModel computeRequirementsAndCapabilities(Resource resource, IDirectory directory) throws SubsystemException {
    try {
        ServiceModelImpl model = new ServiceModelImpl();
        ParsedServiceElements elements = manager.getServiceElements(directory);
        for (ExportedService service : elements.getServices()) {
            model.capabilities.add(new BasicCapability.Builder().namespace(ServiceNamespace.SERVICE_NAMESPACE).attribute(ServiceNamespace.CAPABILITY_OBJECTCLASS_ATTRIBUTE, new ArrayList<String>(service.getInterfaces())).attributes(service.getServiceProperties()).resource(resource).build());
        }
        for (ImportedService service : elements.getReferences()) {
            StringBuilder builder = new StringBuilder();
            String serviceInterface = service.getInterface();
            String filter = service.getFilter();
            if (serviceInterface != null && filter != null) {
                builder.append("(&");
            }
            if (serviceInterface != null) {
                builder.append('(').append(ServiceNamespace.CAPABILITY_OBJECTCLASS_ATTRIBUTE).append('=').append(serviceInterface).append(')');
            }
            if (filter != null)
                builder.append(filter);
            if (serviceInterface != null && filter != null) {
                builder.append(')');
            }
            if (builder.length() > 0) {
                model.requirements.add(new BasicRequirement.Builder().namespace(ServiceNamespace.SERVICE_NAMESPACE).directive(Namespace.REQUIREMENT_FILTER_DIRECTIVE, builder.toString()).directive(Namespace.REQUIREMENT_RESOLUTION_DIRECTIVE, service.isOptional() ? Namespace.RESOLUTION_OPTIONAL : Namespace.RESOLUTION_MANDATORY).directive(Namespace.REQUIREMENT_CARDINALITY_DIRECTIVE, service.isMultiple() ? Namespace.CARDINALITY_MULTIPLE : Namespace.CARDINALITY_SINGLE).resource(resource).build());
            }
        }
        return model;
    } catch (ModellerException e) {
        throw new SubsystemException(e);
    }
}
Also used : ExportedService(org.apache.aries.application.modelling.ExportedService) SubsystemException(org.osgi.service.subsystem.SubsystemException) ModellerException(org.apache.aries.application.modelling.ModellerException) ImportedService(org.apache.aries.application.modelling.ImportedService) ParsedServiceElements(org.apache.aries.application.modelling.ParsedServiceElements)

Example 2 with ImportedService

use of org.apache.aries.application.modelling.ImportedService in project aries by apache.

the class ModelledResourceManagerImpl method getServiceElements.

private ParsedServiceElements getServiceElements(BundleManifest bundleMf, IDirectory archive) throws ModellerException {
    Set<ExportedService> services = new HashSet<ExportedService>();
    Set<ImportedService> references = new HashSet<ImportedService>();
    try {
        ParsedServiceElements pse = getBlueprintServiceElements(bundleMf, findBlueprints(bundleMf, archive));
        services.addAll(pse.getServices());
        references.addAll(pse.getReferences());
        for (ServiceModeller sm : modellingPlugins) {
            pse = sm.modelServices(bundleMf, archive);
            services.addAll(pse.getServices());
            references.addAll(pse.getReferences());
        }
        return new ParsedServiceElementsImpl(services, references);
    } catch (Exception e) {
        throw new ModellerException(e);
    }
}
Also used : ServiceModeller(org.apache.aries.application.modelling.ServiceModeller) ExportedService(org.apache.aries.application.modelling.ExportedService) ModellerException(org.apache.aries.application.modelling.ModellerException) ImportedService(org.apache.aries.application.modelling.ImportedService) URISyntaxException(java.net.URISyntaxException) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) InvalidAttributeException(org.apache.aries.application.InvalidAttributeException) ModellerException(org.apache.aries.application.modelling.ModellerException) HashSet(java.util.HashSet) ParsedServiceElements(org.apache.aries.application.modelling.ParsedServiceElements)

Example 3 with ImportedService

use of org.apache.aries.application.modelling.ImportedService in project aries by apache.

the class DeployedBundlesImpl method getDeployedImportService.

/**
   * Get the Deployed-ImportService header. 
   * this.deployedImportService contains all the service import filters for every 
   * blueprint component within the application. We will only write an entry
   * to Deployed-ImportService if
   *   a) the reference isMultiple(), or
   *   b) the service was not available internally when the app was first deployed
   *   
   */
public String getDeployedImportService() {
    logger.debug(LOG_ENTRY, "getDeployedImportService");
    String result = cachedDeployedImportService;
    if (result == null) {
        Collection<ImportedService> deployedBundleServiceImports = new ArrayList<ImportedService>();
        Collection<ExportedService> servicesExportedWithinIsolatedContent = new ArrayList<ExportedService>();
        for (ModelledResource mRes : getDeployedContent()) {
            servicesExportedWithinIsolatedContent.addAll(mRes.getExportedServices());
        }
        for (ModelledResource mRes : fakeDeployedBundles) {
            servicesExportedWithinIsolatedContent.addAll(mRes.getExportedServices());
        }
        for (ImportedService impService : deployedImportService) {
            if (impService.isMultiple()) {
                deployedBundleServiceImports.add(impService);
            } else {
                boolean serviceProvidedWithinIsolatedContent = false;
                Iterator<ExportedService> it = servicesExportedWithinIsolatedContent.iterator();
                while (!serviceProvidedWithinIsolatedContent && it.hasNext()) {
                    ExportedService svc = it.next();
                    serviceProvidedWithinIsolatedContent |= impService.isSatisfied(svc);
                }
                if (!serviceProvidedWithinIsolatedContent) {
                    deployedBundleServiceImports.add(impService);
                }
            }
        }
        result = createManifestString(deployedBundleServiceImports);
        cachedDeployedImportService = result;
    }
    logger.debug(LOG_EXIT, "getDeployedImportService", result);
    return result;
}
Also used : ExportedService(org.apache.aries.application.modelling.ExportedService) ArrayList(java.util.ArrayList) ImportedService(org.apache.aries.application.modelling.ImportedService) ModelledResource(org.apache.aries.application.modelling.ModelledResource)

Example 4 with ImportedService

use of org.apache.aries.application.modelling.ImportedService in project aries by apache.

the class AbstractParserProxy method parseAllServiceElements.

public ParsedServiceElements parseAllServiceElements(InputStream blueprintToParse) throws Exception {
    _logger.debug(LOG_ENTRY, "parseAllServiceElements", new Object[] { blueprintToParse });
    ComponentDefinitionRegistry cdr = parseCDR(blueprintToParse);
    Collection<ExportedService> services = parseCDRForServices(cdr, false);
    Collection<ImportedService> references = parseCDRForReferences(cdr);
    ParsedServiceElements result = _modellingManager.getParsedServiceElements(services, references);
    _logger.debug(LOG_EXIT, "parseAllServiceElements", new Object[] { result });
    return result;
}
Also used : ComponentDefinitionRegistry(org.apache.aries.blueprint.ComponentDefinitionRegistry) ExportedService(org.apache.aries.application.modelling.ExportedService) ImportedService(org.apache.aries.application.modelling.ImportedService) ParsedServiceElements(org.apache.aries.application.modelling.ParsedServiceElements)

Example 5 with ImportedService

use of org.apache.aries.application.modelling.ImportedService in project aries by apache.

the class SharedFrameworkPreResolveHook method collectFakeResources.

@Override
public void collectFakeResources(Collection<ModelledResource> resources) {
    Bundle b = fwMgr.getSharedBundleFramework().getIsolatedBundleContext().getBundle(1);
    BundleInfo info = new BundleInfoImpl(b);
    Collection<ImportedService> serviceImports = Collections.emptySet();
    Collection<ExportedService> serviceExports = Collections.emptySet();
    try {
        resources.add(mgr.getModelledResource(info.getLocation(), info, serviceImports, serviceExports));
    } catch (InvalidAttributeException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
Also used : BundleInfo(org.apache.aries.application.management.BundleInfo) InvalidAttributeException(org.apache.aries.application.InvalidAttributeException) Bundle(org.osgi.framework.Bundle) ExportedService(org.apache.aries.application.modelling.ExportedService) ImportedService(org.apache.aries.application.modelling.ImportedService)

Aggregations

ImportedService (org.apache.aries.application.modelling.ImportedService)10 ExportedService (org.apache.aries.application.modelling.ExportedService)8 ParsedServiceElements (org.apache.aries.application.modelling.ParsedServiceElements)4 ArrayList (java.util.ArrayList)3 InvalidAttributeException (org.apache.aries.application.InvalidAttributeException)3 ModellerException (org.apache.aries.application.modelling.ModellerException)3 IOException (java.io.IOException)2 MalformedURLException (java.net.MalformedURLException)2 URISyntaxException (java.net.URISyntaxException)2 HashSet (java.util.HashSet)2 ExportedPackage (org.apache.aries.application.modelling.ExportedPackage)2 ImportedPackage (org.apache.aries.application.modelling.ImportedPackage)2 InputStream (java.io.InputStream)1 Attributes (java.util.jar.Attributes)1 ZipInputStream (java.util.zip.ZipInputStream)1 BundleInfo (org.apache.aries.application.management.BundleInfo)1 ImportedBundle (org.apache.aries.application.modelling.ImportedBundle)1 ModelledResource (org.apache.aries.application.modelling.ModelledResource)1 ServiceModeller (org.apache.aries.application.modelling.ServiceModeller)1 ExportedServiceImpl (org.apache.aries.application.modelling.impl.ExportedServiceImpl)1