[
https://issues.apache.org/jira/browse/FELIX-5636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16005958#comment-16005958
]
Pierre De Rop commented on FELIX-5636:
--------------------------------------
Committed a patch in revision 1794788:
The ComponentImpl.getServiceProperties() method is now always calling the
calculateServiceProperties() method because since r9 version, the
AspectServiceImpl is now calculating the aspect properties using a service
property propagate callback method (see
AspectServiceImpl.AspectPropagateCallback inner class).
The AspectServiceImpl.getServiceProperties() method has been renamed to
getAspectServiceProperties() in order to insist on the fact that this method
should only return the properties of the aspect and not of the merge between
the aspect properties and the inherited service properties.
Jeroen, please turn this issue to Resolved if you are satisfied, thank you.
> Component of aspect service does not have any service properties anymore
> ------------------------------------------------------------------------
>
> Key: FELIX-5636
> URL: https://issues.apache.org/jira/browse/FELIX-5636
> Project: Felix
> Issue Type: Bug
> Components: Dependency Manager
> Affects Versions: org.apache.felix.dependencymanager-r9,
> org.apache.felix.dependencymanager-r10
> Reporter: Jeroen Daanen
>
> The Component for an aspect service does not have service properties. It
> looks like this is broken since r.1781908 (had a quick look, but could not
> find the cause in the time I had available).
> Without these properties it is not possible to add a dependency in the init
> method of the aspect based on one of the aspected service properties.
> Example to test it:
> {code}
> public class Activator extends DependencyActivatorBase {
> @Override
> public void init(BundleContext context, DependencyManager manager)
> throws Exception {
> Properties properties = new Properties();
> properties.put("PropKey", "PropValue");
> Component aComponent =
> manager.createComponent().setInterface(X.class.getName(),
> properties).setImplementation(new A());
> manager.add(aComponent);
>
> manager.add(manager.createAspectService(X.class, null,
> 100).setImplementation(B.class));
> }
> public static class A implements X {
> public void init(Component component) {
> System.out.println("Service properties in A: " +
> component.getServiceProperties());
> }
> }
> public static class B implements X {
> public void init(Component component) {
> System.out.println("Service properties in B: " +
> component.getServiceProperties());
> }
> }
> public interface X {
> }
> }
> {code}
> The init of B shows empty properties, I expected the inherited properties,
> aspect ranking etc.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)