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);
}
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);
}
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);
}
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);
}
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);
}
Aggregations