List of usage examples for com.google.gwt.core.ext.typeinfo JParameterizedType isAssignableFrom
boolean isAssignableFrom(JClassType possibleSubtype);
true if this JClassType is assignable from the specified JClassType parameter. From source file:com.hiramchirino.restygwt.rebind.JsonEncoderDecoderInstanceLocator.java
License:Apache License
private String encodeDecodeExpression(JType type, String expression, Style style, String encoderMethod, String mapMethod, String setMethod, String listMethod) throws UnableToCompleteException { if (null != type.isEnum()) { return type.getQualifiedSourceName() + ".valueOf(" + encodeDecodeExpression(STRING_TYPE, expression, style, encoderMethod, mapMethod, setMethod, listMethod); }// w w w . ja v a 2 s .c o m String encoderDecoder = getEncoderDecoder(type, logger); if (encoderDecoder != null) { return encoderDecoder + "." + encoderMethod + "(" + expression + ")"; } JClassType clazz = type.isClassOrInterface(); if (isCollectionType(clazz)) { JParameterizedType parameterizedType = type.isParameterized(); if (parameterizedType == null || parameterizedType.getTypeArgs() == null) { error("Collection types must be parameterized."); } JClassType[] types = parameterizedType.getTypeArgs(); if (parameterizedType.isAssignableTo(MAP_TYPE)) { if (types.length != 2) { error("Map must define two and only two type parameters"); } if (types[0] != STRING_TYPE) { error("Map's first type parameter must be of type String"); } encoderDecoder = getEncoderDecoder(types[1], logger); if (encoderDecoder != null) { return mapMethod + "(" + expression + ", " + encoderDecoder + ", " + JSON_CLASS + ".Style." + style.name() + ")"; } } else if (parameterizedType.isAssignableTo(SET_TYPE)) { if (types.length != 1) { error("Set must define one and only one type parameter"); } encoderDecoder = getEncoderDecoder(types[0], logger); if (encoderDecoder != null) { return setMethod + "(" + expression + ", " + encoderDecoder + ")"; } } else if (parameterizedType.isAssignableFrom(LIST_TYPE)) { if (types.length != 1) { error("List must define one and only one type parameter"); } encoderDecoder = getEncoderDecoder(types[0], logger); debug("type encoder for: " + types[0] + " is " + encoderDecoder); if (encoderDecoder != null) { return listMethod + "(" + expression + ", " + encoderDecoder + ")"; } } } error("Do not know how to encode/decode " + type); return null; }
From source file:org.fusesource.restygwt.rebind.JsonEncoderDecoderInstanceLocator.java
License:Apache License
private String encodeDecodeExpression(JType type, String expression, Style style, String encoderMethod, String mapMethod, String setMethod, String listMethod) throws UnableToCompleteException { if (null != type.isEnum()) { if (encoderMethod.equals("encode")) { return encodeDecodeExpression(STRING_TYPE, expression + ".toString()", style, encoderMethod, mapMethod, setMethod, listMethod); } else {/*from w w w. j a v a2s.c om*/ return type.getQualifiedSourceName() + ".valueOf(" + encodeDecodeExpression(STRING_TYPE, expression, style, encoderMethod, mapMethod, setMethod, listMethod) + ")"; } } String encoderDecoder = getEncoderDecoder(type, logger); if (encoderDecoder != null) { return encoderDecoder + "." + encoderMethod + "(" + expression + ")"; } JClassType clazz = type.isClassOrInterface(); if (isCollectionType(clazz)) { JParameterizedType parameterizedType = type.isParameterized(); if (parameterizedType == null || parameterizedType.getTypeArgs() == null) { error("Collection types must be parameterized."); } JClassType[] types = parameterizedType.getTypeArgs(); if (parameterizedType.isAssignableTo(MAP_TYPE)) { if (types.length != 2) { error("Map must define two and only two type parameters"); } if (types[0] != STRING_TYPE) { error("Map's first type parameter must be of type String"); } encoderDecoder = getEncoderDecoder(types[1], logger); if (encoderDecoder != null) { return mapMethod + "(" + expression + ", " + encoderDecoder + ", " + JSON_CLASS + ".Style." + style.name() + ")"; } } else if (parameterizedType.isAssignableTo(SET_TYPE)) { if (types.length != 1) { error("Set must define one and only one type parameter"); } encoderDecoder = getEncoderDecoder(types[0], logger); if (encoderDecoder != null) { return setMethod + "(" + expression + ", " + encoderDecoder + ")"; } } else if (parameterizedType.isAssignableFrom(LIST_TYPE)) { if (types.length != 1) { error("List must define one and only one type parameter"); } encoderDecoder = getEncoderDecoder(types[0], logger); debug("type encoder for: " + types[0] + " is " + encoderDecoder); if (encoderDecoder != null) { return listMethod + "(" + expression + ", " + encoderDecoder + ")"; } } } error("Do not know how to encode/decode " + type); return null; }