| 1 package com.quadcap.http.servlets.jsp; 2 3 40 41 import java.io.OutputStream ; 42 import java.util.ArrayList ; 43 44 import sun.tools.javac.Main; 45 46 import com.quadcap.util.Debug; 47 48 54 public class Javac extends JavaCompiler { 55 public Javac() {} 56 57 final String chopLastQ(String s) { 58 if (s.length() > 0 && s.charAt(s.length()-1) == '"') { 59 s = s.substring(0, s.length()-1); 60 } 61 return s; 62 } 63 64 private final String [] parseArgs(String str) { 65 ArrayList r = new ArrayList (); 66 int state = 0; StringBuffer sb = new StringBuffer (); 68 for (int i = 0; i < str.length(); i++) { 69 final char c = str.charAt(i); 70 switch (state) { 71 case 0: 72 if (!Character.isSpace(c)) { 73 if (c != '"') sb.append(c); 74 state = 1; 75 } 76 break; 77 case 1: 78 if (Character.isSpace(c)) { 79 r.add(chopLastQ(sb.toString())); 80 sb.setLength(0); 81 state = 1; 82 break; 83 } else { 84 sb.append(c); 85 } 86 break; 87 } 88 } 89 if (sb.length() > 0) { 90 r.add(chopLastQ(sb.toString())); 91 } 92 if (r.size() == 0) return null; 93 int i = 0; 94 if (r.get(0).toString().equalsIgnoreCase("javac")) i++; 95 String [] ret = new String [r.size() - i]; 96 for (int ri = 0; ri < ret.length; ri++) { 97 ret[ri] = r.get(i++).toString(); 98 } 99 return ret; 100 } 101 102 public boolean doCompile(String cmd, OutputStream compileOutput) { 103 Main compiler = new Main(compileOutput, "javac"); 104 return compiler.compile(parseArgs(cmd)); 105 } 106 } 107 108 109 110 | Popular Tags |