Hi,

I've been playing a bit with aspect services using the DependencyManager and 
I've found some behavior that doesn't match my expectations. So either my 
expectations are wrong or I stumbled upon a bug...

Given an empty interface example.ExampleService, an empty implementation class 
example.ExampleServiceImpl and the Activator included below, would expect the 
aspect with ranking 20 to have property=aspect, but it actually has 
property=original, as shown in the Gogo Shell output included below the 
Activator source.

What is the intended behavior in this situation?

Regards,
Mark

public class Activator extends DependencyActivatorBase {

  @Override
  public void init(BundleContext context, DependencyManager manager) throws 
Exception {
    manager.add(createComponent()
        .setInterface(ExampleService.class.getName(), new Properties() {{
          put("property", "original");
        }})
        .setImplementation(ExampleServiceImpl.class));

    manager.add(createAspectService(ExampleService.class, null, 10)
        .setServiceProperties(new Properties() {{
          put("property", "aspect");
        }})
        .setImplementation(ExampleServiceImpl.class));

    manager.add(createAspectService(ExampleService.class, null, 20)
        .setImplementation(ExampleServiceImpl.class));
  }

  @Override
  public void destroy(BundleContext context, DependencyManager manager) throws 
Exception {
  }

}

[8] AspectExample
  example.ExampleService(property=original) registered
  org.apache.felix.dm.impl.AspectServiceImpl$AspectImpl@6087e704 registered
    example.ExampleService (!(org.apache.felix.dependencymanager.aspect=*)) 
service optional available
  
example.ExampleService(service.ranking=10,property=aspect,org.apache.felix.dependencymanager.aspect=19)
 registered
    example.ExampleService 
(&(|(!(service.ranking=*))(service.ranking<=9))(|(service.id=19)(org.apache.felix.dependencymanager.aspect=19)))
 service required available
  org.apache.felix.dm.impl.AspectServiceImpl$AspectImpl@7a4fe91e registered
    example.ExampleService (!(org.apache.felix.dependencymanager.aspect=*)) 
service optional available
  
example.ExampleService(service.ranking=20,property=original,org.apache.felix.dependencymanager.aspect=19)
 registered
    example.ExampleService 
(&(|(!(service.ranking=*))(service.ranking<=19))(|(service.id=19)(org.apache.felix.dependencymanager.aspect=19)))
 service required available


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to