@Override public void build(MetaData srvMeta, List<MetaData> depsMeta, Bundle b, DependencyManager dm) throws Exception { int stateMask = srvMeta.getInt(Params.stateMask, Bundle.INSTALLED | Bundle.RESOLVED | Bundle.ACTIVE); String filter = srvMeta.getString(Params.filter, null); Class<?> adapterImplClass = b.loadClass(srvMeta.getString(Params.impl)); String[] provides = srvMeta.getStrings(Params.provides, null); Dictionary<String, Object> properties = srvMeta.getDictionary(Params.properties, null); boolean propagate = "true".equals(srvMeta.getString(Params.propagate, "false")); Component c = dm.createBundleAdapterService(stateMask, filter, propagate); c.setInterface(provides, properties); String factoryMethod = srvMeta.getString(Params.factoryMethod, null); if (factoryMethod == null) { c.setImplementation(adapterImplClass); } else { c.setFactory(adapterImplClass, factoryMethod); } setCommonServiceParams(c, srvMeta); c.setComposition(srvMeta.getString(Params.composition, null)); ServiceLifecycleHandler lfcleHandler = new ServiceLifecycleHandler(c, b, dm, srvMeta, depsMeta); // The dependencies will be plugged by our lifecycle handler. c.setCallbacks(lfcleHandler, "init", "start", "stop", "destroy"); // Adds dependencies (except named dependencies, which are managed by the lifecycle handler). addUnamedDependencies(b, dm, c, srvMeta, depsMeta); dm.add(c); }