Java 类com.squareup.javapoet.WildcardTypeName 实例源码

项目:GitHub    文件:BindingSet.java   
private static TypeName bestGuess(String type) {
  switch (type) {
    case "void": return TypeName.VOID;
    case "boolean": return TypeName.BOOLEAN;
    case "byte": return TypeName.BYTE;
    case "char": return TypeName.CHAR;
    case "double": return TypeName.DOUBLE;
    case "float": return TypeName.FLOAT;
    case "int": return TypeName.INT;
    case "long": return TypeName.LONG;
    case "short": return TypeName.SHORT;
    default:
      int left = type.indexOf('<');
      if (left != -1) {
        ClassName typeClassName = ClassName.bestGuess(type.substring(0, left));
        List<TypeName> typeArguments = new ArrayList<>();
        do {
          typeArguments.add(WildcardTypeName.subtypeOf(Object.class));
          left = type.indexOf('<', left + 1);
        } while (left != -1);
        return ParameterizedTypeName.get(typeClassName,
            typeArguments.toArray(new TypeName[typeArguments.size()]));
      }
      return ClassName.bestGuess(type);
  }
}
项目:GitHub    文件:RequestBuilderGenerator.java   
private List<MethodSpec> generateConstructors() {
  ParameterizedTypeName classOfTranscodeType =
      ParameterizedTypeName.get(ClassName.get(Class.class), transcodeTypeName);

  TypeName wildcardOfObject = WildcardTypeName.subtypeOf(Object.class);
  ParameterizedTypeName requestBuilderOfWildcardOfObject =
      ParameterizedTypeName.get(ClassName.get(requestBuilderType), wildcardOfObject);

  MethodSpec firstConstructor =
      MethodSpec.constructorBuilder()
          .addParameter(classOfTranscodeType, "transcodeClass")
          .addParameter(requestBuilderOfWildcardOfObject, "other")
      .addStatement("super($N, $N)", "transcodeClass", "other")
      .build();

  ClassName glide = ClassName.get("com.bumptech.glide", "Glide");
  ClassName requestManager = ClassName.get("com.bumptech.glide", "RequestManager");
  MethodSpec secondConstructor =
      MethodSpec.constructorBuilder()
          .addParameter(glide, "glide")
          .addParameter(requestManager, "requestManager")
          .addParameter(classOfTranscodeType, "transcodeClass")
          .addStatement("super($N, $N ,$N)", "glide", "requestManager", "transcodeClass")
          .build();
  return ImmutableList.of(firstConstructor, secondConstructor);
}
项目:vxrifa    文件:ReceiverGenerator.java   
ReceiverGenerator generateUnregisterMethod() {

    MethodSpec.Builder unregisterMB = MethodSpec.methodBuilder("unregisterReceiver");

    // Generates cosumers waiting Future for success handler unregistration
    unregisterMB.addAnnotation(Override.class)
            .addModifiers(Modifier.PUBLIC)
            .addStatement("return $T.all($N.stream().map((consumer) -> {"
                    + "$T future = $T.future();"
                    + "consumer.unregister(future);"
                    + "return future;"                       
                    + "}).collect($T.toList()))",
                    CompositeFuture.class,
                    consumersField,
                    ParameterizedTypeName.get(ClassName.get(Future.class), TypeName.get(Void.class)),
                    TypeName.get(Future.class),
                    TypeName.get(Collectors.class)
            )
            .returns(ParameterizedTypeName.get(ClassName.get(Future.class), WildcardTypeName.subtypeOf(Object.class)));

    tsb.addMethod(unregisterMB.build());

    return this;

}
项目:jso-builder    文件:SerializerGenerator.java   
private MethodSpec createIsJsObject() {
    CodeBlock.Builder builder = CodeBlock.builder();
    builder.addStatement("$1T jsType = type.getAnnotation($1T.class)", ClassNames.JSINTEROP_JSTYPE);
    Stream.of(
            "jsType == null",
            "!jsType.isNative()",
            "!JsPackage.GLOBAL.equals(jsType.namespace())",
            "!\"Object\".equals(jsType.name())")
        .forEachOrdered(statement -> builder
                .beginControlFlow("if (" + statement + ")")
                    .addStatement("return false")
                .endControlFlow());
    builder.addStatement("return true");

    return MethodSpec.methodBuilder("isJsObject")
            .addModifiers(Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL)
            .addAnnotation(ClassNames.GWT_INCOMPATIBLE)
            .addParameter(ParameterizedTypeName.get(ClassName.get(Class.class), WildcardTypeName.subtypeOf(Object.class)), "type")
            .returns(Boolean.TYPE)
            .addCode(builder.build())
            .build();
}
项目:aws-sdk-java-v2    文件:MemberCopierSpec.java   
private MethodSpec builderCopyMethodForList() {
    TypeName keyType = typeProvider.getTypeNameForSimpleType(memberModel.getMapModel().getKeyModel()
                                                                        .getVariable().getVariableType());
    ClassName valueParameter = poetExtensions.getModelClass(memberModel.getMapModel().getValueModel().getC2jShape());
    ClassName builderForParameter = valueParameter.nestedClass("Builder");
    TypeName parameterType =
        ParameterizedTypeName.get(ClassName.get(Map.class), keyType, WildcardTypeName.subtypeOf(builderForParameter));

    CodeBlock code =
        CodeBlock.builder()
                 .beginControlFlow("if ($N == null)", memberParamName())
                 .addStatement("return null")
                 .endControlFlow()
                 .addStatement("return $N($N.entrySet().stream().collect(toMap($T::getKey, e -> e.getValue().build())))",
                               serviceModelCopiers.copyMethodName(),
                               memberParamName(),
                               Map.Entry.class)
                 .build();

    return MethodSpec.methodBuilder(serviceModelCopiers.builderCopyMethodName())
                     .addModifiers(Modifier.STATIC)
                     .addParameter(parameterType, memberParamName())
                     .returns(typeProvider.fieldType(memberModel))
                     .addCode(code)
                     .build();
}
项目:aws-sdk-java-v2    文件:MemberCopierSpec.java   
private MethodSpec builderCopyMethodForMap() {
    ClassName listParameter = poetExtensions.getModelClass(memberModel.getListModel().getListMemberModel().getC2jShape());
    ClassName builderForParameter = listParameter.nestedClass("Builder");

    TypeName parameterType =
        ParameterizedTypeName.get(ClassName.get(Collection.class), WildcardTypeName.subtypeOf(builderForParameter));

    CodeBlock code = CodeBlock.builder()
                              .beginControlFlow("if ($N == null)", memberParamName())
                              .addStatement("return null")
                              .endControlFlow()
                              .addStatement("return $N($N.stream().map($T::$N).collect(toList()))",
                                            serviceModelCopiers.copyMethodName(),
                                            memberParamName(),
                                            builderForParameter,
                                            "build")
                              .build();

    return MethodSpec.methodBuilder(serviceModelCopiers.builderCopyMethodName())
                     .addModifiers(Modifier.STATIC)
                     .addParameter(parameterType, memberParamName())
                     .returns(typeProvider.fieldType(memberModel))
                     .addCode(code)
                     .build();
}
项目:Android-ButterKinfe    文件:BindingClass.java   
private static TypeName bestGuess(String type) {
  switch (type) {
    case "void": return TypeName.VOID;
    case "boolean": return TypeName.BOOLEAN;
    case "byte": return TypeName.BYTE;
    case "char": return TypeName.CHAR;
    case "double": return TypeName.DOUBLE;
    case "float": return TypeName.FLOAT;
    case "int": return TypeName.INT;
    case "long": return TypeName.LONG;
    case "short": return TypeName.SHORT;
    default:
      int left = type.indexOf('<');
      if (left != -1) {
        ClassName typeClassName = ClassName.bestGuess(type.substring(0, left));
        List<TypeName> typeArguments = new ArrayList<>();
        do {
          typeArguments.add(WildcardTypeName.subtypeOf(Object.class));
          left = type.indexOf('<', left + 1);
        } while (left != -1);
        return ParameterizedTypeName.get(typeClassName,
            typeArguments.toArray(new TypeName[typeArguments.size()]));
      }
      return ClassName.bestGuess(type);
  }
}
项目:PocketBus    文件:SubscriptionGenerator.java   
private void generateConstructor(TypeSpec.Builder classBuilder) {
    MethodSpec.Builder builder = MethodSpec.constructorBuilder()
            .addModifiers(Modifier.PUBLIC)
            .addParameter(TypeName.get(targetType), PocketBusConst.VAR_TARGET);

    if (parentAdapter != null) {
        builder.addStatement("super($N)", PocketBusConst.VAR_TARGET);
    }

    builder.addStatement("this.$N = new $T($N)", PocketBusConst.VAR_TARGET_REF, getWeakReferenceType(), PocketBusConst.VAR_TARGET)
            .addStatement("$T $N = new $T()", LIST_TYPE, PocketBusConst.VAR_SUBSCRIPTIONS, ParameterizedTypeName.get(ClassName.get(ArrayList.class),
                    ParameterizedTypeName.get(ClassName.get(Subscription.class), WildcardTypeName.subtypeOf(TypeName.OBJECT))));

    if (parentAdapter != null) {
        builder.addStatement("$N.addAll(super.$L())", PocketBusConst.VAR_SUBSCRIPTIONS, PocketBusConst.METHOD_GET_SUBSCRIPTIONS);
    }

    for (SubscriptionMethod method : methods) {
        builder.addStatement("$N.add($N)", PocketBusConst.VAR_SUBSCRIPTIONS, PocketBusConst.VAR_SUBSCRIPTION + method.getIndex());
    }

    builder.addStatement("this.$N = $T.unmodifiableList($N)", PocketBusConst.VAR_SUBSCRIPTIONS, ClassName.get(Collections.class),
            PocketBusConst.VAR_SUBSCRIPTIONS);

    classBuilder.addMethod(builder.build());
}
项目:tiger    文件:Utils.java   
/**
 * Returns true if the given type can be bound to some type. Note: this should
 * not be used with raw type of generic type.
 */
public static boolean isBindable(TypeName typeName) {
  if (typeName instanceof ParameterizedTypeName) {
    for (TypeName t : ((ParameterizedTypeName) typeName).typeArguments) {
      if (!isBindable(t)) {
        return false;
      }
    }
    return true;
  } else if (typeName instanceof ClassName) {
    return true;
  } else if (typeName instanceof WildcardTypeName) {
    return true;
  } else
    return typeName.isPrimitive();
}
项目:mvp4g2    文件:AddPresenterGenerator.java   
public void generate() {
    MethodSpec.Builder addHandlerMethod = MethodSpec.methodBuilder("addHandler")
                                                    .addAnnotation(Override.class)
                                                    .addModifiers(Modifier.PUBLIC)
                                                    .addParameter(ParameterizedTypeName.get(ClassName.get(IsPresenter.class),
                                                                                            WildcardTypeName.subtypeOf(Object.class),
                                                                                            WildcardTypeName.subtypeOf(Object.class)),
                                                                  "presenter")
                                                    .returns(ClassName.get(PresenterRegistration.class));
    // TODO implementing addHandler feature ...
//    // List of already created EventHandler used to avoid a second create ...
//    List<ClassNameModel> listOfEventHandlersToCreate = this.createListOfEventHandlersToCreate();
//    listOfEventHandlersToCreate.forEach(handlerClassName -> this.addHandlerToMetaList(loadEventHandlerMethod,
//                                                                                      handlerClassName));




    addHandlerMethod.addStatement("return null");
    typeSpec.addMethod(addHandlerMethod.build());
  }
项目:vault    文件:SpaceInjection.java   
private void appendTypes(TypeSpec.Builder builder) {
  // Field
  TypeName classTypeName = ParameterizedTypeName.get(ClassName.get(Class.class),
      WildcardTypeName.subtypeOf(Resource.class));

  specTypes =
      createMapWithInitializer("types", LinkedHashMap.class, ClassName.get(String.class),
          classTypeName)
          .addModifiers(Modifier.FINAL)
          .build();

  builder.addField(specTypes);

  // Getter
  builder.addMethod(createGetterImpl(specTypes, "getTypes").build());
}
项目:vault    文件:SpaceInjection.java   
private void appendModels(TypeSpec.Builder builder) {
  // Field
  TypeName classTypeName = ParameterizedTypeName.get(ClassName.get(Class.class),
      WildcardTypeName.subtypeOf(Object.class));

  TypeName helperTypeName = ParameterizedTypeName.get(ClassName.get(ModelHelper.class),
      WildcardTypeName.subtypeOf(Object.class));

  specModels = createMapWithInitializer("models", LinkedHashMap.class, classTypeName,
      helperTypeName).addModifiers(Modifier.FINAL).build();

  builder.addField(specModels);

  // Getter
  builder.addMethod(createGetterImpl(specModels, "getModels").build());
}
项目:anno4j    文件:RDFSPropertySpecTest.java   
@Test
public void testAdderAll() throws Exception {
    BuildableRDFSProperty loadCap = getPropertyFromModel("http://example.de/ont#load_capacity");
    assertNotNull(loadCap);

    MethodSpec loadCapSpec = loadCap.buildAdderAll(declaringClass, generationConfig);

    // Test signature:
    assertEquals("addAllMaximumLoadCapacities", loadCapSpec.name);
    assertTrue(loadCapSpec.modifiers.contains(Modifier.PUBLIC));
    assertEquals(1, loadCapSpec.parameters.size());
    ClassName setClass = ClassName.get("java.util", "Set");
    assertEquals(ParameterizedTypeName.get(setClass, WildcardTypeName.subtypeOf(ClassName.get(Float.class))), loadCapSpec.parameters.get(0).type);

    // Test JavaDoc:
    assertNotNull(loadCapSpec.javadoc);
    assertTrue(loadCapSpec.javadoc.toString().startsWith("Ladung in Tonnen"));

    // Test annotation:
    assertEquals(0, loadCapSpec.annotations.size());
}
项目:anno4j    文件:RDFSPropertySpecTest.java   
@Test
public void testRemoverAll() throws Exception {
    BuildableRDFSProperty loadCap = getPropertyFromModel("http://example.de/ont#load_capacity");
    assertNotNull(loadCap);

    MethodSpec loadCapSpec = loadCap.buildRemoverAll(declaringClass, generationConfig);

    // Test signature:
    assertEquals("removeAllMaximumLoadCapacities", loadCapSpec.name);
    assertTrue(loadCapSpec.modifiers.contains(Modifier.PUBLIC));
    assertEquals(1, loadCapSpec.parameters.size());
    ClassName setClass = ClassName.get("java.util", "Set");
    assertEquals(ParameterizedTypeName.get(setClass, WildcardTypeName.subtypeOf(ClassName.get(Float.class))), loadCapSpec.parameters.get(0).type);

    // Test JavaDoc:
    assertNotNull(loadCapSpec.javadoc);
    assertTrue(loadCapSpec.javadoc.toString().startsWith("Ladung in Tonnen"));

    // Test annotation:
    assertEquals(0, loadCapSpec.annotations.size());
}
项目:auto-value-gson    文件:AutoValueGsonExtension.java   
private static String simpleName(TypeName typeName) {
  if (typeName instanceof ClassName) {
    return UPPER_CAMEL.to(LOWER_CAMEL, ((ClassName) typeName).simpleName());
  } else if (typeName instanceof ParameterizedTypeName) {
    ParameterizedTypeName parameterizedTypeName = (ParameterizedTypeName) typeName;
    return UPPER_CAMEL.to(LOWER_CAMEL, parameterizedTypeName.rawType.simpleName())
        + (parameterizedTypeName.typeArguments.isEmpty() ? "" : "__")
        + simpleName(parameterizedTypeName.typeArguments);
  } else if (typeName instanceof ArrayTypeName) {
    return "array__" + simpleName(((ArrayTypeName) typeName).componentType);
  } else if (typeName instanceof WildcardTypeName) {
    WildcardTypeName wildcardTypeName = (WildcardTypeName) typeName;
    return "wildcard__"
        + simpleName(ImmutableList.<TypeName>builder().addAll(wildcardTypeName.lowerBounds)
        .addAll(wildcardTypeName.upperBounds)
        .build());
  } else if (typeName instanceof TypeVariableName) {
    TypeVariableName variable = (TypeVariableName) typeName;
    return variable.name
        + (variable.bounds.isEmpty() ? "" : "__")
        + simpleName(variable.bounds);
  } else {
    return typeName.toString();
  }
}
项目:Android-Developer-Toolbelt    文件:ServiceHolderWriter.java   
private MethodSpec createStartServices() {
    ClassName memoryServiceConnection = ClassName.get(PACKAGE, "MemoryServiceConnection");

    CodeBlock code = CodeBlock.builder()
            .beginControlFlow("for($T service: $L)", ParameterizedTypeName.get(ClassName.get(Class.class), WildcardTypeName.subtypeOf(Service.class)), FIELD_SERVICES)
            .addStatement("$T intent = new $T(context, service)", Intent.class, Intent.class)
            .addStatement("context.startService(intent)")
            .add("\n")
            .addStatement("$T connection = new $T()", memoryServiceConnection, memoryServiceConnection)
            .addStatement("context.bindService(intent, connection, Context.BIND_AUTO_CREATE)")
            .endControlFlow()
            .build();

    return MethodSpec.methodBuilder("startServices")
            .addAnnotation(Override.class)
            .addModifiers(Modifier.PUBLIC)
            .addParameter(ClassName.get(Context.class), "context")
            .addCode(code)
            .build();
}
项目:auto-matter    文件:AutoMatterProcessor.java   
private MethodSpec collectionCollectionSetter(final Descriptor d, final ExecutableElement field) {
  String fieldName = fieldName(field);
  ClassName collectionType = ClassName.get(Collection.class);
  TypeName itemType = genericArgument(field, 0);
  WildcardTypeName extendedType = subtypeOf(itemType);

  MethodSpec.Builder setter = MethodSpec.methodBuilder(fieldName)
      .addModifiers(PUBLIC)
      .addParameter(ParameterizedTypeName.get(collectionType, extendedType), fieldName)
      .returns(builderType(d));

  collectionNullGuard(setter, field);
  if (shouldEnforceNonNull(field)) {
    setter.beginControlFlow("for ($T item : $N)", itemType, fieldName);
    assertNotNull(setter, "item", fieldName + ": null item");
    setter.endControlFlow();
  }

  setter.addStatement("this.$N = new $T($N)", fieldName, collectionImplType(field), fieldName);
  return setter.addStatement("return this").build();
}
项目:auto-matter    文件:AutoMatterProcessor.java   
private MethodSpec collectionIterableSetter(final Descriptor d, final ExecutableElement field) {
  String fieldName = fieldName(field);
  ClassName iterableType = ClassName.get(Iterable.class);
  TypeName itemType = genericArgument(field, 0);
  WildcardTypeName extendedType = subtypeOf(itemType);

  MethodSpec.Builder setter = MethodSpec.methodBuilder(fieldName)
      .addModifiers(PUBLIC)
      .addParameter(ParameterizedTypeName.get(iterableType, extendedType), fieldName)
      .returns(builderType(d));

  collectionNullGuard(setter, field);

  ClassName collectionType = ClassName.get(Collection.class);
  setter.beginControlFlow("if ($N instanceof $T)", fieldName, collectionType)
      .addStatement("return $N(($T<$T>) $N)", fieldName, collectionType, extendedType, fieldName)
      .endControlFlow();

  setter.addStatement("return $N($N.iterator())", fieldName, fieldName);
  return setter.build();
}
项目:auto-matter    文件:AutoMatterProcessor.java   
private MethodSpec collectionIteratorSetter(final Descriptor d, final ExecutableElement field) {
  String fieldName = fieldName(field);
  ClassName iteratorType = ClassName.get(Iterator.class);
  TypeName itemType = genericArgument(field, 0);
  WildcardTypeName extendedType = subtypeOf(itemType);

  MethodSpec.Builder setter = MethodSpec.methodBuilder(fieldName)
      .addModifiers(PUBLIC)
      .addParameter(ParameterizedTypeName.get(iteratorType, extendedType), fieldName)
      .returns(builderType(d));

  collectionNullGuard(setter, field);

  setter.addStatement("this.$N = new $T()", fieldName, collectionImplType(field))
      .beginControlFlow("while ($N.hasNext())", fieldName)
      .addStatement("$T item = $N.next()", itemType, fieldName);

  if (shouldEnforceNonNull(field)) {
    assertNotNull(setter, "item", fieldName + ": null item");
  }

  setter.addStatement("this.$N.add(item)", fieldName)
      .endControlFlow();

  return setter.addStatement("return this").build();
}
项目:butterknife    文件:BindingSet.java   
private static TypeName bestGuess(String type) {
  switch (type) {
    case "void": return TypeName.VOID;
    case "boolean": return TypeName.BOOLEAN;
    case "byte": return TypeName.BYTE;
    case "char": return TypeName.CHAR;
    case "double": return TypeName.DOUBLE;
    case "float": return TypeName.FLOAT;
    case "int": return TypeName.INT;
    case "long": return TypeName.LONG;
    case "short": return TypeName.SHORT;
    default:
      int left = type.indexOf('<');
      if (left != -1) {
        ClassName typeClassName = ClassName.bestGuess(type.substring(0, left));
        List<TypeName> typeArguments = new ArrayList<>();
        do {
          typeArguments.add(WildcardTypeName.subtypeOf(Object.class));
          left = type.indexOf('<', left + 1);
        } while (left != -1);
        return ParameterizedTypeName.get(typeClassName,
            typeArguments.toArray(new TypeName[typeArguments.size()]));
      }
      return ClassName.bestGuess(type);
  }
}
项目:GitHub    文件:AppModuleGenerator.java   
private MethodSpec generateGetExcludedModuleClasses(Set<String> excludedClassNames) {
  TypeName wildCardOfObject = WildcardTypeName.subtypeOf(Object.class);
  ParameterizedTypeName classOfWildcardOfObjet =
      ParameterizedTypeName.get(ClassName.get(Class.class), wildCardOfObject);
  ParameterizedTypeName setOfClassOfWildcardOfObject =
      ParameterizedTypeName.get(ClassName.get(Set.class), classOfWildcardOfObjet);
  ParameterizedTypeName hashSetOfClassOfWildcardOfObject =
      ParameterizedTypeName.get(ClassName.get(HashSet.class), classOfWildcardOfObjet);
  MethodSpec.Builder builder = MethodSpec.methodBuilder("getExcludedModuleClasses")
      .addModifiers(Modifier.PUBLIC)
      .addAnnotation(Override.class)
      .returns(setOfClassOfWildcardOfObject);

  if (excludedClassNames.isEmpty()) {
    builder.addStatement("return $T.emptySet()", Collections.class);
  } else {
    builder.addStatement(
        "$T excludedClasses = new $T()", setOfClassOfWildcardOfObject,
        hashSetOfClassOfWildcardOfObject);
    for (String excludedClassName : excludedClassNames) {
      // TODO: Remove this when we no longer support manifest parsing.
      // Using a Literal ($L) instead of a type ($T) to get a fully qualified import that allows
      // us to suppress deprecation warnings. Aimed at deprecated GlideModules.
      builder.addStatement("excludedClasses.add($L.class)", excludedClassName);
    }
    builder.addStatement("return excludedClasses");
  }

  return builder.build();
}
项目:GitHub    文件:RequestBuilderGenerator.java   
private List<MethodSpec> generateConstructors() {
  ParameterizedTypeName classOfTranscodeType =
      ParameterizedTypeName.get(ClassName.get(Class.class), transcodeTypeName);

  TypeName wildcardOfObject = WildcardTypeName.subtypeOf(Object.class);
  ParameterizedTypeName requestBuilderOfWildcardOfObject =
      ParameterizedTypeName.get(ClassName.get(requestBuilderType), wildcardOfObject);

  MethodSpec firstConstructor =
      MethodSpec.constructorBuilder()
          .addParameter(classOfTranscodeType, "transcodeClass")
          .addParameter(requestBuilderOfWildcardOfObject, "other")
      .addStatement("super($N, $N)", "transcodeClass", "other")
      .build();

  ClassName context = ClassName.get("android.content", "Context");
  ClassName glide = ClassName.get("com.bumptech.glide", "Glide");
  ClassName requestManager = ClassName.get("com.bumptech.glide", "RequestManager");
  MethodSpec secondConstructor =
      MethodSpec.constructorBuilder()
          .addParameter(glide, "glide")
          .addParameter(requestManager, "requestManager")
          .addParameter(classOfTranscodeType, "transcodeClass")
          .addParameter(context, "context")
          .addStatement(
              "super($N, $N ,$N, $N)", "glide", "requestManager", "transcodeClass", "context")
          .build();
  return ImmutableList.of(firstConstructor, secondConstructor);
}
项目:GitHub    文件:AppModuleGenerator.java   
private MethodSpec generateGetExcludedModuleClasses(Set<String> excludedClassNames) {
  TypeName wildCardOfObject = WildcardTypeName.subtypeOf(Object.class);
  ParameterizedTypeName classOfWildcardOfObjet =
      ParameterizedTypeName.get(ClassName.get(Class.class), wildCardOfObject);
  ParameterizedTypeName setOfClassOfWildcardOfObject =
      ParameterizedTypeName.get(ClassName.get(Set.class), classOfWildcardOfObjet);
  ParameterizedTypeName hashSetOfClassOfWildcardOfObject =
      ParameterizedTypeName.get(ClassName.get(HashSet.class), classOfWildcardOfObjet);
  MethodSpec.Builder builder = MethodSpec.methodBuilder("getExcludedModuleClasses")
      .addModifiers(Modifier.PUBLIC)
      .addAnnotation(Override.class)
      .returns(setOfClassOfWildcardOfObject);

  if (excludedClassNames.isEmpty()) {
    builder.addStatement("return $T.emptySet()", Collections.class);
  } else {
    builder.addStatement(
        "$T excludedClasses = new $T()", setOfClassOfWildcardOfObject,
        hashSetOfClassOfWildcardOfObject);
    for (String excludedClassName : excludedClassNames) {
      // TODO: Remove this when we no longer support manifest parsing.
      // Using a Literal ($L) instead of a type ($T) to get a fully qualified import that allows
      // us to suppress deprecation warnings. Aimed at deprecated GlideModules.
      builder.addStatement("excludedClasses.add($L.class)", excludedClassName);
    }
    builder.addStatement("return excludedClasses");
  }

  return builder.build();
}
项目:json-log-domain    文件:MdcGenerator.java   
public static JavaFile statement(Domain ontology) {

    ClassName name = ClassName.get(ontology.getTargetPackage(), ontology.getName() + MARKER_MDC);

    ClassName markerName = MarkerGenerator.getName(ontology);

    TypeName wildcard = WildcardTypeName.subtypeOf(DomainMarker.class);
    TypeName classOfAny = ParameterizedTypeName.get(ClassName.get(Class.class), wildcard);

    ParameterSpec type = ParameterSpec.builder(classOfAny, "type").build();

    return JavaFile.builder(name.packageName(), TypeSpec.classBuilder(name)
                .superclass(ParameterizedTypeName.get( ClassName.get(DomainMdc.class), markerName))
                .addModifiers(Modifier.PUBLIC)
                .addMethod(MethodSpec.constructorBuilder()
                    .addModifiers(Modifier.PUBLIC)
                    .addStatement("super($T.QUALIFIER)", markerName)
                    .build()
                )
                .addMethod(MethodSpec.methodBuilder("createMarker")
                        .addModifiers(Modifier.PUBLIC)
                        .addStatement("return new $T()", markerName)
                        .returns(markerName)
                        .build()
                    )
                .addMethod(MethodSpec.methodBuilder("supports")
                        .addModifiers(Modifier.PUBLIC)
                        .addParameter(type)
                        .addStatement("return $T.class == $N", markerName, type)
                        .returns(boolean.class)
                        .build()
                    )
                .build())

            .build();
}
项目:ActivityBuilder    文件:BuilderUtilGenerator.java   
@Override protected TypeSpec generate() {
  TypeSpec.Builder builder = TypeSpec.classBuilder("BuilderUtil")
      .addModifiers(Modifier.PUBLIC)
      .addField(FieldSpec.builder(
          ParameterizedTypeName.get(ClassName.get(HashMap.class),
              ParameterizedTypeName.get(ClassName.get(Class.class),
                  WildcardTypeName.subtypeOf(Activity.class)),
              ParameterizedTypeName.get(ClassName.get(Class.class),
                  WildcardTypeName.subtypeOf(ClassName.get(baseActivityBuilder)))
          ), "sBuilderMap")
          .addModifiers(Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL)
          .initializer("new $T<>()", HashMap.class)
          .build());

  MethodSpec createBuilder = buildCreateBuilder();
  builder.addMethod(createBuilder)
      .addMethod(buildCreateBuilderWithIntent())
      .addMethod(buildSmallCreate(createBuilder));

  CodeBlock.Builder mapIniter = CodeBlock.builder();

  for (TypeElement element : activityList) {
    addBuilderToMap(mapIniter, element);
    builder.addMethod(buildCreateHelper(element));
  }
  builder.addStaticBlock(mapIniter.build());
  return builder.build();
}
项目:ActivityBuilder    文件:BuilderUtilGenerator.java   
private MethodSpec buildCreateBuilder() {
  return MethodSpec.methodBuilder("createBuilder")
      .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
      .addTypeVariable(TypeVariableName.get("A", ClassName.get(activity)))
      .returns(ParameterizedTypeName.get(ClassName.get(baseActivityBuilder),
          WildcardTypeName.subtypeOf(ClassName.get(baseActivityBuilder)),
          TypeVariableName.get("A")))
      .addParameter(TypeVariableName.get("A"), "activity")
      .addParameter(ParameterizedTypeName.get(ClassName.get(Class.class),
          WildcardTypeName.subtypeOf(ClassName.get(activity))), "clazz")
      .addStatement("return $T.create($L, $L)", ClassName.get(baseActivityBuilder), "activity",
          "clazz")
      .build();
}
项目:ActivityBuilder    文件:BuilderUtilGenerator.java   
private MethodSpec buildCreateBuilderWithIntent() {
  return MethodSpec.methodBuilder("createBuilder")
      .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
      .addTypeVariable(TypeVariableName.get("A", ClassName.get(activity)))
      .returns(ParameterizedTypeName.get(ClassName.get(baseActivityBuilder),
          WildcardTypeName.subtypeOf(ClassName.get(baseActivityBuilder)),
          TypeVariableName.get("A")))
      .addParameter(TypeVariableName.get("A"), "activity")
      .addParameter(ClassName.get(Intent.class), "intent")
      .addStatement("return $T.create($L, $L)", ClassName.get(baseActivityBuilder), "activity",
          "intent")
      .build();
}
项目:ActivityBuilder    文件:BuilderUtilGenerator.java   
private MethodSpec buildSmallCreate(MethodSpec createBuilder) {
  MethodSpec.Builder builder = MethodSpec.methodBuilder("smallCreate")
      .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
      .addTypeVariable(TypeVariableName.get("A", ClassName.get(activity)))
      .addTypeVariable(TypeVariableName.get("T",
          ParameterizedTypeName.get(ClassName.get(baseActivityBuilder), TypeVariableName.get("T"),
              TypeVariableName.get("A"))))
      .returns(TypeVariableName.get("T"))
      .addParameter(TypeVariableName.get("A"), "activity")
      .addParameter(ParameterizedTypeName.get(ClassName.get(Class.class),
          WildcardTypeName.subtypeOf(ClassName.get(activity))), "clazz");

  builder.beginControlFlow("if ($L.containsKey($L))", "sBuilderMap", "clazz")
      .beginControlFlow("try")
      .addStatement("return (T) $L.get($L).getMethod($S, $T.class).invoke(null,$L)",
          "sBuilderMap", "clazz", "create", ClassName.get(activity), "activity")
      .endControlFlow() // try
      .beginControlFlow("catch ($T e)", ClassName.get(NoSuchMethodException.class))
      .addStatement("e.printStackTrace()")
      .endControlFlow()
      .beginControlFlow("catch ($T e)", ClassName.get(IllegalAccessException.class))
      .addStatement("e.printStackTrace()")
      .endControlFlow()
      .beginControlFlow("catch ($T e)", ClassName.get(InvocationTargetException.class))
      .addStatement("e.printStackTrace()")
      .endControlFlow()
      .endControlFlow() // if
      .addStatement("return (T) $N($L,$L)", createBuilder, "activity", "clazz");

  return builder.build();
}
项目:dataenum    文件:ValueTypeFactory.java   
private static TypeName withWildCardTypeParameters(OutputValue value) {
  if (!value.hasTypeVariables()) {
    return value.outputClass();
  }

  TypeName[] wildCards = new TypeName[Iterables.sizeOf(value.typeVariables())];

  Arrays.fill(wildCards, WildcardTypeName.subtypeOf(TypeName.OBJECT));

  return ParameterizedTypeName.get(value.outputClass(), wildCards);
}
项目:vxrifa    文件:ReceiverGenerator.java   
ReceiverGenerator generateInitializing() {

        tsb = TypeSpec.classBuilder(MessageFormat.format("{0}{1}", interfaceElement.getSimpleName(), VXRIFA_RECEIVER_SUFFIX)).addModifiers(Modifier.PUBLIC);

        tsb.addSuperinterface(ParameterizedTypeName.get(ClassName.get(VxRifaReceiver.class), TypeName.get(interfaceElement.asType())));

        vertxField = FieldSpec.builder(io.vertx.core.Vertx.class, "vertx", Modifier.PRIVATE, Modifier.FINAL).build();
        tsb.addField(vertxField);

        eventBusAddressField = FieldSpec.builder(java.lang.String.class, "eventBusAddress", Modifier.PRIVATE, Modifier.FINAL).build();
        tsb.addField(eventBusAddressField);

        consumersField = FieldSpec.builder(ParameterizedTypeName.get(ClassName.get(List.class), ParameterizedTypeName.get(ClassName.get(MessageConsumer.class), WildcardTypeName.subtypeOf(Object.class))), "consumers", Modifier.PRIVATE)
                .build();        
        tsb.addField(consumersField);

        tsb.addMethod(
                MethodSpec.constructorBuilder()
                        .addModifiers(Modifier.PUBLIC)
                        .addParameter(io.vertx.core.Vertx.class, vertxField.name)
                        .addStatement("this.$N = $N", vertxField, vertxField)
                        .addStatement("this.$N = $S", eventBusAddressField, interfaceElement.getQualifiedName().toString())
                        .build()
        );

        tsb.addMethod(
                MethodSpec.constructorBuilder()
                        .addModifiers(Modifier.PUBLIC)
                        .addParameter(io.vertx.core.Vertx.class, vertxField.name)
                        .addParameter(java.lang.String.class, eventBusAddressField.name)
                        .addStatement("this.$N = $N", vertxField, vertxField)
                        .addStatement("this.$N = $N", eventBusAddressField, eventBusAddressField)
                        .build()
        );

        return this;

    }
项目:inspector    文件:InspectorProcessor.java   
private static CodeBlock makeType(TypeName type) {
  CodeBlock.Builder block = CodeBlock.builder();
  if (type instanceof ParameterizedTypeName) {
    ParameterizedTypeName pType = (ParameterizedTypeName) type;
    block.add("$T.newParameterizedType($T.class", Types.class, pType.rawType);
    for (TypeName typeArg : pType.typeArguments) {
      if (typeArg instanceof ParameterizedTypeName) {
        block.add(", $L", makeType(typeArg));
      } else if (typeArg instanceof WildcardTypeName) {
        WildcardTypeName wildcard = (WildcardTypeName) typeArg;
        TypeName target;
        String method;
        if (wildcard.lowerBounds.size() == 1) {
          target = wildcard.lowerBounds.get(0);
          method = "supertypeOf";
        } else if (wildcard.upperBounds.size() == 1) {
          target = wildcard.upperBounds.get(0);
          method = "subtypeOf";
        } else {
          throw new IllegalArgumentException(
              "Unrepresentable wildcard type. Cannot have more than one bound: " + wildcard);
        }
        block.add(", $T.$L($T.class)", Types.class, method, target);
      } else {
        block.add(", $T.class", typeArg);
      }
    }
    block.add(")");
  } else {
    block.add("$T.class", type);
  }
  return block.build();
}
项目:RapidRouter    文件:EasyType.java   
public static TypeName bestGuess(String type) {
    switch (type) {
        case "void":
            return TypeName.VOID;
        case "boolean":
            return TypeName.BOOLEAN;
        case "byte":
            return TypeName.BYTE;
        case "char":
            return TypeName.CHAR;
        case "double":
            return TypeName.DOUBLE;
        case "float":
            return TypeName.FLOAT;
        case "int":
            return TypeName.INT;
        case "long":
            return TypeName.LONG;
        case "short":
            return TypeName.SHORT;
        default:
            int left = type.indexOf('<');
            if (left != -1) {
                ClassName typeClassName = ClassName.bestGuess(type.substring(0, left));
                List<TypeName> typeArguments = new ArrayList<>();
                do {
                    typeArguments.add(WildcardTypeName.subtypeOf(Object.class));
                    left = type.indexOf('<', left + 1);
                } while (left != -1);
                return ParameterizedTypeName.get(typeClassName,
                        typeArguments.toArray(new TypeName[typeArguments.size()]));
            }
            return ClassName.bestGuess(type);
    }
}
项目:RapidRouter    文件:EasyType.java   
/**
 * @param type
 * @return
 */
public static TypeName bestGuessDeep(String type) {
    switch (type) {
        case "void":
            return TypeName.VOID;
        case "boolean":
            return TypeName.BOOLEAN;
        case "byte":
            return TypeName.BYTE;
        case "char":
            return TypeName.CHAR;
        case "double":
            return TypeName.DOUBLE;
        case "float":
            return TypeName.FLOAT;
        case "int":
            return TypeName.INT;
        case "long":
            return TypeName.LONG;
        case "short":
            return TypeName.SHORT;
        default:
            int left = type.indexOf('<');
            int right = type.indexOf('>');
            if (-1 != left && -1 != right) {
                ClassName typeClassName = ClassName.bestGuess(type.substring(0, left));
                List<TypeName> typeArguments = new ArrayList<>();
                do {
                    typeArguments.add(WildcardTypeName.subtypeOf(bestGuess(type.substring(left + 1, right))));
                    left = type.indexOf('<', left + 1);
                    right = type.indexOf('>', right - 1);
                } while (left != -1);
                return ParameterizedTypeName.get(typeClassName,
                        typeArguments.toArray(new TypeName[typeArguments.size()]));
            }
            return ClassName.bestGuess(type);
    }
}
项目:aws-sdk-java-v2    文件:AwsServiceModel.java   
private MethodSpec serializableBuilderClass() {
    return MethodSpec.methodBuilder("serializableBuilderClass")
                     .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
                     .returns(ParameterizedTypeName.get(ClassName.get(Class.class),
                                                        WildcardTypeName.subtypeOf(modelBuilderSpecs.builderInterfaceName())))
                     .addStatement("return $T.class", modelBuilderSpecs.builderImplName())
                     .build();
}
项目:aws-sdk-java-v2    文件:TypeProvider.java   
public TypeName parameterType(MemberModel memberModel) {
    if (memberModel.isList()) {
        ListModel listModel = memberModel.getListModel();
        MemberModel elementModel = listModel.getListMemberModel();
        TypeName listElementType = parameterType(elementModel);
        if (elementModel.isList()) {
            listElementType = WildcardTypeName.subtypeOf(listElementType);
        }
        return ParameterizedTypeName.get(ClassName.get(Collection.class), listElementType);
    }

    if (memberModel.isMap()) {
        MapModel mapModel = memberModel.getMapModel();

        TypeName keyType;
        if (mapModel.getKeyModel().isSimple()) {
            keyType = getTypeNameForSimpleType(mapModel.getKeyModel().getVariable().getVariableType());
        } else {
            keyType = parameterType(mapModel.getKeyModel());

        }

        TypeName valueType = parameterType(mapModel.getValueModel());
        if (mapModel.getValueModel().isList()) {
            valueType = WildcardTypeName.subtypeOf(valueType);
        }

        return ParameterizedTypeName.get(ClassName.get(Map.class), keyType, valueType);
    }

    return fieldType(memberModel);
}
项目:aws-sdk-java-v2    文件:TypeProvider.java   
public TypeName mapEntryType(MapModel mapModel) {
    TypeName keyType;
    if (mapModel.getKeyModel().isSimple()) {
        keyType = getTypeNameForSimpleType(mapModel.getKeyModel().getVariable().getVariableType());
    } else {
        keyType = parameterType(mapModel.getKeyModel());
    }

    TypeName valueType = parameterType(mapModel.getValueModel());
    if (mapModel.getValueModel().isList()) {
        valueType = WildcardTypeName.subtypeOf(valueType);
    }

    return ParameterizedTypeName.get(ClassName.get(Map.Entry.class), keyType, valueType);
}
项目:easy-plugins    文件:JacksonEasyPluginPlugin.java   
@Override
public void updatePluginProviderInterface(TypeSpec.Builder serviceInterface, UserMarkerAnnotation annotation) {
    TypeName returnType = annotation.getServiceInterfaceTypeName();
    MethodSpec deserializeWithoutConfig = Util.publicAbstractMethod("deserialize", returnType)
            .build();
    MethodSpec deserializeWithConfig = Util.publicAbstractMethod("deserialize", returnType)
            .addParameter(JsonParser.class, "config")
            .build();
    TypeName configType = ParameterizedTypeName.get(ClassName.get(TypeReference.class), WildcardTypeName.subtypeOf(Object.class));
    MethodSpec getConfigTypeReference = Util.publicAbstractMethod("getConfigTypeReference", configType).build();

    serviceInterface.addMethod(deserializeWithoutConfig);
    serviceInterface.addMethod(deserializeWithConfig);
    serviceInterface.addMethod(getConfigTypeReference);
}
项目:butterknife-parent    文件:BindingSet.java   
private static TypeName bestGuess(String type) {
    switch (type) {
        case "void":
            return TypeName.VOID;
        case "boolean":
            return TypeName.BOOLEAN;
        case "byte":
            return TypeName.BYTE;
        case "char":
            return TypeName.CHAR;
        case "double":
            return TypeName.DOUBLE;
        case "float":
            return TypeName.FLOAT;
        case "int":
            return TypeName.INT;
        case "long":
            return TypeName.LONG;
        case "short":
            return TypeName.SHORT;
        default:
            int left = type.indexOf('<');
            if (left != -1) {
                ClassName typeClassName = ClassName.bestGuess(type.substring(0, left));
                List<TypeName> typeArguments = new ArrayList<>();
                do {
                    typeArguments.add(WildcardTypeName.subtypeOf(Object.class));
                    left = type.indexOf('<', left + 1);
                } while (left != -1);
                return ParameterizedTypeName.get(typeClassName,
                        typeArguments.toArray(new TypeName[typeArguments.size()]));
            }
            return ClassName.bestGuess(type);
    }
}
项目:web3j    文件:AbiTypesMapperGenerator.java   
private void generate(String destinationDir) throws IOException {

        String typesPackageName = "org.web3j.abi.datatypes";
        String autoGeneratedTypesPackageName = typesPackageName + ".generated";

        MethodSpec.Builder builder = MethodSpec.methodBuilder("getType")
                .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
                .addParameter(String.class, TYPE)
                .returns(
                        ParameterizedTypeName.get(ClassName.get(Class.class),
                                WildcardTypeName.subtypeOf(Object.class))
                )
                .beginControlFlow("switch (type)");

        builder = addTypes(builder, typesPackageName);
        builder = addGeneratedTypes(builder, autoGeneratedTypesPackageName);
        builder = builder.addStatement("default:\nthrow new $T($S)",
                UnsupportedOperationException.class,
                "Unsupported type encountered");
        builder.endControlFlow();

        MethodSpec methodSpec = builder.build();

        MethodSpec constructorSpec = MethodSpec.constructorBuilder()
                .addModifiers(Modifier.PRIVATE)
                .build();

        TypeSpec typeSpec = TypeSpec
                .classBuilder("AbiTypes")
                .addJavadoc(buildWarning(AbiTypesMapperGenerator.class))
                .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
                .addMethod(constructorSpec)
                .addMethod(methodSpec)
                .build();

        write(autoGeneratedTypesPackageName, typeSpec, destinationDir);
    }
项目:Rapier    文件:EasyType.java   
/**
 * Reference -> https://github.com/JakeWharton/butterknife/blob/master/butterknife-compiler/src/main/java/butterknife/compiler/BindingClass.java
 * @param type
 * @return
 */
public static TypeName bestGuess(String type) {
    switch (type) {
        case "void": return TypeName.VOID;
        case "boolean": return TypeName.BOOLEAN;
        case "byte": return TypeName.BYTE;
        case "char": return TypeName.CHAR;
        case "double": return TypeName.DOUBLE;
        case "float": return TypeName.FLOAT;
        case "int": return TypeName.INT;
        case "long": return TypeName.LONG;
        case "short": return TypeName.SHORT;
        default:
            int left = type.indexOf('<');
            if (left != -1) {
                ClassName typeClassName = ClassName.bestGuess(type.substring(0, left));
                List<TypeName> typeArguments = new ArrayList<>();
                do {
                    typeArguments.add(WildcardTypeName.subtypeOf(Object.class));
                    left = type.indexOf('<', left + 1);
                } while (left != -1);
                return ParameterizedTypeName.get(typeClassName,
                        typeArguments.toArray(new TypeName[typeArguments.size()]));
            }
            return ClassName.bestGuess(type);
    }
}