.addCode(loadersInitializer.unindent().add("));\n").build()) .build();
paramsBlock.unindent(); paramsBlock.add("}");
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(); }
methodParamModel.getName()) .add("$L);\n", getImplAccessor(specModel, methodParamModel)) .unindent() .build(); acquireStatements.add(block);
.builder(ParameterizedTypeName.get(List.class, DeepLinkEntry.class), "REGISTRY", Modifier.PUBLIC, Modifier.FINAL, Modifier.STATIC) .initializer(initializer.unindent().add("))").build()) .build();
(i < registerRangesModel.methodParams.size() - 1) ? ",\n" : ");\n"); registerDelegation.unindent(); methodSpec.addCode(registerDelegation.build());
delegation.unindent();
delegation.unindent();
eventTriggerParams.unindent();
eventHandlerParams.unindent();
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(); }
private static CodeBlock getDelegationMethod( SpecModel specModel, CharSequence methodName, TypeName returnType, ImmutableList<ParamTypeAndName> methodParams) { final CodeBlock.Builder delegation = CodeBlock.builder(); final String sourceDelegateAccessor = SpecModelUtils.getSpecAccessor(specModel); if (returnType.equals(TypeName.VOID)) { delegation.add("$L.$L(\n", sourceDelegateAccessor, methodName); } else { delegation.add("_result = ($T) $L.$L(\n", returnType, sourceDelegateAccessor, methodName); } delegation.indent(); for (int i = 0; i < methodParams.size(); i++) { delegation.add("($T) $L", methodParams.get(i).type, methodParams.get(i).name); if (i < methodParams.size() - 1) { delegation.add(",\n"); } } delegation.add(");\n"); delegation.unindent(); return delegation.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(); }
/** * @param controlFlow the optional control flow construct and its code, such as * "while(foo == 20)". Only used for "do/while" control flows. */ public Builder endControlFlow(String controlFlow, Object... args) { unindent(); add("} " + controlFlow + ";\n", args); return this; }
public Builder addInitializerBlock(CodeBlock block) { if ((kind != Kind.CLASS && kind != Kind.ENUM)) { throw new UnsupportedOperationException(kind + " can't have initializer blocks"); } initializerBlock.add("{\n") .indent() .add(block) .unindent() .add("}\n"); return this; }
public Builder endControlFlow() { unindent(); add("}\n"); return this; }
/** * @param controlFlow the control flow construct and its code, such as "else if (foo == 10)". * Shouldn't contain braces or newline characters. */ public Builder nextControlFlow(String controlFlow, Object... args) { unindent(); add("} " + controlFlow + " {\n", args); indent(); return this; }