[ 
https://issues.apache.org/jira/browse/KARAF-4693?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Freeman Fang reassigned KARAF-4693:
-----------------------------------

    Assignee: Freeman Fang

> shell:new issue with class wildcards
> ------------------------------------
>
>                 Key: KARAF-4693
>                 URL: https://issues.apache.org/jira/browse/KARAF-4693
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf-shell
>    Affects Versions: 4.0.6
>            Reporter: Paolo Antinori
>            Assignee: Freeman Fang
>
> Karaf shell fails if you run this command:
> {code:none}a=shell:new java.util.ArrayList 2
> 2016-09-02 11:15:51,525 | ERROR | nsole user karaf | ShellUtil                
>         | 43 - org.apache.karaf.shell.core - 4.0.6 | Exception caught while 
> executing command
> java.lang.IllegalStateException
>       at 
> org.apache.karaf.shell.support.converter.GenericType.parametersOf(GenericType.java:161)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.karaf.shell.support.converter.GenericType.[init](GenericType.java:53)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.karaf.shell.support.converter.GenericType.parametersOf(GenericType.java:154)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.karaf.shell.support.converter.GenericType.[init](GenericType.java:53)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.karaf.shell.commands.impl.NewAction.findMatchingConstructors(NewAction.java:167)[41:org.apache.karaf.shell.commands:4.0.6]
>       at 
> org.apache.karaf.shell.commands.impl.NewAction.execute(NewAction.java:89)[41:org.apache.karaf.shell.commands:4.0.6]
>       at 
> org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:83)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:67)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:87)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:480)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:406)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:182)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:119)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:94)[43:org.apache.karaf.shell.core:4.0.6]
>       at 
> org.apache.karaf.shell.impl.console.ConsoleSessionImpl.run(ConsoleSessionImpl.java:274)[43:org.apache.karaf.shell.core:4.0.6]
>       at java.lang.Thread.run(Thread.java:745)[:1.8.0_102]
> {code}
> The reason for that is not really that it can't handle generics but it the 
> logic that probe for the best matching constructor, that at some point, in 
> this class:
> https://github.com/apache/karaf/blob/68bef0ced72a3fe192cfe496b3fff654b49b2377/shell/core/src/main/java/org/apache/karaf/shell/support/converter/GenericType.java#L161-L161
> sees {{type}} set to {{"? extends E"}} that is not able to handle, thus 
> throwing the blocking exception.
> It's enough to replace that exception with an empty return, to bypass the 
> failing iteration and have the command to succeed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to