build: upgrade to Java 21 and reorganize documentation master
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sun, 27 Sep 2026 15:04:10 +0000 (18:04 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sun, 27 Sep 2026 15:04:10 +0000 (18:04 +0300)
Bump java.version, maven.compiler source/target and the compiler
plugin configuration from 1.8 to 21.

Rename doc/ to Documentation/ following the house convention, updating
.gitignore, Tools/Update web site and AGENTS.md accordingly.

Reorganize the Documentation pages into prerequisite reading order:
the overview page leads with Introduction and Usage before
Installation and Source code; the CLI page explains class selection
concepts before the argument reference; the Java API page covers
Maven embedding before the examples.

Fix stale content: retarget sixth-3d links to the renamed Aukio 3D
project site, update CLI examples to aukio-3d artifacts and packages,
and mark the embedded-project example as outdated.

Align with the shared doc-set conventions: add the canonical
style.css, link it from every page via HTML_HEAD, give every heading
a CUSTOM_ID, use anchor-form back-links on sub-pages, and record the
conventions in AGENTS.md.

23 files changed:
.gitignore
AGENTS.md
Documentation/JavaInspect full project.png [new file with mode: 0644]
Documentation/JavaInspect.dot [new file with mode: 0644]
Documentation/JavaInspect.png [new file with mode: 0644]
Documentation/Usage from CLI/index.org [new file with mode: 0644]
Documentation/Usage via Java API/index.org [new file with mode: 0644]
Documentation/example-thumbnail.png [new file with mode: 0644]
Documentation/example.png [new file with mode: 0644]
Documentation/index.org [new file with mode: 0644]
Documentation/legend.png [new file with mode: 0644]
Documentation/style.css [new file with mode: 0644]
Tools/Update web site
doc/JavaInspect full project.png [deleted file]
doc/JavaInspect.dot [deleted file]
doc/JavaInspect.png [deleted file]
doc/Usage from CLI/index.org [deleted file]
doc/Usage via Java API/index.org [deleted file]
doc/example-thumbnail.png [deleted file]
doc/example.png [deleted file]
doc/index.org [deleted file]
doc/legend.png [deleted file]
pom.xml

index 6c235d2..f532c33 100755 (executable)
@@ -9,5 +9,5 @@ dependency-reduced-pom.xml
 /JavaInspect.dot
 /JavaInspect.svg
 *.html
-/doc/graphs/
-/doc/apidocs/
+/Documentation/graphs/
+/Documentation/apidocs/
index 93ead91..ee1a7ba 100644 (file)
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -228,8 +228,27 @@ mvn exec:java -Dexec.mainClass="eu.svjatoslav.inspector.java.RenderJavaInspect"
 
 # 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
diff --git a/Documentation/JavaInspect full project.png b/Documentation/JavaInspect full project.png
new file mode 100644 (file)
index 0000000..4d5ebba
Binary files /dev/null and b/Documentation/JavaInspect full project.png differ
diff --git a/Documentation/JavaInspect.dot b/Documentation/JavaInspect.dot
new file mode 100644 (file)
index 0000000..660c81c
--- /dev/null
@@ -0,0 +1,316 @@
+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"];
+}
diff --git a/Documentation/JavaInspect.png b/Documentation/JavaInspect.png
new file mode 100644 (file)
index 0000000..625a2da
Binary files /dev/null and b/Documentation/JavaInspect.png differ
diff --git a/Documentation/Usage from CLI/index.org b/Documentation/Usage from CLI/index.org
new file mode 100644 (file)
index 0000000..32764bc
--- /dev/null
@@ -0,0 +1,107 @@
+: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
diff --git a/Documentation/Usage via Java API/index.org b/Documentation/Usage via Java API/index.org
new file mode 100644 (file)
index 0000000..7e19641
--- /dev/null
@@ -0,0 +1,134 @@
+: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*.
diff --git a/Documentation/example-thumbnail.png b/Documentation/example-thumbnail.png
new file mode 100644 (file)
index 0000000..04f4195
Binary files /dev/null and b/Documentation/example-thumbnail.png differ
diff --git a/Documentation/example.png b/Documentation/example.png
new file mode 100644 (file)
index 0000000..d773c31
Binary files /dev/null and b/Documentation/example.png differ
diff --git a/Documentation/index.org b/Documentation/index.org
new file mode 100644 (file)
index 0000000..6372754
--- /dev/null
@@ -0,0 +1,105 @@
+#+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
diff --git a/Documentation/legend.png b/Documentation/legend.png
new file mode 100644 (file)
index 0000000..e206b4f
Binary files /dev/null and b/Documentation/legend.png differ
diff --git a/Documentation/style.css b/Documentation/style.css
new file mode 100644 (file)
index 0000000..3403e0e
--- /dev/null
@@ -0,0 +1,35 @@
+.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
index a58ff9c..c92c839 100755 (executable)
@@ -26,10 +26,10 @@ export_org_to_html() {
 }
 
 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!"
@@ -61,21 +61,21 @@ export_org_files_to_html() {
 }
 
 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
@@ -86,7 +86,7 @@ build_visualization_graphs
 
 ## 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
diff --git a/doc/JavaInspect full project.png b/doc/JavaInspect full project.png
deleted file mode 100644 (file)
index 4d5ebba..0000000
Binary files a/doc/JavaInspect full project.png and /dev/null differ
diff --git a/doc/JavaInspect.dot b/doc/JavaInspect.dot
deleted file mode 100644 (file)
index 660c81c..0000000
+++ /dev/null
@@ -1,316 +0,0 @@
-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"];
-}
diff --git a/doc/JavaInspect.png b/doc/JavaInspect.png
deleted file mode 100644 (file)
index 625a2da..0000000
Binary files a/doc/JavaInspect.png and /dev/null differ
diff --git a/doc/Usage from CLI/index.org b/doc/Usage from CLI/index.org
deleted file mode 100644 (file)
index 7311d6a..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-: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
diff --git a/doc/Usage via Java API/index.org b/doc/Usage via Java API/index.org
deleted file mode 100644 (file)
index a44747b..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-: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
diff --git a/doc/example-thumbnail.png b/doc/example-thumbnail.png
deleted file mode 100644 (file)
index 04f4195..0000000
Binary files a/doc/example-thumbnail.png and /dev/null differ
diff --git a/doc/example.png b/doc/example.png
deleted file mode 100644 (file)
index d773c31..0000000
Binary files a/doc/example.png and /dev/null differ
diff --git a/doc/index.org b/doc/index.org
deleted file mode 100644 (file)
index 020b2b9..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-#+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
diff --git a/doc/legend.png b/doc/legend.png
deleted file mode 100644 (file)
index e206b4f..0000000
Binary files a/doc/legend.png and /dev/null differ
diff --git a/pom.xml b/pom.xml
index e27daad..f253391 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -8,9 +8,9 @@
     <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>
@@ -28,8 +28,8 @@
                 <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>