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)