public static MethodSpec.Builder overriding(ExecutableElement method) { return MethodSpec.methodBuilder(method.getSimpleName().toString()) .addAnnotation(Override.class) .addModifiers(method.getModifiers().stream().filter(modifier -> modifier != Modifier.ABSTRACT).collect(Collectors.toList())) .returns(TypeName.get(method.getReturnType())) .varargs(method.isVarArgs()) .addExceptions(method.getThrownTypes().stream().map(TypeName::get).collect(Collectors.toList())) .addTypeVariables(method.getTypeParameters().stream().map(TypeVariableName::get).collect(Collectors.toList())) .addParameters(method.getParameters().stream().map(element -> ParameterSpec.get(element).toBuilder() .addAnnotations(element.getAnnotationMirrors().stream().map(AnnotationSpec::get).collect(Collectors.toList())).build()).collect(Collectors.toList())); }
default void addToBuilderInterface(@NonNull TypeSpec.Builder builder, @NonNull ClassName builderName) { MethodSpec.Builder setter = MethodSpec.methodBuilder(Strings.PREFIX_SETTER + WordUtils.capitalize(getName())) .addParameter(ParameterSpec.builder(getType(), getName()).addAnnotations(getAnnotations()).build()) .varargs(getType() instanceof ArrayTypeName) .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) .addAnnotation(Types.NON_NULL) .returns(builderName); configureSetter(setter); builder.addMethod(setter.build()); } }
methodBuilder.varargs(method.isVarArgs());
private MethodSpec fluentVarargToListSetter(TypeName returnType) { return fluentSetterBuilder(ParameterSpec.builder(asArray(), fieldName()).build(), returnType) .varargs(true) .addAnnotation(SafeVarargs.class) .addCode(varargToListSetterBody()) .addStatement("return this") .build(); }
public MethodSpec write() { Builder b = MethodSpec.methodBuilder(methodInfo.name()) .addModifiers(modifiers()) .addParameters(parameterList) .returns(returnTypeName) .varargs(methodInfo.varargs()); for (CodeBlock codeBlock : statementList) { b.addCode(codeBlock); } return build(b); }
private MethodSpec builderIfaceMethod() { MethodSpec.Builder method = MethodSpec.methodBuilder(name) .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) .returns(naming().builderInnerTypeName(methodInfo())) .addParameters(parameterSpecList) .varargs(varargs); return methodBuild(method); }
private MethodSpec builderClassSetter() { MethodSpec.Builder method = MethodSpec.methodBuilder(name) .addAnnotation(Override.class) .addModifiers(Modifier.PUBLIC) .returns(naming().builderInnerTypeName(methodInfo())) .addParameters(parameterSpecList) .varargs(varargs) .addCode(body .addStatement("return this") .build()); return methodBuild(method); }
private MethodSpec builderIfaceMethod(Naming naming) { MethodSpec.Builder method = MethodSpec.methodBuilder(name) .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) .returns(naming.builderInnerTypeName(methodInfo())) .addParameters(parameterSpecList) .varargs(varargs); return methodBuild(method); }
private MethodSpec builderClassSetter() { MethodSpec.Builder method = MethodSpec.methodBuilder(name) .addAnnotation(Override.class) .addModifiers(Modifier.PUBLIC) .returns(naming().builderInnerTypeName(methodInfo())) .addParameters(parameterSpecList) .varargs(varargs) .addCode(body .addStatement("return this") .build()); return methodBuild(method); }
private MethodSpec fluentVarargConsumerBuilderSetter(TypeName returnType) { return fluentSetterBuilder(ParameterSpec.builder(asConsumerBuilderArray(), fieldName()).build(), returnType) .varargs(true) .addAnnotation(SafeVarargs.class) .addCode(consumerBuilderVarargSetterBody()) .addStatement("return this") .build(); }
private MethodSpec fluentVarargToListSetter(TypeName returnType) { return fluentSetterBuilder(ParameterSpec.builder(asArray(), fieldName()).build(), returnType) .varargs(true) .addAnnotation(SafeVarargs.class) .addCode(varargToListSetterBody()) .addStatement("return this") .build(); }
.addAnnotation(Override.class) .addParameter(Object[].class, "vertexIds") .varargs(true) .addStatement("$N clone = this.clone()", ctx.traversalSourceClazz) .addStatement("clone.getBytecode().addStep($T.V, vertexIds)", GraphTraversal.Symbols.class) .addAnnotation(Override.class) .addParameter(Object[].class, "edgeIds") .varargs(true) .addStatement("$N clone = this.clone()", ctx.traversalSourceClazz) .addStatement("clone.getBytecode().addStep($T.E, edgeIds)", GraphTraversal.Symbols.class)
methodToAdd.varargs(true); methodToAdd.addStatement("return inject(starts)", methodName); } else {
private MethodSpec getTableMethod(String name, TableDefinition tableDefinition) { String tableName = getTableName(name); String triggerName = tableName + "." + name + "Trigger"; TypeName tableType = ClassName.get(packageName, tableName); TypeName triggerType = ClassName.get(packageName, triggerName); MethodSpec.Builder tableGetterMethodBuilder = MethodSpec.methodBuilder("get" + tableName) .addModifiers(Modifier.PUBLIC) .addParameter(Transaction.class, "t") .returns(tableType); if (tableDefinition.getGenericTableName() != null) { tableGetterMethodBuilder .addParameter(String.class, "name") .addParameter(ArrayTypeName.of(triggerType), "triggers") .varargs() .addStatement("return $T.of(t, namespace, name, $T.getAllTriggers(t, sharedTriggers, triggers))", tableType, Triggers.class); } else { tableGetterMethodBuilder .addParameter(ArrayTypeName.of(triggerType), "triggers") .varargs() .addStatement("return $T.of(t, namespace, $T.getAllTriggers(t, sharedTriggers, triggers))", tableType, Triggers.class); } return tableGetterMethodBuilder.build(); }
private void addMethodBody(final MethodSpec.Builder methodToAdd, final ExecutableElement templateMethod, final String startBody, final String endBody, final Object... statementArgs) { final List<? extends VariableElement> parameters = templateMethod.getParameters(); final StringBuilder body = new StringBuilder(startBody); final int numberOfParams = parameters.size(); for (int ix = 0; ix < numberOfParams; ix++) { final VariableElement param = parameters.get(ix); methodToAdd.addParameter(ParameterSpec.get(param)); body.append(param.getSimpleName()); if (ix < numberOfParams - 1) { body.append(","); } } body.append(endBody); // treat a final array as a varargs param if (!parameters.isEmpty() && parameters.get(parameters.size() - 1).asType().getKind() == TypeKind.ARRAY) methodToAdd.varargs(true); methodToAdd.addStatement(body.toString(), statementArgs); }
.addModifiers(Modifier.PUBLIC) .addParameter(ArrayTypeName.of(typeVariableName), "values") .varargs() .addStatement("super($L, $N)", length, "values") .build();
private static MethodSpec resWithVarargsBuilder( SpecModel specModel, final PropModel prop, final ClassName annotationClassName, final String resolver, final TypeName varargsType, final String varargsName) { return getMethodSpecBuilder( specModel, prop, prop.getName() + "Res", Arrays.asList( parameter(prop, TypeName.INT, "resId", annotation(annotationClassName)), ParameterSpec.builder(ArrayTypeName.of(varargsType), varargsName).build()), "$L.$L(resId, " + varargsName + ")", RESOURCE_RESOLVER, resolver + "Res") .varargs(true) .build(); }
default MethodSpec.Builder baseSetter(ClassName builderName) { MethodSpec.Builder builder = MethodSpec.methodBuilder(Strings.PREFIX_SETTER + WordUtils.capitalize(getName())); Collection<AnnotationSpec> annotations = new ArrayList<>(getAnnotations()); boolean deprecated = annotations.contains(Types.DEPRECATED); if (deprecated) { annotations.remove(Types.DEPRECATED); builder.addAnnotation(Types.DEPRECATED); } return builder .addParameter(ParameterSpec.builder(getType(), getName()).addAnnotations(annotations).build()) .varargs(getType() instanceof ArrayTypeName) .addModifiers(Modifier.PUBLIC) .addAnnotation(Types.NON_NULL) .returns(builderName); }
public Builder varargs() { return varargs(true); }