You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Carlos Sierra (JIRA)" <ji...@apache.org> on 2015/04/20 10:16:58 UTC
[jira] [Closed] (FELIX-4853) Create a new ServiceDependency that
sets the TCCL to the incoming servicereference bundle's classloader before
invoking callbaks
[ https://issues.apache.org/jira/browse/FELIX-4853?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Carlos Sierra closed FELIX-4853.
--------------------------------
Resolution: Not A Problem
> 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
> Attachments: examples.tgz, examples2.tgz
>
>
> 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)