private void createBuilderInterface(@NonNull List<Element> elements) throws IOException { final TypeSpec.Builder interfaceBuilder = TypeSpec.interfaceBuilder(builderVisibleName) .addModifiers(Modifier.PUBLIC) .addSuperinterface(ConfigurationBuilder.class); final TypeName baseAnnotation = TypeName.get(this.baseAnnotation.asType()); Strings.addClassJavadoc(interfaceBuilder, baseAnnotation); ClassName builder = ClassName.get(PACKAGE, builderVisibleName); elements.stream().filter(BuilderElement.Interface.class::isInstance).map(BuilderElement.Interface.class::cast) .forEach(element -> element.addToBuilderInterface(interfaceBuilder, builder)); Strings.writeClass(processingEnv.getFiler(), interfaceBuilder.build()); }
public static Builder interfaceBuilder(ClassName className) { return interfaceBuilder(checkNotNull(className, "className == null").simpleName()); }
private void writeAsyncClass(Element elem) throws ClassNotFoundException, IOException, Exception { if (elem.getKind().isInterface()) { TypeElement interfaceClazz = (TypeElement) elem; String className = interfaceClazz.getSimpleName().toString(); TypeSpec.Builder classBuilder = TypeSpec.interfaceBuilder(className + ASYNC).addModifiers(Modifier.PUBLIC) .addSuperinterface(TypeName.get(elem.asType())); // add class generic type classBuilder.addTypeVariables(getTypeNames(interfaceClazz.getTypeParameters())); // add direct method addMethods(interfaceClazz, classBuilder); // add method form superinterface addSuperInterfaceMethods(interfaceClazz.getInterfaces(), classBuilder); // write class JavaFile javaFile = JavaFile.builder(processingEnv.getElementUtils().getPackageOf(interfaceClazz).getQualifiedName().toString(), classBuilder.build()).build(); javaFile.writeTo(new File(System.getProperty("basedir"), TARGET_DIR)); } else { processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "MotanAsyncProcessor not process, because " + elem.toString() + " not a interface."); } }
public TypeSpec api(Service service) { ClassName apiName = (ClassName) javaGenerator.typeName(service.type()); TypeSpec.Builder typeBuilder = TypeSpec.interfaceBuilder(apiName.simpleName()); typeBuilder.addModifiers(PUBLIC);
private TypeSpec getSharedTriggers() { TypeSpec.Builder sharedTriggersInterfaceBuilder = TypeSpec.interfaceBuilder("SharedTriggers") .addModifiers(Modifier.PUBLIC); for (String name : definitions.keySet()) { String tableName = getTableName(name); String triggerName = tableName + "." + name + "Trigger"; TypeName triggerType = ClassName.get(packageName, triggerName); sharedTriggersInterfaceBuilder.addSuperinterface(triggerType); } return sharedTriggersInterfaceBuilder.build(); }
private void generateTraversalInterface(final Context ctx) throws IOException { final TypeSpec.Builder traversalInterface = TypeSpec.interfaceBuilder(ctx.traversalClazz) .addModifiers(Modifier.PUBLIC) .addTypeVariables(Arrays.asList(TypeVariableName.get("S"), TypeVariableName.get("E"))) .addSuperinterface(TypeName.get(ctx.annotatedDslType.asType())); // process the methods of the GremlinDsl annotated class for (ExecutableElement templateMethod : findMethodsOfElement(ctx.annotatedDslType, null)) { traversalInterface.addMethod(constructMethod(templateMethod, ctx.traversalClassName, ctx.dslName, Modifier.PUBLIC, Modifier.DEFAULT)); } // process the methods of GraphTraversal final TypeElement graphTraversalElement = elementUtils.getTypeElement(GraphTraversal.class.getCanonicalName()); final Predicate<ExecutableElement> ignore = e -> e.getSimpleName().contentEquals("asAdmin") || e.getSimpleName().contentEquals("iterate"); for (ExecutableElement templateMethod : findMethodsOfElement(graphTraversalElement, ignore)) { traversalInterface.addMethod(constructMethod(templateMethod, ctx.traversalClassName, ctx.dslName, Modifier.PUBLIC, Modifier.DEFAULT)); } // there are weird things with generics that require this method to be implemented if it isn't already present // in the GremlinDsl annotated class extending from GraphTraversal traversalInterface.addMethod(MethodSpec.methodBuilder("iterate") .addModifiers(Modifier.PUBLIC, Modifier.DEFAULT) .addAnnotation(Override.class) .addStatement("$T.super.iterate()", ClassName.get(ctx.annotatedDslType)) .addStatement("return this") .returns(ParameterizedTypeName.get(ctx.traversalClassName, TypeVariableName.get("S"), TypeVariableName.get("E"))) .build()); final JavaFile traversalJavaFile = JavaFile.builder(ctx.packageName, traversalInterface.build()).build(); traversalJavaFile.writeTo(filer); }
TypeSpec.Builder typeBuilder; if (typeToExtend.isInterface()) { typeBuilder = TypeSpec.interfaceBuilder(newTypeName); } else { typeBuilder = TypeSpec.classBuilder(newTypeName);
public TypeSpec generate() { return TypeSpec.interfaceBuilder(Constants.QUERY_LOGGER) .addModifiers(Modifier.PUBLIC) .addMethod(MethodSpec.methodBuilder("onQuery") .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) .addParameter(ClassName.get(String.class), "query") .addParameter(ArrayTypeName.get(String[].class), "datas") .build()) .build(); }
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); } }
private TypeSpec builderInterfaceSpec() { return TypeSpec.interfaceBuilder("Builder") .addModifiers(Modifier.PUBLIC) .addSuperinterface(ClassName.get(AwsRequest.class).nestedClass("Builder")) .addMethod(MethodSpec.methodBuilder("build") .addAnnotation(Override.class) .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) .returns(className()) .build()) .build(); }
private TypeSpec builderInterfaceSpec() { TypeSpec.Builder builder = TypeSpec.interfaceBuilder("Builder") .addModifiers(Modifier.PUBLIC) .addSuperinterface(ClassName.get(AwsResponse.class).nestedClass("Builder")) .addMethod(MethodSpec.methodBuilder("build") .addAnnotation(Override.class) .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) .returns(className()) .build()); addResponseMetadataToInterface(builder); return builder.build(); }
private TypeSpec builderInterfaceSpec() { TypeSpec.Builder builder = TypeSpec.interfaceBuilder("Builder") .addModifiers(Modifier.PUBLIC) .addSuperinterface(ClassName.get(AwsResponse.class).nestedClass("Builder")) .addMethod(MethodSpec.methodBuilder("build") .addAnnotation(Override.class) .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) .returns(className()) .build()); addResponseMetadataToInterface(builder); return builder.build(); }
public TypeSpec generateInterface() { TypeSpec.Builder builder = TypeSpec.interfaceBuilder(getClazzName()) .addModifiers(PUBLIC) .addSuperinterface(PreferenceChangedListener.class) .addMethod(getOnChangedSpec()); return builder.build(); }
TypeSpec.Builder newBuilderDslTypeSpecBuilder() { TypeSpec.Builder builder = TypeSpec.interfaceBuilder(builderInterfaceSimpleName()); typeVariableNameListTo(builder); return builder; }
public TypeSpec builderInterface() { TypeSpec.Builder builder = TypeSpec.interfaceBuilder(baseExceptionClassName.nestedClass("Builder")) .addSuperinterface(ClassName.get(AwsServiceException.class).nestedClass("Builder")) .addModifiers(Modifier.PUBLIC) .addMethods(ExceptionProperties.builderInterfaceMethods(className().nestedClass("Builder"))); return builder.build(); }
public TypeSpec builderInterface() { TypeSpec.Builder builder = TypeSpec.interfaceBuilder(baseExceptionClassName.nestedClass("Builder")) .addSuperinterface(ClassName.get(AwsServiceException.class).nestedClass("Builder")) .addModifiers(Modifier.PUBLIC) .addMethods(ExceptionProperties.builderInterfaceMethods(className().nestedClass("Builder"))); return builder.build(); }
public static BuilderInterface of(StandardBuilderConfiguration builder) { TypeInfo typeInfo = builder.typeInfo(); Naming naming = builder.naming(); TypeSpec.Builder type = TypeSpec.interfaceBuilder(naming.builderInterfaceSimpleName()) .addModifiers(typeInfo.accessInfo().modifiers()); naming.typeVariableNameListTo(type); return new BuilderInterface(builder, type); }
private Artifact iface(TypeInfo typeInfo, String message) { ClassName className = typeInfo.classNameSuffix("Message"); TypeSpec typeSpec = TypeSpec.interfaceBuilder(className) .addAnnotation(AnnotationSpec.builder(Message.class) .addMember("value", "$S", message) .build()) .build(); JavaFile javaFile = typeInfo.toJavaFile(typeSpec); return Artifact.of(javaFile); }
private Artifact iface(TypeInfo typeInfo, String message) { ClassName className = typeInfo.classNameSuffix("Message"); TypeSpec typeSpec = TypeSpec.interfaceBuilder(className) .addAnnotation(AnnotationSpec.builder(Message.class) .addMember("value", "$S", message) .build()) .build(); JavaFile javaFile = typeInfo.toJavaFile(typeSpec); return Artifact.of(javaFile); }
public static BuilderInterface of(StandardBuilderConfiguration builder) { TypeInfo typeInfo = builder.typeInfo(); Naming naming = builder.naming(); TypeSpec.Builder type = TypeSpec.interfaceBuilder(naming.builderInterfaceSimpleName()) .addModifiers(typeInfo.accessInfo().modifiers()); naming.typeVariableNameListTo(type); return new BuilderInterface(builder, type); }