/JavaInspect.dot
/JavaInspect.svg
*.html
-/doc/graphs/
-/doc/apidocs/
+/Documentation/graphs/
+/Documentation/apidocs/
# Documentation
-| Path | Topic |
-|-----------------|-------------------------------------------------------|
-| `doc/index.org` | Main documentation, usage examples, Maven integration |
-| `doc/apidocs/` | Generated Javadoc |
-| `COPYING` | CC0 license full text |
\ No newline at end of file
+| Path | Topic |
+|-----------------------------------|-------------------------------------------------------|
+| `Documentation/index.org` | Main documentation, usage examples, Maven integration |
+| `Documentation/apidocs/` | Generated Javadoc |
+| `COPYING` | CC0 license full text |
+
+## Documentation conventions
+
+- Every heading carries a `:PROPERTIES:` drawer with `:CUSTOM_ID:
+ <kebab-case-slug>` immediately after the heading line — without it
+ org-html export emits `org<hex>` anchors. Sub-pages also carry a
+ file-level drawer (before `#+SETUPFILE:`) as identity marker.
+- Every page links the shared stylesheet via `#+HTML_HEAD:
+ <link rel="stylesheet" href="style.css"/>` (`../style.css` in
+ subdirectories); `Documentation/style.css` is copied verbatim from
+ sibling projects.
+- Sub-page back-links use the anchor form
+ `[[file:../index.html#outline-container-<section>][<- Back to index]]`.
+- Verify with `emacs --batch -l ~/.emacs --visit=<page>.org
+ --funcall=org-html-export-to-html --kill` — no "Unable to resolve
+ link" output and no `outline-container-org<hex>` ids in the HTML.
+ The darksun theme renders top-level sections as tabs; screenshot
+ each tab via its `#<custom-id>` anchor URL with headless Chrome
+ (`--virtual-time-budget=8000`).
\ No newline at end of file
--- /dev/null
+digraph Java {
+graph [rankdir=LR, overlap = false, concentrate=true];
+
+// Class: eu.svjatoslav.inspector.java.structure.Filter
+ class_eu_svjatoslav_inspector_java_structure_Filter[label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0">
+
+ // class descriptor header
+ <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>Filter</B></FONT></TD></TR>
+
+ // fields:
+ // blacklistClassPatterns
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="blacklistClassPatterns" ALIGN="left"><FONT POINT-SIZE="11.0">blacklistClassPatterns</FONT></TD></TR>
+ // whitelistClassPatterns
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="whitelistClassPatterns" ALIGN="left"><FONT POINT-SIZE="11.0">whitelistClassPatterns</FONT></TD></TR>
+
+ // methods:
+ // blacklistClassPattern
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="blacklistClassPattern" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">blacklistClassPattern</FONT></TD></TR>
+ // isClassShown
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isClassShown" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isClassShown</FONT></TD></TR>
+ // whitelistClassPattern
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="whitelistClassPattern" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">whitelistClassPattern</FONT></TD></TR>
+ </TABLE>>, shape="none"];
+
+ // field references to other classes
+
+ // method references to other classes
+
+// Class: eu.svjatoslav.inspector.java.structure.FieldDescriptor
+ class_eu_svjatoslav_inspector_java_structure_FieldDescriptor[label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0">
+
+ // class descriptor header
+ <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>FieldDescriptor</B></FONT></TD></TR>
+
+ // fields:
+ // name
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="name" ALIGN="left"><FONT POINT-SIZE="11.0">name</FONT></TD></TR>
+ // parent
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="parent" ALIGN="left"><FONT POINT-SIZE="11.0">parent</FONT></TD></TR>
+ // type
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="type" ALIGN="left"><FONT POINT-SIZE="11.0">type</FONT></TD></TR>
+ // typeArguments
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="typeArguments" ALIGN="left"><FONT POINT-SIZE="11.0">typeArguments</FONT></TD></TR>
+
+ // methods:
+ // getDot
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getDot</FONT></TD></TR>
+ // getEmbeddedDot
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getEmbeddedDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getEmbeddedDot</FONT></TD></TR>
+ // getGraphId
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getGraphId" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getGraphId</FONT></TD></TR>
+ // getOutsideVisibleReferencesCount
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="getOutsideVisibleReferencesCount" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getOutsideVisibleReferencesCount</FONT></TD></TR>
+ // isVisible
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isVisible" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isVisible</FONT></TD></TR>
+ </TABLE>>, shape="none"];
+
+ // field references to other classes
+
+ // method references to other classes
+
+ // interfaces implemented by class: eu.svjatoslav.inspector.java.structure.FieldDescriptor
+ class_eu_svjatoslav_inspector_java_structure_GraphElement -> class_eu_svjatoslav_inspector_java_structure_FieldDescriptor[style="dotted, tapered", color="olivedrab2", penwidth=20, dir="forward"];
+
+// Class: eu.svjatoslav.inspector.java.structure.MethodDescriptor
+ class_eu_svjatoslav_inspector_java_structure_MethodDescriptor[label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0">
+
+ // class descriptor header
+ <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>MethodDescriptor</B></FONT></TD></TR>
+
+ // fields:
+ // name
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="name" ALIGN="left"><FONT POINT-SIZE="11.0">name</FONT></TD></TR>
+ // parent
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="parent" ALIGN="left"><FONT POINT-SIZE="11.0">parent</FONT></TD></TR>
+ // returnType
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="returnType" ALIGN="left"><FONT POINT-SIZE="11.0">returnType</FONT></TD></TR>
+ // typeArguments
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="typeArguments" ALIGN="left"><FONT POINT-SIZE="11.0">typeArguments</FONT></TD></TR>
+
+ // methods:
+ // compareTo
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="compareTo" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">compareTo</FONT></TD></TR>
+ // compareTo
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="compareTo" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">compareTo</FONT></TD></TR>
+ // getDot
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getDot</FONT></TD></TR>
+ // getEmbeddedDot
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getEmbeddedDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getEmbeddedDot</FONT></TD></TR>
+ // getGraphId
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getGraphId" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getGraphId</FONT></TD></TR>
+ // getMethodLabel
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getMethodLabel" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getMethodLabel</FONT></TD></TR>
+ // getOutsideVisibleReferencesCount
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="getOutsideVisibleReferencesCount" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getOutsideVisibleReferencesCount</FONT></TD></TR>
+ // isVisible
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isVisible" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isVisible</FONT></TD></TR>
+ </TABLE>>, shape="none"];
+
+ // field references to other classes
+
+ // method references to other classes
+
+ // interfaces implemented by class: eu.svjatoslav.inspector.java.structure.MethodDescriptor
+ class_eu_svjatoslav_inspector_java_structure_GraphElement -> class_eu_svjatoslav_inspector_java_structure_MethodDescriptor[style="dotted, tapered", color="olivedrab2", penwidth=20, dir="forward"];
+
+// Class: eu.svjatoslav.inspector.java.structure.Utils
+ class_eu_svjatoslav_inspector_java_structure_Utils[label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0">
+
+ // class descriptor header
+ <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>Utils</B></FONT></TD></TR>
+
+ // fields:
+ // darkColors
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="darkColors" ALIGN="left"><FONT POINT-SIZE="11.0">darkColors</FONT></TD></TR>
+ // enumMethods
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="enumMethods" ALIGN="left"><FONT POINT-SIZE="11.0">enumMethods</FONT></TD></TR>
+ // lastChosenDarkColor
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="lastChosenDarkColor" ALIGN="left"><FONT POINT-SIZE="11.0">lastChosenDarkColor</FONT></TD></TR>
+ // lastChosenLightColor
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="lastChosenLightColor" ALIGN="left"><FONT POINT-SIZE="11.0">lastChosenLightColor</FONT></TD></TR>
+ // lightColors
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="lightColors" ALIGN="left"><FONT POINT-SIZE="11.0">lightColors</FONT></TD></TR>
+ // systemDataTypes
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="systemDataTypes" ALIGN="left"><FONT POINT-SIZE="11.0">systemDataTypes</FONT></TD></TR>
+ // systemMethods
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="systemMethods" ALIGN="left"><FONT POINT-SIZE="11.0">systemMethods</FONT></TD></TR>
+ // systemPackages
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="systemPackages" ALIGN="left"><FONT POINT-SIZE="11.0">systemPackages</FONT></TD></TR>
+
+ // methods:
+ // getNextDarkColor
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getNextDarkColor" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getNextDarkColor</FONT></TD></TR>
+ // getNextLightColor
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getNextLightColor" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getNextLightColor</FONT></TD></TR>
+ // initDarkColors
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="initDarkColors" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">initDarkColors</FONT></TD></TR>
+ // initEnumMethods
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="initEnumMethods" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">initEnumMethods</FONT></TD></TR>
+ // initLightColors
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="initLightColors" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">initLightColors</FONT></TD></TR>
+ // initSystemDataTypes
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="initSystemDataTypes" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">initSystemDataTypes</FONT></TD></TR>
+ // initSystemMethods
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="initSystemMethods" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">initSystemMethods</FONT></TD></TR>
+ // initSystemPackages
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="initSystemPackages" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">initSystemPackages</FONT></TD></TR>
+ // isEnumMethod
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isEnumMethod" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isEnumMethod</FONT></TD></TR>
+ // isSystemDataType
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isSystemDataType" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isSystemDataType</FONT></TD></TR>
+ // isSystemMethod
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isSystemMethod" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isSystemMethod</FONT></TD></TR>
+ // isSystemPackage
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isSystemPackage" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isSystemPackage</FONT></TD></TR>
+ </TABLE>>, shape="none"];
+
+ // field references to other classes
+
+ // method references to other classes
+
+// Class: eu.svjatoslav.inspector.java.structure.GraphElement
+ class_eu_svjatoslav_inspector_java_structure_GraphElement[label=<<TABLE bgcolor="darkslategray1" BORDER="1" CELLBORDER="1" CELLSPACING="0">
+
+ // class descriptor header
+ <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>GraphElement</B></FONT></TD></TR>
+
+ // methods:
+ // getDot
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getDot</FONT></TD></TR>
+ // getEmbeddedDot
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getEmbeddedDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getEmbeddedDot</FONT></TD></TR>
+ // getGraphId
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getGraphId" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getGraphId</FONT></TD></TR>
+ // isVisible
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isVisible" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isVisible</FONT></TD></TR>
+ </TABLE>>, shape="none"];
+
+ // method references to other classes
+
+// Class: eu.svjatoslav.inspector.java.structure.ClassGraph
+ class_eu_svjatoslav_inspector_java_structure_ClassGraph[label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0">
+
+ // class descriptor header
+ <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>ClassGraph</B></FONT></TD></TR>
+
+ // fields:
+ // filter
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">Filter</FONT></td><TD PORT="filter" ALIGN="left"><FONT POINT-SIZE="11.0">filter</FONT></TD></TR>
+ // nameToClassMap
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">Map</FONT></td><TD PORT="nameToClassMap" ALIGN="left"><FONT POINT-SIZE="11.0">nameToClassMap</FONT></TD></TR>
+
+ // methods:
+ // addClass
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="addClass" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">addClass</FONT></TD></TR>
+ // addObject
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="addObject" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">addObject</FONT></TD></TR>
+ // addProject
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="addProject" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">addProject</FONT></TD></TR>
+ // generateGraph
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="generateGraph" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">generateGraph</FONT></TD></TR>
+ // generateGraph
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="generateGraph" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">generateGraph</FONT></TD></TR>
+ // hideOrphanedClasses
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="hideOrphanedClasses" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">hideOrphanedClasses</FONT></TD></TR>
+ // render
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="render" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">render</FONT></TD></TR>
+ </TABLE>>, shape="none"];
+
+ // field references to other classes
+ class_eu_svjatoslav_inspector_java_structure_ClassGraph:filter -> class_eu_svjatoslav_inspector_java_structure_Filter[label="filter", color="antiquewhite4", style="bold"];
+
+ // method references to other classes
+
+// Class: eu.svjatoslav.inspector.java.structure.ClassDescriptor
+ class_eu_svjatoslav_inspector_java_structure_ClassDescriptor[label=<<TABLE BORDER="4" CELLBORDER="1" CELLSPACING="0">
+
+ // class descriptor header
+ <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>ClassDescriptor</B></FONT></TD></TR>
+
+ // fields:
+ // MAX_REFERECNES_COUNT
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="MAX_REFERECNES_COUNT" ALIGN="left"><FONT POINT-SIZE="11.0">MAX_REFERECNES_COUNT</FONT></TD></TR>
+ // classGraph
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassGraph</FONT></td><TD PORT="classGraph" ALIGN="left"><FONT POINT-SIZE="11.0">classGraph</FONT></TD></TR>
+ // distinctiveReferenceColor
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="distinctiveReferenceColor" ALIGN="left"><FONT POINT-SIZE="11.0">distinctiveReferenceColor</FONT></TD></TR>
+ // fullyQualifiedName
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="fullyQualifiedName" ALIGN="left"><FONT POINT-SIZE="11.0">fullyQualifiedName</FONT></TD></TR>
+ // incomingReferencesCount
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="incomingReferencesCount" ALIGN="left"><FONT POINT-SIZE="11.0">incomingReferencesCount</FONT></TD></TR>
+ // interfaceColor
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="interfaceColor" ALIGN="left"><FONT POINT-SIZE="11.0">interfaceColor</FONT></TD></TR>
+ // interfaces
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="interfaces" ALIGN="left"><FONT POINT-SIZE="11.0">interfaces</FONT></TD></TR>
+ // isArray
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isArray" ALIGN="left"><FONT POINT-SIZE="11.0">isArray</FONT></TD></TR>
+ // isEnum
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isEnum" ALIGN="left"><FONT POINT-SIZE="11.0">isEnum</FONT></TD></TR>
+ // isInterface
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isInterface" ALIGN="left"><FONT POINT-SIZE="11.0">isInterface</FONT></TD></TR>
+ // isShown
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isShown" ALIGN="left"><FONT POINT-SIZE="11.0">isShown</FONT></TD></TR>
+ // methods
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">SortedSet</FONT></td><TD PORT="methods" ALIGN="left"><FONT POINT-SIZE="11.0">methods</FONT></TD></TR>
+ // nameToFieldMap
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">Map</FONT></td><TD PORT="nameToFieldMap" ALIGN="left"><FONT POINT-SIZE="11.0">nameToFieldMap</FONT></TD></TR>
+ // superClass
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="superClass" ALIGN="left"><FONT POINT-SIZE="11.0">superClass</FONT></TD></TR>
+ // superClassColor
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="superClassColor" ALIGN="left"><FONT POINT-SIZE="11.0">superClassColor</FONT></TD></TR>
+
+ // methods:
+ // areReferencesShown
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="areReferencesShown" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">areReferencesShown</FONT></TD></TR>
+ // enlistFieldReferences
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="enlistFieldReferences" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">enlistFieldReferences</FONT></TD></TR>
+ // enlistFields
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="enlistFields" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">enlistFields</FONT></TD></TR>
+ // enlistImplementedInterfaces
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="enlistImplementedInterfaces" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">enlistImplementedInterfaces</FONT></TD></TR>
+ // enlistMethodReferences
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="enlistMethodReferences" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">enlistMethodReferences</FONT></TD></TR>
+ // enlistMethods
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="enlistMethods" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">enlistMethods</FONT></TD></TR>
+ // enlistSuperClass
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="enlistSuperClass" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">enlistSuperClass</FONT></TD></TR>
+ // generateDotHeader
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="generateDotHeader" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">generateDotHeader</FONT></TD></TR>
+ // getAllFields
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="getAllFields" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getAllFields</FONT></TD></TR>
+ // getBackgroundColor
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getBackgroundColor" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getBackgroundColor</FONT></TD></TR>
+ // getBorderWidth
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getBorderWidth" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getBorderWidth</FONT></TD></TR>
+ // getClassName
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getClassName" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getClassName</FONT></TD></TR>
+ // getColor
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getColor" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getColor</FONT></TD></TR>
+ // getDistinctiveColor
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getDistinctiveColor" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getDistinctiveColor</FONT></TD></TR>
+ // getDot
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getDot</FONT></TD></TR>
+ // getEmbeddedDot
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getEmbeddedDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getEmbeddedDot</FONT></TD></TR>
+ // getGraphId
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getGraphId" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getGraphId</FONT></TD></TR>
+ // getPackageName
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getPackageName" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getPackageName</FONT></TD></TR>
+ // getParentClassesName
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getParentClassesName" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getParentClassesName</FONT></TD></TR>
+ // hide
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="hide" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">hide</FONT></TD></TR>
+ // hideClassIfNoReferences
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="hideClassIfNoReferences" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">hideClassIfNoReferences</FONT></TD></TR>
+ // indexFields
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="indexFields" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">indexFields</FONT></TD></TR>
+ // isVisible
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isVisible" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isVisible</FONT></TD></TR>
+ // registerReference
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="registerReference" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">registerReference</FONT></TD></TR>
+ // setDistinctiveColor
+ <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="setDistinctiveColor" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">setDistinctiveColor</FONT></TD></TR>
+ </TABLE>>, shape="none"];
+
+ // field references to other classes
+ class_eu_svjatoslav_inspector_java_structure_ClassDescriptor:classGraph -> class_eu_svjatoslav_inspector_java_structure_ClassGraph[label="classGraph", color="blueviolet", style="bold"];
+ class_eu_svjatoslav_inspector_java_structure_ClassDescriptor:methods -> class_eu_svjatoslav_inspector_java_structure_MethodDescriptor[label="methods", color="brown4", style="bold"];
+ class_eu_svjatoslav_inspector_java_structure_ClassDescriptor:nameToFieldMap -> class_eu_svjatoslav_inspector_java_structure_FieldDescriptor[label="nameToFieldMap", color="chartreuse4", style="bold"];
+
+ // method references to other classes
+ class_eu_svjatoslav_inspector_java_structure_ClassDescriptor:getAllFields -> class_eu_svjatoslav_inspector_java_structure_FieldDescriptor[label="getAllFields", color="chartreuse4", style="dotted, bold"];
+
+ // interfaces implemented by class: eu.svjatoslav.inspector.java.structure.ClassDescriptor
+ class_eu_svjatoslav_inspector_java_structure_GraphElement -> class_eu_svjatoslav_inspector_java_structure_ClassDescriptor[style="dotted, tapered", color="olivedrab2", penwidth=20, dir="forward"];
+}
--- /dev/null
+:PROPERTIES:
+:CUSTOM_ID: usage-from-cli
+:END:
+#+SETUPFILE: ~/.emacs.d/org-styles/html/darksun.theme
+#+TITLE: JavaInspect - usage from commandline
+#+LANGUAGE: en
+#+LATEX_HEADER: \usepackage[margin=1.0in]{geometry}
+#+LATEX_HEADER: \usepackage{parskip}
+#+LATEX_HEADER: \usepackage[none]{hyphenat}
+
+#+OPTIONS: H:20 num:20
+#+OPTIONS: author:nil
+
+#+HTML_HEAD: <link rel="stylesheet" href="../style.css"/>
+
+[[file:../index.html#outline-container-usage][<- Back to index]]
+
+* Specifying classes to render
+:PROPERTIES:
+:CUSTOM_ID: specifying-classes-to-render
+:END:
+
+A typical Java application has immense complexity. Beyond code written
+by the project's developers, there are typically many frameworks,
+libraries, and the Java standard library.
+
+Since JavaInspect uses reflection, it cannot easily distinguish between
+these sources. Usually you want to visualize only the code developed
+for your project, excluding frameworks like Spring. If you visualize
+all classes reachable from your project, the graph becomes huge and
+incomprehensible.
+
+JavaInspect can analyze compiled Java classes in two modes:
+1. Provide JAR files using the *-j* option.
+2. Provide filesystem directories as classpath roots using the *-c* option.
+
+JavaInspect uses the following algorithm to add classes to the graph:
+
+- All classes found in JAR files are added to the graph by default.
+- Classes found in filesystem directories are not added by default
+ unless explicitly referenced. (TODO: for consistency, these should
+ also be added by default)
+- If a whitelist is specified (*-w* option), classes not matching the
+ whitelist patterns are removed from the graph.
+- If a blacklist is specified (*-b* option), classes matching the
+ blacklist patterns are removed from the graph.
+- Root classes can be specified using the *-r* option. JavaInspect
+ recursively discovers all classes referenced by root classes and
+ adds them to the graph.
+
+* Commandline arguments
+:PROPERTIES:
+:CUSTOM_ID: available-commandline-arguments
+:END:
+
+
+- -j (existing files)... :: JAR file(s) to render.
+
+- -c (existing directories)... :: Classpath directories
+
+- -n (string) :: Graph name. (default: "graph")
+
+- --debug :: Show debug info.
+
+- -h, --help :: Show commandline usage help.
+
+- -k :: Keep dot file.
+
+- -ho ::
+ Hide orphaned classes.
+
+- -w (one to many strings)... :: Whitelist glob(s).
+
+- -b (one to many strings)... :: Blacklist glob(s).
+
+- -r (one to many strings)... :: root class(es).
+
+- -d (existing directory) :: Target directory. Default is current directory.
+
+- -t (options: png, svg) :: Target image type. Default is: svg.
+
+* Examples
+:PROPERTIES:
+:CUSTOM_ID: examples
+:END:
+
+Visualize a Java JAR file with all classes, hiding orphaned classes:
+
+#+begin_src sh
+ javainspect \
+ -j target/aukio-3d-*-SNAPSHOT.jar \
+ -d Documentation/graphs/ \
+ -n "All classes" \
+ -t png -ho
+#+end_src
+
+Visualize a Java JAR file with a whitelist filter, hiding orphaned classes:
+
+#+begin_src sh
+ javainspect \
+ -j target/aukio-3d-*-SNAPSHOT.jar \
+ -d Documentation/graphs/ \
+ -n "GUI" \
+ -t png \
+ -w "eu.svjatoslav.aukio.e3d.gui.*" \
+ -ho
+#+end_src
--- /dev/null
+:PROPERTIES:
+:CUSTOM_ID: usage-via-java-api
+:END:
+#+SETUPFILE: ~/.emacs.d/org-styles/html/darksun.theme
+#+TITLE: JavaInspect - Usage via Java API
+#+LANGUAGE: en
+#+LATEX_HEADER: \usepackage[margin=1.0in]{geometry}
+#+LATEX_HEADER: \usepackage{parskip}
+#+LATEX_HEADER: \usepackage[none]{hyphenat}
+
+#+OPTIONS: H:20 num:20
+#+OPTIONS: author:nil
+
+#+HTML_HEAD: <link rel="stylesheet" href="../style.css"/>
+
+[[file:../index.html#outline-container-usage][<- Back to index]]
+
+* Overview
+:PROPERTIES:
+:CUSTOM_ID: overview
+:END:
+Classes to be visualized must be available in the classpath.
+
+To include JavaInspect in the same classpath as your projects, there are
+two approaches:
+
+1. Add JavaInspect as a dependency in your project.
+
+2. Create a new Java project specifically for visualizing other
+ projects, and include both JavaInspect and your project's binary
+ artifacts (JARs) in the classpath. Binary JARs (without source code)
+ are sufficient since JavaInspect operates via reflection.
+
+Write simple control/configuration code for each project. I typically
+place this code in JUnit test directories since it doesn't need to be
+compiled into the final product or artifact.
+
+The control code generally does the following:
+1. Create a graph object.
+2. Java reflection/classloaders do not provide a mechanism to discover
+ all classes under a package. Therefore, manually add at least some
+ classes to the graph. For each class added, JavaInspect recursively
+ inspects it and adds all referenced classes.
+3. Graphs can easily become very large and complex, so optionally filter
+ important code using classname [[https://en.wikipedia.org/wiki/Glob_(programming)][glob]] pattern blacklists and/or
+ whitelists.
+4. Optionally tune rendering parameters:
+ + Remove orphaned classes (classes with no references) from the graph.
+ + Specify target directory for generated files (default: current directory).
+ + Keep intermediate GraphViz DOT file for later inspection.
+5. Render the graph.
+
+* Embedding JavaInspect in your Maven project
+:PROPERTIES:
+:CUSTOM_ID: embedding-javainspect-in-your-maven-project
+:END:
+
+Declare JavaInspect as dependency:
+#+BEGIN_SRC xml
+<dependencies>
+ ...
+ <dependency>
+ <groupId>eu.svjatoslav</groupId>
+ <artifactId>javainspect</artifactId>
+ <version>1.8</version>
+ </dependency>
+ ...
+</dependencies>
+#+END_SRC
+
+
+Add Maven repository to retrieve artifact from:
+#+BEGIN_SRC xml
+<repositories>
+ ...
+ <repository>
+ <id>svjatoslav.eu</id>
+ <name>Svjatoslav repository</name>
+ <url>https://www3.svjatoslav.eu/maven/</url>
+ </repository>
+ ...
+</repositories>
+#+END_SRC
+
+* Examples
+:PROPERTIES:
+:CUSTOM_ID: examples
+:END:
+** Example 1: Hand-picked objects
+:PROPERTIES:
+:CUSTOM_ID: example-1-individually-picked-objects
+:END:
+This example generates a class graph from hand-picked classes, visualizing
+JavaInspect itself.
+
+#+BEGIN_SRC java
+
+// Create graph
+final ClassGraph graph = new ClassGraph();
+
+// Add an object to the graph. JavaInspect detects the class from the object.
+graph.add(graph);
+
+// Also add a class directly.
+graph.add(Utils.class);
+
+// Keep the intermediate GraphViz DOT file for reference.
+graph.setKeepDotFile(true);
+
+// Generate an image named "JavaInspect.png" in the current directory
+graph.generateGraph("JavaInspect");
+
+#+END_SRC
+
+Compact version:
+#+BEGIN_SRC java
+new ClassGraph().add(randomObject, RandomClass.class)
+ .setKeepDotFile(true).generateGraph("JavaInspect");
+#+END_SRC
+
+Result:
+- Generated DOT file: [[file:../JavaInspect.dot][JavaInspect.dot]]
+- Generated PNG image: [[file:../JavaInspect.png][JavaInspect.png]]
+
+** Example 2: Embedded in another project
+:PROPERTIES:
+:CUSTOM_ID: example-2-graphviz-embedded-in-another-project
+:END:
+
+*Outdated:* this example refers to the old Sixth project (since renamed
+Aukio); =DataGraph.java= no longer exists there. Kept for reference.
+
+1. Download a [[https://www2.svjatoslav.eu/gitweb/?p=sixth.git;a=snapshot;h=HEAD;sf=tgz][Sixth project snapshot]].
+2. Inspect and run *DataGraph.java*.
--- /dev/null
+#+SETUPFILE: ~/.emacs.d/org-styles/html/darksun.theme
+#+TITLE: JavaInspect - Utility to visualize java software
+#+LANGUAGE: en
+#+LATEX_HEADER: \usepackage[margin=1.0in]{geometry}
+#+LATEX_HEADER: \usepackage{parskip}
+#+LATEX_HEADER: \usepackage[none]{hyphenat}
+
+#+OPTIONS: H:20 num:20
+#+OPTIONS: author:nil
+
+#+HTML_HEAD: <link rel="stylesheet" href="style.css"/>
+
+* Introduction
+:PROPERTIES:
+:CUSTOM_ID: overview
+:END:
+
+*JavaInspect* simplifies understanding source code by automatically
+visualizing program structure. See example graphs:
+
+- [[https://www3.svjatoslav.eu/projects/aukio-3d/graphs/][Diagrams]] for [[https://www3.svjatoslav.eu/projects/aukio-3d/][Aukio 3D engine project]].
++ [[file:graphs/][Diagrams for JavaInspect project itself]].
+
+*A very simple example:*
+[[file:example.png][file:example-thumbnail.png]]
+
+Graph legend:
+file:legend.png
+
+JavaInspect can be used as a [[file:Usage from CLI/][standalone commandline utility]] or as a
+[[file:Usage via Java API/][Java library]]. It uses Java's built-in reflection to discover and
+visualize any part of a Java program.
+
+After discovering application structure and optionally filtering out
+unimportant parts, JavaInspect produces a GraphViz DOT file describing
+the data to visualize. It then launches [[https://graphviz.org/][GraphViz]] to generate the
+graph image in PNG or SVG format.
+
+** See also
+:PROPERTIES:
+:CUSTOM_ID: see-also
+:END:
+
+Similar or alternative solutions:
++ http://www.class-visualizer.net/
++ [[https://github.com/pahen/madge][Madge - similar tool for JavaScript]]
+
+* Usage
+:PROPERTIES:
+:CUSTOM_ID: usage
+:END:
+JavaInspect can be used in two ways:
++ [[file:Usage from CLI/][As a standalone commandline utility]]
++ [[file:Usage via Java API/][As a Java library embedded in your project]]
+
+* Installation
+:PROPERTIES:
+:CUSTOM_ID: installation
+:END:
+[[http://www.graphviz.org/][GraphViz]] must be installed on your system.
+
+On Ubuntu/Debian, install GraphViz using:
+#+BEGIN_SRC sh
+sudo apt-get install graphviz
+#+END_SRC
+
+To use JavaInspect via Java API, no further installation is
+needed. JavaInspect will be embedded into your project as dependency.
+This is described in [[file:Usage via Java API/][usage via Java API]]. It will expect GraphViz to be
+available in the system.
+
+To use JavaInspect as a commandline tool, JavaInspect source
+repository has to be cloned locally. See: [[#getting-the-source-code][Getting the source code]].
+
+Then study and execute installation script:
+#+begin_src sh
+ cd commandline\ launcher
+ ./install
+#+end_src
+
+After installation, new commandline tool should be available
+: javainspect
+
+Quick commandline usage help can be viewed by issuing
+: javainspect --help
+
+* Source code
+:PROPERTIES:
+:CUSTOM_ID: getting-the-source-code
+:END:
+
+*This program is free software: released under Creative Commons Zero
+(CC0) license*
+
+Program author:
+- Svjatoslav Agejenko
+- Homepage: https://svjatoslav.eu
+- Email: mailto://svjatoslav@svjatoslav.eu
+- See also: [[https://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]]
+
+*Getting the source code:*
+- [[https://www2.svjatoslav.eu/gitweb/?p=javainspect.git;a=snapshot;h=HEAD;sf=tgz][Download latest source code snapshot in TAR GZ format]]
+- [[https://www2.svjatoslav.eu/gitweb/?p=javainspect.git;a=summary][Browse Git repository online]]
+- You can clone Git repository using git:
+ : git clone https://www3.svjatoslav.eu/git/javainspect.git
--- /dev/null
+.flex-center {
+ display: flex;
+ justify-content: center;
+}
+
+.flex-center video {
+ width: min(90%, 1000px);
+ height: auto;
+}
+
+.responsive-img {
+ width: min(100%, 1000px);
+ height: auto;
+}
+
+/* === SVG diagram theme === */
+svg > rect:first-child {
+ fill: #061018;
+}
+
+svg text[fill="#666"],
+svg text[fill="#999"] {
+ fill: #aaa !important;
+}
+
+svg line[stroke="#ccc"] {
+ stroke: #445566 !important;
+}
+
+svg {
+ background-color: #061018;
+ border-radius: 8px;
+ display: block;
+ margin: 0 auto;
+}
\ No newline at end of file
}
export_org_files_to_html() {
- echo "🔍 Searching for .org files in doc/ ..."
+ echo "🔍 Searching for .org files in Documentation/ ..."
echo "======================================="
- mapfile -t ORG_FILES < <(find doc -type f -name "*.org" | sort)
+ mapfile -t ORG_FILES < <(find Documentation -type f -name "*.org" | sort)
if [ ${#ORG_FILES[@]} -eq 0 ]; then
echo "❌ No .org files found!"
}
build_visualization_graphs() {
- rm -rf doc/graphs/
- mkdir -p doc/graphs/
+ rm -rf Documentation/graphs/
+ mkdir -p Documentation/graphs/
# Generate self-visualization of JavaInspect
- javainspect -j target/javainspect.jar -d doc/graphs/ -n "All classes" -t png -w "eu.svjatoslav.inspector.java.*" -ho
+ javainspect -j target/javainspect.jar -d Documentation/graphs/ -n "All classes" -t png -w "eu.svjatoslav.inspector.java.*" -ho
- meviz index -w doc/graphs/ -t "JavaInspect classes"
+ meviz index -w Documentation/graphs/ -t "JavaInspect classes"
}
# Build project jar file and JavaDocs
mvn clean package
# Put generated JavaDoc HTML files to documentation directory
-rm -rf doc/apidocs/
-cp -r target/apidocs/ doc/
+rm -rf Documentation/apidocs/
+cp -r target/apidocs/ Documentation/
# Publish Emacs org-mode files into HTML format
export_org_files_to_html
## Upload assembled documentation to server
echo "📤 Uploading to server..."
-rsync -avz --delete -e 'ssh -p 10006' doc/ \
+rsync -avz --delete -e 'ssh -p 10006' Documentation/ \
n0@www3.svjatoslav.eu:/mnt/big/projects/javainspect/
if [ $? -eq 0 ]; then
+++ /dev/null
-digraph Java {
-graph [rankdir=LR, overlap = false, concentrate=true];
-
-// Class: eu.svjatoslav.inspector.java.structure.Filter
- class_eu_svjatoslav_inspector_java_structure_Filter[label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0">
-
- // class descriptor header
- <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>Filter</B></FONT></TD></TR>
-
- // fields:
- // blacklistClassPatterns
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="blacklistClassPatterns" ALIGN="left"><FONT POINT-SIZE="11.0">blacklistClassPatterns</FONT></TD></TR>
- // whitelistClassPatterns
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="whitelistClassPatterns" ALIGN="left"><FONT POINT-SIZE="11.0">whitelistClassPatterns</FONT></TD></TR>
-
- // methods:
- // blacklistClassPattern
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="blacklistClassPattern" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">blacklistClassPattern</FONT></TD></TR>
- // isClassShown
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isClassShown" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isClassShown</FONT></TD></TR>
- // whitelistClassPattern
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="whitelistClassPattern" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">whitelistClassPattern</FONT></TD></TR>
- </TABLE>>, shape="none"];
-
- // field references to other classes
-
- // method references to other classes
-
-// Class: eu.svjatoslav.inspector.java.structure.FieldDescriptor
- class_eu_svjatoslav_inspector_java_structure_FieldDescriptor[label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0">
-
- // class descriptor header
- <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>FieldDescriptor</B></FONT></TD></TR>
-
- // fields:
- // name
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="name" ALIGN="left"><FONT POINT-SIZE="11.0">name</FONT></TD></TR>
- // parent
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="parent" ALIGN="left"><FONT POINT-SIZE="11.0">parent</FONT></TD></TR>
- // type
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="type" ALIGN="left"><FONT POINT-SIZE="11.0">type</FONT></TD></TR>
- // typeArguments
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="typeArguments" ALIGN="left"><FONT POINT-SIZE="11.0">typeArguments</FONT></TD></TR>
-
- // methods:
- // getDot
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getDot</FONT></TD></TR>
- // getEmbeddedDot
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getEmbeddedDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getEmbeddedDot</FONT></TD></TR>
- // getGraphId
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getGraphId" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getGraphId</FONT></TD></TR>
- // getOutsideVisibleReferencesCount
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="getOutsideVisibleReferencesCount" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getOutsideVisibleReferencesCount</FONT></TD></TR>
- // isVisible
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isVisible" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isVisible</FONT></TD></TR>
- </TABLE>>, shape="none"];
-
- // field references to other classes
-
- // method references to other classes
-
- // interfaces implemented by class: eu.svjatoslav.inspector.java.structure.FieldDescriptor
- class_eu_svjatoslav_inspector_java_structure_GraphElement -> class_eu_svjatoslav_inspector_java_structure_FieldDescriptor[style="dotted, tapered", color="olivedrab2", penwidth=20, dir="forward"];
-
-// Class: eu.svjatoslav.inspector.java.structure.MethodDescriptor
- class_eu_svjatoslav_inspector_java_structure_MethodDescriptor[label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0">
-
- // class descriptor header
- <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>MethodDescriptor</B></FONT></TD></TR>
-
- // fields:
- // name
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="name" ALIGN="left"><FONT POINT-SIZE="11.0">name</FONT></TD></TR>
- // parent
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="parent" ALIGN="left"><FONT POINT-SIZE="11.0">parent</FONT></TD></TR>
- // returnType
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="returnType" ALIGN="left"><FONT POINT-SIZE="11.0">returnType</FONT></TD></TR>
- // typeArguments
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="typeArguments" ALIGN="left"><FONT POINT-SIZE="11.0">typeArguments</FONT></TD></TR>
-
- // methods:
- // compareTo
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="compareTo" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">compareTo</FONT></TD></TR>
- // compareTo
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="compareTo" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">compareTo</FONT></TD></TR>
- // getDot
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getDot</FONT></TD></TR>
- // getEmbeddedDot
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getEmbeddedDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getEmbeddedDot</FONT></TD></TR>
- // getGraphId
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getGraphId" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getGraphId</FONT></TD></TR>
- // getMethodLabel
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getMethodLabel" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getMethodLabel</FONT></TD></TR>
- // getOutsideVisibleReferencesCount
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="getOutsideVisibleReferencesCount" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getOutsideVisibleReferencesCount</FONT></TD></TR>
- // isVisible
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isVisible" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isVisible</FONT></TD></TR>
- </TABLE>>, shape="none"];
-
- // field references to other classes
-
- // method references to other classes
-
- // interfaces implemented by class: eu.svjatoslav.inspector.java.structure.MethodDescriptor
- class_eu_svjatoslav_inspector_java_structure_GraphElement -> class_eu_svjatoslav_inspector_java_structure_MethodDescriptor[style="dotted, tapered", color="olivedrab2", penwidth=20, dir="forward"];
-
-// Class: eu.svjatoslav.inspector.java.structure.Utils
- class_eu_svjatoslav_inspector_java_structure_Utils[label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0">
-
- // class descriptor header
- <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>Utils</B></FONT></TD></TR>
-
- // fields:
- // darkColors
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="darkColors" ALIGN="left"><FONT POINT-SIZE="11.0">darkColors</FONT></TD></TR>
- // enumMethods
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="enumMethods" ALIGN="left"><FONT POINT-SIZE="11.0">enumMethods</FONT></TD></TR>
- // lastChosenDarkColor
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="lastChosenDarkColor" ALIGN="left"><FONT POINT-SIZE="11.0">lastChosenDarkColor</FONT></TD></TR>
- // lastChosenLightColor
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="lastChosenLightColor" ALIGN="left"><FONT POINT-SIZE="11.0">lastChosenLightColor</FONT></TD></TR>
- // lightColors
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="lightColors" ALIGN="left"><FONT POINT-SIZE="11.0">lightColors</FONT></TD></TR>
- // systemDataTypes
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="systemDataTypes" ALIGN="left"><FONT POINT-SIZE="11.0">systemDataTypes</FONT></TD></TR>
- // systemMethods
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="systemMethods" ALIGN="left"><FONT POINT-SIZE="11.0">systemMethods</FONT></TD></TR>
- // systemPackages
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="systemPackages" ALIGN="left"><FONT POINT-SIZE="11.0">systemPackages</FONT></TD></TR>
-
- // methods:
- // getNextDarkColor
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getNextDarkColor" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getNextDarkColor</FONT></TD></TR>
- // getNextLightColor
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getNextLightColor" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getNextLightColor</FONT></TD></TR>
- // initDarkColors
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="initDarkColors" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">initDarkColors</FONT></TD></TR>
- // initEnumMethods
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="initEnumMethods" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">initEnumMethods</FONT></TD></TR>
- // initLightColors
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="initLightColors" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">initLightColors</FONT></TD></TR>
- // initSystemDataTypes
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="initSystemDataTypes" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">initSystemDataTypes</FONT></TD></TR>
- // initSystemMethods
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="initSystemMethods" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">initSystemMethods</FONT></TD></TR>
- // initSystemPackages
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="initSystemPackages" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">initSystemPackages</FONT></TD></TR>
- // isEnumMethod
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isEnumMethod" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isEnumMethod</FONT></TD></TR>
- // isSystemDataType
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isSystemDataType" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isSystemDataType</FONT></TD></TR>
- // isSystemMethod
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isSystemMethod" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isSystemMethod</FONT></TD></TR>
- // isSystemPackage
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isSystemPackage" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isSystemPackage</FONT></TD></TR>
- </TABLE>>, shape="none"];
-
- // field references to other classes
-
- // method references to other classes
-
-// Class: eu.svjatoslav.inspector.java.structure.GraphElement
- class_eu_svjatoslav_inspector_java_structure_GraphElement[label=<<TABLE bgcolor="darkslategray1" BORDER="1" CELLBORDER="1" CELLSPACING="0">
-
- // class descriptor header
- <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>GraphElement</B></FONT></TD></TR>
-
- // methods:
- // getDot
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getDot</FONT></TD></TR>
- // getEmbeddedDot
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getEmbeddedDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getEmbeddedDot</FONT></TD></TR>
- // getGraphId
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getGraphId" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getGraphId</FONT></TD></TR>
- // isVisible
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isVisible" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isVisible</FONT></TD></TR>
- </TABLE>>, shape="none"];
-
- // method references to other classes
-
-// Class: eu.svjatoslav.inspector.java.structure.ClassGraph
- class_eu_svjatoslav_inspector_java_structure_ClassGraph[label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0">
-
- // class descriptor header
- <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>ClassGraph</B></FONT></TD></TR>
-
- // fields:
- // filter
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">Filter</FONT></td><TD PORT="filter" ALIGN="left"><FONT POINT-SIZE="11.0">filter</FONT></TD></TR>
- // nameToClassMap
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">Map</FONT></td><TD PORT="nameToClassMap" ALIGN="left"><FONT POINT-SIZE="11.0">nameToClassMap</FONT></TD></TR>
-
- // methods:
- // addClass
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="addClass" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">addClass</FONT></TD></TR>
- // addObject
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="addObject" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">addObject</FONT></TD></TR>
- // addProject
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="addProject" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">addProject</FONT></TD></TR>
- // generateGraph
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="generateGraph" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">generateGraph</FONT></TD></TR>
- // generateGraph
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="generateGraph" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">generateGraph</FONT></TD></TR>
- // hideOrphanedClasses
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="hideOrphanedClasses" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">hideOrphanedClasses</FONT></TD></TR>
- // render
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="render" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">render</FONT></TD></TR>
- </TABLE>>, shape="none"];
-
- // field references to other classes
- class_eu_svjatoslav_inspector_java_structure_ClassGraph:filter -> class_eu_svjatoslav_inspector_java_structure_Filter[label="filter", color="antiquewhite4", style="bold"];
-
- // method references to other classes
-
-// Class: eu.svjatoslav.inspector.java.structure.ClassDescriptor
- class_eu_svjatoslav_inspector_java_structure_ClassDescriptor[label=<<TABLE BORDER="4" CELLBORDER="1" CELLSPACING="0">
-
- // class descriptor header
- <TR><TD colspan="2" PORT="f0"><FONT POINT-SIZE="8.0" >eu.svjatoslav.inspector.java.structure</FONT><br/><FONT POINT-SIZE="25.0"><B>ClassDescriptor</B></FONT></TD></TR>
-
- // fields:
- // MAX_REFERECNES_COUNT
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="MAX_REFERECNES_COUNT" ALIGN="left"><FONT POINT-SIZE="11.0">MAX_REFERECNES_COUNT</FONT></TD></TR>
- // classGraph
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassGraph</FONT></td><TD PORT="classGraph" ALIGN="left"><FONT POINT-SIZE="11.0">classGraph</FONT></TD></TR>
- // distinctiveReferenceColor
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="distinctiveReferenceColor" ALIGN="left"><FONT POINT-SIZE="11.0">distinctiveReferenceColor</FONT></TD></TR>
- // fullyQualifiedName
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="fullyQualifiedName" ALIGN="left"><FONT POINT-SIZE="11.0">fullyQualifiedName</FONT></TD></TR>
- // incomingReferencesCount
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">int</FONT></td><TD PORT="incomingReferencesCount" ALIGN="left"><FONT POINT-SIZE="11.0">incomingReferencesCount</FONT></TD></TR>
- // interfaceColor
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="interfaceColor" ALIGN="left"><FONT POINT-SIZE="11.0">interfaceColor</FONT></TD></TR>
- // interfaces
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="interfaces" ALIGN="left"><FONT POINT-SIZE="11.0">interfaces</FONT></TD></TR>
- // isArray
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isArray" ALIGN="left"><FONT POINT-SIZE="11.0">isArray</FONT></TD></TR>
- // isEnum
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isEnum" ALIGN="left"><FONT POINT-SIZE="11.0">isEnum</FONT></TD></TR>
- // isInterface
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isInterface" ALIGN="left"><FONT POINT-SIZE="11.0">isInterface</FONT></TD></TR>
- // isShown
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isShown" ALIGN="left"><FONT POINT-SIZE="11.0">isShown</FONT></TD></TR>
- // methods
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">SortedSet</FONT></td><TD PORT="methods" ALIGN="left"><FONT POINT-SIZE="11.0">methods</FONT></TD></TR>
- // nameToFieldMap
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">Map</FONT></td><TD PORT="nameToFieldMap" ALIGN="left"><FONT POINT-SIZE="11.0">nameToFieldMap</FONT></TD></TR>
- // superClass
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">ClassDescriptor</FONT></td><TD PORT="superClass" ALIGN="left"><FONT POINT-SIZE="11.0">superClass</FONT></TD></TR>
- // superClassColor
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="superClassColor" ALIGN="left"><FONT POINT-SIZE="11.0">superClassColor</FONT></TD></TR>
-
- // methods:
- // areReferencesShown
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="areReferencesShown" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">areReferencesShown</FONT></TD></TR>
- // enlistFieldReferences
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="enlistFieldReferences" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">enlistFieldReferences</FONT></TD></TR>
- // enlistFields
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="enlistFields" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">enlistFields</FONT></TD></TR>
- // enlistImplementedInterfaces
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="enlistImplementedInterfaces" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">enlistImplementedInterfaces</FONT></TD></TR>
- // enlistMethodReferences
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="enlistMethodReferences" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">enlistMethodReferences</FONT></TD></TR>
- // enlistMethods
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="enlistMethods" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">enlistMethods</FONT></TD></TR>
- // enlistSuperClass
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="enlistSuperClass" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">enlistSuperClass</FONT></TD></TR>
- // generateDotHeader
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="generateDotHeader" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">generateDotHeader</FONT></TD></TR>
- // getAllFields
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">List</FONT></td><TD PORT="getAllFields" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getAllFields</FONT></TD></TR>
- // getBackgroundColor
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getBackgroundColor" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getBackgroundColor</FONT></TD></TR>
- // getBorderWidth
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getBorderWidth" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getBorderWidth</FONT></TD></TR>
- // getClassName
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getClassName" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getClassName</FONT></TD></TR>
- // getColor
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getColor" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getColor</FONT></TD></TR>
- // getDistinctiveColor
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getDistinctiveColor" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getDistinctiveColor</FONT></TD></TR>
- // getDot
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getDot</FONT></TD></TR>
- // getEmbeddedDot
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getEmbeddedDot" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getEmbeddedDot</FONT></TD></TR>
- // getGraphId
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getGraphId" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getGraphId</FONT></TD></TR>
- // getPackageName
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getPackageName" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getPackageName</FONT></TD></TR>
- // getParentClassesName
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">String</FONT></td><TD PORT="getParentClassesName" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">getParentClassesName</FONT></TD></TR>
- // hide
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="hide" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">hide</FONT></TD></TR>
- // hideClassIfNoReferences
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="hideClassIfNoReferences" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">hideClassIfNoReferences</FONT></TD></TR>
- // indexFields
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="indexFields" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">indexFields</FONT></TD></TR>
- // isVisible
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">boolean</FONT></td><TD PORT="isVisible" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">isVisible</FONT></TD></TR>
- // registerReference
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="registerReference" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">registerReference</FONT></TD></TR>
- // setDistinctiveColor
- <TR><td ALIGN="right"><FONT POINT-SIZE="8.0">void</FONT></td><TD PORT="setDistinctiveColor" ALIGN="left"><FONT COLOR ="red" POINT-SIZE="11.0">setDistinctiveColor</FONT></TD></TR>
- </TABLE>>, shape="none"];
-
- // field references to other classes
- class_eu_svjatoslav_inspector_java_structure_ClassDescriptor:classGraph -> class_eu_svjatoslav_inspector_java_structure_ClassGraph[label="classGraph", color="blueviolet", style="bold"];
- class_eu_svjatoslav_inspector_java_structure_ClassDescriptor:methods -> class_eu_svjatoslav_inspector_java_structure_MethodDescriptor[label="methods", color="brown4", style="bold"];
- class_eu_svjatoslav_inspector_java_structure_ClassDescriptor:nameToFieldMap -> class_eu_svjatoslav_inspector_java_structure_FieldDescriptor[label="nameToFieldMap", color="chartreuse4", style="bold"];
-
- // method references to other classes
- class_eu_svjatoslav_inspector_java_structure_ClassDescriptor:getAllFields -> class_eu_svjatoslav_inspector_java_structure_FieldDescriptor[label="getAllFields", color="chartreuse4", style="dotted, bold"];
-
- // interfaces implemented by class: eu.svjatoslav.inspector.java.structure.ClassDescriptor
- class_eu_svjatoslav_inspector_java_structure_GraphElement -> class_eu_svjatoslav_inspector_java_structure_ClassDescriptor[style="dotted, tapered", color="olivedrab2", penwidth=20, dir="forward"];
-}
+++ /dev/null
-:PROPERTIES:
-:CUSTOM_ID: usage-from-cli
-:END:
-#+SETUPFILE: ~/.emacs.d/org-styles/html/darksun.theme
-#+TITLE: JavaInspect - usage from commandline
-#+LANGUAGE: en
-#+LATEX_HEADER: \usepackage[margin=1.0in]{geometry}
-#+LATEX_HEADER: \usepackage{parskip}
-#+LATEX_HEADER: \usepackage[none]{hyphenat}
-
-#+OPTIONS: H:20 num:20
-#+OPTIONS: author:nil
-
-[[file:../index.org][Back to main documentation]]
-
-* Commandline arguments
-:PROPERTIES:
-:CUSTOM_ID: available-commandline-arguments
-:END:
-
-
-- -j (existing files)... :: JAR file(s) to render.
-
-- -c (existing directories)... :: Classpath directories
-
-- -n (string) :: Graph name. (default: "graph")
-
-- --debug :: Show debug info.
-
-- -h, --help :: Show commandline usage help.
-
-- -k :: Keep dot file.
-
-- -ho ::
- Hide orphaned classes.
-
-- -w (one to many strings)... :: Whitelist glob(s).
-
-- -b (one to many strings)... :: Blacklist glob(s).
-
-- -r (one to many strings)... :: root class(es).
-
-- -d (existing directory) :: Target directory. Default is current directory.
-
-- -t (options: png, svg) :: Target image type. Default is: svg.
-
-* Specifying classes to render
-:PROPERTIES:
-:CUSTOM_ID: specifying-classes-to-render
-:END:
-
-A typical Java application has immense complexity. Beyond code written
-by the project's developers, there are typically many frameworks,
-libraries, and the Java standard library.
-
-Since JavaInspect uses reflection, it cannot easily distinguish between
-these sources. Usually you want to visualize only the code developed
-for your project, excluding frameworks like Spring. If you visualize
-all classes reachable from your project, the graph becomes huge and
-incomprehensible.
-
-JavaInspect can analyze compiled Java classes in two modes:
-1. Provide JAR files using the *-j* option.
-2. Provide filesystem directories as classpath roots using the *-c* option.
-
-JavaInspect uses the following algorithm to add classes to the graph:
-
-- All classes found in JAR files are added to the graph by default.
-- Classes found in filesystem directories are not added by default
- unless explicitly referenced. (TODO: for consistency, these should
- also be added by default)
-- If a whitelist is specified (*-w* option), classes not matching the
- whitelist patterns are removed from the graph.
-- If a blacklist is specified (*-b* option), classes matching the
- blacklist patterns are removed from the graph.
-- Root classes can be specified using the *-r* option. JavaInspect
- recursively discovers all classes referenced by root classes and
- adds them to the graph.
-
-* Examples
-:PROPERTIES:
-:CUSTOM_ID: examples
-:END:
-
-Visualize a Java JAR file with all classes, hiding orphaned classes:
-
-#+begin_src sh
- javainspect \
- -j target/sixth-3d-*-SNAPSHOT.jar \
- -d doc/graphs/ \
- -n "All classes" \
- -t png -ho
-#+end_src
-
-Visualize a Java JAR file with a whitelist filter, hiding orphaned classes:
-
-#+begin_src sh
- javainspect \
- -j target/sixth-3d-*-SNAPSHOT.jar \
- -d doc/graphs/ \
- -n "GUI" \
- -t png \
- -w "eu.svjatoslav.sixth.e3d.gui.*" \
- -ho
-#+end_src
+++ /dev/null
-:PROPERTIES:
-:CUSTOM_ID: usage-via-java-api
-:END:
-#+SETUPFILE: ~/.emacs.d/org-styles/html/darksun.theme
-#+TITLE: JavaInspect - Usage via Java API
-#+LANGUAGE: en
-#+LATEX_HEADER: \usepackage[margin=1.0in]{geometry}
-#+LATEX_HEADER: \usepackage{parskip}
-#+LATEX_HEADER: \usepackage[none]{hyphenat}
-
-#+OPTIONS: H:20 num:20
-#+OPTIONS: author:nil
-
-[[file:../index.org][Back to main documentation]]
-
-* Overview
-:PROPERTIES:
-:CUSTOM_ID: overview
-:END:
-Classes to be visualized must be available in the classpath.
-
-To include JavaInspect in the same classpath as your projects, there are
-two approaches:
-
-1. Add JavaInspect as a dependency in your project.
-
-2. Create a new Java project specifically for visualizing other
- projects, and include both JavaInspect and your project's binary
- artifacts (JARs) in the classpath. Binary JARs (without source code)
- are sufficient since JavaInspect operates via reflection.
-
-Write simple control/configuration code for each project. I typically
-place this code in JUnit test directories since it doesn't need to be
-compiled into the final product or artifact.
-
-The control code generally does the following:
-1. Create a graph object.
-2. Java reflection/classloaders do not provide a mechanism to discover
- all classes under a package. Therefore, manually add at least some
- classes to the graph. For each class added, JavaInspect recursively
- inspects it and adds all referenced classes.
-3. Graphs can easily become very large and complex, so optionally filter
- important code using classname [[https://en.wikipedia.org/wiki/Glob_(programming)][glob]] pattern blacklists and/or
- whitelists.
-4. Optionally tune rendering parameters:
- + Remove orphaned classes (classes with no references) from the graph.
- + Specify target directory for generated files (default: current directory).
- + Keep intermediate GraphViz DOT file for later inspection.
-5. Render the graph.
-
-* Examples
-** Example 1: Hand-picked objects
-:PROPERTIES:
-:CUSTOM_ID: example-1-individually-picked-objects
-:END:
-This example generates a class graph from hand-picked classes, visualizing
-JavaInspect itself.
-
-#+BEGIN_SRC java
-
-// Create graph
-final ClassGraph graph = new ClassGraph();
-
-// Add an object to the graph. JavaInspect detects the class from the object.
-graph.add(graph);
-
-// Also add a class directly.
-graph.add(Utils.class);
-
-// Keep the intermediate GraphViz DOT file for reference.
-graph.setKeepDotFile(true);
-
-// Generate an image named "JavaInspect.png" in the current directory
-graph.generateGraph("JavaInspect");
-
-#+END_SRC
-
-Compact version:
-#+BEGIN_SRC java
-new ClassGraph().add(randomObject, RandomClass.class)
- .setKeepDotFile(true).generateGraph("JavaInspect");
-#+END_SRC
-
-Result:
-- Generated DOT file: [[file:../JavaInspect.dot][JavaInspect.dot]]
-- Generated PNG image: [[file:../JavaInspect.png][JavaInspect.png]]
-
-** Example 2: Embedded in another project
-:PROPERTIES:
-:CUSTOM_ID: example-2-graphviz-embedded-in-another-project
-:END:
-
-1. Download a [[https://www2.svjatoslav.eu/gitweb/?p=sixth.git;a=snapshot;h=HEAD;sf=tgz][Sixth project snapshot]].
-2. Inspect and run *DataGraph.java*.
-
-* Embedding JavaInspect in your Maven project
-:PROPERTIES:
-:CUSTOM_ID: embedding-javainspect-in-your-maven-project
-:END:
-
-Declare JavaInspect as dependency:
-#+BEGIN_SRC xml
-<dependencies>
- ...
- <dependency>
- <groupId>eu.svjatoslav</groupId>
- <artifactId>javainspect</artifactId>
- <version>1.8</version>
- </dependency>
- ...
-</dependencies>
-#+END_SRC
-
-
-Add Maven repository to retrieve artifact from:
-#+BEGIN_SRC xml
-<repositories>
- ...
- <repository>
- <id>svjatoslav.eu</id>
- <name>Svjatoslav repository</name>
- <url>https://www3.svjatoslav.eu/maven/</url>
- </repository>
- ...
-</repositories>
-#+END_SRC
+++ /dev/null
-#+SETUPFILE: ~/.emacs.d/org-styles/html/darksun.theme
-#+TITLE: JavaInspect - Utility to visualize java software
-#+LANGUAGE: en
-#+LATEX_HEADER: \usepackage[margin=1.0in]{geometry}
-#+LATEX_HEADER: \usepackage{parskip}
-#+LATEX_HEADER: \usepackage[none]{hyphenat}
-
-#+OPTIONS: H:20 num:20
-#+OPTIONS: author:nil
-
-* Introduction
-:PROPERTIES:
-:CUSTOM_ID: overview
-:END:
-
-*JavaInspect* simplifies understanding source code by automatically
-visualizing program structure. See example graphs:
-
-- [[https://www3.svjatoslav.eu/projects/sixth-3d/graphs/][Diagrams]] for [[https://www3.svjatoslav.eu/projects/sixth-3d/][Sixth 3D engine project]].
-+ [[file:graphs/][Diagrams for JavaInspect project itself]].
-
-*A very simple example:*
-[[file:example.png][file:example-thumbnail.png]]
-
-Graph legend:
-file:legend.png
-
-JavaInspect can be used as a [[file:Usage from CLI/][standalone commandline utility]] or as a
-[[file:Usage via Java API/][Java library]]. It uses Java's built-in reflection to discover and
-visualize any part of a Java program.
-
-See [[#usage][usage]] to learn how to use JavaInspect.
-
-After discovering application structure and optionally filtering out
-unimportant parts, JavaInspect produces a GraphViz DOT file describing
-the data to visualize. It then launches [[https://graphviz.org/][GraphViz]] to generate the
-graph image in PNG or SVG format.
-
-** See also
-:PROPERTIES:
-:CUSTOM_ID: see-also
-:END:
-
-Similar or alternative solutions:
-+ http://www.class-visualizer.net/
-+ [[https://github.com/pahen/madge][Madge - similar tool for JavaScript]]
-
-* Installation
-:PROPERTIES:
-:CUSTOM_ID: installation
-:END:
-[[http://www.graphviz.org/][GraphViz]] must be installed on your system.
-
-On Ubuntu/Debian, install GraphViz using:
-#+BEGIN_SRC sh
-sudo apt-get install graphviz
-#+END_SRC
-
-To use JavaInspect via Java API, no further installation is
-needed. JavaInspect will be embedded into your project as dependency.
-This is described in [[file:Usage via Java API/][usage via Java API]]. It will expect GraphViz to be
-available in the system.
-
-To use JavaInspect as a commandline tool, JavaInspect source
-repository has to be cloned locally. See: [[#getting-the-source-code][Getting the source code]].
-
-Then study and execute installation script:
-#+begin_src sh
- cd commandline\ launcher
- ./install
-#+end_src
-
-After installation, new commandline tool should be available
-: javainspect
-
-Quick commandline usage help can be viewed by issuing
-: javainspect --help
-
-* Usage
-:PROPERTIES:
-:CUSTOM_ID: usage
-:END:
-JavaInspect can be used in two ways:
-+ [[file:Usage from CLI/][As a standalone commandline utility]]
-+ [[file:Usage via Java API/][As a Java library embedded in your project]]
-
-* Source code
-:PROPERTIES:
-:CUSTOM_ID: getting-the-source-code
-:END:
-
-*This program is free software: released under Creative Commons Zero
-(CC0) license*
-
-Program author:
-- Svjatoslav Agejenko
-- Homepage: https://svjatoslav.eu
-- Email: mailto://svjatoslav@svjatoslav.eu
-- See also: [[https://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]]
-
-*Getting the source code:*
-- [[https://www2.svjatoslav.eu/gitweb/?p=javainspect.git;a=snapshot;h=HEAD;sf=tgz][Download latest source code snapshot in TAR GZ format]]
-- [[https://www2.svjatoslav.eu/gitweb/?p=javainspect.git;a=summary][Browse Git repository online]]
-- You can clone Git repository using git:
- : git clone https://www3.svjatoslav.eu/git/javainspect.git
<description>Utility to visualize Java code</description>
<properties>
- <java.version>1.8</java.version>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
+ <java.version>21</java.version>
+ <maven.compiler.source>21</maven.compiler.source>
+ <maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
- <source>1.8</source>
- <target>1.8</target>
+ <source>21</source>
+ <target>21</target>
<optimize>true</optimize>
<encoding>UTF-8</encoding>
</configuration>
<dependency>
<groupId>eu.svjatoslav</groupId>
<artifactId>svjatoslavcommons</artifactId>
- <version>1.9</version>
+ <version>2.0.0</version>
</dependency>
<dependency>
<groupId>eu.svjatoslav</groupId>