diff options
author | Reinier Zwitserloot <reinier@zwitserloot.com> | 2021-03-24 06:24:02 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-24 06:24:02 +0100 |
commit | 30a2921e6321d20f0f925694dfd6a32d9e1f1552 (patch) | |
tree | eedf6a2cd9f2051cb926d64fad031c387f4916da /src/core/lombok/javac | |
parent | 52a31bc4ae2806907194d32567a820c670670357 (diff) | |
parent | a6257f27f0831ed2c9971285a3bb29f73fabbb02 (diff) | |
download | lombok-30a2921e6321d20f0f925694dfd6a32d9e1f1552.tar.gz lombok-30a2921e6321d20f0f925694dfd6a32d9e1f1552.tar.bz2 lombok-30a2921e6321d20f0f925694dfd6a32d9e1f1552.zip |
Merge pull request #2687 from janrieke/superBuilderConfigBuilderClassName
SuperBuilder: consider lombok.builder.className for builder extends clause
Diffstat (limited to 'src/core/lombok/javac')
-rw-r--r-- | src/core/lombok/javac/handlers/HandleBuilder.java | 12 | ||||
-rw-r--r-- | src/core/lombok/javac/handlers/HandleSuperBuilder.java | 8 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/core/lombok/javac/handlers/HandleBuilder.java b/src/core/lombok/javac/handlers/HandleBuilder.java index a25baeb0..c23dc14c 100644 --- a/src/core/lombok/javac/handlers/HandleBuilder.java +++ b/src/core/lombok/javac/handlers/HandleBuilder.java @@ -130,7 +130,7 @@ public class HandleBuilder extends JavacAnnotationHandler<Builder> { builderMethodName = ann.builderMethodName(); buildMethodName = ann.buildMethodName(); - builderClassName = fixBuilderClassName(node, ann.builderClassName()); + builderClassName = getBuilderClassNameTemplate(node, ann.builderClassName()); toBuilder = ann.toBuilder(); if (builderMethodName == null) builderMethodName = "builder"; @@ -138,7 +138,7 @@ public class HandleBuilder extends JavacAnnotationHandler<Builder> { if (builderClassName == null) builderClassName = ""; } - static String fixBuilderClassName(JavacNode node, String override) { + static String getBuilderClassNameTemplate(JavacNode node, String override) { if (override != null && !override.isEmpty()) return override; override = node.getAst().readConfiguration(ConfigurationKeys.BUILDER_CLASS_NAME); if (override != null && !override.isEmpty()) return override; @@ -146,8 +146,12 @@ public class HandleBuilder extends JavacAnnotationHandler<Builder> { } String replaceBuilderClassName(Name name) { - if (builderClassName.indexOf('*') == -1) return builderClassName; - return builderClassName.replace("*", name.toString()); + return replaceBuilderClassName(name.toString(), builderClassName); + } + + String replaceBuilderClassName(String name, String template) { + if (template.indexOf('*') == -1) return template; + return template.replace("*", name); } JCExpression createBuilderParentTypeReference() { diff --git a/src/core/lombok/javac/handlers/HandleSuperBuilder.java b/src/core/lombok/javac/handlers/HandleSuperBuilder.java index 9185cedf..8974cd68 100644 --- a/src/core/lombok/javac/handlers/HandleSuperBuilder.java +++ b/src/core/lombok/javac/handlers/HandleSuperBuilder.java @@ -111,7 +111,7 @@ public class HandleSuperBuilder extends JavacAnnotationHandler<SuperBuilder> { if (builderMethodName == null) builderMethodName = "builder"; if (buildMethodName == null) buildMethodName = "build"; - builderClassName = fixBuilderClassName(node, ""); + builderClassName = getBuilderClassNameTemplate(node, null); } void setBuilderToImpl() { @@ -253,10 +253,12 @@ public class HandleSuperBuilder extends JavacAnnotationHandler<SuperBuilder> { } if (extendsClause instanceof JCFieldAccess) { Name superclassName = ((JCFieldAccess) extendsClause).getIdentifier(); - String superclassBuilderClassName = superclassName.toString() + "Builder"; + String builderClassNameTemplate = BuilderJob.getBuilderClassNameTemplate(annotationNode, null); + String superclassBuilderClassName = job.replaceBuilderClassName(superclassName.toString(), builderClassNameTemplate); superclassBuilderClass = parent.getTreeMaker().Select((JCFieldAccess) extendsClause, parent.toName(superclassBuilderClassName)); } else if (extendsClause != null) { - String superclassBuilderClassName = extendsClause.toString() + "Builder"; + String builderClassNameTemplate = BuilderJob.getBuilderClassNameTemplate(annotationNode, null); + String superclassBuilderClassName = job.replaceBuilderClassName(extendsClause.toString(), builderClassNameTemplate); superclassBuilderClass = chainDots(parent, extendsClause.toString(), superclassBuilderClassName); } |