@Override List<ParameterInfo> parameterInfoList() { return constructorInfo.parameterInfoList(); }
@Override public boolean apply(ConstructorInfo input) { return !input.hasAccessInfo(accessInfo); } }
@Override public boolean isEqual(ConstructorInfo that) { return Testables.isEqualHelper() .equal(accessInfo(), that.accessInfo()) .equal(parameterInfoList(), that.parameterInfoList()) .result(); }
private CodeBlock returnStatement(ConstructorInfo input) { List<ParameterInfo> parameterInfoList = input.parameterInfoList(); ConstructorInfoCodeWriter writer = input.statementWriter() .add("return new $T(") .add("$L").forEachParameter(", ") .add(", ").when(parameterInfoList.size() > 0) .add("this)") .set(typeNameUnbounded(className())); for (ParameterInfo parameterInfo : parameterInfoList) { writer.set(constructorPrefix(index, parameterInfo.name())); } return writer.write(); }
public MethodSpec constructor(int index) { return constructorInfo.constructorWriter() .accessInfo(AccessInfo.PUBLIC) .addParameterList() .addParameterList(customFieldList.stream() .map(BuilderCustomField::builderConstructorParameter) .collect(Collectors.toList())) .addCode(constructorBody(index)) .addCode(customFieldList.stream() .map(BuilderCustomField::builderConstructorBody) .collect(Collectors.toList())) .addCode(constructorMarker(index)) .write(); }
@Override public MethodSpec apply(ConstructorInfo input) { CodeBlock statement = input.statementWriter() .add("super(") .add("$N").forEachParameter(", ") .add(")") .setParameterName() .write(); return input.constructorWriter() .accessInfo(AccessInfo.PUBLIC) .addParameterList() .addParameter(parameterTypeName(), "builder") .addCode(statement) .addCode(body) .write(); }
private List<CodeBlock> body(ConstructorInfo input) { return input.parameterInfoIterable() .transformAndConcat(new ParameterInfoToCodeBlock(index)) .toImmutableList(); }
private List<CodeBlock> constructorBody(int index) { return constructorInfo.parameterInfoStream() .map(param -> parameterInfoToCodeBlock(index, param)) .flatMap(l -> l.stream()) .collect(Collectors.toList()); }
static ConstructorInfoConstructorWriter get(ConstructorInfo constructorInfo) { AccessInfo accessInfo = constructorInfo.accessInfo(); return new ConstructorInfoConstructorWriter(constructorInfo, accessInfo); }
@Override public Boolean apply(ConstructorInfo input) { return input.hasParameterInfoListSize(size); }
@Override public ConstructorInfo build() { return ConstructorInfo.newPojo() .accessInfo(accessInfo) .parameterInfoList(parameterInfoList) .build(); }
@Override public MethodSpec apply(ConstructorInfo input) { MethodSpec res = input.constructorWriter() .accessInfo(AccessInfo.PUBLIC) .addParameterList() .addCode(body(input)) .addCode(marker(input)) .write(); index++; return res; }
@Override public Iterable<FieldSpec> apply(ConstructorInfo input) { Iterable<FieldSpec> res = input.parameterInfoIterable() .transform(new FromParameterInfo(index)) .addAll(marker()) .toLazyIterable(); index++; return res; }
public Stream<FieldSpec> fieldStream(int index) { Stream<FieldSpec> parameter = constructorInfo .parameterInfoStream() .map(input -> input.fieldWriter() .modifiers(Modifier.PRIVATE) .prefixNameWith(constructorPrefix(index)) .write()); return Stream.concat(parameter, marker(index)); }
@AutoFunctional public boolean hasAccessInfo(AccessInfo accessInfo) { return accessInfo().equals(accessInfo); }
@AutoFunctional public Boolean hasParameterInfoListSize(int size) { return parameterInfoList().size() == size; }
@Override public MustacheObject toMustache() { List<? extends ParameterInfo> parameterInfoList = parameterInfoList(); List<IndexedParameterInfo> parameters = WayIterables.from(parameterInfoList) .transform(ParameterInfoToIndexedParameterInfo.get(parameterInfoList.size())) .toImmutableList(); return Mustaches.toMustacheHelper() .add("access", accessInfo()) .add("parameters", parameters) .add("parametersIsEmpty", parameters.isEmpty()) .toMustache(); }
MethodSpec pojoOnly() { return constructorInfo.constructorWriter() .accessInfo(AccessInfo.PUBLIC) .addParameterList() .addParameterList(parameterList) .addParameterList(customParameterList) .addStandardSuperStatement() .addCode(body.build()) .write(); }
@Override public boolean apply(ConstructorInfo input) { return input.hasAccessInfo(accessInfo); }
public WayIterable<ParameterInfo> parameterInfoIterable() { return WayIterables.from(parameterInfoList()); }