[ 
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

Reply via email to