private TypeSpec.Builder skeletonType(TypeSpec completeType) { TypeSpec.Builder skeleton = classBuilder(completeType.name) .addSuperinterfaces(completeType.superinterfaces) .addTypeVariables(completeType.typeVariables) .addModifiers(completeType.modifiers.toArray(new Modifier[0])) .addAnnotations(completeType.annotations); if (!completeType.superclass.equals(ClassName.OBJECT)) { skeleton.superclass(completeType.superclass); } completeType.methodSpecs.stream() .filter(method -> !method.modifiers.contains(PRIVATE) || method.isConstructor()) .map(this::skeletonMethod) .forEach(skeleton::addMethod); completeType.fieldSpecs.stream() .filter(field -> !field.modifiers.contains(PRIVATE)) .map(this::skeletonField) .forEach(skeleton::addField); completeType.typeSpecs.stream() .map(type -> skeletonType(type).build()) .forEach(skeleton::addType); return skeleton; }
public static JavaFile generateRepository(String name, String packageName, JavaFile entityClass, List<ClassName> additionalSuperInterfaces) throws IOException { ParameterizedTypeName parameterizedTypeName = ParameterizedTypeName.get( ClassName.bestGuess("org.springframework.data.jpa.repository.JpaRepository"), getClassName(entityClass), ClassName.get(Long.class) ); TypeSpec typeSpec = TypeSpec.interfaceBuilder(name) .addModifiers(Modifier.PUBLIC) .addAnnotation(ClassName.bestGuess("org.springframework.stereotype.Repository")) .addSuperinterface(parameterizedTypeName) .addSuperinterfaces(additionalSuperInterfaces) .build(); JavaFile javaFile = JavaFile .builder(packageName, typeSpec) .skipJavaLangImports(true) .build(); javaFile.writeTo(System.out); return javaFile; } }
.addSuperinterfaces(interfacesToAdd);
.addModifiers(Modifier.PUBLIC) .addAnnotation(iriAnnotation) .addSuperinterfaces(superClazzNames) .addMethods(getters) .addMethods(setters)
.addModifiers(PUBLIC, Modifier.FINAL) .addAnnotation(PoetUtils.generatedAnnotation()) .addSuperinterfaces(modelSuperInterfaces()) .superclass(modelSuperClass()) .addMethods(modelClassMethods())
.addModifiers(PUBLIC, Modifier.FINAL) .addAnnotation(PoetUtils.generatedAnnotation()) .addSuperinterfaces(modelSuperInterfaces()) .superclass(modelSuperClass()) .addMethods(modelClassMethods())
.collect(Collectors.toList()); final TypeSpec.Builder builder = TypeSpec.classBuilder(generatedBuilderName) .addSuperinterfaces(additionalInterfaceNames) .addAnnotation(AnnotationSpec.builder(Generated.class) .addMember("value", "$S", getClass().getCanonicalName())
.addMethods(createFactoryMethods(factoryMethods, propertyGenModelList, concreteClassName)) .addMethods(createCopyFactoryMethods(copyFactoryMethods, concreteClassName, propertyGenModelList)) .addSuperinterfaces(superInterfaces); copyDeprecatedAnnotation(property, typeSpecBuilder);
.collect(Collectors.toList()); final TypeSpec.Builder builder = TypeSpec.classBuilder(generatedBuilderName) .addSuperinterfaces(additionalInterfaceNames) .addAnnotation(AnnotationSpec.builder(Generated.class) .addMember("value", "$S", getClass().getCanonicalName())
.addMethods(createFactoryMethods(factoryMethods, propertyGenModelList, concreteClassName)) .addMethods(createCopyFactoryMethods(copyFactoryMethods, concreteClassName, propertyGenModelList)) .addSuperinterfaces(superInterfaces); copyDeprecatedAnnotation(property, typeSpecBuilder);
return TypeSpec.classBuilder(name) .addModifiers(Modifier.PUBLIC) .addSuperinterfaces(superifaces) .addFields(fields) .addMethod(constructor)
.map(d -> ClassName.get(d.packageName(), d.annotation().value())); return TypeSpec.interfaceBuilder(ifaceName) .addSuperinterfaces(baseScalars) .addSuperinterfaces(baseStructures) .addModifiers(Modifier.PUBLIC) .build();
public TypeSpec builderInterface() { TypeSpec.Builder builder = TypeSpec.interfaceBuilder(builderInterfaceName()) .addSuperinterfaces(builderSuperInterfaces()) .addModifiers(Modifier.PUBLIC); shapeModel.getNonStreamingMembers() .forEach(m -> { builder.addMethods(accessorsFactory.fluentSetterDeclarations(m, builderInterfaceName())); builder.addMethods(accessorsFactory.convenienceSetterDeclarations(m, builderInterfaceName())); }); if (isException()) { builder.addSuperinterface(parentExceptionBuilder().nestedClass("Builder")); builder.addMethods(ExceptionProperties.builderInterfaceMethods(builderInterfaceName())); } if (isRequest()) { builder.addMethod(MethodSpec.methodBuilder("overrideConfiguration") .returns(builderInterfaceName()) .addAnnotation(Override.class) .addParameter(AwsRequestOverrideConfiguration.class, "overrideConfiguration") .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) .build()); builder.addMethod(MethodSpec.methodBuilder("overrideConfiguration") .addAnnotation(Override.class) .returns(builderInterfaceName()) .addParameter(ParameterizedTypeName.get(Consumer.class, AwsRequestOverrideConfiguration.Builder.class), "builderConsumer") .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) .build()); } return builder.build(); }
public TypeSpec builderInterface() { TypeSpec.Builder builder = TypeSpec.interfaceBuilder(builderInterfaceName()) .addSuperinterfaces(builderSuperInterfaces()) .addModifiers(Modifier.PUBLIC); shapeModel.getNonStreamingMembers() .forEach(m -> { builder.addMethods(accessorsFactory.fluentSetterDeclarations(m, builderInterfaceName())); builder.addMethods(accessorsFactory.convenienceSetterDeclarations(m, builderInterfaceName())); }); if (isException()) { builder.addSuperinterface(parentExceptionBuilder().nestedClass("Builder")); builder.addMethods(ExceptionProperties.builderInterfaceMethods(builderInterfaceName())); } if (isRequest()) { builder.addMethod(MethodSpec.methodBuilder("overrideConfiguration") .returns(builderInterfaceName()) .addAnnotation(Override.class) .addParameter(AwsRequestOverrideConfiguration.class, "overrideConfiguration") .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) .build()); builder.addMethod(MethodSpec.methodBuilder("overrideConfiguration") .addAnnotation(Override.class) .returns(builderInterfaceName()) .addParameter(ParameterizedTypeName.get(Consumer.class, AwsRequestOverrideConfiguration.Builder.class), "builderConsumer") .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) .build()); } return builder.build(); }
public TypeSpec build() { TypeSpec.Builder builder; switch (kind) { case ANNOTATION: builder = TypeSpec.annotationBuilder(name); break; case CLASS: builder = TypeSpec.classBuilder(name); break; case ENUM: builder = TypeSpec.enumBuilder(name); break; case INTERFACE: builder = TypeSpec.interfaceBuilder(name); break; default: throw new UnsupportedOperationException("Unknown kind: " + kind); } builder.addAnnotations(annotations) .addModifiers(modifiers.toArray(new Modifier[0])) .addTypeVariables(typeVariables) .superclass(superclass) .addSuperinterfaces(superinterfaces); enumConstants.forEach(builder::addEnumConstant); builder.addFields(fieldSpecs).addMethods(methodSpecs).addTypes(typeSpecs); originatingElements.forEach(builder::addOriginatingElement); return builder.build(); }
public TypeSpec build() { TypeSpec.Builder builder; switch (kind) { case ANNOTATION: builder = TypeSpec.annotationBuilder(name); break; case CLASS: builder = TypeSpec.classBuilder(name); break; case ENUM: builder = TypeSpec.enumBuilder(name); break; case INTERFACE: builder = TypeSpec.interfaceBuilder(name); break; default: throw new UnsupportedOperationException("Unknown kind: " + kind); } builder.addAnnotations(annotations) .addModifiers(modifiers.toArray(new Modifier[0])) .addTypeVariables(typeVariables) .superclass(superclass) .addSuperinterfaces(superinterfaces); enumConstants.forEach(builder::addEnumConstant); builder.addFields(fieldSpecs).addMethods(methodSpecs).addTypes(typeSpecs); originatingElements.forEach(builder::addOriginatingElement); return builder.build(); }
public void addToTypeSpec(TypeSpec.Builder typeSpec) { for (JavadocSpec javadocSpec : javadocSpecs) { typeSpec.addJavadoc(javadocSpec.format, javadocSpec.args); } typeSpec.addAnnotations(annotationSpecs); typeSpec.addFields(fieldSpecs); typeSpec.addMethods(methodSpecs); typeSpec.addTypes(typeSpecs); typeSpec.addSuperinterfaces(superInterfaces); }