1 16 package com.google.gwt.i18n.rebind; 17 18 import com.google.gwt.core.ext.TreeLogger; 19 import com.google.gwt.core.ext.UnableToCompleteException; 20 import com.google.gwt.core.ext.typeinfo.JMethod; 21 import com.google.gwt.user.rebind.AbstractGeneratorClassCreator; 22 23 26 class SimpleValueMethodCreator extends AbstractLocalizableMethodCreator { 27 28 31 public abstract static class AbstractValueCreator { 32 abstract String getValue(String stringVal); 33 } 34 35 private static class BadBooleanPropertyValue extends RuntimeException { 36 } 37 38 static final AbstractValueCreator DOUBLE = new AbstractValueCreator() { 39 String getValue(String stringVal) { 40 return Double.parseDouble(stringVal) + ""; 41 } 42 }; 43 static final AbstractValueCreator FLOAT = new AbstractValueCreator() { 44 String getValue(String stringVal) { 45 return Float.parseFloat(stringVal) + "f"; 46 } 47 }; 48 static final AbstractValueCreator INT = new AbstractValueCreator() { 49 String getValue(String stringVal) { 50 return Integer.parseInt(stringVal) + ""; 51 } 52 }; 53 static final AbstractValueCreator STRING = new AbstractValueCreator() { 54 String getValue(String stringVal) { 55 return wrap(stringVal); 56 } 57 }; 58 static final AbstractValueCreator BOOLEAN = new AbstractValueCreator() { 59 String getValue(String stringVal) { 60 if ("true".equals(stringVal)) { 61 return "true"; 62 } else if ("false".equals(stringVal)) { 63 return "false"; 64 } else { 65 throw new BadBooleanPropertyValue(); 66 } 67 } 68 }; 69 70 private AbstractValueCreator valueCreator; 71 72 78 SimpleValueMethodCreator(AbstractGeneratorClassCreator currentCreator, 79 AbstractValueCreator valueCreator) { 80 super(currentCreator); 81 this.valueCreator = valueCreator; 82 } 83 84 public void createMethodFor(TreeLogger logger, JMethod targetMethod, 85 String value) throws UnableToCompleteException { 86 try { 87 String translatedValue = valueCreator.getValue(value); 88 println("return " + translatedValue + ";"); 89 } catch (NumberFormatException e) { 90 throw error(logger, value + " could not be parsed as a number."); 91 } catch (BadBooleanPropertyValue e) { 92 throw error( 93 logger, 94 "'" 95 + value 96 + "' is not a valid boolean property value; must be 'true' or 'false'"); 97 } 98 } 99 } 100 | Popular Tags |