public static Builder annotationBuilder(ClassName className) { return annotationBuilder(checkNotNull(className, "className == null").simpleName()); }
private TypeSpec.Builder createTypeSpecBuilder(final ClassType classType, final String className) { switch (classType) { case ANNOTATION: return TypeSpec.annotationBuilder(className); case INTERFACE: return TypeSpec.interfaceBuilder(className); default: return TypeSpec.classBuilder(className); } }
public static Builder annotationBuilder(ClassName className) { return annotationBuilder(checkNotNull(className, "className == null").simpleName()); }
public static Builder annotationBuilder(ClassName className) { return annotationBuilder(checkNotNull(className, "className == null").simpleName()); }
public TypeSpec.Builder newType(TypeSpec type) { TypeSpec.Builder newType; switch (type.kind) { case ANNOTATION: newType = TypeSpec.annotationBuilder(type.name); break; case ENUM: newType = TypeSpec.enumBuilder(type.name); break; case INTERFACE: newType = TypeSpec.interfaceBuilder(type.name); break; case CLASS: newType = TypeSpec.classBuilder(type.name); break; default: throw new GenerationException("this can't happen..."); } return newType; }
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(); }
@Override public final void saveIn(Path directory) { try { final String targetsLiteral = this.targets .map(ElementType::name) .collect(Collectors.joining(", ", "{", "}")); final AnnotationSpec retention = AnnotationSpec.builder(Retention.class) .addMember("value", "$L", this.retentionPolicy) .build(); final AnnotationSpec target = AnnotationSpec.builder(Target.class) .addMember("value", "$L", targetsLiteral) .build(); final TypeSpec typeSpec = TypeSpec.annotationBuilder(className) .addModifiers(Modifier.PUBLIC) .addAnnotation(retention) .addAnnotation(target) .build(); JavaFile.builder(packageName, typeSpec) .addStaticImport(RetentionPolicy.class, retentionPolicy.name()) .addStaticImport(ElementType.class, "*") .build().writeTo(directory); } catch(Exception ex) { throw new RuntimeException(ex); } } }
newType = TypeSpec.annotationBuilder(name); break;
newType = TypeSpec.annotationBuilder(name); break;
private void buildNewWebMethod(GMethod gMethod, MethodSpec.Builder methodSpec) { Class<? extends Annotation> type = HTTPMethods.methodNameToAnnotation(gMethod.method()); if (type == null) { String name = gMethod.method().toUpperCase(); final ClassName className = ClassName.get(build.getSupportPackage(), name); final TypeSpec.Builder builder = TypeSpec.annotationBuilder(className); builder .addModifiers(Modifier.PUBLIC) .addAnnotation(AnnotationSpec.builder(Target.class) .addMember("value", "{$T.$L}", ElementType.class, "METHOD").build()) .addAnnotation(AnnotationSpec.builder(Retention.class) .addMember("value", "$T.$L", RetentionPolicy.class, "RUNTIME") .build()) .addAnnotation(AnnotationSpec.builder(HttpMethod.class).addMember("value", "$S", name).build()); build.newSupportGenerator(new JavaPoetTypeGeneratorBase(className) { @Override public void output(CodeContainer<TypeSpec.Builder> rootDirectory) throws IOException { rootDirectory.into(builder); } }); methodSpec .addAnnotation(AnnotationSpec.builder(className).build()); } else { methodSpec .addAnnotation(AnnotationSpec.builder(type).build()); } }
private void buildNewWebMethod(GMethod gMethod, MethodSpec.Builder methodSpec) { Class<? extends Annotation> type = HTTPMethods.methodNameToAnnotation(gMethod.method()); if (type == null) { String name = gMethod.method().toUpperCase(); final ClassName className = ClassName.get(build.getSupportPackage(), name); final TypeSpec.Builder builder = TypeSpec.annotationBuilder(className); builder .addModifiers(Modifier.PUBLIC) .addAnnotation(AnnotationSpec.builder(Target.class) .addMember("value", "{$T.$L}", ElementType.class, "METHOD").build()) .addAnnotation(AnnotationSpec.builder(Retention.class) .addMember("value", "$T.$L", RetentionPolicy.class, "RUNTIME") .build()) .addAnnotation(AnnotationSpec.builder(HttpMethod.class).addMember("value", "$S", name).build()); build.newSupportGenerator(new JavaPoetTypeGeneratorBase(className) { @Override public void output(CodeContainer<TypeSpec.Builder> rootDirectory) throws IOException { rootDirectory.into(builder); } }); methodSpec .addAnnotation(AnnotationSpec.builder(className).build()); } else { methodSpec .addAnnotation(AnnotationSpec.builder(type).build()); } }