Search in sources :

Example 51 with ParameterSpec

use of com.squareup.javapoet.ParameterSpec in project web3sdk by FISCO-BCOS.

the class SolidityFunctionWrapper method createMappedParameterTypes.

private String createMappedParameterTypes(AbiDefinition.NamedType namedType) {
    String name = namedType.getName();
    String type = namedType.getType();
    AbiDefinition.NamedType.Type innerType = new AbiDefinition.NamedType.Type(type);
    ParameterSpec parameterSpec = ParameterSpec.builder(buildTypeName(type), name).build();
    if (parameterSpec.type instanceof ParameterizedTypeName) {
        List<TypeName> typeNames = ((ParameterizedTypeName) parameterSpec.type).typeArguments;
        if (typeNames.size() != 1) {
            throw new UnsupportedOperationException("Only a single parameterized type is supported");
        } else {
            String parameterSpecType = parameterSpec.type.toString();
            TypeName typeName = typeNames.get(0);
            String typeMapInput = typeName + ".class";
            if (typeName instanceof ParameterizedTypeName) {
                List<TypeName> typeArguments = ((ParameterizedTypeName) typeName).typeArguments;
                if (typeArguments.size() != 1) {
                    throw new UnsupportedOperationException("Only a single parameterized type is supported");
                }
                TypeName innerTypeName = typeArguments.get(0);
                parameterSpecType = ((ParameterizedTypeName) parameterSpec.type).rawType.toString();
                typeMapInput = ((ParameterizedTypeName) typeName).rawType + ".class, " + innerTypeName + ".class";
            }
            if (innerType.dynamicArray()) {
                // dynamic array
                return parameterSpec.name + ".isEmpty()?org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty" + "(\"" + type + "\"):" + "new " + parameterSpecType + "(\n" + "        org.fisco.bcos.web3j.abi.Utils.typeMap(" + parameterSpec.name + ", " + typeMapInput + "))";
            } else {
                // static array
                return "new " + parameterSpecType + "(\n" + "        org.fisco.bcos.web3j.abi.Utils.typeMap(" + parameterSpec.name + ", " + typeMapInput + "))";
            }
        }
    } else {
        return "new " + parameterSpec.type + "(" + parameterSpec.name + ")";
    }
}
Also used : Type(org.fisco.bcos.web3j.abi.datatypes.Type) NamedType(org.fisco.bcos.web3j.protocol.core.methods.response.AbiDefinition.NamedType) EncryptType(org.fisco.bcos.web3j.crypto.EncryptType) TypeName(com.squareup.javapoet.TypeName) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName) AbiDefinition(org.fisco.bcos.web3j.protocol.core.methods.response.AbiDefinition) ParameterSpec(com.squareup.javapoet.ParameterSpec) NamedType(org.fisco.bcos.web3j.protocol.core.methods.response.AbiDefinition.NamedType) Utf8String(org.fisco.bcos.web3j.abi.datatypes.Utf8String) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName)

Example 52 with ParameterSpec

use of com.squareup.javapoet.ParameterSpec in project epoxy by airbnb.

the class ClassToGenerateInfo method buildParamList.

private List<ParameterSpec> buildParamList(List<? extends VariableElement> params) {
    List<ParameterSpec> result = new ArrayList<>();
    for (VariableElement param : params) {
        Builder builder = ParameterSpec.builder(TypeName.get(param.asType()), param.getSimpleName().toString());
        for (AnnotationMirror annotation : param.getAnnotationMirrors()) {
            builder.addAnnotation(AnnotationSpec.get(annotation));
        }
        result.add(builder.build());
    }
    return result;
}
Also used : AnnotationMirror(javax.lang.model.element.AnnotationMirror) ParameterSpec(com.squareup.javapoet.ParameterSpec) Builder(com.squareup.javapoet.ParameterSpec.Builder) ArrayList(java.util.ArrayList) VariableElement(javax.lang.model.element.VariableElement)

Example 53 with ParameterSpec

use of com.squareup.javapoet.ParameterSpec in project epoxy by airbnb.

the class EpoxyProcessor method generateParams.

private void generateParams(StringBuilder statementBuilder, List<ParameterSpec> params) {
    boolean first = true;
    for (ParameterSpec param : params) {
        if (!first) {
            statementBuilder.append(", ");
        }
        first = false;
        statementBuilder.append(param.name);
    }
    statementBuilder.append(")");
}
Also used : ParameterSpec(com.squareup.javapoet.ParameterSpec)

Example 54 with ParameterSpec

use of com.squareup.javapoet.ParameterSpec in project glide by bumptech.

the class RequestOptionsGenerator method generateMethodsForRequestOptionsExtensionDeprecated.

private List<MethodAndStaticVar> generateMethodsForRequestOptionsExtensionDeprecated(ExecutableElement element) {
    int overrideType = processorUtil.getOverrideType(element);
    String methodName = element.getSimpleName().toString();
    MethodSpec.Builder builder = MethodSpec.methodBuilder(methodName).addModifiers(Modifier.PUBLIC).addJavadoc(processorUtil.generateSeeMethodJavadoc(element)).varargs(element.isVarArgs()).returns(glideOptionsName);
    // The 0th element is expected to be a RequestOptions object.
    List<? extends VariableElement> paramElements = element.getParameters().subList(1, element.getParameters().size());
    List<ParameterSpec> parameters = ProcessorUtil.getParameters(paramElements);
    builder.addParameters(parameters);
    // Generates the String and list of arguments to pass in when calling this method or super.
    // IE centerCrop(context) creates methodLiterals="%L" and methodArgs=[centerCrop, context].
    List<Object> methodArgs = new ArrayList<>();
    methodArgs.add(element.getSimpleName().toString());
    StringBuilder methodLiterals = new StringBuilder();
    if (!parameters.isEmpty()) {
        for (ParameterSpec parameter : parameters) {
            methodLiterals.append("$L, ");
            methodArgs.add(parameter.name);
        }
        methodLiterals = new StringBuilder(methodLiterals.substring(0, methodLiterals.length() - 2));
    }
    builder.beginControlFlow("if (isAutoCloneEnabled())").addStatement("return clone().$N(" + methodLiterals + ")", methodArgs.toArray(new Object[0])).endControlFlow();
    // Add the correct super() call.
    if (overrideType == OVERRIDE_EXTEND) {
        String callSuper = "super.$L(" + methodLiterals + ")";
        builder.addStatement(callSuper, methodArgs.toArray(new Object[0])).addJavadoc(processorUtil.generateSeeMethodJavadoc(requestOptionsName, methodName, paramElements)).addAnnotation(Override.class);
    }
    // Adds: <AnnotatedClass>.<thisMethodName>(RequestOptions<?>, <arg1>, <arg2>, <argN>);
    List<Object> args = new ArrayList<>();
    StringBuilder code = new StringBuilder("$T.$L($L, ");
    args.add(ClassName.get(element.getEnclosingElement().asType()));
    args.add(element.getSimpleName().toString());
    args.add("this");
    if (!parameters.isEmpty()) {
        for (ParameterSpec parameter : parameters) {
            code.append("$L, ");
            args.add(parameter.name);
        }
    }
    code = new StringBuilder(code.substring(0, code.length() - 2));
    code.append(")");
    builder.addStatement(code.toString(), args.toArray(new Object[0]));
    builder.addStatement("return this").addAnnotation(AnnotationSpec.builder(CHECK_RESULT_CLASS_NAME).build()).addAnnotation(nonNull());
    List<MethodAndStaticVar> result = new ArrayList<>();
    result.add(new MethodAndStaticVar(builder.build()));
    MethodAndStaticVar methodAndVar = generateStaticMethodEquivalentForExtensionMethod(element);
    if (methodAndVar != null) {
        result.add(methodAndVar);
    }
    return result;
}
Also used : MethodSpec(com.squareup.javapoet.MethodSpec) ParameterSpec(com.squareup.javapoet.ParameterSpec) ArrayList(java.util.ArrayList)

Example 55 with ParameterSpec

use of com.squareup.javapoet.ParameterSpec in project glide by bumptech.

the class RequestOptionsGenerator method generateRequestOptionOverride.

private MethodSpec generateRequestOptionOverride(ExecutableElement methodToOverride) {
    MethodSpec.Builder result = ProcessorUtil.overriding(methodToOverride).returns(glideOptionsName).addModifiers(Modifier.FINAL);
    result.addCode(CodeBlock.builder().add("return ($T) super.$N(", glideOptionsName, methodToOverride.getSimpleName()).add(FluentIterable.from(result.build().parameters).transform(new Function<ParameterSpec, String>() {

        @Override
        public String apply(ParameterSpec input) {
            return input.name;
        }
    }).join(Joiner.on(", "))).add(");\n").build());
    if (methodToOverride.getSimpleName().toString().equals("transforms")) {
        result.addAnnotation(SafeVarargs.class).addAnnotation(AnnotationSpec.builder(SuppressWarnings.class).addMember("value", "$S", "varargs").build());
    }
    for (AnnotationMirror mirror : methodToOverride.getAnnotationMirrors()) {
        result.addAnnotation(AnnotationSpec.get(mirror));
    }
    return result.build();
}
Also used : Function(com.google.common.base.Function) AnnotationMirror(javax.lang.model.element.AnnotationMirror) MethodSpec(com.squareup.javapoet.MethodSpec) ParameterSpec(com.squareup.javapoet.ParameterSpec)

Aggregations

ParameterSpec (com.squareup.javapoet.ParameterSpec)97 MethodSpec (com.squareup.javapoet.MethodSpec)59 ParameterizedTypeName (com.squareup.javapoet.ParameterizedTypeName)40 ArrayList (java.util.ArrayList)34 TypeName (com.squareup.javapoet.TypeName)30 ClassName (com.squareup.javapoet.ClassName)27 TypeSpec (com.squareup.javapoet.TypeSpec)26 Map (java.util.Map)26 CodeBlock (com.squareup.javapoet.CodeBlock)23 FieldSpec (com.squareup.javapoet.FieldSpec)22 List (java.util.List)20 HashMap (java.util.HashMap)18 AnnotationSpec (com.squareup.javapoet.AnnotationSpec)17 JavaFile (com.squareup.javapoet.JavaFile)13 Modifier (javax.lang.model.element.Modifier)13 TypeElement (javax.lang.model.element.TypeElement)13 Collectors (java.util.stream.Collectors)12 IOException (java.io.IOException)11 Element (javax.lang.model.element.Element)11 TypeMirror (javax.lang.model.type.TypeMirror)11