From cfeff1191dafa772bb9dab8075da386b19f48268 Mon Sep 17 00:00:00 2001 From: John Ericksen Date: Sat, 5 Sep 2015 13:19:36 -0600 Subject: [PATCH] Avoids importing all inner classes to avoid a compilation error when importing a private inner class. --- .../java/com/sun/codemodel/JFormatter.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/codemodel/src/main/java/com/sun/codemodel/JFormatter.java b/codemodel/src/main/java/com/sun/codemodel/JFormatter.java index 2206e0a..485ab6b 100644 --- a/codemodel/src/main/java/com/sun/codemodel/JFormatter.java +++ b/codemodel/src/main/java/com/sun/codemodel/JFormatter.java @@ -40,6 +40,8 @@ package com.sun.codemodel; +import com.sun.org.apache.xml.internal.security.encryption.ReferenceList; + import java.io.PrintWriter; import java.io.Writer; import java.util.ArrayList; @@ -473,17 +475,26 @@ private boolean supressImport(JClass clazz, JClass c) { if(packageName.equals("java.lang")) return true; // no need to explicitly import java.lang classes - if (clazz._package() == c._package()){ + if (clazz._package() == c._package()) { // inner classes require an import stmt. // All other pkg local classes do not need an // import stmt for ref. - if(clazz.outer()==null) { - return true; // no need to explicitly import a class into itself - } + // no need to explicitly import a class into itself + return clazz.outer() == null || isInnerClass(clazz, c); } return false; } + private boolean isInnerClass(JClass clazz, JClass c){ + if(clazz.outer() == null){ + return false; + } + else if(clazz.outer().equals(c)){ + return true; + } + return isInnerClass(clazz.outer(), c); + } + private JPackage javaLang;