[
https://issues.apache.org/jira/browse/KARAF-1560?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13763180#comment-13763180
]
Hugh Rodgers edited comment on KARAF-1560 at 9/10/13 4:51 PM:
--------------------------------------------------------------
What is the status on this issue? It is beginning to impact our project and we
would welcome an update on it. We are currently on Karaf v2.3.2 and still have
this issue.
Would the potential fix be as simple as doing instanceof on the various types
supported by metatype (i.e., Boolean, Integer, Double, etc.) in the
ConfigCommandSupport.persistConfiguration(...):
protected void persistConfiguration(ConfigurationAdmin admin, String pid,
Dictionary props) throws IOException {
154 //... code elided
172 Properties p = new Properties(storageFile);
173 for (Enumeration keys = props.keys(); keys.hasMoreElements(); )
{
174 Object key = keys.nextElement();
175 if (!Constants.SERVICE_PID.equals(key)
176 &&
!ConfigurationAdmin.SERVICE_FACTORYPID.equals(key)
177 && !FILEINSTALL_FILE_NAME.equals(key)) {
178 p.put((String) key, (String) props.get(key)); //
change this line to do instanceof on props.get(key) for each type supported by
metatype?
179 }
180 }
was (Author: rodgersh):
What is the status on this issue? It is beginning to impact our project and
we would welcome an update on it. We are currently on Karaf v2.3.2 and still
have this issue.
> config:update throws ClassCastException when used on a Configuration with
> boolean fields created in the web console
> -------------------------------------------------------------------------------------------------------------------
>
> Key: KARAF-1560
> URL: https://issues.apache.org/jira/browse/KARAF-1560
> Project: Karaf
> Issue Type: Bug
> Components: karaf-config
> Affects Versions: 2.2.5
> Reporter: Hugh Rodgers
> Assignee: Jean-Baptiste Onofré
> Priority: Minor
> Fix For: 2.2.12, 2.3.3, 2.4.0, 3.0.1
>
> Attachments: demo_validation.png, karaf_config_propset.png,
> karaf_log.png, metatype.xml
>
>
> I am using Karaf v2.2.5 on Windows 7. I start Karaf (using the karaf.bat
> script) and create a configuration that has one or more fields that are
> checkboxes (i.e., Boolean).
> I then go to the Karaf command line console and issue the following
> commands:
> config:edit <PID of configuration just created in Admin Console>
> config:propset <booleanFieldName> true
> config:update
> When I submit the config"update command I get this exception:
> 09:52:19,658 | INFO | l Console Thread | Console |
> araf.shell.console.jline.Console 242 | 14 - org.apache.karaf.shell.console
> - 2.2.5 | Exception caught while executing command
> java.lang.ClassCastException: java.lang.Boolean cannot be cast to
> java.lang.String
> at
> org.apache.karaf.shell.config.ConfigCommandSupport.persistConfiguration(ConfigCommandSupport.java:161)[41:org.apache.karaf.shell.config:2.2.5]
> at
> org.apache.karaf.shell.config.ConfigCommandSupport.update(ConfigCommandSupport.java:129)[41:org.apache.karaf.shell.config:2.2.5]
> at
> org.apache.karaf.shell.config.UpdateCommand.doExecute(UpdateCommand.java:38)[41:org.apache.karaf.shell.config:2.2.5]
> at
> org.apache.karaf.shell.config.ConfigCommandSupport.doExecute(ConfigCommandSupport.java:63)[41:org.apache.karaf.shell.config:2.2.5]
> at
> org.apache.karaf.shell.console.OsgiCommandSupport.execute(OsgiCommandSupport.java:38)[14:org.apache.karaf.shell.console:2.2.5]
> at
> org.apache.felix.gogo.commands.basic.AbstractCommand.execute(AbstractCommand.java:35)[14:org.apache.karaf.shell.console:2.2.5]
> at
> org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:78)[14:org.apache.karaf.shell.console:2.2.5]
> at
> org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:474)[14:org.apache.karaf.shell.console:2.2.5]
> at
> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:400)[14:org.apache.karaf.shell.console:2.2.5]
> at
> org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[14:org.apache.karaf.shell.console:2.2.5]
> at
> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)[14:org.apache.karaf.shell.console:2.2.5]
> at
> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)[14:org.apache.karaf.shell.console:2.2.5]
> at
> org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)[14:org.apache.karaf.shell.console:2.2.5]
> at
> org.apache.karaf.shell.console.jline.Console.run(Console.java:221)[14:org.apache.karaf.shell.console:2.2.5]
> at java.lang.Thread.run(Thread.java:662)[:1.6.0_29]
> And the configuration is not saved.
> Configuration completely created/updated in the Admin Console work fine.
> Likewise, configurations completely created in the command line console work
> fine. The issue arises only with boolean fields and what mechanism is used
> to initially create the configuration.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira