Example usage for com.google.gwt.core.ext.typeinfo JParameterizedType isAssignableTo

List of usage examples for com.google.gwt.core.ext.typeinfo JParameterizedType isAssignableTo

Introduction

In this page you can find the example usage for com.google.gwt.core.ext.typeinfo JParameterizedType isAssignableTo.

Prototype

boolean isAssignableTo(JClassType possibleSupertype);

Source Link

Document

Returns true if this JClassType is assignable to the specified JClassType parameter.

Usage

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;
}