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())); }
private void addMethods(TypeElement interfaceClazz, TypeSpec.Builder classBuilder) { List<? extends Element> elements = interfaceClazz.getEnclosedElements(); if (elements != null && !elements.isEmpty()) { for (Element e : elements) { if (ElementKind.METHOD.equals(e.getKind())) { ExecutableElement method = (ExecutableElement) e; MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder(method.getSimpleName().toString() + ASYNC) .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT).returns(ResponseFuture.class) .addTypeVariables(getTypeNames(method.getTypeParameters())); // add method params List<? extends VariableElement> vars = method.getParameters(); for (VariableElement var : vars) { methodBuilder.addParameter(ParameterSpec.builder(TypeName.get(var.asType()), var.getSimpleName().toString()) .build()); } classBuilder.addMethod(methodBuilder.build()); } } } }
private static MethodSpec generateDelegatingCreateBuilderMethod(SpecModel specModel) { final MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder("create") .addModifiers(Modifier.PUBLIC) .returns(getBuilderType(specModel)) .addParameter(specModel.getContextClass(), "context") .addStatement("return create(context, 0, 0)") .addModifiers(Modifier.STATIC); if (!specModel.getTypeVariables().isEmpty()) { methodBuilder.addTypeVariables(specModel.getTypeVariables()); } return methodBuilder.build(); }
private void addYield(TypeSpec.Builder builder, SpecData specData) { ParameterizedTypeName supplierName = ParameterizedTypeName.get(ClassName.get(Supplier.class), specData.monadicTypeName); CodeBlock.Builder codeBuilder = CodeBlock.builder() .addStatement("return delegate.yield(supplier)"); MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder("yield") .addModifiers(Modifier.PUBLIC) .returns(specData.parameterizedMonadicName) .addTypeVariables(specData.typeVariableNames) .addParameter(ParameterSpec.builder(supplierName, "supplier").build()) .addAnnotation(makeUnchecked()) .addCode(codeBuilder.build()) ; builder.addMethod(methodBuilder.build()); }
private MethodSpec staticFactoryMethod(ProductionBinding binding, MethodSpec constructor) { return MethodSpec.methodBuilder("create") .addModifiers(PUBLIC, STATIC) .returns(parameterizedGeneratedTypeNameForBinding(binding)) .addTypeVariables(bindingTypeElementTypeVariableNames(binding)) .addParameters(constructor.parameters) .addStatement( "return new $T($L)", parameterizedGeneratedTypeNameForBinding(binding), constructor.parameters.stream() .map(p -> CodeBlock.of("$N", p.name)) .collect(toParametersCodeBlock())) .build(); }
MethodSpec toMethodSpec() { MethodSpec.Builder builder = methodBuilder(name()) .addModifiers(PUBLIC, STATIC) .varargs(varargs()) .addTypeVariables(typeVariables()) .addParameters(parameters().keySet()) .addCode(methodBody()); returnType().map(TypeName::get).ifPresent(builder::returns); nullableAnnotation() .ifPresent(nullableType -> CodeBlocks.addAnnotation(builder, nullableType)); exceptions().stream().map(TypeName::get).forEach(builder::addException); return builder.build(); }
private MethodSpec createInitMethod(CustomViewElement customViewElement) { MethodSpec.Builder builder = MethodSpec.methodBuilder("init") .addTypeVariables(customViewElement.typeVariables) .addModifiers(Modifier.STATIC) .returns(TypeName.VOID) .addParameter(customViewElement.typeName, "target") .addParameter(ParameterSpec.builder(AttributeSet, "attributeSet").build()); addAttrGenBodyInit(builder, customViewElement); return builder.build(); }
private static MethodSpec.Builder getterBuilder(AlgebraicDataType adt, String arg, DataArgument field, TypeMirror type) { return MethodSpec.methodBuilder("get" + Utils.capitalize(field.fieldName())) .addModifiers(Modifier.PUBLIC, Modifier.STATIC) .addTypeVariables( adt.typeConstructor().typeVariables().stream().map(TypeVariableName::get).collect(Collectors.toList())) .addParameter(TypeName.get(adt.typeConstructor().declaredType()), arg) .returns(TypeName.get(type)); }
private MethodSpec fromBuilder(final Descriptor d) { return MethodSpec.methodBuilder("from") .addModifiers(PUBLIC, STATIC) .addTypeVariables(d.typeVariables()) .addParameter(upperBoundedBuilderType(d), "v") .returns(builderType(d)) .addStatement("return new $T(v)", builderType(d)) .build(); }
private MethodSpec fromValue(final Descriptor d) { return MethodSpec.methodBuilder("from") .addModifiers(PUBLIC, STATIC) .addTypeVariables(d.typeVariables()) .addParameter(upperBoundedValueType(d), "v") .returns(builderType(d)) .addStatement("return new $T(v)", builderType(d)) .build(); }
private MethodSpec fromBuilder(final Descriptor d) { return MethodSpec.methodBuilder("from") .addModifiers(PUBLIC, STATIC) .addTypeVariables(d.typeVariables()) .addParameter(upperBoundedBuilderType(d), "v") .returns(builderType(d)) .addStatement("return new $T(v)", builderType(d)) .build(); }
private MethodSpec fromValue(final Descriptor d) { return MethodSpec.methodBuilder("from") .addModifiers(PUBLIC, STATIC) .addTypeVariables(d.typeVariables()) .addParameter(upperBoundedValueType(d), "v") .returns(builderType(d)) .addStatement("return new $T(v)", builderType(d)) .build(); }
private MethodSpec createAttrGenMethod(CustomViewElement customViewElement, ExecutableElement method) { MethodSpec.Builder builder = MethodSpec.methodBuilder(method.getSimpleName().toString() + METHOD_PREFIX) .addTypeVariables(customViewElement.typeVariables) .addModifiers(Modifier.PRIVATE, Modifier.STATIC) .returns(TypeName.VOID) .addParameter(customViewElement.typeName, "target") .addParameter(ParameterSpec.builder(TypedArray, "typedArray").build()); addAttrGenBody(builder, method, customViewElement); return builder.build(); }
private static MethodSpec.Builder getterBuilder(AlgebraicDataType adt, String arg, DataArgument field, TypeMirror type) { return MethodSpec.methodBuilder("get" + Utils.capitalize(field.fieldName())) .addModifiers(Modifier.PUBLIC, Modifier.STATIC) .addTypeVariables( adt.typeConstructor().typeVariables().stream().map(TypeVariableName::get).collect(Collectors.toList())) .addParameter(TypeName.get(adt.typeConstructor().declaredType()), arg) .returns(TypeName.get(type)); }
builder.addTypeVariables(MethodParamModelUtils.getTypeVariables(methodParam)); codeBlockBuilder.add(methodParam.getName());
.addModifiers(Modifier.PROTECTED, Modifier.STATIC) .addParameter(specModel.getContextClass(), "c") .addTypeVariables(MethodParamModelUtils.getTypeVariables(stateValue)) .addParameter(stateValue.getTypeName(), LAZY_STATE_UPDATE_VALUE_PARAM, Modifier.FINAL);
factoryMethod.addTypeVariables(specModel.getTypeVariables());
MethodSpec.methodBuilder(eventMethodModel.name.toString()) .addModifiers(Modifier.PUBLIC, Modifier.STATIC) .addTypeVariables(eventMethodModel.typeVariables) .addParameter(paramClass, "c") .returns(
private MethodSpec.Builder baseMethod(@NonNull ClassName builderName) { final MethodSpec.Builder method = MethodSpec.methodBuilder(getName()) .addModifiers(modifiers) .addParameters(parameters) .addTypeVariables(typeVariables) .addAnnotations(getAnnotations()); if (javadoc != null) { method.addJavadoc(javadoc.replaceAll("(\n|^) ", "$1")); } if (getType().equals(TypeName.VOID)) { method.returns(builderName) .addAnnotation(Types.NON_NULL) .addJavadoc("@return this instance\n"); } else { method.returns(getType()); } return method; }
private static TypeSpecDataHolder generateFactoryMethods(final SpecModel specModel) { final TypeSpecDataHolder.Builder dataHolder = TypeSpecDataHolder.newBuilder(); final MethodSpec.Builder factoryMethod = MethodSpec.methodBuilder("matcher") .addModifiers(Modifier.PUBLIC, Modifier.STATIC) .returns(getMatcherType(specModel)) .addParameter(specModel.getContextClass(), "c") .addStatement("return new $T(c)", BUILDER_CLASS_NAME); if (!specModel.getTypeVariables().isEmpty()) { factoryMethod.addTypeVariables(specModel.getTypeVariables()); } return dataHolder.addMethod(factoryMethod.build()).build(); }