Refine search
@NonNull MethodSpec build() { if (anyNonDefault.size() > 0) { methodBuilder.beginControlFlow("if ($L)", anyNonDefault.entrySet().stream().map(field -> CodeBlock.builder().add(field.getKey()).add(" == ").add(field.getValue()).build()) .reduce((c1, c2) -> CodeBlock.builder().add(c1).add(" && ").add(c2).build()).orElseGet(() -> CodeBlock.of("true"))) .addStatement("throw new $T(\"One of $L must not be default\")", ACRAConfigurationException.class, anyNonDefault.keySet().stream().collect(Collectors.joining(", "))) .endControlFlow(); } methodBuilder.endControlFlow(); for (CodeBlock s : statements) { methodBuilder.addCode(s); } methodBuilder.addStatement("return new $T(this)", config); return methodBuilder.build(); }
private CodeBlock javadocWithParameters() { CodeBlock.Builder builder = javadoc.toBuilder(); boolean emitTagNewline = true; for (ParameterSpec parameterSpec : parameters) { if (!parameterSpec.javadoc.isEmpty()) { // Emit a new line before @param section only if the method javadoc is present. if (emitTagNewline && !javadoc.isEmpty()) builder.add("\n"); emitTagNewline = false; builder.add("@param $L $L", parameterSpec.name, parameterSpec.javadoc); } } return builder.build(); }
@NonNull @Override public CodeBlock visitArray(@NonNull List<? extends AnnotationValue> values, Void v) { ArrayTypeName arrayTypeName = (ArrayTypeName) type; if (arrayTypeName.componentType instanceof ParameterizedTypeName) { arrayTypeName = ArrayTypeName.of(((ParameterizedTypeName) arrayTypeName.componentType).rawType); } return CodeBlock.of("new $T{$L}", arrayTypeName, values.stream().map(value -> value.accept(this, null)) .reduce((c1, c2) -> CodeBlock.builder().add(c1).add(", ").add(c2).build()).orElseGet(() -> CodeBlock.builder().build())); } }
private CodeBlock includesInitializer(TypeElement type, Object[] includes) { CodeBlock.Builder result = CodeBlock.builder(); result.add("{ "); for (Object include : includes) { if (!(include instanceof TypeMirror)) { // TODO(tbroyer): pass annotation information processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING, "Unexpected value: " + include + " in includes of " + type, type); continue; } TypeMirror typeMirror = (TypeMirror) include; result.add("$T.class, ", typeMirror); } result.add("}"); return result.build(); }
ClassName apiUtil = ClassName.get("com.base.util", "ApiUtil"); ClassName C = ClassName.get("com", "C"); CodeBlock.Builder blockBuilder = CodeBlock.builder(); int len = executableElement.getParameters().size(); for (int i = 0; i < len; i++) { switch (ep.getSimpleName().toString()) { case "include": blockBuilder.add("$L.getInclude(param)" + split, apiUtil); break; case "where": blockBuilder.add("$L.getWhere(param)" + split, apiUtil); break; case "skip": blockBuilder.add("$L.getSkip(param)" + split, apiUtil); break; case "limit": blockBuilder.add("$L.PAGE_COUNT" + split, C); break; case "order": blockBuilder.add("$L._CREATED_AT" + split, C); break; , ClassName.get("com.api", "Api") , e.getSimpleName().toString() , blockBuilder.build().toString() , ClassName.get("com.base.util.helper", "RxSchedulers")); tb.addMethod(methodBuilder.build());
private void generateDeepLinkDelegate(String packageName, List<TypeElement> loaderClasses) throws IOException { CodeBlock.Builder loadersInitializer = CodeBlock.builder() .add("super($T.asList(\n", ClassName.get(Arrays.class)) .indent(); int totalElements = loaderClasses.size(); for (int i = 0; i < totalElements; i++) { loadersInitializer.add("$L$L", decapitalize(moduleNameToLoaderName(loaderClasses.get(i))), i < totalElements - 1 ? ",\n" : "\n"); .addCode(loadersInitializer.unindent().add("));\n").build()) .build();
CodeBlock.builder().add("\n($T) $L", ClassNames.EVENT_TRIGGER_TARGET, "component"); eventTriggerParams.add(",\n$L", methodParamModel.getName()); continue; eventTriggerParams.add(",\n$L", methodParamModel.getName()); if (eventDeclaration.returnType == null || eventDeclaration.returnType.equals(TypeName.VOID)) { triggerMethod.addStatement( "component.$L($L)", eventMethodModel.name, eventTriggerParams.build()); } else { triggerMethod .addStatement( "return component.$L($L)", eventMethodModel.name, eventTriggerParams.build()) .returns(eventDeclaration.returnType);
private static MethodSpec generateRecordRenderDataMethod(SpecModel specModel) { final TypeName renderInfoTypeName = ClassName.bestGuess(getRenderDataImplClassName(specModel)); final CodeBlock code = CodeBlock.builder() .add("$T $L = $L != null ?\n", renderInfoTypeName, "renderInfo", "toRecycle") .indent() .add("($T) $L :\n", renderInfoTypeName, "toRecycle") .add("new $T();\n", renderInfoTypeName) .unindent() .addStatement("$L.record(this)", "renderInfo") .addStatement("return $L", "renderInfo") .build(); return MethodSpec.methodBuilder("recordRenderData") .addAnnotation(Override.class) .addModifiers(Modifier.PROTECTED) .addParameter(ClassNames.RENDER_DATA, "toRecycle") .returns(ClassNames.RENDER_DATA) .addCode(code) .build(); }
ClassNames.EVENT_HANDLER, eventMethodModel.typeModel.name)); final CodeBlock.Builder paramsBlock = CodeBlock.builder(); paramsBlock.add("new Object[] {\n"); paramsBlock.indent(); paramsBlock.add("c,\n"); paramsBlock.add("$L,\n", methodParamModel.getName()); paramsBlock.add("}"); paramsBlock.build());
FieldSpec mapField = FieldSpec.builder(typeName, "mMap", Modifier.PRIVATE).build(); CodeBlock.Builder rootCode = CodeBlock.builder().addStatement("this.mMap = new $T<>()", HashMap.class); for (Map.Entry<String, List<TypeElement>> entry : interceptorMap.entrySet()) { String group = entry.getKey(); List<TypeElement> interceptorList = entry.getValue(); CodeBlock.Builder groupCode = CodeBlock.builder() .addStatement("List<$T> $LList = new $T<>()", mInterceptor, group, ArrayList.class); for (TypeElement type : interceptorList) { rootCode.add(groupCode.build()); rootCode.addStatement("this.mMap.put($S, $LList)", group, group); .addCode(rootCode.build()) .build();
FieldSpec mapField = FieldSpec.builder(typeName, "mMap", Modifier.PRIVATE).build(); CodeBlock.Builder rootCode = CodeBlock.builder().addStatement("this.mMap = new $T<>()", HashMap.class); for (Map.Entry<String, List<TypeElement>> entry : websiteMap.entrySet()) { String group = entry.getKey(); List<TypeElement> interceptorList = entry.getValue(); CodeBlock.Builder groupCode = CodeBlock.builder() .addStatement("List<$T> $LList = new $T<>()", mWebsite, group, ArrayList.class); for (TypeElement type : interceptorList) { rootCode.add(groupCode.build()); rootCode.addStatement("this.mMap.put($S, $LList)", group, group); .addCode(rootCode.build()) .build();
CodeBlock.Builder tupleConstructor = CodeBlock.builder(); tupleConstructor.addStatement( "$T results = executeCallMultipleValueReturn(function)", ParameterizedTypeName.get(List.class, Type.class)) .add("return new $T(", tupleType) .add("$>$>"); .add(resultString, convertTo, i); tupleConstructor.add(i < size - 1 ? ", " : ");\n"); tupleConstructor.add("$<$<"); .addException(Exception.class) .returns(tupleType) .addCode(tupleConstructor.build()) .build()) .build();
FieldSpec mapField = FieldSpec.builder(typeName, "mMap", Modifier.PRIVATE).build(); CodeBlock.Builder rootCode = CodeBlock.builder().addStatement("this.mMap = new $T<>()", HashMap.class); for (Map.Entry<String, List<String>> entry : adapterMap.entrySet()) { String group = entry.getKey(); List<String> adapterList = entry.getValue(); CodeBlock.Builder groupCode = CodeBlock.builder() .addStatement("List<$T> $LList = new $T<>()", mAdapter, group, ArrayList.class); for (String adapterName : adapterList) { rootCode.add(groupCode.build()); rootCode.addStatement("this.mMap.put($S, $LList)", group, group); .addCode(rootCode.build()) .build();
.addStatement("super($L, $T.emptyMap())", funcReferenceName, ClassName.get(Collections.class)); final CodeBlock.Builder parameterValues = CodeBlock.builder(); functionDescriptor.params().forEach(pd -> { directFunctionArgs.addMethod(MethodSpec.methodBuilder("setAndTransform$" + pd.name()) pd.name()); parameterValues.add(CodeBlock.builder() .beginControlFlow("case $S:", pd.name()) .addStatement("return transformed$$$L", pd.name()) .endControlFlow().build()); }); .addModifiers(Modifier.PUBLIC) .addAnnotation(Override.class) .addCode(CodeBlock.builder() .beginControlFlow("switch (name)") .add(parameterValues.build()) .endControlFlow() .addStatement("return null") .build()) .build());
private static MethodSpec generateCommonStaticTriggerMethodCode( ClassName contextClassName, SpecMethodModel<EventMethod, EventDeclarationModel> eventMethodModel, MethodSpec.Builder eventTriggerMethod) { EventDeclarationModel eventDeclaration = eventMethodModel.typeModel; eventTriggerMethod.addStatement( "$T _eventState = new $T()", eventDeclaration.name, // need to make these into types eventDeclaration.name); final CodeBlock.Builder paramsBlock = CodeBlock.builder(); paramsBlock.add("new Object[] {\n"); paramsBlock.indent(); addParametersToStaticTriggerMethods(contextClassName, eventMethodModel, eventTriggerMethod); addTriggerParams(contextClassName, eventMethodModel, eventTriggerMethod, paramsBlock); paramsBlock.unindent(); paramsBlock.add("}"); if (eventDeclaration.returnType == null || eventDeclaration.returnType.equals(TypeName.VOID)) { eventTriggerMethod.addStatement( "trigger.dispatchOnTrigger(_eventState, $L)", paramsBlock.build()); } else { eventTriggerMethod .addStatement( "return ($L) trigger.dispatchOnTrigger(_eventState, $L)", eventDeclaration.returnType, paramsBlock.build()) .returns(eventDeclaration.returnType); } return eventTriggerMethod.build(); }
final CodeBlock.Builder superCodeBlock = CodeBlock.builder().add("super.$L(", name); boolean isFirstParam = true; for (ParameterSpec param : parameters) { if (!isFirstParam) { superCodeBlock.add(", "); superCodeBlock.add("$L", param.name); isFirstParam = false; builder.addCode(superCodeBlock.add(");\n").build());
/** Generate a delegate to the Spec that defines this onTrigger method. */ private static MethodSpec generateWorkingRangeMethodDelegate( SpecModel specModel, SpecMethodModel<EventMethod, WorkingRangeDeclarationModel> methodModel) { final MethodSpec.Builder methodSpec = MethodSpec.methodBuilder(methodModel.name.toString()) .addModifiers(Modifier.PRIVATE) .returns(TypeName.VOID) .addParameter(ClassNames.COMPONENT_CONTEXT, "c"); final CodeBlock.Builder delegation = CodeBlock.builder(); final String sourceDelegateAccessor = SpecModelUtils.getSpecAccessor(specModel); delegation.add("$L.$L(\n", sourceDelegateAccessor, methodModel.name); delegation.indent(); for (int i = 0, size = methodModel.methodParams.size(); i < size; i++) { final MethodParamModel methodParamModel = methodModel.methodParams.get(i); delegation.add( "($T) $L", methodParamModel.getTypeName(), getImplAccessor(specModel, methodParamModel)); delegation.add((i < methodModel.methodParams.size() - 1) ? ",\n" : ");\n"); } delegation.unindent(); methodSpec.addCode(delegation.build()); return methodSpec.build(); }