/** * An apform instance to represent a legacy component discovered in the OSGi registry * * @param ipojoInstance */ public ApformOSGiInstance(Specification specification, ServiceReference<?> reference) { super( new InstanceDeclaration( VersionedReference.any(generateImplementationName(specification, reference)), generateInstanceName(specification, reference))); this.specification = specification; for (PropertyDefinition property : specification.getDeclaration().getPropertyDefinitions()) { Object value = reference.getProperty(property.getName()); if (value != null) this.declaration.getProperties().put(property.getName(), value.toString()); } this.reference = reference; this.bundle = reference.getBundle(); this.bundleContext = AccessController.doPrivileged( new PrivilegedAction<BundleContext>() { public BundleContext run() { return bundle.getBundleContext(); } }); this.service = null; }
/** Generate the uniques name of the implementation associated with this instance in Apam */ private static ImplementationReference<?> generateImplementationName( Specification specification, ServiceReference<?> reference) { String bundle = reference.getBundle().getSymbolicName(); if (bundle == null) bundle = (String) reference.getBundle().getHeaders().get("Bundle-Name"); return new ApformOSGiImplementation.Reference( specification.getName() + "[provider.bundle=" + bundle + "]"); }