[ https://issues.apache.org/jira/browse/FELIX-2981?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Clement Escoffier resolved FELIX-2981. -------------------------------------- Resolution: Fixed Fix Version/s: ipojo-core-1.8.2 Hi, I've applied the patch and ran the tests successfully. I've also deployed a version of iPOJO Core containing the fix: https://repository.apache.org/content/repositories/snapshots/org/apache/felix/org.apache.felix.ipojo/1.9.0-SNAPSHOT/org.apache.felix.ipojo-1.9.0-20111002.090757-2.jar Thanks for this fix ! > 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 > Fix For: ipojo-core-1.8.2 > > Attachments: felix-2981.patch > > > 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. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira