default BundleClasses getBundleClasses(ComponentSpecification bundle, Set<String> packagesToScan) { return new BundleClasses(new MockBundle(), Collections.emptySet()); }
@Override protected RestApiContext newInstance() { Object instance = super.newInstance(); RestApiContext restApiContext = (RestApiContext) instance; List<JerseyBundlesConfig.Bundles> bundles = restApiContext.bundlesConfig.bundles(); for (JerseyBundlesConfig.Bundles bundleConfig : bundles) { BundleClasses bundleClasses = osgi.getBundleClasses(ComponentSpecification.fromString(bundleConfig.spec()), new HashSet<>(bundleConfig.packages())); restApiContext.addBundle(createBundleInfo(bundleClasses.bundle(), bundleClasses.classEntries())); } componentsToInject.forEach(component -> restApiContext.addInjectableComponent(component.instanceKey(), component.componentId(), component.newOrCachedInstance())); return restApiContext; }
@Override public BundleClasses getBundleClasses(ComponentSpecification bundleSpec, Set<String> packagesToScan) { //Temporary hack: Using class name since ClassLoaderOsgiFramework is not available at compile time in this bundle. if (osgiFramework.getClass().getName().equals("com.yahoo.application.container.impl.ClassLoaderOsgiFramework")) { Bundle syntheticClassPathBundle = first(osgiFramework.bundles()); ClassLoader classLoader = syntheticClassPathBundle.adapt(BundleWiring.class).getClassLoader(); return new BundleClasses( syntheticClassPathBundle, OsgiUtil.getClassEntriesForBundleUsingProjectClassPathMappings(classLoader, bundleSpec, packagesToScan)); } else { Bundle bundle = getBundle(bundleSpec); if (bundle == null) throw new RuntimeException("No bundle matching " + quote(bundleSpec)); return new BundleClasses(bundle, OsgiUtil.getClassEntriesInBundleClassPath(bundle, packagesToScan)); } }