Esin Yakub created FELIX-6105:
---------------------------------
Summary: [DS] SCR does not add the component bundle location to
the Configuration objects
Key: FELIX-6105
URL: https://issues.apache.org/jira/browse/FELIX-6105
Project: Felix
Issue Type: Bug
Components: Declarative Services (SCR)
Reporter: Esin Yakub
The SCR runtime does not set the bundle location of the configuration consuming
component to the Configuration object. This is the case in the ManagedService-s
and makes them more resilient to any external actions.
With Felix SCR currently if you have a component requiring a configuration PID
(the component is activated successfully) and you get the configuration PID
using the ConfigurationAdmin service without specifying "null" for the bundle
location you will end up sending a ConfigurationEvent.CM_LOCATION_CHANGED event
which in hand will trigger a component destruction.
Sample service:
{code:java}
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ConfigurationPolicy;
import org.osgi.service.component.annotations.Deactivate;
@Component(
configurationPid = "com.softwareag.dummy.pid",
configurationPolicy = ConfigurationPolicy.REQUIRE,
immediate = true)
public class Dummy{
@Activate
public void activate() {
System.out.println("Dummy is active");
}
@Deactivate
public void deactivate() {
System.out.println("Dummy is deactivated");
}
}
{code}
Sample snippet for consumer:
{code:java}
...
Configuration ssoConf =
configAdmin.getConfiguration("com.softwareag.dummy.pid");
System.out.println("Bundle location for the dummy configuration is: " +
ssoConf.getBundleLocation());
}
{code}
If the bundle location in the configuration is null the second snippet sets the
bundle location and deactivates the component.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)