List of usage examples for com.google.gwt.core.ext.typeinfo JArrayType getComponentType
JType getComponentType();
From source file:com.cgxlib.xq.rebind.JsonBuilderGenerator.java
License:Apache License
public void generateMethod(SourceWriter sw, JMethod method, String name, TreeLogger logger) throws UnableToCompleteException { String ifaceName = method.getEnclosingType().getQualifiedSourceName(); String retType = method.getReturnType().getParameterizedQualifiedSourceName(); sw.print("public final " + retType + " " + method.getName()); JParameter[] params = method.getParameters(); if (params.length == 0) { JArrayType arr = method.getReturnType().isArray(); JParameterizedType list = method.getReturnType().isParameterized(); sw.println("() {"); sw.indent();//from w w w. ja va 2s.com if (retType.matches("(java.lang.Boolean|boolean)")) { sw.println("return p.getBoolean(\"" + name + "\");"); } else if (retType.matches("java.util.Date")) { sw.println("return new Date(java.lang.Long.parseLong(p.getStr(\"" + name + "\")));"); } else if (method.getReturnType().isPrimitive() != null) { sw.println("return (" + retType + ")p.getFloat(\"" + name + "\");"); } else if (retType.equals("java.lang.Character")) { sw.println("return (char) p.getFloat(\"" + name + "\");"); } else if (retType.equals("java.lang.Byte")) { sw.println("return (byte) p.getFloat(\"" + name + "\");"); } else if (retType.equals("java.lang.Integer")) { sw.println("return (int) p.getFloat(\"" + name + "\");"); } else if (retType.equals("java.lang.Float")) { sw.println("return p.getFloat(\"" + name + "\");"); } else if (retType.equals("java.lang.Double")) { sw.println("return (double) p.getFloat(\"" + name + "\");"); } else if (retType.equals("java.lang.Long")) { sw.println("return (long) p.getFloat(\"" + name + "\");"); } else if (retType.equals("java.lang.Byte")) { sw.println("return (byte) p.getFloat(\"" + name + "\");"); } else if (isTypeAssignableTo(method.getReturnType(), stringType)) { sw.println("return p.getStr(\"" + name + "\");"); } else if (isTypeAssignableTo(method.getReturnType(), jsonBuilderType)) { String q = method.getReturnType().getQualifiedSourceName(); sw.println("return " + "((" + q + ")GWT.create(" + q + ".class))" + ".load(getPropertiesBase(\"" + name + "\"));"); } else if (isTypeAssignableTo(method.getReturnType(), settingsType)) { String q = method.getReturnType().getQualifiedSourceName(); sw.println("return " + "((" + q + ")getPropertiesBase(\"" + name + "\"));"); } else if (retType.equals(Properties.class.getName())) { sw.println("return getPropertiesBase(\"" + name + "\");"); } else if (isTypeAssignableTo(method.getReturnType(), jsType)) { sw.println("return p.getJavaScriptObject(\"" + name + "\");"); } else if (isTypeAssignableTo(method.getReturnType(), functionType)) { sw.println("return p.getFunction(\"" + name + "\");"); } else if (arr != null || list != null) { JType type = arr != null ? arr.getComponentType() : list.getTypeArgs()[0]; boolean buildType = isTypeAssignableTo(type, jsonBuilderType); String t = type.getQualifiedSourceName(); sw.println("JsArrayMixed a = p.getArray(\"" + name + "\");"); sw.println("int l = a == null ? 0 : a.length();"); String ret; if (buildType) { sw.println(t + "[] r = new " + t + "[l];"); sw.println("JsObjectArray<?> a1 = p.getArray(\"" + name + "\").cast();"); sw.println("int l1 = r.length;"); sw.println("for (int i = 0 ; i < l1 ; i++) {"); sw.println(" Object w = a1.get(i);"); sw.println(" " + t + " instance = GWT.create(" + t + ".class);"); sw.println(" r[i] = instance.load(w);"); sw.println("}"); ret = "r"; } else { ret = "getArrayBase(\"" + name + "\", new " + t + "[l], " + t + ".class)"; } if (arr != null) { sw.println("return " + ret + ";"); } else { sw.println("return Arrays.asList(" + ret + ");"); } } else if (method.getReturnType().isEnum() != null) { sw.println("return " + method.getReturnType().getQualifiedSourceName() + ".valueOf(p.getStr(\"" + name + "\"));"); } else { sw.println("System.err.println(\"JsonBuilderGenerator WARN: unknown return type " + retType + " " + ifaceName + "." + name + "()\"); "); // We return the object because probably the user knows how to handle it sw.println("return p.get(\"" + name + "\");"); } sw.outdent(); sw.println("}"); } else if (params.length == 1) { JType type = params[0].getType(); JArrayType arr = type.isArray(); JParameterizedType list = type.isParameterized(); sw.print("(" + type.getParameterizedQualifiedSourceName() + " a)"); sw.println("{"); sw.indent(); if (arr != null || list != null) { String a = "a"; if (list != null) { a = "a.toArray(new " + list.getTypeArgs()[0].getQualifiedSourceName() + "[0])"; } sw.println("setArrayBase(\"" + name + "\", " + a + ");"); } else if (type.getParameterizedQualifiedSourceName().matches("java.util.Date")) { sw.println("p.setNumber(\"" + name + "\", a.getTime());"); } else if (type.getParameterizedQualifiedSourceName().matches( "(java.lang.(Character|Long|Double|Integer|Float|Byte)|(char|long|double|int|float|byte))")) { sw.println("p.setNumber(\"" + name + "\", a);"); } else if (type.getParameterizedQualifiedSourceName().matches("(java.lang.Boolean|boolean)")) { sw.println("p.setBoolean(\"" + name + "\", a);"); } else if (type.getParameterizedQualifiedSourceName().matches("com.cgxlib.xq.client.Function")) { sw.println("p.setFunction(\"" + name + "\", a);"); } else if (type.isEnum() != null) { sw.println("p.set(\"" + name + "\", a.name());"); } else { sw.println("set(\"" + name + "\", a);"); } if (!"void".equals(retType)) { if (isTypeAssignableTo(method.getReturnType(), method.getEnclosingType())) { sw.println("return this;"); } else { sw.println("return null;"); } } sw.outdent(); sw.println("}"); } }
From source file:com.cgxlib.xq.rebind.XmlBuilderGenerator.java
License:Apache License
public void generateMethod(SourceWriter sw, JMethod method, TreeLogger logger) throws UnableToCompleteException { Name nameAnnotation = method.getAnnotation(Name.class); String name = nameAnnotation != null ? nameAnnotation.value() : method.getName().replaceFirst("^(get|set)", ""); if (nameAnnotation == null) { name = name.substring(0, 1).toLowerCase() + name.substring(1); }//w ww. jav a2 s. co m String retType = method.getReturnType().getParameterizedQualifiedSourceName(); sw.print("public final " + retType + " " + method.getName()); JParameter[] params = method.getParameters(); if (params.length == 0) { JArrayType arr = method.getReturnType().isArray(); sw.println("() {"); sw.indent(); if (retType.matches("(java.lang.Boolean|boolean)")) { sw.println("return getBooleanBase(\"" + name + "\");"); } else if (method.getReturnType().isPrimitive() != null) { sw.println("return (" + retType + ")getFloatBase(\"" + name + "\");"); } else if (isTypeAssignableTo(method.getReturnType(), stringType)) { sw.println("return getStrBase(\"" + name + "\");"); } else if (isTypeAssignableTo(method.getReturnType(), xmlBuilderType)) { String q = method.getReturnType().getQualifiedSourceName(); sw.println("Element e = getElementBase(\"" + name + "\");"); sw.println( "return e == null ? null : (" + q + ")((" + q + ")GWT.create(" + q + ".class)).load(e);"); } else if (retType.equals(Properties.class.getName())) { sw.println("return getPropertiesBase(\"" + name + "\");"); } else if (arr != null) { String q = arr.getComponentType().getQualifiedSourceName(); sw.println("ArrayList<" + q + "> l = new ArrayList<" + q + ">();"); sw.println("for (Element e: getElementsBase(\"" + name + "\")) {"); sw.println(" " + q + " c = GWT.create(" + q + ".class);"); sw.println(" c.load(e);"); sw.println(" l.add(c);"); sw.println("}"); sw.println("return l.toArray(new " + q + "[0]);"); } else { sw.println("return null; // Unsupported return type: " + retType); } sw.outdent(); sw.println("}"); } else if (params.length == 1) { JType type = params[0].getType(); JArrayType arr = type.isArray(); String qname = type.getParameterizedQualifiedSourceName(); sw.print("(" + qname + " a)"); sw.println("{"); sw.indent(); if (arr != null) { sw.println("setArrayBase(\"" + name + "\", a);"); } else { sw.println("setBase(\"" + name + "\", a);"); } if (!"void".equals(retType)) { if (isTypeAssignableTo(method.getReturnType(), method.getEnclosingType())) { sw.println("return this;"); } else { sw.println("return null;"); } } sw.outdent(); sw.println("}"); } }
From source file:com.didactilab.gwt.phprpc.rebind.PhpTools.java
License:Apache License
public static String typeToString(JType type, boolean phpCompatible) { String name = ""; JArrayType arrayType = type.isArray(); if (arrayType != null) { if (phpCompatible) name = "array"; else//from w ww . j av a 2 s . c o m name = typeToString(arrayType.getComponentType(), phpCompatible) + "[]"; } else { JClassType classType = type.isClassOrInterface(); if ((classType != null) && (classType.getEnclosingType() != null)) name = typeToString(classType.getEnclosingType(), phpCompatible) + "_"; name += filterType(type.getSimpleSourceName()); if (!phpCompatible) { JParameterizedType params = type.isParameterized(); if (params != null) { JClassType[] args = params.getTypeArgs(); name += "<"; for (int i = 0, c = args.length; i < c; i++) { name += typeToString(args[i], phpCompatible); if (i < c - 1) name += ", "; } name += ">"; } } } return name; }
From source file:com.github.nmorel.gwtjackson.rebind.property.PropertyProcessor.java
License:Apache License
/** * Extract the bean type from the type given in parameter. For {@link java.util.Collection}, it gives the bounded type. For {@link * java.util.Map}, it gives the second bounded type. Otherwise, it gives the type given in parameter. * * @param type type to extract the bean type * @param propertyName name of the property * * @return the extracted type/* w ww . ja v a2s. co m*/ */ private static Optional<JClassType> extractBeanType(TreeLogger logger, JacksonTypeOracle typeOracle, JType type, String propertyName) { if (null != type.isWildcard()) { // we use the base type to find the serializer to use type = type.isWildcard().getBaseType(); } if (null != type.isRawType()) { type = type.isRawType().getBaseType(); } JArrayType arrayType = type.isArray(); if (null != arrayType) { return extractBeanType(logger, typeOracle, arrayType.getComponentType(), propertyName); } JClassType classType = type.isClassOrInterface(); if (null == classType) { return Optional.absent(); } else if (typeOracle.isIterable(classType)) { if ((null == classType.isParameterized() || classType.isParameterized().getTypeArgs().length != 1) && (null == classType.isGenericType() || classType.isGenericType().getTypeParameters().length != 1)) { logger.log(Type.INFO, "Expected one argument for the java.lang.Iterable '" + propertyName + "'. Applying annotations to " + "type " + classType.getParameterizedQualifiedSourceName()); return Optional.of(classType); } if (null != classType.isParameterized()) { return extractBeanType(logger, typeOracle, classType.isParameterized().getTypeArgs()[0], propertyName); } else { return extractBeanType(logger, typeOracle, classType.isGenericType().getTypeParameters()[0].getBaseType(), propertyName); } } else if (typeOracle.isMap(classType)) { if ((null == classType.isParameterized() || classType.isParameterized().getTypeArgs().length != 2) && (null == classType.isGenericType() || classType.isGenericType().getTypeParameters().length != 2)) { logger.log(Type.INFO, "Expected two arguments for the java.util.Map '" + propertyName + "'. Applying annotations to " + "type " + classType.getParameterizedQualifiedSourceName()); return Optional.of(classType); } if (null != classType.isParameterized()) { return extractBeanType(logger, typeOracle, classType.isParameterized().getTypeArgs()[1], propertyName); } else { return extractBeanType(logger, typeOracle, classType.isGenericType().getTypeParameters()[1].getBaseType(), propertyName); } } else { return Optional.of(classType); } }
From source file:com.guit.rebind.jsorm.JsonSerializerUtil.java
License:Apache License
public static String generate(TreeLogger logger, GeneratorContext context, JClassType pojoType) throws UnableToCompleteException { JsonSerializerUtil.logger = logger;/*from w w w .j a v a 2s .c o m*/ // We cannot serialize java.lang.Object String pojoQualifiedName = pojoType.getQualifiedSourceName(); if (pojoQualifiedName.equals(Object.class.getCanonicalName())) { error("You cannot serialize Object... we either"); } if (exceptions == null) { exceptions = new HashMap<String, String>(); try { List<String> ormExceptions = context.getPropertyOracle() .getConfigurationProperty("json.orm.exception").getValues(); for (String e : ormExceptions) { String[] parts = e.split(" "); if (parts.length != 2) { error("Bad json orm exception format. i.e 'java.util.List java.util.ArrayList<%s>. Found: %s'", e); } exceptions.put(parts[0], parts[1]); } } catch (BadPropertyValueException e) { throw new IllegalStateException(e); } } String parameterizedQualifiedSourceName = pojoType.getParameterizedQualifiedSourceName(); String typeName = parameterizedQualifiedSourceName; // Basic types if (typeName.equals(Void.class.getCanonicalName())) { return VoidSerializer.class.getCanonicalName(); } else if (typeName.equals(String.class.getCanonicalName())) { return StringSerializer.class.getCanonicalName(); } else if (typeName.equals(Integer.class.getCanonicalName())) { return IntegerSerializer.class.getCanonicalName(); } else if (typeName.equals(Long.class.getCanonicalName())) { return LongSerializer.class.getCanonicalName(); } else if (typeName.equals(Double.class.getCanonicalName())) { return DoubleSerializer.class.getCanonicalName(); } else if (typeName.equals(Float.class.getCanonicalName())) { return FloatSerializer.class.getCanonicalName(); } else if (typeName.equals(Date.class.getCanonicalName())) { return DateSerializer.class.getCanonicalName(); } else if (typeName.equals(Boolean.class.getCanonicalName())) { return BooleanSerializer.class.getCanonicalName(); } // Build name avoiding generics collitions StringBuilder implName = new StringBuilder(); makeImplName(pojoType, implName); implName.append("_GuitJsonSerializer"); String packageName = pojoType.getPackage().getName(); if (packageName.startsWith("java.")) { packageName = "com.guit.java." + packageName.substring(5); } String implNameString = implName.toString(); if (getClass(packageName, implNameString)) { return packageName + "." + implNameString; } ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(packageName, implNameString); composer.addImplementedInterface(TypeJsonSerializer.class.getCanonicalName() + "<" + typeName + ">"); PrintWriter printWriter = context.tryCreate(logger, packageName, implNameString); String createdName = composer.getCreatedClassName(); if (printWriter != null) { SourceWriter writer = composer.createSourceWriter(context, printWriter); JType iterableParameterType = null; JPrimitiveType iterableParameterPrimitiveType = null; // Iterable JGenericType iterableType = context.getTypeOracle().findType(Iterable.class.getCanonicalName()) .isGenericType(); boolean isIterable = false; if (iterableType.isAssignableFrom(pojoType)) { isIterable = true; iterableParameterType = pojoType.asParameterizationOf(iterableType).getTypeArgs()[0]; iterableParameterPrimitiveType = iterableParameterType.isPrimitive(); // Find if theres any exception String qualifiedSourceName = pojoQualifiedName; if (exceptions.containsKey(qualifiedSourceName)) { parameterizedQualifiedSourceName = exceptions.get(qualifiedSourceName) + "<" + iterableParameterType.getParameterizedQualifiedSourceName() + ">"; } } // Map JGenericType mapType = context.getTypeOracle().findType(Map.class.getCanonicalName()).isGenericType(); boolean isMap = false; JClassType mapKeyType = null; JClassType mapValueType = null; if (mapType.isAssignableFrom(pojoType)) { isMap = true; JParameterizedType pojoMap = pojoType.asParameterizationOf(mapType); JClassType[] args = pojoMap.getTypeArgs(); mapKeyType = args[0]; mapValueType = args[1]; // Find if theres any exception String qualifiedSourceName = pojoQualifiedName; if (exceptions.containsKey(qualifiedSourceName)) { parameterizedQualifiedSourceName = exceptions.get(qualifiedSourceName) + "<" + mapKeyType.getParameterizedQualifiedSourceName() + "," + mapValueType.getParameterizedQualifiedSourceName() + ">"; } } // Array boolean isArray = false; JArrayType pojoArray = pojoType.isArray(); if (pojoArray != null) { isArray = true; iterableParameterType = pojoArray.getComponentType(); iterableParameterPrimitiveType = iterableParameterType.isPrimitive(); } // For pojos ArrayList<JField> fields = null; writer.println("public static " + createdName + " singleton;"); writer.println("public static " + createdName + " getSingleton() {"); writer.indent(); writer.println("return singleton == null ? (singleton = new " + createdName + "()) : singleton;"); writer.outdent(); writer.println("}"); writer.println("@Override"); writer.println("public " + JSONValue.class.getCanonicalName() + " serialize(" + typeName + " data) {"); writer.indent(); if (isMap) { writer.println("if (data != null) {"); writer.indent(); writer.println(JSONArray.class.getCanonicalName() + " array = new " + JSONArray.class.getCanonicalName() + "();"); writer.println("int n = 0;"); writer.println("for (" + Entry.class.getCanonicalName() + "<" + mapKeyType.getParameterizedQualifiedSourceName() + ", " + mapValueType.getParameterizedQualifiedSourceName() + ">" + " entry : data.entrySet()) {"); writer.indent(); writer.print("array.set(n, "); JPrimitiveType mapKeyPrimitive = mapKeyType.isPrimitive(); if (mapKeyPrimitive == null) { printValueSerialized(logger, context, writer, "entry.getKey()", mapKeyType, pojoType); } else { printPrimitiveSerialized(typeName, writer, "entry.getKey()", mapKeyPrimitive); } writer.println(");"); writer.println("n++;"); writer.print("array.set(n, "); JPrimitiveType mapValuePrimitive = mapValueType.isPrimitive(); if (mapValuePrimitive == null) { printValueSerialized(logger, context, writer, "entry.getValue()", mapValueType, pojoType); } else { printPrimitiveSerialized(typeName, writer, "entry.getValue()", mapValuePrimitive); } writer.println(");"); writer.println("n++;"); writer.outdent(); writer.println("}"); writer.println("return array;"); writer.outdent(); writer.println("}"); writer.println("return " + JSONNull.class.getCanonicalName() + ".getInstance();"); } else if (isIterable || isArray) { writer.println("if (data != null) {"); writer.indent(); writer.println(JSONArray.class.getCanonicalName() + " array = new " + JSONArray.class.getCanonicalName() + "();"); writer.println("int n = 0;"); writer.println( "for (" + iterableParameterType.getParameterizedQualifiedSourceName() + " item : data) {"); writer.indent(); writer.print("array.set(n, "); if (iterableParameterPrimitiveType == null) { printValueSerialized(logger, context, writer, "item", iterableParameterType, pojoType); } else { printPrimitiveSerialized(typeName, writer, "item", iterableParameterPrimitiveType); } writer.println(");"); writer.println("n++;"); writer.outdent(); writer.println("}"); writer.println("return array;"); writer.outdent(); writer.println("}"); writer.println("return " + JSONNull.class.getCanonicalName() + ".getInstance();"); } else if (pojoType.isEnum() != null) { writer.println("if (data != null) {"); writer.indent(); writer.println("return new " + JSONString.class.getCanonicalName() + "(data.name());"); writer.outdent(); writer.println("}"); writer.println("return " + JSONNull.class.getCanonicalName() + ".getInstance();"); } else { // Assert the type have an empty constructor try { pojoType.getConstructor(emptyParameter); } catch (NotFoundException e) { error("The data type of the place does not have an empty constructor. Found %s", typeName); } writer.println(jsonObject + " json = new " + jsonObject + "();"); fields = new ArrayList<JField>(); getFields(fields, pojoType); for (JField f : fields) { String fieldName = f.getName(); String getterName = fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); JType fieldType = f.getType(); JPrimitiveType primitive = fieldType.isPrimitive(); String fieldTypeQualifiedType = fieldType.getQualifiedSourceName(); if (primitive != null) { writer.print("json.put(\"" + fieldName + "\","); printPrimitiveSerialized(typeName, writer, "get" + getterName + "(data)", primitive); writer.println(");"); } else { writer.println( fieldTypeQualifiedType + " " + fieldName + " = get" + getterName + "(data);"); writer.println("if (" + fieldName + " != null) {"); writer.indent(); writer.print("json.put(\"" + fieldName + "\","); printValueSerialized(logger, context, writer, fieldName, fieldType, pojoType); writer.println(");"); writer.outdent(); writer.println("}"); } } writer.println("return json;"); } writer.outdent(); writer.println("}"); // Getters and setters printJsniGettersAndSetters(writer, pojoType); writer.println("@Override"); writer.println( "public " + typeName + " deserialize(" + JSONValue.class.getCanonicalName() + " jsonValue) {"); writer.indent(); if (isMap) { writer.println("if (jsonValue.isNull() == null) {"); writer.indent(); writer.println(JSONArray.class.getCanonicalName() + " jsonArray = jsonValue.isArray();"); writer.println("int jsonArraySize = jsonArray.size();"); writer.println(parameterizedQualifiedSourceName + " map = new " + parameterizedQualifiedSourceName + "();"); writer.println("for (int n = 0; n < jsonArraySize; n+=2) {"); writer.indent(); writer.println(JSONValue.class.getCanonicalName() + " key = jsonArray.get(n);"); writer.println(JSONValue.class.getCanonicalName() + " value = jsonArray.get(n + 1);"); writer.print("map.put("); JPrimitiveType mapKeyPrimitive = mapKeyType.isPrimitive(); if (mapKeyPrimitive == null) { printValueDeserialized(logger, context, writer, "key", mapKeyType); } else { printPrimitiveDeserialized(typeName, writer, "key", mapKeyPrimitive); } writer.print(","); JPrimitiveType mapValuePrimitive = mapValueType.isPrimitive(); if (mapValuePrimitive == null) { printValueDeserialized(logger, context, writer, "value", mapValueType); } else { printPrimitiveDeserialized(typeName, writer, "value", mapValuePrimitive); } writer.println(");"); writer.outdent(); writer.println("}"); writer.println("return map;"); writer.outdent(); writer.println("} else { return null; }"); } else if (isIterable || isArray) { writer.println("if (jsonValue.isNull() == null) {"); writer.indent(); writer.println(JSONArray.class.getCanonicalName() + " jsonArray = jsonValue.isArray();"); writer.println("int jsonArraySize = jsonArray.size();"); if (isIterable) { writer.println(parameterizedQualifiedSourceName + " array = new " + parameterizedQualifiedSourceName + "();"); } else { JArrayType array = iterableParameterType.isArray(); if (array != null) { String arrayName = array.getQualifiedSourceName() + "[]"; int index = arrayName.indexOf("["); String arrayDeclaration = arrayName.substring(0, index + 1) + "jsonArraySize" + arrayName.substring(index + 1); writer.println(arrayName + " array = new " + arrayDeclaration + ";"); } else { String parameterQualifiedName = iterableParameterType.getQualifiedSourceName(); writer.println(parameterQualifiedName + "[] array = new " + parameterQualifiedName + "[jsonArraySize];"); } } writer.println("for (int n = 0; n < jsonArraySize; n++) {"); writer.indent(); writer.println(JSONValue.class.getCanonicalName() + " item = jsonArray.get(n);"); if (isIterable) { writer.print("array.add("); } else { writer.print("array[n] = "); } if (iterableParameterPrimitiveType == null) { printValueDeserialized(logger, context, writer, "item", iterableParameterType); } else { printPrimitiveDeserialized(typeName, writer, "item", iterableParameterPrimitiveType); } if (isIterable) { writer.println(");"); } else { writer.println(";"); } writer.outdent(); writer.println("}"); writer.println("return array;"); writer.outdent(); writer.println("} else { return null; }"); } else if (pojoType.isEnum() != null) { writer.println("if (jsonValue.isNull() == null) {"); writer.indent(); writer.println("return " + typeName + ".valueOf(jsonValue.isString().stringValue());"); writer.outdent(); writer.println("} else { return null; }"); } else { // Assert the type have an empty constructor try { pojoType.getConstructor(emptyParameter); } catch (NotFoundException e) { error("The data type of the place does not have an empty constructor. Found %s", typeName); } writer.println(JSONObject.class.getCanonicalName() + " json = jsonValue.isObject();"); writer.println(typeName + " instance = new " + typeName + "();"); for (JField f : fields) { String fieldName = f.getName(); String setterName = fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); JType fieldType = f.getType(); JPrimitiveType primitive = fieldType.isPrimitive(); if (primitive != null) { writer.print("set" + setterName + "(instance,"); printPrimitiveDeserialized(typeName, writer, "json.get(\"" + fieldName + "\")", primitive); writer.println(");"); } else { writer.println("if (json.containsKey(\"" + fieldName + "\")) {"); writer.indent(); writer.print("set" + setterName + "(instance,"); printValueDeserialized(logger, context, writer, "json.get(\"" + fieldName + "\")", fieldType); writer.println(");"); writer.outdent(); writer.println("}"); } } writer.println("return instance;"); } writer.outdent(); writer.println("}"); writer.commit(logger); } return createdName; }
From source file:com.guit.rebind.jsorm.JsonSerializerUtil.java
License:Apache License
private static void makeImplName(JType pojoType, StringBuilder implName) { JArrayType array = pojoType.isArray(); if (pojoType.isPrimitive() != null) { implName.append(pojoType.getSimpleSourceName()); } else if (array != null) { implName.append("Array"); makeImplName(array.getComponentType(), implName); } else {// w w w.ja va2s.c o m JParameterizedType parameterized = pojoType.isParameterized(); implName.append(pojoType.getSimpleSourceName()); if (parameterized != null) { JClassType[] args = parameterized.getTypeArgs(); for (JClassType a : args) { makeImplName(a, implName); } } } }
From source file:com.rhizospherejs.gwt.rebind.ModelInspector.java
License:Open Source License
/** * Verifies that the return type of a POJO method matches a Java type that * can be ported onto an equivalent Rhizosphere type. * * @param method the method to inspect.//from w w w.j a v a2 s .c om * @throws UnableToCompleteException if the return type cannot be converted * into an equivalent Rhizosphere type. */ private void verifyValidReturnType(JMethod method) throws UnableToCompleteException { JType returnType = method.getReturnType(); JPrimitiveType primitiveReturnType = returnType.isPrimitive(); if (primitiveReturnType != null) { verifySupportedPrimitiveReturnType(method, primitiveReturnType); } JArrayType arrayType = returnType.isArray(); if (arrayType != null) { JType componentType = arrayType.getComponentType(); if (componentType.isPrimitive() != null) { verifySupportedPrimitiveReturnType(method, componentType.isPrimitive()); } } }
From source file:com.seanchenxi.gwt.storage.rebind.StorageKeyProviderModel.java
License:Apache License
private boolean isValideType(JType type) { if (type == null) return false; if (type.isInterface() != null) return false; if (type.isPrimitive() != null) return true; JClassType aClass = type.isClass();/*from w ww . ja va2s. c om*/ if (aClass != null && (aClass.isAssignableTo(serializableIntf) || aClass.isAssignableTo(isSerializableIntf))) { return true; } JArrayType array = type.isArray(); if (array == null) return false; return isValideType(array.getComponentType()); }
From source file:com.smartgwt.rebind.BeanValueType.java
License:Open Source License
private void initializeBeanValueType() { requiresGeneration = false;//from w w w . j ava2s . c o m final JPrimitiveType primitiveType = valueType.isPrimitive(); if (primitiveType != null) { if (primitiveType == JPrimitiveType.BOOLEAN) { beanValueType = findType(PBooleanValueType.class); genericType = findType(Boolean.class); } else if (primitiveType == JPrimitiveType.FLOAT) { beanValueType = findType(PFloatValueType.class); genericType = findType(Float.class); } else if (primitiveType == JPrimitiveType.DOUBLE) { beanValueType = findType(PDoubleValueType.class); genericType = findType(Double.class); } else if (primitiveType == JPrimitiveType.INT) { beanValueType = findType(PIntegerValueType.class); genericType = findType(Integer.class); } else if (primitiveType == JPrimitiveType.LONG) { beanValueType = findType(PLongValueType.class); genericType = findType(Long.class); } return; } final JEnumType enumType = valueType.isEnum(); if (enumType != null) { genericType = enumType; final JType valueEnumType = findType(ValueEnum.class); if (Arrays.asList(enumType.getImplementedInterfaces()).contains(valueEnumType)) { beanValueType = findType(ValueEnumValueType.class); } else { beanValueType = findType(EnumValueType.class); } return; } final JArrayType arrayType = valueType.isArray(); if (arrayType != null) { genericType = arrayType; componentType = arrayType.getComponentType(); assert componentType != null; componentValueType = new BeanValueType(componentType, oracle); assert componentValueType != null; if (componentType.isPrimitive() != null) { if (componentType == JPrimitiveType.BOOLEAN) { beanValueType = findType(PBooleanArrayValueType.class); } else if (componentType == JPrimitiveType.DOUBLE) { beanValueType = findType(PDoubleArrayValueType.class); } else if (componentType == JPrimitiveType.FLOAT) { beanValueType = findType(PFloatArrayValueType.class); } else if (componentType == JPrimitiveType.INT) { beanValueType = findType(PIntegerArrayValueType.class); } else if (componentType == JPrimitiveType.LONG) { beanValueType = findType(PLongArrayValueType.class); } } else if (componentType.isInterface() != null) { beanValueType = findType(InterfaceArrayValueType.class); // We have to generate for isAssignableFrom to work requiresGeneration = true; // The generic type for the subclass is the component type, // rather than the array type genericType = componentType.isInterface(); } else if (componentType instanceof JClassType) { beanValueType = findType(ObjectArrayValueType.class); constructorTakesEmptyArray = true; genericType = (JClassType) componentType; } else { throw new IllegalStateException("componentType " + componentType.getQualifiedSourceName() + " is not a primitive, an interface, or a class"); } return; } final JClassType classType = valueType.isClass(); if (classType != null) { genericType = classType; if (classType == findType(Integer.class)) { beanValueType = findType(IntegerValueType.class); } else if (classType == findType(Boolean.class)) { beanValueType = findType(BooleanValueType.class); } else if (classType == findType(Float.class)) { beanValueType = findType(FloatValueType.class); } else if (classType == findType(Double.class)) { beanValueType = findType(DoubleValueType.class); } else if (classType == findType(Long.class)) { beanValueType = findType(LongValueType.class); } else if (classType == findType(Number.class)) { beanValueType = findType(NumberValueType.class); } else if (classType == findType(String.class)) { beanValueType = findType(StringValueType.class); } else if (classType == findType(Date.class)) { beanValueType = findType(DateValueType.class); } else if (classType.isAssignableTo(findType(JavaScriptObject.class))) { beanValueType = findType(JsoValueType.class); } else if (classType.isAssignableTo(findType(DataSource.class))) { beanValueType = findType(DataSourceBaseValueType.class); // Need to generate, in order to get newInstance(JavaScriptObject object) requiresGeneration = true; hasSetJavaScriptObject = true; } else if (classType.isAssignableTo(findType(Canvas.class))) { beanValueType = findType(CanvasBaseValueType.class); // Need to generate, in order to get newInstance(JavaScriptObject object) requiresGeneration = true; hasSetJavaScriptObject = true; } else if (jsObjConstructor != null) { beanValueType = findType(JsoWrapperValueType.class); // Need to generate, in order to get newInstance(JavaScriptObject object) requiresGeneration = true; } else { beanValueType = findType(OtherValueType.class); } return; } final JClassType interfaceType = valueType.isInterface(); if (interfaceType != null) { genericType = interfaceType; beanValueType = findType(InterfaceValueType.class); // Need to generate, because otherwise we can't use instanceof requiresGeneration = true; return; } System.out.println("No specific BeanValueType subclass for " + getQualifiedTypeName()); }
From source file:com.totsp.gwittir.serial.json.rebind.JSONCodecGenerator.java
License:Open Source License
public void writeReader(SourceWriter writer, RProperty prop) { if (prop.getWriteMethod() == null) { return;//ww w . j av a 2s . co m } JSONField field = prop.getReadMethod() == null ? null : prop.getReadMethod().getBaseMethod().getAnnotation(JSONField.class); JSONOmit omit = prop.getReadMethod() == null ? null : prop.getReadMethod().getBaseMethod().getAnnotation(JSONOmit.class); System.out.println(prop.getName() + " omit " + omit + " field " + field); if (omit != null) { return; } String fieldName = (field == null) ? prop.getName() : field.value(); try { writer.println("if(root.containsKey(\"" + fieldName + "\")){"); if (prop.getType().isPrimitive() == null) { writer.println("if(root.get(\"" + fieldName + "\").isNull() != null) {"); writer.println(this.setterPrefix(prop) + "null);"); writer.println("} else {"); } if (prop.getType().isArray() != null) { JArrayType arrayType = prop.getType().isArray(); JType paramType = arrayType.getComponentType(); writer.println("JSONArray array = root.get(\"" + fieldName + "\").isArray();"); writer.println(paramType.getQualifiedSourceName() + "[] value = new " + paramType.getQualifiedSourceName() + "[ array.size() ];"); writer.println("for(int i=0; i<array.size(); i++){"); writer.indent(); writer.println(" value[i] = " + this.fromType(paramType, "array.get(i)") + ";"); writer.outdent(); writer.println("}"); //endfor writer.println(this.setterPrefix(prop) + " value );"); } else if (prop.getType() instanceof JClassType && ((JClassType) prop.getType()).isAssignableTo(this.collectionType)) { // get the parameter type JClassType propType = (JClassType) prop.getType(); JType paramType = propType.asParameterizationOf((JGenericType) this.collectionType) .getTypeArgs()[0]; writer.println("JSONArray array = root.get(\"" + fieldName + "\").isArray();"); writer.println(propType.getParameterizedQualifiedSourceName() + " col = " + this.newCollectionExpression(propType) + ";"); writer.println("for(int i=0; i<array.size(); i++){"); writer.indent(); writer.println(" col.add(" + this.fromType(paramType, "array.get(i)") + ");"); writer.outdent(); writer.println("}"); //endfor writer.println(this.setterPrefix(prop) + " col );"); } else { writer.println( setterPrefix(prop) + fromType(prop.getType(), "root.get(\"" + fieldName + "\")") + ");"); } if (prop.getType().isPrimitive() == null) { writer.println("}"); //end null else } writer.println("}"); //end contains key } catch (Exception e) { System.out.println("Exception on prop " + prop); throw new RuntimeException(e); } }