karaf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Baptiste Onofré (JIRA) <j...@apache.org>
Subject [jira] [Resolved] (KARAF-2807) Unable to have multiple subshells in one bundle
Date Wed, 09 Apr 2014 13:32:16 GMT

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

Jean-Baptiste Onofré resolved KARAF-2807.
-----------------------------------------

    Resolution: Fixed

> Unable to have multiple subshells in one bundle
> -----------------------------------------------
>
>                 Key: KARAF-2807
>                 URL: https://issues.apache.org/jira/browse/KARAF-2807
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf-shell
>    Affects Versions: 3.0.0
>         Environment: JDK7, Aries Blueprint, karaf shell schema v1.1.0
>            Reporter: Rebecca Chan
>            Assignee: Jean-Baptiste Onofré
>             Fix For: 3.0.1, 4.0.0
>
>         Attachments: fixSubshell.patch
>
>
> *PROBLEM:*
> According to Karaf 3.0.0 release note, Karaf "groups" the commands by scope. Each scope
form a subshell.  Users should be able to enter subshell directly by typing the subshell name.
 
> However, if commands with different scopes are packaged in one OSGI  bundle, only the
scope of the first command in the blueprint xml file will be registered as subshell.
> For example, I have the following three commands in a OSGI bundle
> {quote}
> @Command(scope = "children", name = "boy", description = "boy's command")
> public class BoyCommand extends OsgiCommandSupport {
> }
> @Command(scope = "children", name = "girl", description = "girl's command")
> public class GirlCommand extends OsgiCommandSupport {
> }
> @Command(scope = "pet", name = "dog", description = "dog's command")
> public class DogCommand extends OsgiCommandSupport {
> }
> {quote}
> And they are in blueprint xml file.
> {quote}
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
>     <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
>         <command>
>             <action class="com.test.BoyCommand" />
>         </command>
>         <command>
>             <action class="com.test.GirlCommand" /> 
>         </command>
>         <command>
>             <action class="com.test.DogCommand" /> 
>         </command>        
>     </command-bundle>
> </blueprint>        
> {quote}
> I can access children subshell directly by type "children" but I cannot acess pet subshell
by typing "pet"
> *SUGGESTION:*
> After looking into the source code of karaf 3.0.0, there is a bug around line 188 in
org.apache.karaf.shell.console.commands.NamespaceHandler.  If the schema is not SHELL_NAMESPACE_1_0_0
or the action name does not contain the scope name, the variable "scope" will be null and
the subShellName will always be ".subshell.null".  Therefore, if schema is not 1.0.0, only
the scope of the first defined command in the OSGI bundle will be registered as subshell in
the if statement.  
> A patch is attached.  Please review if it is a proper fix to the bug



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message