From b7e94db7e5f68ae3e6130584d1ec3b4dd9677394 Mon Sep 17 00:00:00 2001 From: Svjatoslav Agejenko Date: Thu, 4 Jul 2013 11:32:48 +0300 Subject: [PATCH] better representation of nested classes --- .../java/structure/ClassDescriptor.java | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/main/java/eu/svjatoslav/inspector/java/structure/ClassDescriptor.java b/src/main/java/eu/svjatoslav/inspector/java/structure/ClassDescriptor.java index 9f4be8a..41f92f3 100644 --- a/src/main/java/eu/svjatoslav/inspector/java/structure/ClassDescriptor.java +++ b/src/main/java/eu/svjatoslav/inspector/java/structure/ClassDescriptor.java @@ -188,8 +188,15 @@ public class ClassDescriptor implements GraphElement { result.append(" // class descriptor header\n"); result.append(" " + "" + getPackageName() - + "
" + "" - + getClassName(false) + "" + "\n"); + + "
"); + + final String parentClassesName = getParentClassesName(); + if (parentClassesName.length() > 0) + result.append("" + parentClassesName + + "
\n"); + + result.append("" + getClassName(false) + + "" + "\n"); } public List getAllFields() { @@ -222,10 +229,12 @@ public class ClassDescriptor implements GraphElement { } public String getClassName(final boolean differentiateArray) { + // this is needed for nested classes + final String actualClassName = fullyQualifiedName.replace('$', '.'); - final int i = fullyQualifiedName.lastIndexOf('.'); + final int i = actualClassName.lastIndexOf('.'); - String result = fullyQualifiedName.substring(i + 1); + String result = actualClassName.substring(i + 1); if (isArray) result = result.substring(0, result.length() - 1); @@ -235,7 +244,7 @@ public class ClassDescriptor implements GraphElement { result += " []"; // this is needed for nested classes - result = result.replace('$', '.'); + // result = result.replace('$', '.'); return result; } @@ -309,6 +318,17 @@ public class ClassDescriptor implements GraphElement { return fullyQualifiedName.substring(0, i).replace("[L", ""); } + public String getParentClassesName() { + int i = fullyQualifiedName.lastIndexOf('.'); + final String fullClassName = fullyQualifiedName.substring(i + 1); + + i = fullClassName.lastIndexOf('$'); + if (i == -1) + return ""; + final String parentClassesName = fullClassName.substring(0, i); + return parentClassesName.replace('$', '.'); + } + // public String getReadableName() { // // // do not print full class name for well known system classes -- 2.20.1