1 29 30 package com.caucho.quercus.script; 31 32 import javax.script.Bindings; 33 import javax.script.ScriptEngine; 34 import javax.script.ScriptEngineFactory; 35 import javax.script.SimpleBindings; 36 import java.util.ArrayList ; 37 import java.util.List ; 38 import java.lang.reflect.*; 39 40 43 public class QuercusScriptEngineFactory implements ScriptEngineFactory { 44 private Bindings _globalBindings = new SimpleBindings(); 45 46 49 public String getEngineName() 50 { 51 return "Caucho Quercus Script Engine"; 52 } 53 54 57 public String getEngineVersion() 58 { 59 try { 60 62 Class cl = Class.forName("com.caucho.Version"); 63 Field version = cl.getField("VERSION"); 64 65 return (String ) version.get(null); 66 } catch (Exception e) { 67 } 68 69 return "Resin/3.1.0"; 70 } 71 72 76 public List <String > getExtensions() 77 { 78 ArrayList <String > ext = new ArrayList <String >(); 79 ext.add("php"); 80 return ext; 81 } 82 83 86 public List <String > getMimeTypes() 87 { 88 return new ArrayList <String >(); 89 } 90 91 95 public List <String > getNames() 96 { 97 ArrayList <String > names = new ArrayList <String >(); 98 names.add("quercus"); 99 names.add("php"); 100 return names; 101 } 102 103 106 public String getLanguageName() 107 { 108 return "php"; 109 } 110 111 114 public String getLanguageVersion() 115 { 116 return "5.0.4"; 117 } 118 119 127 public Object getParameter(String key) 128 { 129 if ("THREADING".equals(key)) 130 return "THREAD-ISOLATED"; 131 else if (ScriptEngine.ENGINE.equals(key)) 132 return getEngineName(); 133 else if (ScriptEngine.ENGINE_VERSION.equals(key)) 134 return getEngineVersion(); 135 else if (ScriptEngine.NAME.equals(key)) 136 return getEngineName(); 137 else if (ScriptEngine.LANGUAGE.equals(key)) 138 return getLanguageName(); 139 else if (ScriptEngine.LANGUAGE_VERSION.equals(key)) 140 return getLanguageVersion(); 141 else 142 return null; 143 } 144 145 148 public String getMethodCallSyntax(String obj, String m, String []args) 149 { 150 StringBuilder sb = new StringBuilder (); 151 152 sb.append("$"); 153 sb.append(obj); 154 sb.append("->"); 155 sb.append(m); 156 sb.append("("); 157 for (int i = 0; i < args.length; i++) { 158 if (i != 0) 159 sb.append(", "); 160 161 sb.append("$"); 162 sb.append(args[i]); 163 } 164 sb.append(");"); 165 166 return sb.toString(); 167 } 168 169 172 public String getOutputStatement(String toDisplay) 173 { 174 return "echo(\'" + toDisplay.replace("\'", "\\\'") + "\');"; 175 } 176 177 180 public String getProgram(String []statements) 181 { 182 StringBuilder sb = new StringBuilder (); 183 184 sb.append("<?php\n"); 185 186 for (int i = 0; i < statements.length; i++) { 187 sb.append(statements[i]); 188 sb.append(";\n"); 189 } 190 191 sb.append("?>\n"); 192 193 return sb.toString(); 194 } 195 196 199 public ScriptEngine getScriptEngine() 200 { 201 return new QuercusScriptEngine(this); 202 } 203 204 public String toString() 205 { 206 return "QuercusScriptEngineFactory[]"; 207 } 208 } 209 210 | Popular Tags |