List of usage examples for com.google.gwt.core.ext.typeinfo JTypeParameter getName
String getName();
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(); } }