package com.l2jserver.script.bsh; import javax.script.*; import java.util.List; import java.util.Arrays; public class BshScriptEngineFactory implements javax.script.ScriptEngineFactory { // Begin impl ScriptEnginInfo final List<String> extensions = Arrays.asList( "bsh", "java" ); final List<String> mimeTypes = Arrays.asList( "application/x-beanshell", "application/x-bsh", "application/x-java-source" ); final List<String> names = Arrays.asList( "beanshell", "bsh", "java" ); public String getEngineName() { return "BeanShell Engine"; } public String getEngineVersion() { return "1.0"; } public List<String> getExtensions() { return extensions; } public List<String> getMimeTypes() { return mimeTypes; } public List<String> getNames() { return names; } public String getLanguageName() { return "BeanShell"; } public String getLanguageVersion() { return bsh.Interpreter.VERSION + ""; } public Object getParameter( String param ) { if ( param.equals( ScriptEngine.ENGINE ) ) return getEngineName(); if ( param.equals( ScriptEngine.ENGINE_VERSION ) ) return getEngineVersion(); if ( param.equals( ScriptEngine.NAME ) ) return getEngineName(); if ( param.equals( ScriptEngine.LANGUAGE ) ) return getLanguageName(); if ( param.equals( ScriptEngine.LANGUAGE_VERSION ) ) return getLanguageVersion(); if ( param.equals( "THREADING" ) ) return "MULTITHREADED"; return null; } public String getMethodCallSyntax( String objectName, String methodName, String ... args ) { // Note: this is very close to the bsh.StringUtil.methodString() // method, which constructs a method signature from arg *types*. Maybe // combine these later. StringBuilder sb = new StringBuilder(); if ( objectName != null ) sb.append( objectName + "." ); sb.append( methodName + "(" ); if ( args.length > 0 ) sb.append(" "); for( int i=0; i<args.length; i++ ) sb.append( ( (args[i] == null) ? "null" : args[i] ) + ( i < (args.length-1) ? ", " : " " ) ); sb.append(")"); return sb.toString(); } public String getOutputStatement( String message ) { return "print( \"" + message + "\" );"; } public String getProgram( String ... statements ) { StringBuilder sb = new StringBuilder(); for( int i=0; i< statements.length; i++ ) { sb.append( statements[i] ); if ( !statements[i].endsWith(";") ) sb.append( ";" ); sb.append("\n"); } return sb.toString(); } // End impl ScriptEngineInfo // Begin impl ScriptEngineFactory public ScriptEngine getScriptEngine() { return new BshScriptEngine(); } // End impl ScriptEngineFactory }