package com.innowhere.relproxy.impl.jproxy.shell;
import com.innowhere.relproxy.RelProxyException;
import com.innowhere.relproxy.impl.jproxy.JProxyConfigImpl;
import com.innowhere.relproxy.impl.jproxy.core.clsmgr.cldesc.ClassDescriptorSourceScript;
import com.innowhere.relproxy.impl.jproxy.core.clsmgr.FolderSourceList;
import com.innowhere.relproxy.impl.jproxy.core.clsmgr.srcunit.SourceScriptRoot;
import com.innowhere.relproxy.impl.jproxy.core.clsmgr.srcunit.SourceScriptRootInMemory;
import java.util.LinkedList;
/**
*
* @author jmarranz
*/
public class JProxyShellCodeSnippetImpl extends JProxyShellImpl
{
public void init(String[] args)
{
super.init(args, null);
}
@Override
protected void executeFirstTime(ClassDescriptorSourceScript scriptFileDesc,LinkedList<String> argsToScript,JProxyShellClassLoader classLoader)
{
try
{
scriptFileDesc.callMainMethod(argsToScript);
}
catch(Throwable ex)
{
ex.printStackTrace(System.out);
}
}
@Override
protected void processConfigParams(String[] args,LinkedList<String> argsToScript,JProxyConfigImpl config)
{
super.processConfigParams(args, argsToScript, config);
String classFolder = config.getClassFolder();
if (classFolder != null && !classFolder.trim().isEmpty()) throw new RelProxyException("cacheClassFolder is useless to execute a code snippet");
}
@Override
protected SourceScriptRoot createSourceScriptRoot(String[] args,LinkedList<String> argsToScript,FolderSourceList folderSourceList)
{
// En argsToScript no está el args[0] ni falta que hace porque es el flag "-c"
StringBuilder code = new StringBuilder();
for(String chunk : argsToScript)
code.append(chunk);
return SourceScriptRootInMemory.createSourceScriptInMemory(code.toString());
}
@Override
protected JProxyShellClassLoader getJProxyShellClassLoader(JProxyConfigImpl config)
{
// No hay classFolder => no hay necesidad de nuevo ClassLoader
return null;
}
}