private void loadProvider(final BundleContext bundleContext, final BundleWiring bundleWiring) { final String filter = "(APIVersion>=2.6.0)"; try { final Collection<ServiceReference<Provider>> serviceReferences = bundleContext.getServiceReferences(Provider.class, filter); Provider maxProvider = null; for (final ServiceReference<Provider> serviceReference : serviceReferences) { final Provider provider = bundleContext.getService(serviceReference); if (maxProvider == null || provider.getPriority() > maxProvider.getPriority()) { maxProvider = provider; } } if (maxProvider != null) { ProviderUtil.addProvider(maxProvider); } } catch (final InvalidSyntaxException ex) { LOGGER.error("Invalid service filter: " + filter, ex); } final List<URL> urls = bundleWiring.findEntries("META-INF", "log4j-provider.properties", 0); for (final URL url : urls) { ProviderUtil.loadProvider(url, bundleWiring.getClassLoader()); } }
@Override public URL getResource( String name ) { int lastIndexOf = name.lastIndexOf( '/' ); List<URL> entries; if ( lastIndexOf > 0 ) { entries = bundleWiring.findEntries( name.substring( 0, lastIndexOf ), name.substring( lastIndexOf + 1 ), 0 ); } else { entries = bundleWiring.findEntries( "/", name, 0 ); } if ( entries.size() == 1 ) { return entries.get( 0 ); } URL resource = bundleWiringClassloader.getResource( name ); if ( resource == null ) { resource = super.getResource( name ); } return resource; }
definePackage( packageName, null, null, null, null, null, null, null ); List<URL> entries = bundleWiring.findEntries( translatedPath, translatedName, 0 ); if ( entries.size() == 1 ) { byte[] bytes;
private void loadProvider(final BundleContext context, final BundleWiring bundleWiring) { final String filter = "(APIVersion>=2.60)"; try { final Collection<ServiceReference<Provider>> serviceReferences = context.getServiceReferences(Provider.class, filter); Provider maxProvider = null; for (final ServiceReference<Provider> serviceReference : serviceReferences) { final Provider provider = context.getService(serviceReference); if (maxProvider == null || provider.getPriority() > maxProvider.getPriority()) { maxProvider = provider; } } if (maxProvider != null) { ProviderUtil.addProvider(maxProvider); } } catch (final InvalidSyntaxException ex) { LOGGER.error("Invalid service filter: " + filter, ex); } final List<URL> urls = bundleWiring.findEntries("META-INF", "log4j-provider.properties", 0); for (final URL url : urls) { ProviderUtil.loadProvider(url, bundleWiring.getClassLoader()); } }