Search in sources :

Example 51 with Wire

use of org.osgi.resource.Wire in project bndtools by bndtools.

the class ResolutionTreeContentProvider method processWires.

private static void processWires(Collection<Wire> wires, Map<Capability, ResolutionTreeItem> items) {
    if (wires != null) {
        for (Wire wire : wires) {
            ResolutionTreeItem item = items.get(wire.getCapability());
            if (item == null) {
                item = new ResolutionTreeItem(wire.getCapability());
                items.put(wire.getCapability(), item);
            }
            item.addWire(wire);
        }
    }
}
Also used : Wire(org.osgi.resource.Wire)

Example 52 with Wire

use of org.osgi.resource.Wire in project bndtools by bndtools.

the class ResolutionTreeContentProvider method getChildren.

@Override
public Object[] getChildren(Object parent) {
    Object[] result;
    if (parent instanceof Resource) {
        Resource parentResource = (Resource) parent;
        Map<Capability, ResolutionTreeItem> items = new HashMap<Capability, ResolutionTreeItem>();
        List<Wire> wires = resolution.get(parentResource);
        processWires(wires, items);
        result = items.values().toArray();
    } else if (parent instanceof Requirement) {
        result = getChildren(((Requirement) parent).getResource());
    } else if (parent instanceof ResolutionTreeItem) {
        ResolutionTreeItem item = (ResolutionTreeItem) parent;
        List<Wire> wires = item.getWires();
        List<Requirement> reqs = new ArrayList<Requirement>();
        for (Wire wire : wires) reqs.add(wire.getRequirement());
        result = reqs.toArray();
    } else {
        result = null;
    }
    return result;
}
Also used : Requirement(org.osgi.resource.Requirement) Capability(org.osgi.resource.Capability) HashMap(java.util.HashMap) Resource(org.osgi.resource.Resource) ArrayList(java.util.ArrayList) Wire(org.osgi.resource.Wire)

Example 53 with Wire

use of org.osgi.resource.Wire in project bndtools by bndtools.

the class ResolveOperation method run.

@Override
public void run(IProgressMonitor monitor) {
    MultiStatus status = new MultiStatus(Plugin.PLUGIN_ID, 0, Messages.ResolveOperation_errorOverview, null);
    // Start a coordination
    BundleContext bc = Plugin.getDefault().getBundleContext();
    ServiceReference<Coordinator> coordSvcRef = bc.getServiceReference(Coordinator.class);
    Coordinator coordinator = coordSvcRef != null ? (Coordinator) bc.getService(coordSvcRef) : null;
    Coordination coordination = coordinator != null ? coordinator.begin(ResolveOperation.class.getName(), 0) : null;
    // Begin resolve
    try (ResolverLogger logger = new ResolverLogger()) {
        try {
            ResolveProcess resolve = new ResolveProcess();
            BndResolver bndResolver = new BndResolver(logger);
            ReporterLogService log = new ReporterLogService(model.getWorkspace());
            Map<Resource, List<Wire>> wirings = resolve.resolveRequired(model, model.getWorkspace(), bndResolver, callbacks, log);
            Map<Resource, List<Wire>> optionalResources = new HashMap<Resource, List<Wire>>(resolve.getOptionalResources().size());
            for (Resource optional : resolve.getOptionalResources()) {
                optionalResources.put(optional, new ArrayList<Wire>(resolve.getOptionalReasons(optional)));
            }
            result = new ResolutionResult(Outcome.Resolved, wirings, optionalResources, null, status, logger.getLog());
            if (coordination != null)
                coordination.end();
        } catch (ResolveCancelledException e) {
            result = new ResolutionResult(Outcome.Cancelled, null, null, null, status, logger.getLog());
            if (coordination != null)
                coordination.fail(e);
        } catch (ResolutionException e) {
            status.add(new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, e.getLocalizedMessage(), e));
            result = new ResolutionResult(Outcome.Unresolved, null, null, e, status, logger.getLog());
            if (coordination != null)
                coordination.fail(e);
        } catch (Exception e) {
            status.add(new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, "Exception during resolution.", e));
            result = new ResolutionResult(Outcome.Error, null, null, null, status, logger.getLog());
            if (coordination != null)
                coordination.fail(e);
        } finally {
            if (coordinator != null)
                bc.ungetService(coordSvcRef);
        }
    }
}
Also used : ReporterLogService(aQute.bnd.deployer.repository.ReporterLogService) MultiStatus(org.eclipse.core.runtime.MultiStatus) IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) Coordination(org.osgi.service.coordinator.Coordination) ResolverLogger(biz.aQute.resolve.ResolverLogger) HashMap(java.util.HashMap) Resource(org.osgi.resource.Resource) MultiStatus(org.eclipse.core.runtime.MultiStatus) Coordinator(org.osgi.service.coordinator.Coordinator) Wire(org.osgi.resource.Wire) ResolutionException(org.osgi.service.resolver.ResolutionException) ResolutionException(org.osgi.service.resolver.ResolutionException) ResolveProcess(biz.aQute.resolve.ResolveProcess) ArrayList(java.util.ArrayList) List(java.util.List) BndResolver(biz.aQute.resolve.BndResolver) BundleContext(org.osgi.framework.BundleContext)

Example 54 with Wire

use of org.osgi.resource.Wire in project aries by apache.

the class DependencyCalculator method calculateDependencies.

public List<Requirement> calculateDependencies() throws ResolutionException {
    ArrayList<Requirement> result = new ArrayList<Requirement>();
    Resolver resolver = Activator.getInstance().getResolver();
    Map<Resource, List<Wire>> resolution = resolver.resolve(context);
    for (List<Wire> wires : resolution.values()) for (Wire wire : wires) if (wire.getCapability() instanceof MissingCapability)
        result.add(wire.getRequirement());
    result.trimToSize();
    return result;
}
Also used : Requirement(org.osgi.resource.Requirement) Resolver(org.osgi.service.resolver.Resolver) ArrayList(java.util.ArrayList) Resource(org.osgi.resource.Resource) ArrayList(java.util.ArrayList) List(java.util.List) Wire(org.osgi.resource.Wire)

Example 55 with Wire

use of org.osgi.resource.Wire in project aries by apache.

the class ResolveContext method processAsSubstitutableExport.

private void processAsSubstitutableExport(boolean isFragment, Requirement requirement, List<Capability> capabilities) {
    String namespace = requirement.getNamespace();
    if (!PackageNamespace.PACKAGE_NAMESPACE.equals(namespace)) {
        return;
    }
    Resource resource = requirement.getResource();
    Wiring wiring = wirings.get(resource);
    if (isFragment) {
        List<Wire> fragmentWires = wiring.getRequiredResourceWires(HostNamespace.HOST_NAMESPACE);
        for (Wire fragmentWire : fragmentWires) {
            Resource host = fragmentWire.getProvider();
            processResourceCapabilities(wirings.get(host).getResourceCapabilities(namespace), requirement, capabilities);
        }
    } else {
        List<Capability> resourceCapabilities = wiring.getResourceCapabilities(namespace);
        processResourceCapabilities(resourceCapabilities, requirement, capabilities);
    }
}
Also used : BundleWiring(org.osgi.framework.wiring.BundleWiring) Wiring(org.osgi.resource.Wiring) HostedCapability(org.osgi.service.resolver.HostedCapability) Capability(org.osgi.resource.Capability) MissingCapability(org.apache.aries.subsystem.core.internal.DependencyCalculator.MissingCapability) Resource(org.osgi.resource.Resource) Wire(org.osgi.resource.Wire)

Aggregations

Wire (org.osgi.resource.Wire)58 Resource (org.osgi.resource.Resource)49 ArrayList (java.util.ArrayList)38 List (java.util.List)36 HashMap (java.util.HashMap)35 Requirement (org.osgi.resource.Requirement)31 Capability (org.osgi.resource.Capability)29 Wiring (org.osgi.resource.Wiring)18 BundleCapability (org.apache.felix.resolver.test.util.BundleCapability)15 BundleRequirement (org.apache.felix.resolver.test.util.BundleRequirement)15 GenericCapability (org.apache.felix.resolver.test.util.GenericCapability)15 GenericRequirement (org.apache.felix.resolver.test.util.GenericRequirement)15 PackageCapability (org.apache.felix.resolver.test.util.PackageCapability)15 PackageRequirement (org.apache.felix.resolver.test.util.PackageRequirement)15 ResolverImpl (org.apache.felix.resolver.ResolverImpl)14 ResolveContextImpl (org.apache.felix.resolver.test.util.ResolveContextImpl)14 Logger (org.apache.felix.resolver.Logger)13 Test (org.junit.Test)13 Resolver (org.osgi.service.resolver.Resolver)12 Map (java.util.Map)11