Refine search
@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())); } }
@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 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(); }
private static CodeBlock buildVariableLengthEventInitializer( String eventName, List<NamedTypeName> parameterTypes) { List<Object> objects = new ArrayList<>(); objects.add(Event.class); objects.add(eventName); objects.add(Arrays.class); objects.add(TypeReference.class); for (NamedTypeName parameterType : parameterTypes) { objects.add(TypeReference.class); objects.add(parameterType.getTypeName()); } String asListParams = parameterTypes.stream() .map(type -> { if (type.isIndexed()) { return "new $T<$T>(true) {}"; } else { return "new $T<$T>() {}"; } }) .collect(Collectors.joining(", ")); return CodeBlock.builder() .addStatement("new $T($S, \n" + "$T.<$T<?>>asList(" + asListParams + "))", objects.toArray()) .build(); }
classBuilder.addSuperinterface(ClassName.get(PACKAGE, builderVisibleName)); final CodeBlock.Builder always = CodeBlock.builder(); final CodeBlock.Builder whenAnnotationPresent = CodeBlock.builder(); final CodeBlock.Builder whenAnnotationMissing = CodeBlock.builder(); ClassName builder = ClassName.get(PACKAGE, builderName); elements.stream().filter(BuilderElement.class::isInstance).map(BuilderElement.class::cast).forEach(m -> m.addToBuilder(classBuilder, builder, always, whenAnnotationPresent, whenAnnotationMissing)); constructor.addCode(always.build()) .beginControlFlow("if ($L)", Strings.FIELD_ENABLED) .addCode(whenAnnotationPresent.build()) .nextControlFlow("else") .addCode(whenAnnotationMissing.build()) .endControlFlow(); classBuilder.addMethod(constructor.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();
private static MethodSpec varArgBuilderBuilder(SpecModel specModel, final PropModel prop) { final String varArgName = prop.getVarArgsSingleName(); final ParameterizedTypeName varArgType = (ParameterizedTypeName) prop.getTypeName(); final TypeName internalType = varArgType.typeArguments.get(0); final CodeBlock codeBlock = CodeBlock.builder() .addStatement("$L($L.build())", varArgName, varArgName + "Builder") .build(); final TypeName builderParameterType = ParameterizedTypeName.get( ClassNames.COMPONENT_BUILDER, getBuilderGenericTypes(internalType, ClassNames.COMPONENT_BUILDER)); return getMethodSpecBuilder( specModel, Collections.singletonList( parameter(prop, builderParameterType, varArgName + "Builder")), codeBlock, varArgName) .build(); }
/** * A {@link Collector} implementation that joins {@link CodeBlock} instances together into one * separated by {@code separator}. For example, joining {@code String s}, {@code Object o} and * {@code int i} using {@code ", "} would produce {@code String s, Object o, int i}. */ public static Collector<CodeBlock, ?, CodeBlock> joining( String separator, String prefix, String suffix) { Builder builder = builder().add("$N", prefix); return Collector.of( () -> new CodeBlockJoiner(separator, builder), CodeBlockJoiner::add, CodeBlockJoiner::merge, joiner -> { builder.add(CodeBlock.of("$N", suffix)); return joiner.join(); }); }
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, TypeElement> entry : converterMap.entrySet()) { String group = entry.getKey(); .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, TypeElement> entry : resolverMap.entrySet()) { String group = entry.getKey(); .addCode(rootCode.build()) .build();
classBuilder.addField(addressesStaticField); final CodeBlock.Builder staticInit = CodeBlock.builder(); staticInit.addStatement("_addresses = new HashMap<String, String>()"); addresses.forEach((k, v) -> k, v)) ); classBuilder.addStaticBlock(staticInit.build()); .addCode( CodeBlock .builder() .addStatement("return _addresses.get(networkId)") .build()) .build(); classBuilder.addMethod(getAddress); .addCode( CodeBlock .builder() .addStatement("return _addresses.get(networkId)") .build()) .build(); classBuilder.addMethod(getPreviousAddress);
private static CodeBlock generateInjectedFieldExtractorBlock( FieldExtractorSpec fieldExtractorSpec) { final DependencyInjectionHelper diHelper = fieldExtractorSpec.specModel.getDependencyInjectionHelper(); if (diHelper == null) { return CodeBlock.builder().build(); } final String getterName = diHelper.generateTestingFieldAccessor( new InjectPropModel(fieldExtractorSpec.propModel, fieldExtractorSpec.isLazy)) .name; return CodeBlock.builder() .addStatement( "final $T $L = impl.$L()", fieldExtractorSpec.propModel.getTypeName(), fieldExtractorSpec.varName, getterName) .build(); }
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(); }
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);