<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    gembin

    OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

    HBase, Hadoop, ZooKeeper, Cassandra

    Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

    There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

    About Me

     

    Ideas on Apache karaf shell

    i would like to share some ideas on Apache karaf shell.
    karaf shell is based on apache felix gogo.
    If you want to create a new command, you have to extends org.apache.karaf.shell.console.AbstractAction or XxxCommandSupport.
    public class CatAction extends AbstractAction {
    protected Object doExecute() throws Exception {
    //todo something here
    }
    }

    and then add to blueprint config, would be something like this:
    <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
        
    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.0.0">
            
    <command name="shell/cat">
                
    <action class="org.apache.karaf.shell.commands.CatAction"/>
            
    </command>
            
        
    </command-bundle>
    </blueprint>
    it's somewhat a little bit verbose in my opinion.

    i would perfer something like this:
    @CommandProvider(scope = "shell", name = "ShellCommandProvider", description = "Unix Shell alike commands.")
    public class ShellCommandProvider {

    @Option(name 
    = "-n", aliases = {"--show-line-number"}, description = "The number the output lines, starting at 1.")
    private boolean displayLineNumbers;

    @Argument(name 
    = "paths or urls", description = "A list of file paths or urls to display separated by whitespaces (use - for STDIN)", required = true, multiValued = true)
    private List paths;

    @Command(scope
    ="my_scope", options = { "displayLineNumbers" },arguments={"paths"}, description = "Displays the content of a file or URL.")
    public void cat(CommandSession session) throws Exception {
    //todo something here
    }


    @Argument(name 
    = "paths or urls")
    private String arg1;
    @Command(options 
    = { "displayLineNumbers" },arguments={"arg1"})
    public void cat1() throws Exception {
     //todo something here
    }

    }

    1. The CommandProvider no need to extends some class or implements some interface, and  it groups a set of command.
    2. Each method can be a command by annotated with @Command, and opt or arg can be shared by different commands.
    3. The scope specified at @CommandProvider which is shared by all the commands within this provider. and also each command can override the scope.

    i.e. options = { "displayLineNumbers" }, it ref the opt by the field name. and also the same for arguments. the order indicate the index of the opt or arg.
    arguments = { "arg1","arg2" }: means the command will accept the args in order: arg1 arg2

    finally, add to blueprint config:
    <blueprint>
        
    <shell:command-provider class="org.apache.karaf.shell.commands.ShellCommandProvider">
           
    <shell:property name="bundleContext" ref="blueprintBundleContext"/>
             any standard blueprint elements here
        
    </shell:command-provider>
    </blueprint>

    thats it.
    any ideas are welcome.

    posted on 2011-05-11 11:37 gembin 閱讀(905) 評論(0)  編輯  收藏 所屬分類: OSGi

    導航

    統計

    常用鏈接

    留言簿(6)

    隨筆分類(440)

    隨筆檔案(378)

    文章檔案(6)

    新聞檔案(1)

    相冊

    收藏夾(9)

    Adobe

    Android

    AS3

    Blog-Links

    Build

    Design Pattern

    Eclipse

    Favorite Links

    Flickr

    Game Dev

    HBase

    Identity Management

    IT resources

    JEE

    Language

    OpenID

    OSGi

    SOA

    Version Control

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    free counters
    主站蜘蛛池模板: 四虎精品成人免费视频| 成年网站免费入口在线观看| 欧洲美女大片免费播放器视频| 最好免费观看高清在线| 在线观看免费人成视频色9| 免费国产成人午夜电影| 亚洲国产精品久久久久| 亚洲国产精品无码第一区二区三区| 国产乱子伦精品免费视频| 最近中文字幕电影大全免费版| 午夜视频免费观看| 久久久久久久综合日本亚洲| 亚洲狠狠成人综合网| 久久久久久国产a免费观看不卡| 67194国产精品免费观看| 国产又长又粗又爽免费视频 | 久久亚洲高清观看| 亚洲无人区码一二三码区别图片| 在线视频网址免费播放| 毛片大全免费观看| 日韩亚洲欧洲在线com91tv| 亚洲精品乱码久久久久久V | 中文文字幕文字幕亚洲色| 一级毛片免费视频网站| 黄色片在线免费观看| 亚洲日韩精品无码一区二区三区 | 免费中文字幕一级毛片| 亚洲欧洲久久精品| 国产久爱免费精品视频| 成人永久免费高清| 亚洲国产美女视频| 99久久免费国产精品热| 国产日产成人免费视频在线观看| 91大神亚洲影视在线| 国产免费人成视频在线播放播| 成人特黄a级毛片免费视频| 亚洲成年轻人电影网站www| 一级毛片aaaaaa视频免费看| 思思99re66在线精品免费观看| 精品亚洲成a人片在线观看 | 免费在线看v网址|