in litho-processor/src/main/java/com/facebook/litho/specmodels/generator/testing/MatcherGenerator.java [136:248]
private static TypeSpecDataHolder generatePropsBuilderMethods(
SpecModel specModel, final PropModel prop) {
final TypeSpecDataHolder.Builder dataHolder = TypeSpecDataHolder.newBuilder();
if (isComponentType(prop)) {
dataHolder.addField(matcherComponentFieldBuilder(prop));
dataHolder.addMethod(matcherComponentFieldSetterBuilder(specModel, prop));
}
dataHolder.addField(matcherFieldBuilder(prop));
dataHolder.addMethod(matcherFieldSetterBuilder(specModel, prop));
if (prop.hasVarArgs()) {
dataHolder.addMethod(varArgBuilder(specModel, prop));
if (isComponentType(prop)) {
dataHolder.addMethod(varArgBuilderBuilder(specModel, prop));
}
// fall through to generate builder method for List<T>
}
switch (prop.getResType()) {
case STRING:
dataHolder.addMethod(regularBuilder(specModel, prop));
dataHolder.addMethod(resBuilder(specModel, prop, ClassNames.STRING_RES, "resolveString"));
dataHolder.addMethod(
resWithVarargsBuilder(
specModel,
prop,
ClassNames.STRING_RES,
"resolveString",
TypeName.OBJECT,
"formatArgs"));
dataHolder.addTypeSpecDataHolder(
attrBuilders(specModel, prop, ClassNames.STRING_RES, "resolveString"));
break;
case STRING_ARRAY:
dataHolder.addMethod(regularBuilder(specModel, prop));
dataHolder.addMethod(
resBuilder(specModel, prop, ClassNames.ARRAY_RES, "resolveStringArray"));
dataHolder.addTypeSpecDataHolder(
attrBuilders(specModel, prop, ClassNames.ARRAY_RES, "resolveStringArray"));
break;
case INT:
dataHolder.addMethod(regularBuilder(specModel, prop));
dataHolder.addMethod(resBuilder(specModel, prop, ClassNames.INT_RES, "resolveInt"));
dataHolder.addTypeSpecDataHolder(
attrBuilders(specModel, prop, ClassNames.INT_RES, "resolveInt"));
break;
case INT_ARRAY:
dataHolder.addMethod(regularBuilder(specModel, prop));
dataHolder.addMethod(resBuilder(specModel, prop, ClassNames.ARRAY_RES, "resolveIntArray"));
dataHolder.addTypeSpecDataHolder(
attrBuilders(specModel, prop, ClassNames.ARRAY_RES, "resolveIntArray"));
break;
case BOOL:
dataHolder.addMethod(regularBuilder(specModel, prop));
dataHolder.addMethod(resBuilder(specModel, prop, ClassNames.BOOL_RES, "resolveBool"));
dataHolder.addTypeSpecDataHolder(
attrBuilders(specModel, prop, ClassNames.BOOL_RES, "resolveBool"));
break;
case COLOR:
dataHolder.addMethod(regularBuilder(specModel, prop, annotation(ClassNames.COLOR_INT)));
dataHolder.addMethod(resBuilder(specModel, prop, ClassNames.COLOR_RES, "resolveColor"));
dataHolder.addTypeSpecDataHolder(
attrBuilders(specModel, prop, ClassNames.COLOR_RES, "resolveColor"));
break;
case DIMEN_SIZE:
dataHolder.addMethod(pxBuilder(specModel, prop));
dataHolder.addMethod(resBuilder(specModel, prop, ClassNames.DIMEN_RES, "resolveDimenSize"));
dataHolder.addTypeSpecDataHolder(
attrBuilders(specModel, prop, ClassNames.DIMEN_RES, "resolveDimenSize"));
dataHolder.addMethod(dipBuilder(specModel, prop));
break;
case DIMEN_TEXT:
dataHolder.addMethod(pxBuilder(specModel, prop));
dataHolder.addMethod(resBuilder(specModel, prop, ClassNames.DIMEN_RES, "resolveDimenSize"));
dataHolder.addTypeSpecDataHolder(
attrBuilders(specModel, prop, ClassNames.DIMEN_RES, "resolveDimenSize"));
dataHolder.addMethod(dipBuilder(specModel, prop));
dataHolder.addMethod(sipBuilder(specModel, prop));
break;
case DIMEN_OFFSET:
dataHolder.addMethod(pxBuilder(specModel, prop));
dataHolder.addMethod(
resBuilder(specModel, prop, ClassNames.DIMEN_RES, "resolveDimenOffset"));
dataHolder.addTypeSpecDataHolder(
attrBuilders(specModel, prop, ClassNames.DIMEN_RES, "resolveDimenOffset"));
dataHolder.addMethod(dipBuilder(specModel, prop));
break;
case FLOAT:
dataHolder.addMethod(regularBuilder(specModel, prop));
dataHolder.addMethod(resBuilder(specModel, prop, ClassNames.DIMEN_RES, "resolveFloat"));
dataHolder.addTypeSpecDataHolder(
attrBuilders(specModel, prop, ClassNames.DIMEN_RES, "resolveFloat"));
break;
case DRAWABLE:
dataHolder.addMethod(regularBuilder(specModel, prop));
dataHolder.addMethod(
resBuilder(specModel, prop, ClassNames.DRAWABLE_RES, "resolveDrawable"));
dataHolder.addTypeSpecDataHolder(
attrBuilders(specModel, prop, ClassNames.DRAWABLE_RES, "resolveDrawable"));
break;
case NONE:
dataHolder.addMethod(regularBuilder(specModel, prop));
break;
}
if (isComponentType(prop)) {
dataHolder.addMethod(builderBuilder(specModel, prop, ClassNames.COMPONENT_BUILDER));
}
return dataHolder.build();
}