properly render fields of arrays of primitive types
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / structure / FieldDescriptor.java
old mode 100644 (file)
new mode 100755 (executable)
index e4611aa..84d1ab1
@@ -1,10 +1,10 @@
 /*
  * JavaInspect - Utility to visualize java software
- * Copyright (C) 2013, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ * Copyright (C) 2013-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
  * 
  * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public License
- * as published by the Free Software Foundation.
+ * modify it under the terms of version 3 of the GNU Lesser General Public License
+ * or later as published by the Free Software Foundation.
  */
 
 package eu.svjatoslav.inspector.java.structure;
@@ -17,18 +17,22 @@ import java.util.List;
 
 public class FieldDescriptor implements GraphElement {
 
+       /**
+        * This class corresponds to single field within a java class.
+        */
+
        public String name;
-       public ClassDescriptor type;
-       private ClassDescriptor parent;
+       private ClassDescriptor type;
+       private ClassDescriptor parentClass;
        List<ClassDescriptor> typeArguments = new ArrayList<ClassDescriptor>();
 
        public FieldDescriptor(final Field field, final ClassDescriptor parent,
-                       final ClassGraph dump) {
+                       final ClassGraph classGraph) {
 
-               this.parent = parent;
+               parentClass = parent;
 
                if (!field.getDeclaringClass().getName()
-                               .equals(parent.fullyQualifiedName))
+                               .equals(parent.classFullyQualifiedName))
                        // if field is inherited, do not index it
                        return;
 
@@ -38,7 +42,7 @@ public class FieldDescriptor implements GraphElement {
                parent.nameToFieldMap.put(field.getName(), this);
 
                name = field.getName();
-               type = dump.addClass(field.getType());
+               type = classGraph.addClass(field.getType());
                type.registerReference();
 
                final Type genericType = field.getGenericType();
@@ -47,7 +51,7 @@ public class FieldDescriptor implements GraphElement {
                        for (final Type t : pt.getActualTypeArguments())
                                if (t instanceof Class) {
                                        final Class cl = (Class) t;
-                                       final ClassDescriptor genericTypeDescriptor = dump
+                                       final ClassDescriptor genericTypeDescriptor = classGraph
                                                        .addClass(cl);
                                        genericTypeDescriptor.registerReference();
                                        typeArguments.add(genericTypeDescriptor);
@@ -79,10 +83,10 @@ public class FieldDescriptor implements GraphElement {
                // main type
                boolean showLink = type.areReferencesShown();
 
-               if (type == parent)
+               if (type == parentClass)
                        showLink = false;
 
-               if (parent.isEnum)
+               if (parentClass.isEnum)
                        showLink = false;
 
                if (showLink)
@@ -102,7 +106,7 @@ public class FieldDescriptor implements GraphElement {
                final StringBuffer result = new StringBuffer();
 
                result.append("        // " + name + "\n");
-               if (parent.isEnum && (type == parent)) {
+               if (parentClass.isEnum && (type == parentClass)) {
                        result.append("        <TR><TD colspan=\"2\" PORT=\"" + name);
                        result.append("\" ALIGN=\"left\"><FONT POINT-SIZE=\"11.0\">");
                        result.append(name + "</FONT></TD></TR>\n");
@@ -119,7 +123,7 @@ public class FieldDescriptor implements GraphElement {
 
        @Override
        public String getGraphId() {
-               return parent.getGraphId() + ":" + name;
+               return parentClass.getGraphId() + ":" + name;
        }
 
        public int getOutsideVisibleReferencesCount() {
@@ -127,12 +131,17 @@ public class FieldDescriptor implements GraphElement {
                if (!isVisible())
                        return 0;
 
-               if (type.isVisible())
-                       return 1;
+               if (type != null)
+                       if (type.isVisible())
+                               return 1;
 
                return 0;
        }
 
+       public ClassDescriptor getType() {
+               return type;
+       }
+
        @Override
        public boolean isVisible() {
                if (name.contains("$"))
@@ -143,4 +152,5 @@ public class FieldDescriptor implements GraphElement {
 
                return true;
        }
+
 }
\ No newline at end of file