@Override public Resource getProvider() { return capability.getResource(); }
@Override public int compare(Capability cap1, Capability cap2) { // Prefer already wired if (wirings != null) { Wiring w1 = wirings.get(cap1.getResource()); Wiring w2 = wirings.get(cap2.getResource()); if (w1 != null && w2 == null) return -1; if (w1 == null && w2 != null) return +1; } // Prefer higher version Version v1 = AbstractCapability.getVersion(cap1, IdentityNamespace.CAPABILITY_VERSION_ATTRIBUTE); Version v2 = AbstractCapability.getVersion(cap2, IdentityNamespace.CAPABILITY_VERSION_ATTRIBUTE); return v2.compareTo(v1); } }; }
public EmbeddedRuntime(PropertiesProvider propertiesProvider, Attachable context) { super(propertiesProvider); serviceManager = new RuntimeServicesManager(adapt(RuntimeEventsManager.class)); storageHandler = new RuntimeStorageHandler(propertiesProvider, true); // Install system module ResourceIdentity sysid = getSystemIdentity(); Resource resource = new DefaultResourceBuilder().addIdentityCapability(sysid).getResource(); try { Dictionary<String, String> headers = new Hashtable<>(); headers.put("Bundle-SymbolicName", sysid.getSymbolicName()); headers.put("Bundle-Version", sysid.getVersion().toString()); installModule(EmbeddedRuntime.class.getClassLoader(), resource, headers, context); } catch (ModuleException ex) { throw new IllegalStateException("Cannot install system module", ex); } }