private TypeSpec.Builder rotateBuilderState( TypeSpec.Builder builder, TypeSpec.Builder builderStateClass, String nextStateClassName) { if (builderStateClass != builder) { builder.addType(builderStateClass.build()); } //prepare next state class builderStateClass = TypeSpec.classBuilder(nextStateClassName).addModifiers(Modifier.PUBLIC); return builderStateClass; }
private void emitResolvedOptionalSequence(TypeSpec.Builder intentBuilderTypeBuilder) { // find superclass final ClassName optionalSequence = get(target.classPackage, builderClassName(), OPTIONAL_SEQUENCE_CLASS); final ClassName resolvedOptional = get(target.classPackage, builderClassName(), RESOLVED_OPTIONAL_SEQUENCE_CLASS); TypeSpec.Builder resolvedOptionalSequenceBuilder = TypeSpec.classBuilder(RESOLVED_OPTIONAL_SEQUENCE_CLASS) .superclass(ParameterizedTypeName.get(optionalSequence, resolvedOptional)) .addModifiers(Modifier.PUBLIC) .addModifiers(Modifier.STATIC); MethodSpec.Builder constructorBuilder = MethodSpec.constructorBuilder() .addModifiers(Modifier.PUBLIC) .addParameter(Bundler.class, "bundler") .addParameter(get("android.content", "Intent"), "intent") .addStatement("super(bundler, intent)"); resolvedOptionalSequenceBuilder.addMethod(constructorBuilder.build()); intentBuilderTypeBuilder.addType(resolvedOptionalSequenceBuilder.build()); }
@Override public boolean handleTypeSpec(TypeSpec.Builder newType, TypeSpec typeSpec) { newType.addType(typeSpec); return true; }
public TypeSpec generate() { iface.addMethod(build()); if (iface != type) { type.addType(iface.build()); } return type.build(); }
@Override public TypeSpec poetSpec() { return PoetUtils.createClassBuilder(baseExceptionClassName) .superclass(AwsServiceException.class) .addMethod(constructor()) .addMethod(builderMethod()) .addMethod(toBuilderMethod()) .addMethod(serializableBuilderClass()) .addModifiers(Modifier.PUBLIC) .addType(builderInterface()) .addType(builderImplClass()) .build(); }
@Override protected TypeSpec.Builder createTypeSpec() { return PoetUtils.createClassBuilder(className()) .addModifiers(Modifier.FINAL) .addAnnotation(SdkInternalApi.class) .addSuperinterface(visitorBuilderType) .addField(FieldSpec.builder(consumerType(eventStreamBaseClass), "onDefault") .addModifiers(Modifier.PRIVATE) .build()) .addType(new VisitorFromBuilderImplSpec().poetSpec()); }
protected TypeSpec.Builder createTypeSpec() { return PoetUtils.createInterfaceBuilder(className()) .addModifiers(Modifier.PUBLIC, Modifier.STATIC) .addJavadoc("Visitor for subtypes of {@link $T}.", eventStreamBaseClass) .addMethod(createBuilderMethodSpec()) .addType(new EventStreamVisitorBuilderInterfaceSpec(poetExt, operationModel).poetSpec()); }
@Override protected TypeSpec.Builder createTypeSpec() { return PoetUtils.createClassBuilder(className()) .addModifiers(Modifier.FINAL) .addAnnotation(SdkInternalApi.class) .addSuperinterface(visitorBuilderType) .addField(FieldSpec.builder(consumerType(eventStreamBaseClass), "onDefault") .addModifiers(Modifier.PRIVATE) .build()) .addType(new VisitorFromBuilderImplSpec().poetSpec()); }
/** * Generates a Java file with the code corresponding to all Remixer annotations in this class. */ JavaFile generateJavaFile() throws RemixerAnnotationException { Collection<MethodAnnotation> annotatedMethods = sortMethods(); TypeSpec.Builder classBuilder = TypeSpec.classBuilder(generatedClassName); ParameterizedTypeName superInterface = ParameterizedTypeName.get(REMIXER_BINDER_CLASS_NAME, sourceClassName); classBuilder .addModifiers(Modifier.PUBLIC) .addSuperinterface(superInterface) .addJavadoc("This class was generated by RemixerAnnotationProcessor"); // Create bind method signature MethodSpec.Builder bindMethodBuilder = MethodSpec .methodBuilder("bindInstance") .addParameter(ClassName.get(sourceClass), "activity") .addAnnotation(Override.class) .addModifiers(Modifier.PUBLIC); bindMethodBuilder .addStatement("$T remixer = $T.getInstance()", Remixer.class, Remixer.class); for (MethodAnnotation method : annotatedMethods) { // Create all of the internal callback classes classBuilder.addType(method.generateCallbackClass()); // Add them to the bind method. method.addSetupStatements(bindMethodBuilder); } classBuilder.addMethod(bindMethodBuilder.build()); return JavaFile.builder(packageName, classBuilder.build()).build(); }
builder.addType(enumAdapter(javaType, adapterJavaType));
intentBuilderTypeBuilder.addType(optionalSequenceBuilder.build());
adapterBuilder.addType(generateProvidesAdapter(moduleClassName, adapterClassName, providerMethod, methodToClassName, methodNameToNextId, library));
private void emitRequiredSequence( TypeSpec.Builder intentBuilderTypeBuilder, List<ExtraInjection> requiredInjections) { if (!target.hasRequiredFields) { return; } final TypeName generic = getInitialStateGeneric(false); TypeSpec.Builder requiredSequenceBuilder = TypeSpec.classBuilder(REQUIRED_SEQUENCE_CLASS) .superclass(ParameterizedTypeName.get(get(RequiredStateSequence.class), generic)) .addTypeVariable((TypeVariableName) generic) .addModifiers(Modifier.PUBLIC) .addModifiers(Modifier.STATIC); MethodSpec.Builder constructorBuilder = MethodSpec.constructorBuilder() .addModifiers(Modifier.PUBLIC) .addParameter(Bundler.class, "bundler") .addParameter(generic, "allRequiredSetState") .addStatement("super(bundler, allRequiredSetState)"); requiredSequenceBuilder.addMethod(constructorBuilder.build()); TypeSpec.Builder builderStateClass = requiredSequenceBuilder; for (int i = 0; i < requiredInjections.size(); i++) { final boolean isLast = i == requiredInjections.size() - 1; final ExtraInjection binding = requiredInjections.get(i); final String nextClass = emitRequiredSetter(builderStateClass, binding, generic, isLast); builderStateClass = rotateBuilderState(requiredSequenceBuilder, builderStateClass, nextClass); } intentBuilderTypeBuilder.addType(requiredSequenceBuilder.build()); }
classBuilder.addType(buildEventResponseObject(responseClassName, indexedParameters, nonIndexedParameters));
public void emitInitialState(TypeSpec.Builder intentBuilderTypeBuilder) { TypeSpec.Builder initialStateBuilder = TypeSpec.classBuilder(INITIAL_STATE_CLASS) .superclass(getInitialStateType(getInitialStateGeneric(true))) .addModifiers(Modifier.PUBLIC) .addModifiers(Modifier.STATIC); MethodSpec.Builder constructorBuilder = MethodSpec.constructorBuilder() .addModifiers(Modifier.PUBLIC) .addParameter(Bundler.class, "bundler") .addParameter(get("android.content", "Intent"), "intent"); if (!target.hasRequiredFields && target.closestRequiredAncestorPackage == null) { constructorBuilder.addStatement("super(bundler, intent)"); } else { constructorBuilder.addStatement( "super(bundler, new $L(bundler, intent))", RESOLVED_OPTIONAL_SEQUENCE_CLASS); } initialStateBuilder.addMethod(constructorBuilder.build()); intentBuilderTypeBuilder.addType(initialStateBuilder.build()); }
private TypeSpec generateEnclosingType(EnclosingType type) { ClassName javaType = (ClassName) typeName(type.type()); TypeSpec.Builder builder = TypeSpec.classBuilder(javaType.simpleName()) .addModifiers(PUBLIC, FINAL); if (javaType.enclosingClassName() != null) { builder.addModifiers(STATIC); } String documentation = type.documentation(); if (!documentation.isEmpty()) { documentation += "\n\n<p>"; } documentation += "<b>NOTE:</b> This type only exists to maintain class structure" + " for its nested types and is not an actual message."; builder.addJavadoc("$L\n", documentation); builder.addMethod(MethodSpec.constructorBuilder() .addModifiers(PRIVATE) .addStatement("throw new $T()", AssertionError.class) .build()); for (Type nestedType : type.nestedTypes()) { builder.addType(generateType(nestedType)); } return builder.build(); }
/** Returns a standalone adapter for {@code type}. */ public TypeSpec generateAdapterForCustomType(Type type) { NameAllocator nameAllocator = nameAllocators.getUnchecked(type); ClassName adapterTypeName = abstractAdapterName(type.type()); ClassName typeName = (ClassName) typeName(type.type()); TypeSpec.Builder adapter; if (type instanceof MessageType) { adapter = messageAdapter(nameAllocator, (MessageType) type, typeName, adapterTypeName, null) .toBuilder(); } else { adapter = enumAdapter(nameAllocator, (EnumType) type, typeName, adapterTypeName).toBuilder(); } if (adapterTypeName.enclosingClassName() != null) adapter.addModifiers(STATIC); for (Type nestedType : type.nestedTypes()) { if (profile.getAdapter(nestedType.type()) == null) { throw new IllegalArgumentException("Missing custom proto adapter for " + nestedType.type().enclosingTypeOrPackage() + "." + nestedType.type().simpleName() + " when enclosing proto has custom proto adapter."); } adapter.addType(generateAdapterForCustomType(nestedType)); } return adapter.build(); }
public Builder addTypes(Iterable<TypeSpec> typeSpecs) { checkArgument(typeSpecs != null, "typeSpecs == null"); for (TypeSpec typeSpec : typeSpecs) { addType(typeSpec); } return this; }