mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-14 06:17:44 +00:00
Pull generatePluralMethod implementation up to JavacSingularizer
This commit is contained in:
1 parent
af3226ffaa
commit
b227bcb487
4 files changed
+31
-43
No files matched your search
@@ -294,7 +294,25 @@ public class JavacSingularsRecipes {
|
||||
|
||||
protected abstract List<JCVariableDecl> generateSingularMethodParameters(JavacTreeMaker maker, SingularData data, JavacNode builderType, JCTree source);
|
||||
|
||||
protected abstract void generatePluralMethod(boolean deprecate, JavacTreeMaker maker, JCExpression returnType, JCStatement returnStatement, SingularData data, JavacNode builderType, JCTree source, boolean fluent);
|
||||
protected void generatePluralMethod(boolean deprecate, JavacTreeMaker maker, JCExpression returnType, JCStatement returnStatement, SingularData data, JavacNode builderType, JCTree source, boolean fluent) {
|
||||
ListBuffer<JCStatement> statements = new ListBuffer<JCStatement>();
|
||||
statements.append(createConstructBuilderVarIfNeeded(maker, data, builderType, source));
|
||||
JCExpression thisDotFieldDotAdd = chainDots(builderType, "this", data.getPluralName().toString(), getAddMethodName() + "All");
|
||||
JCExpression invokeAdd = maker.Apply(List.<JCExpression>nil(), thisDotFieldDotAdd, List.<JCExpression>of(maker.Ident(data.getPluralName())));
|
||||
statements.append(maker.Exec(invokeAdd));
|
||||
|
||||
if (returnStatement != null) statements.append(returnStatement);
|
||||
JCBlock body = maker.Block(0, statements.toList());
|
||||
Name name = data.getPluralName();
|
||||
if (!fluent) name = 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());
|
||||
JCVariableDecl param = maker.VarDef(maker.Modifiers(paramFlags), data.getPluralName(), paramType, null);
|
||||
finishAndInjectMethod(maker, returnType, builderType, source, deprecate, body, name, List.of(param));
|
||||
}
|
||||
|
||||
protected abstract JCExpression getPluralMethodParamType(JavacNode builderType);
|
||||
|
||||
protected abstract JCStatement createConstructBuilderVarIfNeeded(JavacTreeMaker maker, SingularData data, JavacNode builderType, JCTree source);
|
||||
|
||||
@@ -411,5 +429,7 @@ public class JavacSingularsRecipes {
|
||||
}
|
||||
|
||||
protected abstract String getAddMethodName();
|
||||
|
||||
protected abstract int getTypeArgumentsCount();
|
||||
}
|
||||
}
|
||||
@@ -119,25 +119,7 @@ abstract class JavacGuavaSingularizer extends JavacSingularizer {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void generatePluralMethod(boolean deprecate, JavacTreeMaker maker, JCExpression returnType, JCStatement returnStatement, SingularData data, JavacNode builderType, JCTree source, boolean fluent) {
|
||||
ListBuffer<JCStatement> statements = new ListBuffer<JCStatement>();
|
||||
statements.append(createConstructBuilderVarIfNeeded(maker, data, builderType, source));
|
||||
JCExpression thisDotFieldDotAddAll = chainDots(builderType, "this", data.getPluralName().toString(), getAddMethodName() + "All");
|
||||
JCExpression invokeAddAll = maker.Apply(List.<JCExpression>nil(), thisDotFieldDotAddAll, List.<JCExpression>of(maker.Ident(data.getPluralName())));
|
||||
statements.append(maker.Exec(invokeAddAll));
|
||||
|
||||
if (returnStatement != null) statements.append(returnStatement);
|
||||
JCBlock body = maker.Block(0, statements.toList());
|
||||
Name methodName = data.getPluralName();
|
||||
if (!fluent) methodName = builderType.toName(HandlerUtil.buildAccessorName(getAddMethodName() + "All", methodName.toString()));
|
||||
JCExpression paramType = getPluralMethodParamType(builderType);
|
||||
paramType = addTypeArgs(getTypeArgumentsCount(), true, builderType, paramType, data.getTypeArgs(), source);
|
||||
long paramFlags = JavacHandlerUtil.addFinalIfNeeded(Flags.PARAMETER, builderType.getContext());
|
||||
JCVariableDecl param = maker.VarDef(maker.Modifiers(paramFlags), data.getPluralName(), paramType, null);
|
||||
finishAndInjectMethod(maker, returnType, builderType, source, deprecate, body, methodName, List.of(param));
|
||||
}
|
||||
|
||||
private JCExpression getPluralMethodParamType(JavacNode builderType) {
|
||||
protected JCExpression getPluralMethodParamType(JavacNode builderType) {
|
||||
JCExpression paramType;
|
||||
String aaTypeName = getAddAllTypeName();
|
||||
if (aaTypeName.startsWith("java.lang.") && aaTypeName.indexOf('.', 11) == -1) {
|
||||
@@ -196,7 +178,8 @@ abstract class JavacGuavaSingularizer extends JavacSingularizer {
|
||||
protected abstract LombokImmutableList<String> getArgumentSuffixes();
|
||||
|
||||
protected abstract String getAddAllTypeName();
|
||||
|
||||
|
||||
@Override
|
||||
protected int getTypeArgumentsCount() {
|
||||
return getArgumentSuffixes().size();
|
||||
}
|
||||
|
||||
@@ -111,25 +111,7 @@ abstract class JavacJavaUtilListSetSingularizer extends JavacJavaUtilSingularize
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void generatePluralMethod(boolean deprecate, JavacTreeMaker maker, JCExpression returnType, JCStatement returnStatement, SingularData data, JavacNode builderType, JCTree source, boolean fluent) {
|
||||
ListBuffer<JCStatement> statements = new ListBuffer<JCStatement>();
|
||||
statements.append(createConstructBuilderVarIfNeeded(maker, data, builderType, source));
|
||||
JCExpression thisDotFieldDotAdd = chainDots(builderType, "this", data.getPluralName().toString(), getAddMethodName() + "All");
|
||||
JCExpression invokeAdd = maker.Apply(List.<JCExpression>nil(), thisDotFieldDotAdd, List.<JCExpression>of(maker.Ident(data.getPluralName())));
|
||||
statements.append(maker.Exec(invokeAdd));
|
||||
|
||||
if (returnStatement != null) statements.append(returnStatement);
|
||||
JCBlock body = maker.Block(0, statements.toList());
|
||||
Name name = data.getPluralName();
|
||||
if (!fluent) name = 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());
|
||||
JCVariableDecl param = maker.VarDef(maker.Modifiers(paramFlags), data.getPluralName(), paramType, null);
|
||||
finishAndInjectMethod(maker, returnType, builderType, source, deprecate, body, name, List.of(param));
|
||||
}
|
||||
|
||||
private JCExpression getPluralMethodParamType(JavacNode builderType) {
|
||||
protected JCExpression getPluralMethodParamType(JavacNode builderType) {
|
||||
return chainDots(builderType, "java", "util", "Collection");
|
||||
}
|
||||
|
||||
@@ -143,7 +125,8 @@ abstract class JavacJavaUtilListSetSingularizer extends JavacJavaUtilSingularize
|
||||
return "add";
|
||||
}
|
||||
|
||||
private int getTypeArgumentsCount() {
|
||||
@Override
|
||||
protected int getTypeArgumentsCount() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -176,7 +176,8 @@ public class JavacJavaUtilMapSingularizer extends JavacJavaUtilSingularizer {
|
||||
finishAndInjectMethod(maker, returnType, builderType, source, deprecate, body, name, List.of(param));
|
||||
}
|
||||
|
||||
private JCExpression getPluralMethodParamType(JavacNode builderType) {
|
||||
@Override
|
||||
protected JCExpression getPluralMethodParamType(JavacNode builderType) {
|
||||
return chainDots(builderType, "java", "util", "Map");
|
||||
}
|
||||
|
||||
@@ -205,7 +206,8 @@ public class JavacJavaUtilMapSingularizer extends JavacJavaUtilSingularizer {
|
||||
return "put";
|
||||
}
|
||||
|
||||
private int getTypeArgumentsCount() {
|
||||
@Override
|
||||
protected int getTypeArgumentsCount() {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user