Search in sources :

Example 1 with Logger

use of org.apache.felix.resolver.Logger in project felix by apache.

the class FELIX_4914_Test method testResolution.

@Test
public void testResolution() throws Exception {
    BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/felix-4914.json")));
    Map<String, Object> resolution = (Map<String, Object>) JsonReader.read(reader);
    List<Resource> repository = readRepository(resolution.get("repository"));
    Map<String, CapabilitySet> capSets = new HashMap<String, CapabilitySet>();
    for (Resource resource : repository) {
        for (Capability cap : resource.getCapabilities(null)) {
            String ns = cap.getNamespace();
            CapabilitySet set = capSets.get(ns);
            if (set == null) {
                set = new CapabilitySet(Collections.singletonList(ns));
                capSets.put(ns, set);
            }
            set.addCapability(cap);
        }
    }
    Resource root = null;
    for (Resource resource : repository) {
        if ("root".equals(Util.getSymbolicName(resource))) {
            root = resource;
            break;
        }
    }
    List<Resource> mandatory = new ArrayList<Resource>();
    mandatory.add(root);
    Map<Requirement, List<Capability>> candidates = new HashMap<Requirement, List<Capability>>();
    for (Resource resource : repository) {
        for (Requirement requirement : resource.getRequirements(null)) {
            CapabilitySet set = capSets.get(requirement.getNamespace());
            if (set != null) {
                String filter = requirement.getDirectives().get(Constants.FILTER_DIRECTIVE);
                SimpleFilter sf = (filter != null) ? SimpleFilter.parse(filter) : SimpleFilter.convert(requirement.getAttributes());
                candidates.put(requirement, new ArrayList<Capability>(set.match(sf, true)));
            } else {
                candidates.put(requirement, Collections.<Capability>emptyList());
            }
        }
    }
    ResolveContextImpl rci = new ResolveContextImpl(Collections.<Resource, Wiring>emptyMap(), candidates, mandatory, Collections.EMPTY_LIST);
    Resolver resolver = new ResolverImpl(new Logger(Logger.LOG_DEBUG));
    Map<Resource, List<Wire>> wireMap = resolver.resolve(rci);
}
Also used : InputStreamReader(java.io.InputStreamReader) Capability(org.osgi.resource.Capability) Resolver(org.osgi.service.resolver.Resolver) HashMap(java.util.HashMap) Resource(org.osgi.resource.Resource) ArrayList(java.util.ArrayList) ResolverImpl(org.apache.felix.resolver.ResolverImpl) Logger(org.apache.felix.resolver.Logger) Requirement(org.osgi.resource.Requirement) SimpleFilter(org.apache.felix.resolver.test.util.SimpleFilter) BufferedReader(java.io.BufferedReader) CapabilitySet(org.apache.felix.resolver.test.util.CapabilitySet) ArrayList(java.util.ArrayList) List(java.util.List) ResolveContextImpl(org.apache.felix.resolver.test.util.ResolveContextImpl) HashMap(java.util.HashMap) Map(java.util.Map) Test(org.junit.Test)

Example 2 with Logger

use of org.apache.felix.resolver.Logger in project felix by apache.

the class ResolverTest method testScenario6.

@Test
public void testScenario6() throws Exception {
    Resolver resolver = new ResolverImpl(new Logger(Logger.LOG_DEBUG));
    Map<Resource, Wiring> wirings = new HashMap<Resource, Wiring>();
    Map<Requirement, List<Capability>> candMap = new HashMap<Requirement, List<Capability>>();
    List<Resource> mandatory = populateScenario6(wirings, candMap);
    ResolveContextImpl rci = new ResolveContextImpl(wirings, candMap, mandatory, Collections.<Resource>emptyList());
    Map<Resource, List<Wire>> wireMap = resolver.resolve(rci);
    int aResources = 0;
    for (Resource r : wireMap.keySet()) {
        if ("A".equals(getResourceName(r))) {
            aResources++;
            List<Wire> wires = wireMap.get(r);
            assertEquals(4, wires.size());
            List<String> providers = new ArrayList<String>();
            for (Wire w : wires) {
                providers.add(getResourceName(w.getProvider()));
            }
            Collections.sort(providers);
            assertEquals(Arrays.asList("B", "C", "D", "D"), providers);
        }
    }
    assertEquals("Should have found two resolved resources named 'A'", 2, aResources);
}
Also used : Resolver(org.osgi.service.resolver.Resolver) GenericCapability(org.apache.felix.resolver.test.util.GenericCapability) PackageCapability(org.apache.felix.resolver.test.util.PackageCapability) Capability(org.osgi.resource.Capability) BundleCapability(org.apache.felix.resolver.test.util.BundleCapability) HashMap(java.util.HashMap) Resource(org.osgi.resource.Resource) ArrayList(java.util.ArrayList) ResolverImpl(org.apache.felix.resolver.ResolverImpl) Logger(org.apache.felix.resolver.Logger) Wire(org.osgi.resource.Wire) Wiring(org.osgi.resource.Wiring) Requirement(org.osgi.resource.Requirement) BundleRequirement(org.apache.felix.resolver.test.util.BundleRequirement) GenericRequirement(org.apache.felix.resolver.test.util.GenericRequirement) PackageRequirement(org.apache.felix.resolver.test.util.PackageRequirement) ArrayList(java.util.ArrayList) List(java.util.List) ResolveContextImpl(org.apache.felix.resolver.test.util.ResolveContextImpl) Test(org.junit.Test)

Example 3 with Logger

use of org.apache.felix.resolver.Logger in project felix by apache.

the class ResolverTest method testScenario17_2.

@Test
public void testScenario17_2() throws Exception {
    ResolveContext rci = populateScenario17(false, false, true);
    ResolverImpl resolver = new ResolverImpl(new Logger(Logger.LOG_DEBUG), 1);
    resolver.resolve(rci);
}
Also used : ResolveContext(org.osgi.service.resolver.ResolveContext) ResolverImpl(org.apache.felix.resolver.ResolverImpl) Logger(org.apache.felix.resolver.Logger) Test(org.junit.Test)

Example 4 with Logger

use of org.apache.felix.resolver.Logger in project felix by apache.

the class ResolverTest method testScenario17_1.

@Test
public void testScenario17_1() throws Exception {
    ResolveContext rci = populateScenario17(false, false, false);
    ResolverImpl resolver = new ResolverImpl(new Logger(Logger.LOG_DEBUG), 1);
    resolver.resolve(rci);
}
Also used : ResolveContext(org.osgi.service.resolver.ResolveContext) ResolverImpl(org.apache.felix.resolver.ResolverImpl) Logger(org.apache.felix.resolver.Logger) Test(org.junit.Test)

Example 5 with Logger

use of org.apache.felix.resolver.Logger in project felix by apache.

the class ResolverTest method testScenario17_5.

@Test
public void testScenario17_5() throws Exception {
    ResolveContext rci = populateScenario17(false, true, true);
    ResolverImpl resolver = new ResolverImpl(new Logger(Logger.LOG_DEBUG), 1);
    resolver.resolve(rci);
}
Also used : ResolveContext(org.osgi.service.resolver.ResolveContext) ResolverImpl(org.apache.felix.resolver.ResolverImpl) Logger(org.apache.felix.resolver.Logger) Test(org.junit.Test)

Aggregations

Logger (org.apache.felix.resolver.Logger)29 ResolverImpl (org.apache.felix.resolver.ResolverImpl)29 Test (org.junit.Test)26 ArrayList (java.util.ArrayList)21 List (java.util.List)21 Resource (org.osgi.resource.Resource)21 Capability (org.osgi.resource.Capability)19 Requirement (org.osgi.resource.Requirement)19 HashMap (java.util.HashMap)18 ResolveContextImpl (org.apache.felix.resolver.test.util.ResolveContextImpl)18 BundleCapability (org.apache.felix.resolver.test.util.BundleCapability)17 BundleRequirement (org.apache.felix.resolver.test.util.BundleRequirement)17 GenericCapability (org.apache.felix.resolver.test.util.GenericCapability)17 GenericRequirement (org.apache.felix.resolver.test.util.GenericRequirement)17 PackageCapability (org.apache.felix.resolver.test.util.PackageCapability)17 PackageRequirement (org.apache.felix.resolver.test.util.PackageRequirement)17 Wiring (org.osgi.resource.Wiring)15 Wire (org.osgi.resource.Wire)13 Resolver (org.osgi.service.resolver.Resolver)12 ResolveContext (org.osgi.service.resolver.ResolveContext)10