Carlos Sierra created FELIX-4853:
------------------------------------
Summary: Create a new ServiceDependency that sets the TCCL to the
incoming servicereference bundle's classloader before invoking callbaks
Key: FELIX-4853
URL: https://issues.apache.org/jira/browse/FELIX-4853
Project: Felix
Issue Type: New Feature
Components: Dependency Manager
Affects Versions: dependencymanager-3.2.0
Reporter: Carlos Sierra
The invoke method would go like this:
{code:title=TCCLServiceDependencyImpl.java|borderStyle=solid}
@Override
@SuppressWarnings("rawtypes")
public void invoke(
Object[] callbackInstances, DependencyService dependencyService,
ServiceReference reference, Object service, String name) {
Bundle bundle = reference.getBundle();
BundleWiring bundleWiring = bundle.adapt(BundleWiring.class);
ClassLoader bundleClassLoader = bundleWiring.getClassLoader();
Thread currentThread = Thread.currentThread();
ClassLoader contextClassLoader =
currentThread.getContextClassLoader();
currentThread.setContextClassLoader(bundleClassLoader);
try {
super.invoke(
callbackInstances, dependencyService,
reference, service, name);
}
finally {
currentThread.setContextClassLoader(contextClassLoader);
}
}
{code}
If you think this is useful I can provide a patch. Which version and which repo
should I use for it?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)