List of usage examples for com.google.gwt.core.ext.typeinfo JParameterizedType isAssignableTo
boolean isAssignableTo(JClassType possibleSupertype);
true if this JClassType is assignable to the specified JClassType parameter. From source file:com.google.web.bindery.autobean.gwt.rebind.model.AutoBeanFactoryModel.java
License:Apache License
private boolean methodAcceptsAutoBeanAsFirstParam(JClassType beanType, JMethod method) { JParameter[] params = method.getParameters(); if (params.length == 0) { return false; }//from www . j av a 2s . co m JClassType paramAsClass = params[0].getType().isClassOrInterface(); // First parameter is a primitive if (paramAsClass == null) { return false; } // Check using base types to account for erasure semantics JParameterizedType expectedFirst = oracle.getParameterizedType(autoBeanInterface, new JClassType[] { ModelUtils.ensureBaseType(beanType) }); return expectedFirst.isAssignableTo(paramAsClass); }
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); }/*from ww w. ja va2 s .co 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:com.seanchenxi.gwt.storage.rebind.StorageKeyProviderModel.java
License:Apache License
private boolean validateMethodDef(JMethod method) throws UnableToCompleteException { if (!method.getEnclosingType().equals(providerType)) { return false; }//www .ja v a 2 s .c o m JParameterizedType returnType = method.getReturnType().isParameterized(); boolean isCorrectReturnType = returnType != null && returnType.isAssignableTo(storageKeyGenericType); JClassType valueType = isCorrectReturnType ? returnType.getTypeArgs()[0] : null; if (!isValideType(valueType)) { logger.branch(TreeLogger.Type.ERROR, "method " + method.getReadableDeclaration() + "'s returned store type is not extends to IsSerializable nor Serializable"); throw new UnableToCompleteException(); } int length = method.getParameters().length; if (length > 1) { logger.branch(TreeLogger.Type.WARN, "method " + method.getReadableDeclaration() + " should only have one or zero parameter"); throw new UnableToCompleteException(); } return true; }
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 ww .ja v a 2s. co m*/ 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; }