felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Clement Escoffier (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FELIX-2981) Unable to remove configuration properties using iPOJO's configuration handler
Date Tue, 07 Jun 2011 07:16:59 GMT

    [ https://issues.apache.org/jira/browse/FELIX-2981?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13045306#comment-13045306
] 

Clement Escoffier commented on FELIX-2981:
------------------------------------------

Hi,

It's a bug. This behavior is working for service properties but not for plain properties.
It should be the case. I will have a look ASAP. 

> Unable to remove configuration properties using iPOJO's configuration handler
> -----------------------------------------------------------------------------
>
>                 Key: FELIX-2981
>                 URL: https://issues.apache.org/jira/browse/FELIX-2981
>             Project: Felix
>          Issue Type: Bug
>          Components: iPOJO
>    Affects Versions: iPOJO-1.8.0
>         Environment: * Apache Felix Bundle Repository (1.6.0)
> * Apache Felix Configuration Admin Service (1.2.8)
> * Apache Felix Gogo Runtime (0.8.0)
> * Apache Felix iPOJO (1.8.0)
> * Apache Felix iPOJO Annotations (1.8.0)
> * iPOJO Metadata (1.4.0)
> * Apache Felix Preferences Service (1.0.4)
>            Reporter: Robert Lillack
>            Assignee: Clement Escoffier
>            Priority: Minor
>
> Hi,
> using iPOJO's _very nice_ OSGi Configuration Admin integration I sadly seem unable to
remove any properties from a configuration to "reset" this property back to it's default value.
Comparing the following two classes---one using iPOJO the other one directly implementing
the ManagedService interface ...
> @Component(managedservice = "example1")
> @Instantiate
> public class Example1 {
>     
>     @Property
>     private String key;
>     
>     @Updated
>     private void updated() {
>         System.out.format("example1 = %s\n", key);
>     }
> }
> @Component
> @Instantiate
> public class Example2 implements ManagedService {
>     BundleContext ctx;
>     
>     public Example2(BundleContext c) {
>         ctx = c;
>     }
>     
>     @Validate
>     public void start() {
>         ctx.registerService(ManagedService.class.getName(), this, getDefaults());
>     }
>     private Hashtable getDefaults() {
>         Hashtable defaults = new Hashtable();
>         defaults.put(Constants.SERVICE_PID, "example2");
>         return defaults;
>     }
>     @Override
>     public void updated(Dictionary properties) throws ConfigurationException {
>         System.out.format("example2 = %s\n", properties == null ? null : properties.get("key"));
>     }
> }
> ... with the code setting the properties looking like this ...
>     public void set(String value) throws Exception {
>         setProperty("example1", value);
>         setProperty("example2", value);
>     }
>     
>     public void unset() throws Exception {
>         setProperty("example1", null);
>         setProperty("example2", null);
>     }
>     
>     private void setProperty(String srv, String value) throws IOException {
>         Configuration cfg = configAdmin.getConfiguration(srv, null); 
>         Dictionary p = cfg.getProperties();
>         if (p == null) {
>             p = new Properties();
>         }
>         
>         if (value == null) {
>             p.remove("key");
>         } else {
>             p.put("key", value);
>         }
>         cfg.update(p);
>     }
> ... these are the results after calling set("qsdasdasd") followed by unset():
> example1 = qsdasdasd
> example2 = qsdasdasd
> example1 = qsdasdasd
> example2 = null
> Am I using iPOJO the wrong way here? Thanks!

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message