Example usage for com.google.gwt.core.ext.typeinfo JTypeParameter getName

List of usage examples for com.google.gwt.core.ext.typeinfo JTypeParameter getName

Introduction

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

Prototype

String getName();

Source Link

Usage

From source file:com.github.nmorel.gwtjackson.rebind.AbstractCreator.java

License:Apache License

private ImmutableList<? extends JType> getTypeParameters(JClassType classType, boolean subtype) {
    JParameterizedType parameterizedType = classType.isParameterized();
    if (null != parameterizedType) {
        return ImmutableList.copyOf(parameterizedType.getTypeArgs());
    }//from   w  w w .  j av a 2s. c o m

    JGenericType genericType = classType.isGenericType();
    if (null != genericType) {
        if (subtype) {
            // if it's a subtype we look for parent in hierarchy equals to mapped class
            JClassType mappedClassType = getMapperInfo().get().getType();
            JClassType parentClassType = null;
            for (JClassType parent : genericType.getFlattenedSupertypeHierarchy()) {
                if (parent.getQualifiedSourceName().equals(mappedClassType.getQualifiedSourceName())) {
                    parentClassType = parent;
                    break;
                }
            }

            ImmutableList.Builder<JType> builder = ImmutableList.builder();
            for (JTypeParameter typeParameter : genericType.getTypeParameters()) {
                JType arg = null;
                if (null != parentClassType && null != parentClassType.isParameterized()) {
                    int i = 0;
                    for (JClassType parentTypeParameter : parentClassType.isParameterized().getTypeArgs()) {
                        if (null != parentTypeParameter.isTypeParameter() && parentTypeParameter
                                .isTypeParameter().getName().equals(typeParameter.getName())) {
                            if (null != mappedClassType.isGenericType()) {
                                arg = mappedClassType.isGenericType().getTypeParameters()[i];
                            } else {
                                arg = mappedClassType.isParameterized().getTypeArgs()[i];
                            }
                            break;
                        }
                        i++;
                    }
                }
                if (null == arg) {
                    arg = typeParameter.getBaseType();
                }
                builder.add(arg);
            }
            return builder.build();
        } else {
            ImmutableList.Builder<JType> builder = ImmutableList.builder();
            for (JTypeParameter typeParameter : genericType.getTypeParameters()) {
                builder.add(typeParameter.getBaseType());
            }
            return builder.build();
        }
    }

    return ImmutableList.of();
}

From source file:com.google.web.bindery.requestfactory.gwt.rebind.RequestFactoryGenerator.java

License:Apache License

private void writeContextImplementations() {
    for (ContextMethod method : model.getMethods()) {
        PrintWriter pw = context.tryCreate(logger, method.getPackageName(), method.getSimpleSourceName());
        if (pw == null) {
            // Already generated
            continue;
        }// w ww . j a v a  2 s.com

        ClassSourceFileComposerFactory factory = new ClassSourceFileComposerFactory(method.getPackageName(),
                method.getSimpleSourceName());
        factory.setSuperclass(AbstractRequestContext.class.getCanonicalName());
        factory.addImplementedInterface(method.getImplementedInterfaceQualifiedSourceName());
        SourceWriter sw = factory.createSourceWriter(context, pw);

        // Constructor that accepts the parent RequestFactory
        sw.println("public %s(%s requestFactory) {super(requestFactory, %s.%s);}", method.getSimpleSourceName(),
                AbstractRequestFactory.class.getCanonicalName(), Dialect.class.getCanonicalName(),
                method.getDialect().name());

        Set<EntityProxyModel> models = findReferencedEntities(method);
        Set<JEnumType> extraEnumTypes = findExtraEnums(method);
        writeAutoBeanFactory(sw, models, extraEnumTypes);

        // Write each Request method
        for (RequestMethod request : method.getRequestMethods()) {
            JMethod jmethod = request.getDeclarationMethod();
            String operation = request.getOperation();

            // foo, bar, baz
            StringBuilder parameterArray = new StringBuilder();
            // final Foo foo, final Bar bar, final Baz baz
            StringBuilder parameterDeclaration = new StringBuilder();
            // <P extends Blah>
            StringBuilder typeParameterDeclaration = new StringBuilder();

            if (request.isInstance()) {
                // Leave a spot for the using() method to fill in later
                parameterArray.append(",null");
            }
            for (JTypeParameter param : jmethod.getTypeParameters()) {
                typeParameterDeclaration.append(",").append(param.getQualifiedSourceName());
            }
            for (JParameter param : jmethod.getParameters()) {
                parameterArray.append(",").append(param.getName());
                parameterDeclaration.append(",final ")
                        .append(param.getType().getParameterizedQualifiedSourceName()).append(" ")
                        .append(param.getName());
            }
            if (parameterArray.length() > 0) {
                parameterArray.deleteCharAt(0);
            }
            if (parameterDeclaration.length() > 0) {
                parameterDeclaration.deleteCharAt(0);
            }
            if (typeParameterDeclaration.length() > 0) {
                typeParameterDeclaration.deleteCharAt(0).insert(0, "<").append(">");
            }

            // public Request<Foo> doFoo(final Foo foo) {
            sw.println("public %s %s %s(%s) {", typeParameterDeclaration,
                    jmethod.getReturnType().getParameterizedQualifiedSourceName(), jmethod.getName(),
                    parameterDeclaration);
            sw.indent();
            // The implements clause covers InstanceRequest
            // class X extends AbstractRequest<Return> implements Request<Return> {
            sw.println("class X extends %s<%s> implements %s {", AbstractRequest.class.getCanonicalName(),
                    request.getDataType().getParameterizedQualifiedSourceName(),
                    jmethod.getReturnType().getParameterizedQualifiedSourceName());
            sw.indent();

            // public X() { super(FooRequestContext.this); }
            sw.println("public X() { super(%s.this);}", method.getSimpleSourceName());

            // This could also be gotten rid of by having only Request /
            // InstanceRequest
            sw.println("@Override public X with(String... paths) {super.with(paths); return this;}");

            // makeRequestData()
            sw.println("@Override protected %s makeRequestData() {", RequestData.class.getCanonicalName());
            String elementType = request.isCollectionType()
                    ? request.getCollectionElementType().getQualifiedSourceName() + ".class"
                    : "null";
            String returnTypeBaseQualifiedName = ModelUtils.ensureBaseType(request.getDataType())
                    .getQualifiedSourceName();
            // return new RequestData("ABC123", {parameters}, propertyRefs,
            // List.class, FooProxy.class);
            sw.indentln("return new %s(\"%s\", new Object[] {%s}, propertyRefs, %s.class, %s);",
                    RequestData.class.getCanonicalName(), operation, parameterArray,
                    returnTypeBaseQualifiedName, elementType);
            sw.println("}");

            /*
             * Only support extra properties in JSON-RPC payloads. Could add this to
             * standard requests to provide out-of-band data.
             */
            if (method.getDialect().equals(Dialect.JSON_RPC)) {
                for (JMethod setter : request.getExtraSetters()) {
                    PropertyName propertyNameAnnotation = setter.getAnnotation(PropertyName.class);
                    String propertyName = propertyNameAnnotation == null ? JBeanMethod.SET.inferName(setter)
                            : propertyNameAnnotation.value();
                    String maybeReturn = JBeanMethod.SET_BUILDER.matches(setter) ? "return this;" : "";
                    sw.println("%s { getRequestData().setNamedParameter(\"%s\", %s); %s}",
                            setter.getReadableDeclaration(false, false, false, false, true), propertyName,
                            setter.getParameters()[0].getName(), maybeReturn);
                }
            }

            // end class X{}
            sw.outdent();
            sw.println("}");

            // Instantiate, enqueue, and return
            sw.println("X x = new X();");

            if (request.getApiVersion() != null) {
                sw.println("x.getRequestData().setApiVersion(\"%s\");",
                        Generator.escape(request.getApiVersion()));
            }

            // JSON-RPC payloads send their parameters in a by-name fashion
            if (method.getDialect().equals(Dialect.JSON_RPC)) {
                for (JParameter param : jmethod.getParameters()) {
                    PropertyName annotation = param.getAnnotation(PropertyName.class);
                    String propertyName = annotation == null ? param.getName() : annotation.value();
                    boolean isContent = param.isAnnotationPresent(JsonRpcContent.class);
                    if (isContent) {
                        sw.println("x.getRequestData().setRequestContent(%s);", param.getName());
                    } else {
                        sw.println("x.getRequestData().setNamedParameter(\"%s\", %s);", propertyName,
                                param.getName());
                    }
                }
            }

            // See comment in AbstractRequest.using(EntityProxy)
            if (!request.isInstance()) {
                sw.println("addInvocation(x);");
            }
            sw.println("return x;");
            sw.outdent();
            sw.println("}");
        }

        sw.commit(logger);
    }
}

From source file:org.fusesource.restygwt.rebind.DirectRestBaseSourceCreator.java

License:Apache License

private String createClassDeclarationGenericType() {
    String parameters = "";
    if (source instanceof JGenericType) {
        JGenericType genericType = (JGenericType) source;
        StringBuilder builder = new StringBuilder();
        builder.append("<");
        boolean first = true;
        for (JTypeParameter arg : genericType.getTypeParameters()) {
            if (!first)
                builder.append(",");
            builder.append(arg.getName());
            builder.append(" extends ");
            builder.append(arg.getFirstBound().getParameterizedQualifiedSourceName());
            first = false;// ww  w .ja  va  2 s.  co m
        }
        builder.append(">");
        parameters = builder.toString();
    }
    return parameters;
}

From source file:org.kjots.json.object.gwt.rebind.GwtJsonObjectGenerator.java

License:Apache License

/**
 * Retrieve the name of the given type.//from  w  w  w  .  ja v  a 2  s .c o  m
 *
 * @param type The type.
 * @return The name of the type.
 */
private String getTypeName(JType type) {
    if (type instanceof JTypeParameter) {
        JTypeParameter typeParameter = (JTypeParameter) type;

        return typeParameter.getName();
    } else if (type instanceof JArrayType) {
        return this.getArrayTypeName((JArrayType) type);
    } else {
        return type.getQualifiedSourceName();
    }
}

From source file:org.kjots.json.object.gwt.rebind.GwtJsonObjectGenerator.java

License:Apache License

/**
 * Retrieve the name of the given array type.
 *
 * @param arrayType The array type.//w w  w  . j a v a 2 s  . c  om
 * @return The name of the array type.
 */
private String getArrayTypeName(JArrayType arrayType) {
    JType elementType = arrayType.getComponentType();
    int dimensions = 1;

    while (elementType instanceof JArrayType) {
        JArrayType elementArrayType = (JArrayType) elementType;

        elementType = elementArrayType.getComponentType();
        dimensions++;
    }

    if (elementType instanceof JTypeParameter) {
        JTypeParameter elementTypeParameter = (JTypeParameter) elementType;
        StringBuilder arrayTypeNameBuilder = new StringBuilder();

        arrayTypeNameBuilder.append(elementTypeParameter.getName());
        for (int i = 0; i < dimensions; i++) {
            arrayTypeNameBuilder.append("[]");
        }

        return arrayTypeNameBuilder.toString();
    } else {
        return arrayType.getQualifiedSourceName();
    }
}