package eu.svjatoslav.javainspect.example;
import eu.svjatoslav.javainspect.example.structure.SampleClass;
-import eu.svjatoslav.javainspect.structure.Graph;
+import eu.svjatoslav.javainspect.structure.ClassGraph;
public class RenderExampleProject {
public static void main(final String[] args) {
- final Graph graph = new Graph();
+ final ClassGraph graph = new ClassGraph();
graph.addClass(SampleClass.class);
import java.io.FileNotFoundException;
-import eu.svjatoslav.javainspect.structure.Graph;
+import eu.svjatoslav.javainspect.structure.ClassGraph;
import eu.svjatoslav.javainspect.structure.Utils;
public class RenderJavaInspect {
public static void main(final String[] args) throws FileNotFoundException {
// Create graph
- final Graph graph = new Graph();
+ final ClassGraph graph = new ClassGraph();
// Add some object to the graph.
graph.addObject(graph);
boolean isArray;
- private final Graph dump;
+ private final ClassGraph dump;
List<ClassDescriptor> interfaces = new ArrayList<ClassDescriptor>();
*/
private int referenceCount = 0;
- public ClassDescriptor(final Class<? extends Object> clazz, final Graph dump) {
+ public ClassDescriptor(final Class<? extends Object> clazz, final ClassGraph dump) {
this.dump = dump;
fullyQualifiedName = clazz.getName();
--- /dev/null
+/*
+ * JavaInspect - Utility to visualize java software
+ * Copyright (C) 2013, 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.
+ */
+
+package eu.svjatoslav.javainspect.structure;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Map;
+
+import eu.svjatoslav.commons.file.CommonPathResolver;
+
+public class ClassGraph {
+
+ /**
+ * Maps class fully qualified names to class descriptors.
+ */
+ Map<String, ClassDescriptor> nameToClassMap = new HashMap<String, ClassDescriptor>();
+
+ public ClassGraph() {
+ }
+
+ public ClassGraph(final Class<? extends Object> clazz) {
+ addClass(clazz);
+ }
+
+ public ClassGraph(final Object root) {
+ addClass(root.getClass());
+ }
+
+ public ClassDescriptor addClass(final Class<? extends Object> clazz) {
+
+ if (clazz == null)
+ return null;
+
+ final String className = clazz.getName();
+
+ if (nameToClassMap.containsKey(className))
+ return nameToClassMap.get(className);
+
+ return new ClassDescriptor(clazz, this);
+ }
+
+ public ClassDescriptor addObject(final Object object) {
+ return addClass(object.getClass());
+ }
+
+ public void generateGraph(final String graphName) {
+ generateGraph(graphName, false);
+ }
+
+ public void generateGraph(final String graphName, final boolean keepDotFile) {
+
+ final String desktopPath = CommonPathResolver.getDesktopDirectory()
+ .getAbsolutePath() + "/";
+
+ final String dotFilePath = desktopPath + graphName + ".dot";
+ final String imageFilePath = desktopPath + graphName + ".png";
+
+ System.out.println("Dot file path:" + dotFilePath);
+
+ try {
+ // write DOT file to disk
+ final PrintWriter out = new PrintWriter(dotFilePath);
+ out.write(getDot());
+ out.close();
+
+ // execute GraphViz to visualize graph
+ try {
+ Runtime.getRuntime()
+ .exec(new String[] { "dot", "-Tpng", dotFilePath, "-o",
+ imageFilePath }).waitFor();
+ } catch (final InterruptedException e) {
+ } finally {
+ }
+
+ if (!keepDotFile) {
+ // delete dot file
+ final File dotFile = new File(dotFilePath);
+ dotFile.delete();
+ }
+ } catch (final IOException e) {
+ System.err.println(e);
+ }
+ }
+
+ private String getDot() {
+ final StringBuffer result = new StringBuffer();
+
+ result.append("digraph Java {\n");
+ result.append("graph [rankdir=LR, overlap = false, concentrate=true];\n");
+
+ for (final Map.Entry<String, ClassDescriptor> entry : nameToClassMap
+ .entrySet())
+ result.append(entry.getValue().getDot());
+
+ result.append("}\n");
+
+ final String resultStr = result.toString();
+ return resultStr;
+ }
+
+}
List<ClassDescriptor> typeArguments = new ArrayList<ClassDescriptor>();
public FieldDescriptor(final Field field, final ClassDescriptor parent,
- final Graph dump) {
+ final ClassGraph dump) {
this.parent = parent;
+++ /dev/null
-/*
- * JavaInspect - Utility to visualize java software
- * Copyright (C) 2013, 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.
- */
-
-package eu.svjatoslav.javainspect.structure;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.HashMap;
-import java.util.Map;
-
-import eu.svjatoslav.commons.file.CommonPathResolver;
-
-public class Graph {
-
- /**
- * Maps class fully qualified names to class descriptors.
- */
- Map<String, ClassDescriptor> nameToClassMap = new HashMap<String, ClassDescriptor>();
-
- public Graph() {
- }
-
- public Graph(final Class<? extends Object> clazz) {
- addClass(clazz);
- }
-
- public Graph(final Object root) {
- addClass(root.getClass());
- }
-
- public ClassDescriptor addClass(final Class<? extends Object> clazz) {
-
- if (clazz == null)
- return null;
-
- final String className = clazz.getName();
-
- if (nameToClassMap.containsKey(className))
- return nameToClassMap.get(className);
-
- return new ClassDescriptor(clazz, this);
- }
-
- public ClassDescriptor addObject(final Object object) {
- return addClass(object.getClass());
- }
-
- public void generateGraph(final String graphName) {
- generateGraph(graphName, false);
- }
-
- public void generateGraph(final String graphName, final boolean keepDotFile) {
-
- final String desktopPath = CommonPathResolver.getDesktopDirectory()
- .getAbsolutePath() + "/";
-
- final String dotFilePath = desktopPath + graphName + ".dot";
- final String imageFilePath = desktopPath + graphName + ".png";
-
- System.out.println("Dot file path:" + dotFilePath);
-
- try {
- // write DOT file to disk
- final PrintWriter out = new PrintWriter(dotFilePath);
- out.write(getDot());
- out.close();
-
- // execute GraphViz to visualize graph
- try {
- Runtime.getRuntime()
- .exec(new String[] { "dot", "-Tpng", dotFilePath, "-o",
- imageFilePath }).waitFor();
- } catch (final InterruptedException e) {
- } finally {
- }
-
- if (!keepDotFile) {
- // delete dot file
- final File dotFile = new File(dotFilePath);
- dotFile.delete();
- }
- } catch (final IOException e) {
- System.err.println(e);
- }
- }
-
- private String getDot() {
- final StringBuffer result = new StringBuffer();
-
- result.append("digraph Java {\n");
- result.append("graph [rankdir=LR, overlap = false, concentrate=true];\n");
-
- for (final Map.Entry<String, ClassDescriptor> entry : nameToClassMap
- .entrySet())
- result.append(entry.getValue().getDot());
-
- result.append("}\n");
-
- final String resultStr = result.toString();
- return resultStr;
- }
-
-}
List<ClassDescriptor> typeArguments = new ArrayList<ClassDescriptor>();
public MethodDescriptor(final Method method, final ClassDescriptor parent,
- final Graph dump) {
+ final ClassGraph dump) {
this.parent = parent;