Roland Huß
and 1 contributors


OSGi::Osgish::CommandHandler - Handler for osgish commands


This object is responsible for managing OSGi::Osgish::Command object which are at the heart of osgish and provide all features. During startup it registeres commands dynamicallt and pushes the OSGi::Osgish context to them for allowing to access the agent and other handlers.

Registration is occurs in two phases:


It also keeps a stack of so called navigational context which can be used to provide a menu like structure (think of it like directories which can be entered). If the stack contains elements, the navigational commands .. and / are added to traverse the stack. / will always jump to the top of the stack (the root directory) whereas .. will pop up one level in the stack (the parent directory). Commands which want to manipulate the stack like pushing themselves on the stack should use the methods "push_on_stack" or "reset_stack" (for jumping to the top of the menu).


$command_handler = new OSGi::Osgish::CommandHandler($osgish,$shell)

Create a new command handler object. The arguments to be passed are the osgish object ($osgish) and the shell object ($shell) in order to update the shell's current command set.


Update the stack with an entry of name $context which provides the commands $cmds. $cmds must be a hashref as known to Term::ShellUI, whose commands method is used to update the shell. Additionally it updates the shell's prompt to reflect the state of the stack.


Reset the stack and install the top and global commands as collected from the registered OSGi::Osgish::Command.

$command = $command_handler->command($command_name)

Get a registered command by name


This file is part of osgish.

Osgish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

osgish is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with osgish. If not, see <>.

A commercial license is available as well. Please contact for further details.


Just in case you need professional support for this module (or JMX or OSGi in general), you might want to have a look at Contact for further information (or use the contact form at