You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Jago de Vreede (JIRA)" <ji...@apache.org> on 2014/01/15 06:49:20 UTC
[jira] [Created] (FELIX-4384) Difference between inner class and
normal class service
Jago de Vreede created FELIX-4384:
-------------------------------------
Summary: Difference between inner class and normal class service
Key: FELIX-4384
URL: https://issues.apache.org/jira/browse/FELIX-4384
Project: Felix
Issue Type: Bug
Components: Dependency Manager
Affects Versions: dependencymanager-3.1.0
Reporter: Jago de Vreede
Priority: Minor
Given the following code:
{code}package org.example;
import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
import org.osgi.framework.BundleContext;
public class Activator extends DependencyActivatorBase {
@Override
public synchronized void init(BundleContext context, DependencyManager manager) throws Exception {
manager.add(createComponent()
.setInterface(A.class.getName(), null)
.setImplementation(A.class)
.add(createServiceDependency().setService(S.class).setRequired(true)));
manager.add(createComponent()
.setInterface(S.class.getName(), null)
.setImplementation(S1.class));
}
@Override
public synchronized void destroy(BundleContext context, DependencyManager manager) throws Exception {}
interface S {}
class A {}
class S1 implements S {}
}{code}
dm will print out:
{quote}
g! dm
[8] mytest
[0] org.example.Activator$A unregistered
org.example.Activator$S service required unavailable
[1] org.example.Activator$S registered
{quote}
But when the class S1 is promoted to a real class, dm will print out:
{quote}
g! dm
[8] mytest
[0] org.example.Activator$A registered
org.example.Activator$S service required available
[1] org.example.Activator$S registered
{quote}
So the service class S1 is not available if its an inner class but is available if its a normal class.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)