mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-13 04:15:06 +00:00
Added setterPrefix to javac
This commit is contained in:
1 parent
288ee7be5c
commit
e1bd41fab9
2 files changed
+28
-7
No files matched your search
@@ -180,7 +180,7 @@ public class HandleBuilder extends JavacAnnotationHandler<Builder> {
|
||||
bfd.builderFieldName = bfd.name;
|
||||
bfd.annotations = findCopyableAnnotations(fieldNode);
|
||||
bfd.type = fd.vartype;
|
||||
bfd.singularData = getSingularData(fieldNode);
|
||||
bfd.singularData = getSingularData(fieldNode, builderInstance.setterPrefix());
|
||||
bfd.originalFieldNode = fieldNode;
|
||||
|
||||
if (bfd.singularData != null && isDefault != null) {
|
||||
@@ -369,7 +369,7 @@ public class HandleBuilder extends JavacAnnotationHandler<Builder> {
|
||||
bfd.rawName = raw.name;
|
||||
bfd.annotations = findCopyableAnnotations(param);
|
||||
bfd.type = raw.vartype;
|
||||
bfd.singularData = getSingularData(param);
|
||||
bfd.singularData = getSingularData(param, builderInstance.setterPrefix());
|
||||
bfd.originalFieldNode = param;
|
||||
addObtainVia(bfd, param);
|
||||
builderFields.add(bfd);
|
||||
@@ -876,8 +876,9 @@ public class HandleBuilder extends JavacAnnotationHandler<Builder> {
|
||||
* or parameter), or null if there's no {@code @Singular} annotation on it.
|
||||
*
|
||||
* @param node The node (field or method param) to inspect for its name and potential {@code @Singular} annotation.
|
||||
* @param setterPrefix
|
||||
*/
|
||||
private SingularData getSingularData(JavacNode node) {
|
||||
private SingularData getSingularData(JavacNode node, final String setterPrefix) {
|
||||
for (JavacNode child : node.down()) {
|
||||
if (!annotationTypeMatches(Singular.class, child)) continue;
|
||||
Name pluralName = node.getKind() == Kind.FIELD ? removePrefixFromField(node) : ((JCVariableDecl) node.get()).name;
|
||||
@@ -919,7 +920,7 @@ public class HandleBuilder extends JavacAnnotationHandler<Builder> {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new SingularData(child, singularName, pluralName, typeArgs, targetFqn, singularizer);
|
||||
return new SingularData(child, singularName, pluralName, typeArgs, targetFqn, singularizer, setterPrefix);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -117,6 +117,7 @@ public class JavacSingularsRecipes {
|
||||
private final List<JCExpression> typeArgs;
|
||||
private final String targetFqn;
|
||||
private final JavacSingularizer singularizer;
|
||||
private final String setterPrefix;
|
||||
|
||||
public SingularData(JavacNode annotation, Name singularName, Name pluralName, List<JCExpression> typeArgs, String targetFqn, JavacSingularizer singularizer) {
|
||||
this.annotation = annotation;
|
||||
@@ -125,6 +126,17 @@ public class JavacSingularsRecipes {
|
||||
this.typeArgs = typeArgs;
|
||||
this.targetFqn = targetFqn;
|
||||
this.singularizer = singularizer;
|
||||
this.setterPrefix = null;
|
||||
}
|
||||
|
||||
public SingularData(JavacNode annotation, Name singularName, Name pluralName, List<JCExpression> typeArgs, String targetFqn, JavacSingularizer singularizer, String setterPrefix) {
|
||||
this.annotation = annotation;
|
||||
this.singularName = singularName;
|
||||
this.pluralName = pluralName;
|
||||
this.typeArgs = typeArgs;
|
||||
this.targetFqn = targetFqn;
|
||||
this.singularizer = singularizer;
|
||||
this.setterPrefix = setterPrefix;
|
||||
}
|
||||
|
||||
public JavacNode getAnnotation() {
|
||||
@@ -138,6 +150,8 @@ public class JavacSingularsRecipes {
|
||||
public Name getPluralName() {
|
||||
return pluralName;
|
||||
}
|
||||
|
||||
public String getSetterPrefix() { return setterPrefix; }
|
||||
|
||||
public List<JCExpression> getTypeArgs() {
|
||||
return typeArgs;
|
||||
@@ -279,8 +293,12 @@ public class JavacSingularsRecipes {
|
||||
ListBuffer<JCStatement> statements = generateSingularMethodStatements(maker, data, builderType, source);
|
||||
List<JCVariableDecl> params = generateSingularMethodParameters(maker, data, builderType, source);
|
||||
Name name = data.getSingularName();
|
||||
if (!fluent) name = builderType.toName(HandlerUtil.buildAccessorName(getAddMethodName(), name.toString()));
|
||||
|
||||
Name prefixedSingularName = data.getSetterPrefix().length() == 0 ? name :
|
||||
builderType.toName(HandlerUtil.buildAccessorName(data.getSetterPrefix(), name.toString()));
|
||||
|
||||
name = fluent ? prefixedSingularName : builderType.toName(HandlerUtil.buildAccessorName(getAddMethodName(),
|
||||
name.toString()));
|
||||
|
||||
statements.prepend(createConstructBuilderVarIfNeeded(maker, data, builderType, source));
|
||||
finishAndInjectMethod(cfv, maker, returnType, returnStatement, data, builderType, source, deprecate, statements, name, params, access);
|
||||
}
|
||||
@@ -307,7 +325,9 @@ public class JavacSingularsRecipes {
|
||||
private void generatePluralMethod(CheckerFrameworkVersion cfv, boolean deprecate, JavacTreeMaker maker, JCExpression returnType, JCStatement returnStatement, SingularData data, JavacNode builderType, JCTree source, boolean fluent, AccessLevel access) {
|
||||
ListBuffer<JCStatement> statements = generatePluralMethodStatements(maker, data, builderType, source);
|
||||
Name name = data.getPluralName();
|
||||
if (!fluent) name = builderType.toName(HandlerUtil.buildAccessorName(getAddMethodName() + "All", name.toString()));
|
||||
Name prefixedSingularName = builderType.toName(data.getSetterPrefix());
|
||||
name = fluent ? prefixedSingularName : builderType.toName(HandlerUtil.buildAccessorName(
|
||||
getAddMethodName() + "All", name.toString()));
|
||||
JCExpression paramType = getPluralMethodParamType(builderType);
|
||||
paramType = addTypeArgs(getTypeArgumentsCount(), true, builderType, paramType, data.getTypeArgs(), source);
|
||||
long paramFlags = JavacHandlerUtil.addFinalIfNeeded(Flags.PARAMETER, builderType.getContext());
|
||||
|
||||
Reference in new issue
Block a user