/** * $Id: ScriptCommand.java 27 2008-07-05 14:30:33Z daldei $ * $Date: 2008-07-05 10:30:33 -0400 (Sat, 05 Jul 2008) $ * */ package org.xmlsh.core; import java.io.PrintWriter; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.xmlsh.sh.core.ICommandExpr; import org.xmlsh.sh.core.SourceLocation; import org.xmlsh.sh.module.IModule; import org.xmlsh.sh.shell.Shell; public class FunctionCommand implements ICommand { String mName; ICommandExpr mFunction; SourceLocation mLocation; IModule mModule; private static Logger mLogger = LogManager.getLogger(); @Override protected void finalize() { // Clear refs mFunction = null; mLocation = null; mModule = null; } public FunctionCommand(IModule iModule, String name, ICommandExpr func, SourceLocation loc) { mLogger.entry(iModule, name, func, loc); assert (iModule != null); mName = name; mFunction = func; mLocation = loc; mModule = iModule; } @Override public URL getURL() throws MalformedURLException { // TODO Auto-generated method stub return null; } @Override public int run(Shell shell, String cmd, List<XValue> args) throws Exception { mLogger.entry(shell, cmd); int ret = shell .execFunctionAsCommand(mName, mFunction, mLocation, args); if(ret == 0) ret = shell.getReturnValueAsExitStatus(ret); return ret; } /* * (non-Javadoc) * * @see org.xmlsh.core.ICommand#getType() */ @Override public CommandType getType() { return CommandType.CMD_TYPE_FUNCTION; } @Override public IModule getModule() { return mModule; } @Override public SourceLocation getLocation() { return mLocation; } @Override public void setLocation(SourceLocation loc) { mLocation = loc; } @Override public void print(PrintWriter w, boolean bExec) { w.print(mName); } }