001 package org.crsh.shell.impl.command; 002 003 import groovy.lang.Script; 004 import org.crsh.command.GroovyScriptCommand; 005 import org.crsh.command.NoSuchCommandException; 006 import org.crsh.command.ShellCommand; 007 import org.crsh.plugin.PluginContext; 008 import org.crsh.plugin.ResourceKind; 009 010 import java.security.Principal; 011 012 /** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */ 013 public class CRaSH { 014 015 016 /** . */ 017 final ClassManager<ShellCommand> commands; 018 019 /** . */ 020 final ClassManager<Script> lifecycles; 021 022 /** . */ 023 final PluginContext context; 024 025 /** 026 * Create a new CRaSH. 027 * 028 * @param context the plugin context 029 * @throws NullPointerException if the context argument is null 030 */ 031 public CRaSH(PluginContext context) throws NullPointerException { 032 this.context = context; 033 this.commands = new ClassManager<ShellCommand>(context, ResourceKind.COMMAND, ShellCommand.class, GroovyScriptCommand.class); 034 this.lifecycles = new ClassManager<Script>(context, ResourceKind.LIFECYCLE, Script.class, Script.class); 035 } 036 037 public CRaSHSession createSession(Principal user) { 038 return new CRaSHSession(this, user); 039 } 040 041 /** 042 * Returns the plugin context. 043 * 044 * @return the plugin context 045 */ 046 public PluginContext getContext() { 047 return context; 048 } 049 050 /** 051 * Attempt to obtain a command instance. Null is returned when such command does not exist. 052 * 053 * @param name the command name 054 * @return a command instance 055 * @throws org.crsh.command.NoSuchCommandException if an error occured preventing the command creation 056 * @throws NullPointerException if the name argument is null 057 */ 058 public ShellCommand getCommand(String name) throws NoSuchCommandException, NullPointerException { 059 return commands.getInstance(name); 060 } 061 }