import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
/**
* Describes single class instance
public final String fullyQualifiedName;
- Map<String, FieldDescriptor> nameToFieldMap = new HashMap<String, FieldDescriptor>();
+ Map<String, FieldDescriptor> nameToFieldMap = new TreeMap<String, FieldDescriptor>();
- public List<MethodDescriptor> methods = new ArrayList<MethodDescriptor>();
+ public SortedSet<MethodDescriptor> methods = new TreeSet<MethodDescriptor>();
/**
* Incoming arrows will have this color.
/**
* Amount of field and method references pointing to this class.
*/
- private int referenceCount = 0;
+ private int incomingReferencesCount = 0;
public ClassDescriptor(final Class<? extends Object> clazz,
final ClassGraph dump) {
}
public boolean areReferencesShown() {
- return referenceCount <= MAX_REFERECNES_COUNT;
+ return incomingReferencesCount <= MAX_REFERECNES_COUNT;
}
public void enlistFieldReferences(final StringBuffer result) {
public String getGraphId() {
final String result = "class_"
+ fullyQualifiedName.replace('.', '_').replace(";", "")
- .replace("[L", "").replace('$', '_');
+ .replace("[L", "").replace('$', '_');
return result;
}
isShown = false;
}
+ public boolean hideClassIfNoReferences() {
+ if (!isVisible())
+ return false;
+
+ int outgoingVisibleReferencesCount = 0;
+
+ for (final MethodDescriptor methodDescriptor : methods)
+ outgoingVisibleReferencesCount += methodDescriptor
+ .getOutsideVisibleReferencesCount();
+
+ for (final FieldDescriptor fieldDescriptor : nameToFieldMap.values())
+ outgoingVisibleReferencesCount += fieldDescriptor
+ .getOutsideVisibleReferencesCount();
+
+ final int totalReferencesCount = outgoingVisibleReferencesCount
+ + incomingReferencesCount;
+
+ if (totalReferencesCount == 0) {
+ hide();
+ return true;
+ }
+
+ return false;
+ }
+
public void indexFields(final Field[] fields) {
for (final Field field : fields) {
if (nameToFieldMap.containsKey(field.getName()))
if (Utils.isSystemPackage(fullyQualifiedName))
return false;
- if (!classGraph.filter.isClassShown(fullyQualifiedName))
+ if (!classGraph.getFilter().isClassShown(fullyQualifiedName))
return false;
return isShown;
}
public void registerReference() {
- referenceCount++;
+ incomingReferencesCount++;
}
public void setDistinctiveColor(final String distinctiveColor) {