/** * $Id: $ * $Date: $ * */ package org.xmlsh.sh.module; import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; import java.util.List; import org.xmlsh.core.CoreException; import org.xmlsh.core.ICommand; import org.xmlsh.core.IXFunction; import org.xmlsh.core.XClassLoader; import org.xmlsh.core.XValue; import org.xmlsh.sh.shell.Shell; import org.xmlsh.sh.shell.StaticContext; /* * A runtime instance of a module that may have state and may be shared or duplicated * in different contexts. */ public interface IModule { public abstract String describe(); public abstract URL getResource(String res); public abstract boolean hasHelp(String name); public abstract void onLoad(Shell shell) throws Exception; public ICommand getCommand(String name) throws IOException, URISyntaxException; // close() is called for an unload public IXFunction getFunction(String name); public URL getHelpURL(); // locate a resource in the module ( directory or package ) public URL findResource(String res); public String getName(); StaticContext getStaticContext(); public void onInit(Shell shell, List<XValue> args) throws Exception; public ModuleConfig getModuleConfig(Shell shell , String name , List<URL> ata ) throws Exception; public ModuleConfig getConfig(); public XClassLoader getClassLoader(); public void addClassPaths(Shell shell, List<URL> urls) throws CoreException; } /* * Copyright (C) 2008-2012 David A. Lee. * * The contents of this file are subject to the "Simplified BSD License" (the * "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.opensource.org/licenses/bsd-license.php * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is: all this file. * * The Initial Developer of the Original Code is David A. Lee * * Portions created by (your name) are Copyright (C) (your legal entity). All * Rights Reserved. * * Contributor(s): David A. Lee */