diff options
author | Almog Gavra <almog@confluent.io> | 2019-04-26 16:15:29 -0700 |
---|---|---|
committer | Jake Wharton <jakew@google.com> | 2019-05-01 15:32:05 -0400 |
commit | 3829f2ca6f03a4b941fea41a1e2f4eead8f37bc1 (patch) | |
tree | 33122f54ede853eb55ac631bbbd22f39da00860b /src/main | |
parent | 0f93da9a3d9a1da8d29fc993409fcf83d40452bc (diff) | |
download | javapoet-3829f2ca6f03a4b941fea41a1e2f4eead8f37bc1.tar.gz |
Fix an issue where ClassName could not handle classes in the default (empty) package
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/squareup/javapoet/ClassName.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/main/java/com/squareup/javapoet/ClassName.java b/src/main/java/com/squareup/javapoet/ClassName.java index b8dbd31..4bef49d 100644 --- a/src/main/java/com/squareup/javapoet/ClassName.java +++ b/src/main/java/com/squareup/javapoet/ClassName.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Objects; import javax.lang.model.element.Element; import javax.lang.model.element.PackageElement; import javax.lang.model.element.TypeElement; @@ -32,6 +33,9 @@ import static com.squareup.javapoet.Util.checkNotNull; public final class ClassName extends TypeName implements Comparable<ClassName> { public static final ClassName OBJECT = ClassName.get(Object.class); + /** The name representing the default Java package. */ + private static final String NO_PACKAGE = ""; + /** The package name of this class, or "" if this is in the default package. */ final String packageName; @@ -53,7 +57,7 @@ public final class ClassName extends TypeName implements Comparable<ClassName> { private ClassName(String packageName, ClassName enclosingClassName, String simpleName, List<AnnotationSpec> annotations) { super(annotations); - this.packageName = packageName; + this.packageName = Objects.requireNonNull(packageName, "packageName == null"); this.enclosingClassName = enclosingClassName; this.simpleName = simpleName; this.canonicalName = enclosingClassName != null @@ -172,7 +176,7 @@ public final class ClassName extends TypeName implements Comparable<ClassName> { if (clazz.getEnclosingClass() == null) { // Avoid unreliable Class.getPackage(). https://github.com/square/javapoet/issues/295 int lastDot = clazz.getName().lastIndexOf('.'); - String packageName = (lastDot != -1) ? clazz.getName().substring(0, lastDot) : null; + String packageName = (lastDot != -1) ? clazz.getName().substring(0, lastDot) : NO_PACKAGE; return new ClassName(packageName, null, name); } @@ -194,7 +198,7 @@ public final class ClassName extends TypeName implements Comparable<ClassName> { p = classNameString.indexOf('.', p) + 1; checkArgument(p != 0, "couldn't make a guess for %s", classNameString); } - String packageName = p == 0 ? "" : classNameString.substring(0, p - 1); + String packageName = p == 0 ? NO_PACKAGE : classNameString.substring(0, p - 1); // Add class names like "Map" and "Entry". ClassName className = null; |