1 16 package com.google.gwt.dev.cfg; 17 18 import com.google.gwt.dev.js.JsParser; 19 import com.google.gwt.dev.js.JsParserException; 20 import com.google.gwt.dev.js.ast.JsBlock; 21 import com.google.gwt.dev.js.ast.JsExprStmt; 22 import com.google.gwt.dev.js.ast.JsFunction; 23 import com.google.gwt.dev.js.ast.JsProgram; 24 import com.google.gwt.dev.js.ast.JsStatements; 25 26 import java.io.IOException ; 27 import java.io.StringReader ; 28 29 33 public class DefaultPropertyProvider extends PropertyProvider { 34 35 40 public DefaultPropertyProvider(ModuleDef module, Property property) { 41 super(module, property); 42 String src = "function () {"; 43 src += "return _gwt_getMetaProperty(\""; 44 src += property.getName(); 45 src += "\"); }"; 46 setBody(parseFunction(src)); 47 } 48 49 private JsBlock parseFunction(String jsniSrc) { 50 Throwable caught = null; 51 try { 52 JsProgram jsPgm = new JsProgram(); 53 JsParser jsParser = new JsParser(); 54 StringReader r = new StringReader (jsniSrc); 55 JsStatements stmts = jsParser.parse(jsPgm.getScope(), r, 1); 56 JsFunction fn = (JsFunction) ((JsExprStmt) stmts.get(0)).getExpression(); 57 return fn.getBody(); 58 } catch (IOException e) { 59 caught = e; 60 } catch (JsParserException e) { 61 caught = e; 62 } 63 throw new RuntimeException ( 64 "Internal error parsing source for default property provider", caught); 65 } 66 } 67 | Popular Tags |