Compare commits

...

555 Commits
V4_1 ... master

Author SHA1 Message Date
Diomidis Spinellis e83df07d5f
Merge pull request #65 from VillePekka/patch-1
Fix typo in README.md
2025-12-01 00:30:52 +02:00
VillePekka e79f81666b
Fix typo in README.md
Comparisson => Comparison
2025-11-30 23:19:24 +01:00
Diomidis Spinellis 893fa38908
Add D2 and comparison links 2023-10-27 13:33:55 +03:00
Diomidis Spinellis a4fa650471
Add related tools 2023-06-13 15:23:31 +03:00
Diomidis Spinellis 606976778e [maven-release-plugin] prepare for next development iteration 2023-05-23 14:59:36 +03:00
Diomidis Spinellis 8d7a3e4b5c [maven-release-plugin] prepare release R6_0_0 2023-05-23 14:59:31 +03:00
Diomidis Spinellis 2a471e5b8c
Merge pull request #64 from laurentschoelens/java9
jdk9 migration fixes
2023-04-08 20:58:59 +03:00
Laurent SCHOELENS 42c648b596 fix findClass for UMLNoteOptions / UMLOptions unqualified classes 2023-03-28 18:58:28 +02:00
Laurent SCHOELENS 5a058a3ace more readable else if statement 2023-03-28 18:58:20 +02:00
Laurent SCHOELENS 24e5822d7b extra fix for typeparameters in classes 2023-03-28 13:14:18 +02:00
Laurent SCHOELENS 7147eaa5ed fix simpleName v. qualifiedName for packageProccesing 2023-03-28 10:48:09 +02:00
Diomidis Spinellis 62acb7337b
Merge pull request #63 from laurentschoelens/java9
jdk9 : bugfixes and update readme
2023-03-27 17:53:37 +03:00
Laurent SCHOELENS de056154bd remove reporter diagnostic / fix class graph / make javase api 9 default / fix package-list and element-list api fetch 2023-03-27 14:52:04 +02:00
Laurent SCHOELENS 27d7821666 fix generation with primitive array 2023-03-27 12:31:35 +02:00
Laurent SCHOELENS 16c1937aad update readme 2023-03-27 12:24:31 +02:00
Laurent SCHOELENS 70929da1d0 make some fixes after run on bigger project 2023-03-27 12:18:46 +02:00
Diomidis Spinellis 6115e12837
Merge pull request #62 from laurentschoelens/java9
jdk9 port of UMLGraph
2023-03-24 17:57:20 +02:00
Laurent SCHOELENS d273b6a3ef fix junit dep / jdk11+ build 2023-03-24 16:11:29 +01:00
Laurent SCHOELENS cd8c3629a1 version running jdk9 2023-03-24 14:55:50 +01:00
Laurent SCHOELENS c8f805bdef reformat classes 2023-03-21 09:15:55 +01:00
Laurent SCHOELENS d80597d547 remove .classpath / .project files and add it to .gitignore 2023-03-21 08:15:34 +01:00
Diomidis Spinellis 09576db5ae Merge branch 'master' of github.com:dspinellis/UMLGraph 2019-03-25 22:17:17 +02:00
Diomidis Spinellis 75cc871a10 Correct version extraction when tags are missing
Issue: #55
2019-03-25 22:16:02 +02:00
Erich Schubert 0967a91289 Add -hideprivateinner option 2018-11-03 23:06:36 +01:00
Erich Schubert 0ba1798ac5 Point out jitpack.io option to get jars. 2018-11-03 21:45:04 +01:00
Erich Schubert bab25cbe35 invalid xml 2018-11-03 20:41:56 +01:00
Diomidis Spinellis 26c9f9d1e5
Merge pull request #54 from kno10/java8
Larger refactorings
2018-11-01 22:38:46 +02:00
Erich Schubert e93b793bd6 Get rid of these margins, then we don't need port="p" anymore. 2018-10-28 13:34:16 +01:00
Erich Schubert e27eeb4bc3 Simplify classinfo handling. 2018-10-27 23:23:47 +02:00
Erich Schubert 867dec5d9c fixup dot formatting 2018-10-27 23:23:47 +02:00
Erich Schubert 1d03695f8e Produce simpler dot files, reduce code duplication in edge generation. 2018-10-27 23:23:47 +02:00
Erich Schubert 8b39c4614f Improve node naming of inner classes. 2018-10-27 23:23:46 +02:00
Erich Schubert 7169d40228 Add -hideGenerics option. 2018-10-27 23:23:46 +02:00
Erich Schubert dc18c503e9 Improve class info handling. 2018-10-27 23:23:46 +02:00
Erich Schubert c7d8648352 Cleanup classToUrl 2018-10-27 23:18:32 +02:00
Erich Schubert aa15be7405 Determine context package only once. 2018-10-27 23:18:32 +02:00
Erich Schubert 1925d2f1c7 More StringUtil functionality. 2018-10-27 23:18:32 +02:00
Erich Schubert 08b8976076 Caching is not necessary with current JavaDoc (8, maybe even earlier) 2018-10-27 23:18:31 +02:00
Erich Schubert 1b29f70460 Avoid having to add/remove hyphens for all options. 2018-10-27 23:18:31 +02:00
Erich Schubert 2f27948475 Refactor font handling. 2018-10-27 23:18:31 +02:00
Erich Schubert 7d9f665d07 Refactor shape into enum pattern. 2018-10-27 23:18:31 +02:00
Erich Schubert 9ddf84129a Move visibility symbols into Visibility class. 2018-10-27 23:18:31 +02:00
Erich Schubert a4ab6f179a Have relation styles in a single place. 2018-10-27 23:18:31 +02:00
Erich Schubert fe2c0c3df1 Streamline code, smaller optimizations. 2018-10-27 23:18:31 +02:00
Erich Schubert f3e945c646 Remove warning in code obsoleted by commit #a29ba215 2018-10-27 23:08:20 +02:00
Erich Schubert 141c8a9353 Trivial simplification. 2018-10-27 21:30:17 +02:00
Erich Schubert fc1b199daf Better error reporting. 2018-10-27 21:30:17 +02:00
Erich Schubert 1e52483a86 Postpone test failues, to first generate the pngs 2018-10-27 21:30:17 +02:00
Erich Schubert f1be5aaee8 add 'clean' ant target 2018-10-27 21:30:17 +02:00
Erich Schubert f7df826f53 fix broken test, where undeclared package was lost previously, now preserved 2018-10-27 21:30:17 +02:00
Erich Schubert 644d148455 Exit code on errors. 2018-10-27 21:30:17 +02:00
Erich Schubert e51f53b25e Add -qualifyGenerics to optionLength. 2018-10-26 21:17:21 +02:00
Erich Schubert a29ba21580 Fix active class shape broken by commit 1b4c9763 + add test.
This was easy to break, because of a non-obvious logic.

Instead we now use the hack of just using a too large rowspan.
2018-10-26 01:32:31 +02:00
Erich Schubert bca0ceae17 Cleanup Options: move defaults to declaration rather than constructor. 2018-10-25 00:18:28 +02:00
Erich Schubert 71f74d3093 Move some basic string processing helpers into StringUtil. 2018-10-25 00:18:28 +02:00
Erich Schubert 1b4c97630d Old merge error / duplicated line? 2018-10-25 00:18:28 +02:00
Erich Schubert 477d5cc58a Fail on test failures. 2018-10-25 00:18:28 +02:00
Diomidis Spinellis e5bc6f1f8f Exit with an error on structural differences 2018-10-24 13:34:33 +03:00
Diomidis Spinellis e2595350fd Correct build status icon URL 2018-10-24 13:11:59 +03:00
Diomidis Spinellis 8806b89cd8 Do not set OS type
This avoids the following error java.lang.Runtime.exec:
java.lang.Error: generic is not a supported OS platform.
2018-10-24 13:11:59 +03:00
Diomidis Spinellis 70a7580e2c Install GraphViz as a CI dependency 2018-10-24 12:52:55 +03:00
Diomidis Spinellis cb77d617e9 Remove unneeded deps 2018-10-24 12:47:57 +03:00
Diomidis Spinellis 13bb2d54bc Remove confusing duplicate file 2018-10-24 12:47:11 +03:00
Diomidis Spinellis 27baa4a6be Add Travis CI configuration 2018-10-24 12:45:09 +03:00
Diomidis Spinellis 3eb6f8d034 Convert README into markdown 2018-10-24 12:45:09 +03:00
Diomidis Spinellis b5238b3bdc
Merge pull request #52 from kno10/patch-qualify-generics
add -!qualifyGenerics option that strips package names only in generics
2018-10-24 12:25:55 +03:00
Erich Schubert 0477f4b82d add -!qualifyGenerics option that strips package names only in generics
This is useful in combination with `-qualify`;
in particular with `-qualify -postfixpackage`

This version also supports *inner* classes, where the outer class has a
generic.

Test case: `p1.Class<A extends g1.G>.Inner<B super g2.G>`

Depending on `-qualify` and `-qualifyGenerics` this can become either:
```
p1.Class<A extends g1.G>.Inner<B super g2.G>
p1.Class<A extends G>.Inner<B super G>
Class<A extends g1.G>.Inner<B super g2.G>
Class<A extends G>.Inner<B super G>
```
on the long run, it may however be convenient to also allow hiding
generics completely, and/or show them just as diamonds. For example
`Class<>.Inner<>` as a shorthand. Other users will prefer to see the
constraint only, e.g., `Class<G>.Inner<G>`... it may need a list of
different named formatters.
2018-10-24 10:55:35 +02:00
Diomidis Spinellis 5de652cfeb
Merge pull request #53 from kno10/patch-includes
Add an @opt include option for the package view.
2018-10-23 23:33:01 +03:00
Erich Schubert 0e69b7a40f Add an @opt include option for the package view. 2018-10-21 03:38:40 +02:00
Diomidis Spinellis 132f389bcf
Merge pull request #50 from kno10/patch-4
Avoid repeated lowercasing
2018-08-14 14:32:09 +03:00
Diomidis Spinellis 7cc92e6fa2
Merge pull request #49 from kno10/patch-3
Strip generics from parent classes properly, fixes #20
2018-03-28 17:24:36 +03:00
Erich Schubert 40b24774eb Strip generics from parent classes properly
Fixes the handling of non-static inner classes `Parent<A>.Child` if the parent has generics, #20
2018-03-28 16:04:44 +02:00
Erich Schubert 021dc34d8e Avoid repeated lowercasing 2018-03-28 16:03:15 +02:00
Diomidis Spinellis 5cd82f641e
Merge pull request #48 from kno10/patch-1
Remove -verbose2 from docs
2018-03-28 15:47:38 +03:00
Erich Schubert ce3847a1e6
Remove -verbose2 from docs
According to the changelog, this option was removed.
2018-03-26 17:56:51 +02:00
Diomidis Spinellis 40b5a687cc Merge branch 'master' and update test data
To match the new -!autosize parameter.
2017-03-21 19:53:36 +02:00
Diomidis Spinellis c0b7962170 Update test data due to JavaDoc changes
From javadoc 1.8.0_20 to 1.8.0_121
2017-03-21 19:48:49 +02:00
Diomidis Spinellis d744535438 Merge pull request #45 from robross0606/master
Added "-autosize" parameter and fixed parameter matching bug with "!"
2017-03-21 19:47:26 +02:00
Robert Ross 160a7db3a7 Added "-autosize" parameter and fixed parameter matching bug with "!" 2017-03-21 13:20:15 -04:00
Diomidis Spinellis 5e854d5667 Merge pull request #43 from adrianN/patch-1
Update index.html
2017-03-15 17:49:19 +02:00
Adrian Neumann 962ad5af72 Update index.html
fix typo
2017-03-15 16:46:24 +01:00
Diomidis Spinellis e307530d8e Correct UMLGraph location 2016-10-24 20:38:25 +03:00
Diomidis Spinellis 6211164ca2 Merge pull request #34 from gousiosg/patch-1
Update documentation
2016-09-20 17:07:34 +03:00
Georgios Gousios 37dc189a29 s/SQO-OSS/Alitheia Core/
Also, add link to the annotated source code.
2016-09-20 15:05:14 +02:00
Diomidis Spinellis d0ede46da8 Correct URL 2016-09-16 23:47:03 +03:00
Diomidis Spinellis 30a611ec91 Update project web page location 2016-09-16 23:38:47 +03:00
Diomidis Spinellis a72c88fb70 Running testupdate requires bash 2016-09-16 23:34:03 +03:00
Diomidis Spinellis 09fab1724d Add reference to textual UML tool survey 2016-06-09 08:10:13 +03:00
Diomidis Spinellis db1a918e16 Remove repeated @override 2016-06-07 17:23:40 +03:00
Diomidis Spinellis ff13af7ea6 Merge pull request #32 from DevFactory/release/remove-dead-stores-fix-1
[squid:S1854] Dead stores should be removed
2016-06-07 17:22:20 +03:00
Diomidis Spinellis c4713960af Merge pull request #31 from DevFactory/release/replace-synchronized-classes-fix-1
[squid:S1149] Synchronized classes Vector, Hashtable, Stack and StringBuffer should not be used
2016-06-07 17:21:55 +03:00
Diomidis Spinellis a0ed8a2672 Merge pull request #30 from DevFactory/release/add-missing-override-annotation-fix-1
[squid:S1161] "@Override" annotation should be used on any method overriding (since Java 5) or implementing (since Java 6) another one
2016-06-07 17:21:36 +03:00
Diomidis Spinellis c4f32a5a74 Update test reference files 2016-06-07 17:20:48 +03:00
Diomidis Spinellis 86574a7824 Update Sun to Oracle URLs 2016-06-07 16:41:55 +03:00
Diomidis Spinellis 4425596017 Merge branch 'master' of github.com:dspinellis/UMLGraph 2016-06-07 16:10:47 +03:00
ayman abdelghany 1ec3be2f98 [squid:S1149] Synchronized classes Vector, Hashtable, Stack and StringBuffer should not be used 2016-06-07 14:12:05 +02:00
ayman abdelghany 105db10e1a [squid:S1854] Dead stores should be removed 2016-06-07 14:07:16 +02:00
ayman abdelghany 9f25167880 [squid:S1161] "@Override" annotation should be used on any method overriding (since Java 5) or implementing (since Java 6) another one 2016-06-07 14:04:11 +02:00
Diomidis Spinellis 23e7da7ca5 Merge pull request #15 from frankgrimes97/svg-uml-output
Output as SVG instead of PNG and minor cosmetic fixes.
2015-11-01 13:09:52 +02:00
Diomidis Spinellis 49a3f570bf Document package diagram generation 2015-10-05 15:14:30 +03:00
Diomidis Spinellis 93e69a4e24 Make umlgraph shell script work under Cygwin 2015-10-05 14:23:19 +03:00
Diomidis Spinellis ee82a7fd20 Update URLs for Javadoc and GraphViz 2014-10-29 09:23:04 +02:00
Diomidis Spinellis 17ab5f89f2 Update version 2014-10-29 00:19:04 +02:00
Diomidis Spinellis 9039a0011b [maven-release-plugin] prepare for next development iteration 2014-10-29 00:04:30 +02:00
Diomidis Spinellis 6700c90fe2 [maven-release-plugin] prepare release R5_7_2 2014-10-29 00:04:24 +02:00
Diomidis Spinellis 691cf7fe69 Add Version.java
Although it's auto-generated Maven wants it under SCM.
2014-10-29 00:03:19 +02:00
Diomidis Spinellis e2d2529ce6 [maven-release-plugin] prepare for next development iteration 2014-10-28 23:45:58 +02:00
Diomidis Spinellis 0a37b4e98f [maven-release-plugin] prepare release R5_7_1 2014-10-28 23:45:53 +02:00
Diomidis Spinellis 3c92579f87 Prepare snapshot for release 2014-10-28 23:45:25 +02:00
Diomidis Spinellis 43517f2a6d Merge branch 'master' of github.com:dspinellis/UMLGraph 2014-10-28 23:44:31 +02:00
Diomidis Spinellis ee39c4bca8 [maven-release-plugin] prepare release R5_7_1 2014-10-28 23:43:29 +02:00
Diomidis Spinellis 91157698e3 [maven-release-plugin] prepare release R5_7_1 2014-10-28 23:40:37 +02:00
Diomidis Spinellis d88df8470f Changes for deployment
See http://central.sonatype.org/pages/apache-maven.html
2014-10-28 23:38:59 +02:00
Diomidis Spinellis e5d0ce31d3 Add tags rule 2014-10-28 22:58:28 +02:00
Diomidis Spinellis 0a8e4a2481 Use OpenSSL for MD5 checksums 2014-10-28 21:54:52 +02:00
Diomidis Spinellis 0bf2c1e440 Use ActiveState Perl for doc building
Required for syntax coloring.
2014-10-28 21:53:01 +02:00
Diomidis Spinellis 76c7c6290c Update regression test reference files
Verified with:
for i in `cd dot-ref ; ls *.dot`; do ../tools/viscompare.sh $i; done

Some differences having to do with inference were found.  It is not
clear which version is correct.
2014-10-28 20:26:12 +02:00
Diomidis Spinellis 786d98cd71 Do not update files for trivial differences 2014-10-28 20:15:40 +02:00
Diomidis Spinellis abeb6c22e0 Update reference data test update for git 2014-10-28 20:07:01 +02:00
Diomidis Spinellis b23a483c1e Update diff for lowercase tag names 2014-10-28 20:01:04 +02:00
Diomidis Spinellis f687058ca3 Bring back comma that got lost in 52d95c3c 2014-10-28 19:54:57 +02:00
Diomidis Spinellis cc22b016ef Introduce required JavaDoc class path 2014-10-28 19:53:39 +02:00
Diomidis Spinellis ade4d6dfc6 Fix build/run of regression tests 2014-10-28 19:44:15 +02:00
Diomidis Spinellis d76d42066a Remove generics warning 2014-10-28 19:43:55 +02:00
Diomidis Spinellis 7fc14a491e Fix includeantruntime warning
Simple set its value to false.
See http://stackoverflow.com/questions/5103384/ant-warning-includeantruntime-was-not-set
2014-10-28 19:25:57 +02:00
Diomidis Spinellis da4d335f38 Remove obsolete variable 2014-10-28 19:07:44 +02:00
Diomidis Spinellis de854f562b Remove obsolete RCS tagging 2014-10-28 17:49:24 +02:00
Diomidis Spinellis fe9ac58af1 Disable importedClasses deprecation warning
In our case an attempt to get the imported classes is justified.
Although they are an implementation detail, we document the
implementation.
2014-10-28 17:23:47 +02:00
Diomidis Spinellis a8b1f1ff46 Remove auto-generated file 2014-10-28 17:07:14 +02:00
Diomidis Spinellis fa40aaf731 Get rid of Java generics warning
Casts are still needed, because Properties extends
Hashtable<Object, Object> instead of Hashtable<String, String>.
2014-10-28 17:04:59 +02:00
Diomidis Spinellis d46829bb01 Add methods required by Java 1.8 2014-10-28 16:38:14 +02:00
Diomidis Spinellis ac69e12d7a Remove obsolete RCS/CVS $Id$
Command used:
sed -i '/^# \$Id\$$/d;/^ \* \$Id\$$/d;/^<!-- \$Id\$ -->$/d;/\/\/ \$Id\$/d' $(fgrep -l \$Id $(git ls-files))
2014-10-28 16:29:43 +02:00
Diomidis Spinellis c1d994d650 Merge pull request #18 from tischda/master
check if source and dest are not already linked
2014-03-06 09:23:44 +02:00
Daniel TISCHER 52d95c3cc3 workaround empty label problem 2014-02-10 13:43:08 +01:00
Daniel TISCHER 8d77597da5 workaround for http://www.graphviz.org/mantisbt/view.php?id=2421 2014-02-09 11:50:05 +01:00
Daniel TISCHER a463b627fb check if source and dest are not already linked 2014-02-09 11:18:57 +01:00
Diomidis Spinellis 3bdff0e55b Fix float clearing for Chrome
Error pointed by: @gousiosg
2013-11-14 03:12:48 +02:00
Emanuel Pordes 44a146c03d Added width and height to svg object tag 2013-10-15 15:28:17 -04:00
Emanuel Pordes 41d93e14f6 Fix variable naming 2013-10-11 15:50:54 -04:00
Emanuel Pordes e58589e4c0 Output as SVG instead of PNG and minor cosmetic fixes. 2013-10-11 14:26:56 -04:00
Diomidis Spinellis 6202d34fa6 Merge pull request #14 from real-prometheus/master
Added support for options tags in ContextView and PackageView using the ...
2013-08-23 00:15:57 -07:00
real-prometheus 0435986b92 Added support for options tags in ContextView and PackageView using the UmlGraphDoc docklet for javadoc generation with integrated Uml. 2013-08-23 02:27:53 +02:00
Diomidis Spinellis bd246d364f Maven-related changes 2013-08-11 15:28:13 +03:00
Diomidis Spinellis e8b54cfde9 Add GitHub ribbon 2013-08-11 15:27:36 +03:00
Diomidis Spinellis 9240c4a012 [maven-release-plugin] prepare for next development iteration 2013-05-23 20:32:03 +03:00
Diomidis Spinellis 14fca5b59c [maven-release-plugin] prepare release R5_6_6 2013-05-23 20:31:53 +03:00
Diomidis Spinellis c67864269c [maven-release-plugin] prepare for next development iteration 2013-05-23 20:29:03 +03:00
Diomidis Spinellis bf757a720a [maven-release-plugin] prepare release R5_6_5 2013-05-23 20:28:49 +03:00
Diomidis Spinellis c713061dca Add dependency versions 2013-05-23 20:22:39 +03:00
Diomidis Spinellis 22f95917f4 Inherit Sonatype's pom 2013-05-23 20:08:50 +03:00
Diomidis Spinellis ef20511703 Merge branch 'master' of github.com:dspinellis/UMLGraph
Conflicts:
	src/main/java/org/umlgraph/doclet/Version.java
2013-05-23 19:53:17 +03:00
Diomidis Spinellis a54b9bfc40 For Maven to work Version.java must exist
New Version.java can be created with "ant version"
2013-05-23 19:44:52 +03:00
Diomidis Spinellis faedc3f0ff Correct handling of Version.java
It is generated automatically from the version and the git hash.
2013-05-23 19:05:57 +03:00
Diomidis Spinellis f6e263028a Merge branch 'master' of https://github.com/Stummi/UMLGraph into Stummi-master 2013-05-23 18:52:27 +03:00
Diomidis Spinellis af5f800017 Update regression test reference data
This matches JDK 1.7 javadoc
2013-05-23 18:45:27 +03:00
Diomidis Spinellis 7621aba4df Add state-machine reference 2013-05-23 18:45:16 +03:00
Diomidis Spinellis 37cd34d38f Merge branch 'master' of github.com:dspinellis/UMLGraph 2013-05-23 18:27:05 +03:00
Diomidis Spinellis f517c8704e Merge pull request #12 from CyrilDeverson/master
Fix a NullPointerException
2013-05-23 08:26:11 -07:00
CyrilDeverson 22d63f06b4 Update ClassGraph.java 2013-05-23 15:54:16 +02:00
Diomidis Spinellis 4fe531b9d0 Add argoumk-graphiviz reference 2012-12-18 17:33:41 +02:00
Michael Stummvoll 6bedd8a96b changed version to 5.6.5 to be higher than the last 5.6.4 2012-12-17 11:48:45 +01:00
Michael Stummvoll 93b9f60f0d changes in the pom.xml:
- added an configuration for the maven-compiler-plugin
- added project.build.sourceEncoding
- added the dependency for the tools.jar
2012-12-17 09:23:51 +01:00
Michael Stummvoll 22bee0462c Merge git://github.com/gousiosg/UMLGraph - base for a fixed maven build 2012-12-17 09:21:32 +01:00
Diomidis Spinellis cdcbba6b74 Merge pull request #8 from jcaden/master
Fix package insertion point for Java 7
2012-11-07 02:43:48 -08:00
Jose Antonio Santos Cadenas 6c630e04b6 Fix package insertion point Patter for java 7 2012-11-07 11:32:46 +01:00
Diomidis Spinellis b91039f798 Add pointer to Sketchlet 2012-09-02 17:44:22 +03:00
Georgios Gousios 0508d2e2e8 Add developerConnection link 2012-06-27 20:43:36 +02:00
Georgios Gousios 72a7eef460 Correctly formatted SCM URL 2012-06-27 19:35:13 +02:00
Georgios Gousios a000667eac Include main class in jar manifest file 2012-06-27 19:32:24 +02:00
Georgios Gousios 841067cda1 Generate UmlGraph-based Javadoc 2012-06-27 19:32:07 +02:00
Georgios Gousios ce821892f2 Don't ignore Version.java. Ignore Intellij project files. 2012-06-27 18:39:54 +02:00
Georgios Gousios f309d89222 Do not autogenerate Version class on every compile.
Instead, use a properties template file and Maven filtering
to set the correct version while building the output jar.
At runtime, load the properties file from the classpath and
statically initialize the version parameter.
2012-06-27 18:35:02 +02:00
Georgios Gousios 381301b1e3 Move test sources to Maven standard test dir 2012-06-27 18:31:33 +02:00
Georgios Gousios 897edbda76 Produce Javadoc and src jars 2012-06-27 17:55:57 +02:00
Georgios Gousios b8a974e20f Make UMLGraph maven compatible 2012-06-27 17:46:47 +02:00
Diomidis Spinellis c3fe00bb0c Merge pull request #5 from jean/master
Drive-by typo fix
2012-06-04 00:04:36 -07:00
Jean Jordaan 8d63c48637 Fix typo 2012-06-04 13:24:25 +07:00
Diomidis Spinellis 402d57a502 Add Maven artifact deployment
Issue: #1
2012-05-31 19:04:17 +03:00
Diomidis Spinellis 8c637cf8d8 Make version compatible with Maven's conventions 2012-05-30 17:29:45 +03:00
Diomidis Spinellis 49fb9100a2 Fix javadoc parameter documentation 2012-05-27 14:58:12 +03:00
Diomidis Spinellis 3a599f0be9 Adjust last-modified timestamp to git 2012-05-18 11:48:07 +03:00
Diomidis Spinellis c19d24b5db Add UML Distilled book image 2012-05-18 11:40:56 +03:00
Diomidis Spinellis 24a435a751 Create static-web rule 2012-05-18 11:15:44 +03:00
Diomidis Spinellis 0fd6bc912a Correct file's location 2012-05-18 11:15:29 +03:00
Diomidis Spinellis ea8deeca54 Git-ignore test results one directory level up 2012-05-18 11:07:12 +03:00
Diomidis Spinellis e92131fdca Improve file specifications 2012-05-18 11:01:42 +03:00
Diomidis Spinellis 5851e43722 Document release
* Add release data
* Add new version placeholder
* Document GitHub move
* Fix XML tag
2012-05-13 21:04:47 +03:00
Diomidis Spinellis d5d31d7bc6 Clarify file types 2012-05-13 20:57:09 +03:00
Diomidis Spinellis 76172b583f Add rule to make the threading tools 2012-05-12 18:59:32 +03:00
Diomidis Spinellis eecc4076d5 Create version file in build.xml
Issue: #3
2012-05-10 17:15:02 +03:00
Diomidis Spinellis a9de3300c0 Add contributors 2012-05-02 18:26:36 +03:00
Diomidis Spinellis caae7d949b Add missing media files 2012-04-25 14:23:52 +03:00
Diomidis Spinellis 13ae4f5aea Legacy file reorganization 2012-04-25 13:38:55 +03:00
Diomidis Spinellis 4bfd0200fa Mediawiki formatting fixes 2012-04-25 13:22:40 +03:00
Diomidis Spinellis 4af68f0d3a GitHub documentation 2012-04-25 12:58:19 +03:00
Diomidis Spinellis e87bfa6d8a Tools are now on the Gygwin path 2012-04-25 12:57:44 +03:00
Diomidis Spinellis 87a3fc7df3 Add files missing from repo 2012-04-25 12:56:18 +03:00
Diomidis Spinellis 6d701ce7a3 Freshmeat renamed to free(code) 2012-04-25 12:21:01 +03:00
Diomidis Spinellis f528f5c973 Move from CVS to Git 2012-04-25 12:03:34 +03:00
Diomidis Spinellis d54d8bf7da Added ability to make aggregate relationships navigable
The @has and @composed now also have corresponding @navhas
and @navcomposed relationships.

Contributed by: Alan Jeffrey.
2012-04-23 18:30:50 +00:00
Diomidis Spinellis 6fcc5df6ef Add missing @inferdepinpackage 2012-04-17 10:46:57 +00:00
Diomidis Spinellis 41b09d5e62 Upgrade links to JDK 7 2012-04-17 10:00:21 +00:00
Diomidis Spinellis 72ec8f2f41 Document changes 2012-04-17 09:23:08 +00:00
Diomidis Spinellis 3f8eb67d7b Update reference for new JDK version 2012-04-17 09:23:07 +00:00
Diomidis Spinellis eae2f33497 Compatibility with JDK 7
Submitted by: Stefano Martina
2012-04-17 08:39:26 +00:00
Diomidis Spinellis e8fcbbf72c Improvements after reviewing 2012-04-17 08:13:23 +00:00
Diomidis Spinellis 6e9eea3f90 Add italic font spec, expand diagram types 2012-04-17 07:09:28 +00:00
Diomidis Spinellis a4136c20d5 Add Java Power Tools link 2012-04-10 18:38:32 +00:00
Diomidis Spinellis 9cbc8dc9d2 Fix XML validation errors. 2011-01-08 18:38:06 +00:00
Diomidis Spinellis 17efed7a0c Release. 2011-01-08 18:24:44 +00:00
Diomidis Spinellis 88440e18d8 Fix to ensure that class images only appear once.
Contributed by:	Zhigang Xie.
2011-01-08 18:20:27 +00:00
Diomidis Spinellis 0c403eb9e2 Fresh reference data following change to make maps appearing in HTML
content clickable.
2011-01-08 18:19:55 +00:00
Diomidis Spinellis 2a4c1a936e Make the maps of diagrams appearing in HTML content clickable.
Contributed by:	Bernd Onasch
2011-01-07 09:52:45 +00:00
Diomidis Spinellis d7384d7c0f Make the generation of diamond shapes compatible with GraphViz 2.27.
(Contributed by Soraya Santana de la Fe.)
2010-11-27 14:07:46 +00:00
Diomidis Spinellis 1ebaea9eb0 Add answer provided by Georgios Gousios. 2010-11-01 06:55:23 +00:00
Diomidis Spinellis 233c924f18 Add contributors of 5.2 5.3 2010-05-25 17:43:05 +00:00
Diomidis Spinellis eca48d28d3 New version. 2010-05-24 07:45:27 +00:00
Diomidis Spinellis b70d336608 Do not show relations of hidden fields.
Contributed by: Cimballi
2010-05-24 07:29:29 +00:00
Diomidis Spinellis 708035d5f2 Support for javadoc's -linkoffline option.
Contributed by:	Nikita Kozlov
2010-05-24 07:18:03 +00:00
Diomidis Spinellis 630779e815 Update for new version. 2010-05-24 06:33:10 +00:00
Diomidis Spinellis e82a26fa64 Use logical font rather than font name for italics.
This fixes a problem with unresolved fonts under Windows and
Graphviz versions 2.26.3 and newer.
(Suggested by Przemyslaw Szufel.)
2010-05-24 06:07:28 +00:00
Diomidis Spinellis da28a7e4ff - New -dotexecutable option.
- UmlGraphDoc supports @opt options.

(Contributed by Laird Nelson.)
2010-05-24 05:46:57 +00:00
Diomidis Spinellis d69eda41a3 Add another line that can make files different without a problem. 2010-05-24 05:22:04 +00:00
Diomidis Spinellis be16a6b0ee Documentation generated with UMLGraph will process correctly
non-ASCII characters.
Fix contributed by: Gunho Kim
2009-11-12 08:06:09 +00:00
Diomidis Spinellis c3cba69d67 Add link to UML sequence diagram DSL.
Fix duplication in the contributor list.
2009-09-08 05:56:34 +00:00
Diomidis Spinellis 767f30bcf9 Add link to phpCallGraph. 2009-08-06 08:12:53 +00:00
Diomidis Spinellis 41d8a6b2e2 Sequence diagrams provide an option to specify whether objects are
underlined or not.
2009-02-10 10:12:05 +00:00
Diomidis Spinellis 75f8df20de Private fields. 2009-02-10 10:11:38 +00:00
Diomidis Spinellis e591d58a40 Pre-release. 2008-12-03 14:09:22 +00:00
Diomidis Spinellis 41b61d45e0 Corrected NullPointerException occurring when no global options were
available.
Fix supplied by Bernd Blacha.
2008-10-25 07:26:40 +00:00
Diomidis Spinellis 569d6849cc Fixed exception when an unknown class dependency is specified. 2008-10-20 09:55:42 +00:00
Diomidis Spinellis 328901d184 Corrected case of the tools.jar filename in the umlgraph shell script. 2008-09-12 15:26:53 +00:00
Diomidis Spinellis 5c21f3a786 Integrate web facelift into directory tree and new build process. 2008-08-27 17:16:02 +00:00
Diomidis Spinellis a54a65cad8 Web page facelift. 2008-08-27 15:57:04 +00:00
Diomidis Spinellis ad0b20256f Correct XML/XHTML errors. 2008-08-27 15:36:54 +00:00
Diomidis Spinellis 247bae4d13 Remove question that is no longer relevant. 2008-08-27 14:12:13 +00:00
Diomidis Spinellis d7eeaf436f Update to add missing names. 2008-08-27 14:11:53 +00:00
Diomidis Spinellis 1db49b4577 Improve UMLGraph references in the generated files. 2008-08-27 11:34:09 +00:00
Diomidis Spinellis aebaf73c38 Improve UMLGraph references in the generated files. 2008-08-27 11:34:08 +00:00
Diomidis Spinellis befd420ad4 Improve UMLGraph references in the generated files. 2008-08-27 11:34:07 +00:00
Diomidis Spinellis a105239cc6 Improve UMLGraph references in the generated files. 2008-08-27 11:34:06 +00:00
Diomidis Spinellis 157929db94 Improve UMLGraph references in the generated files. 2008-08-27 11:34:05 +00:00
Diomidis Spinellis 78f4617d08 Improve UMLGraph references in the generated files. 2008-08-27 11:34:04 +00:00
Diomidis Spinellis 3cc69df466 Improve UMLGraph references in the generated files. 2008-08-27 11:34:03 +00:00
Diomidis Spinellis 8e5ba0d321 Improve UMLGraph references in the generated files. 2008-08-27 11:34:02 +00:00
Diomidis Spinellis 1091f88537 Improve UMLGraph references in the generated files. 2008-08-27 11:34:01 +00:00
Diomidis Spinellis 51984abeb6 Improve UMLGraph references in the generated files. 2008-08-27 11:34:00 +00:00
Diomidis Spinellis 47361a08e9 Improve UMLGraph references in the generated files. 2008-08-27 11:33:59 +00:00
Diomidis Spinellis 94557ac9fc Improve UMLGraph references in the generated files. 2008-08-27 11:33:58 +00:00
Diomidis Spinellis e8608cd8f5 Update web page location. 2008-08-27 11:03:18 +00:00
Diomidis Spinellis 67afa1ca2a Minor pre-release fixes. 2008-08-27 11:02:14 +00:00
Diomidis Spinellis 3bd60dfe7a Link to the MoinMoin sequence diagrams support page. 2008-08-27 10:56:07 +00:00
Diomidis Spinellis f9f3092669 Prepare for release 5.1 2008-08-27 10:55:47 +00:00
Diomidis Spinellis 47b2933c5d Create javadocs with collapsed diagrams. 2008-08-27 10:50:16 +00:00
Diomidis Spinellis f15cf62d01 Fix support for the colappsible option. 2008-08-27 10:49:55 +00:00
Diomidis Spinellis a122641030 Link to Meera's JavaLobby article. 2008-08-27 10:41:26 +00:00
Diomidis Spinellis 797b0a53ce Reorganize the documentation of class diagram options. 2008-08-27 10:38:25 +00:00
Diomidis Spinellis 6c972e907d UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:20 +00:00
Diomidis Spinellis 81dbd74afc UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:19 +00:00
Diomidis Spinellis c756b2a6a7 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:18 +00:00
Diomidis Spinellis 87c6cff453 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:17 +00:00
Diomidis Spinellis abc9282a65 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:16 +00:00
Diomidis Spinellis c7f21798b2 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:15 +00:00
Diomidis Spinellis b1a551bf7b UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:14 +00:00
Diomidis Spinellis 1c2bae7d96 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:13 +00:00
Diomidis Spinellis 4d482a7efb UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:12 +00:00
Diomidis Spinellis 4369f5bf0b UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:11 +00:00
Diomidis Spinellis ea6d967519 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:10 +00:00
Diomidis Spinellis 0b726accbe UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:09 +00:00
Diomidis Spinellis 1427982399 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:08 +00:00
Diomidis Spinellis 7ce9ce6914 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:07 +00:00
Diomidis Spinellis c648ec0592 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:06 +00:00
Diomidis Spinellis fdb21fdf95 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:05 +00:00
Diomidis Spinellis 80cbbb19ee UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:04 +00:00
Diomidis Spinellis fb8b4b734d UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:03 +00:00
Diomidis Spinellis b7dc99292c UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:02 +00:00
Diomidis Spinellis 3f799fe638 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:01 +00:00
Diomidis Spinellis 689fbb000e UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:08:00 +00:00
Diomidis Spinellis 0555769921 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:07:59 +00:00
Diomidis Spinellis 42f1789dd6 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:07:58 +00:00
Diomidis Spinellis a934d72b48 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:07:57 +00:00
Diomidis Spinellis c607ed24ec UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:07:56 +00:00
Diomidis Spinellis 06f8a8c98e UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:07:55 +00:00
Diomidis Spinellis e1f11e65d3 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:07:54 +00:00
Diomidis Spinellis 7d56db2d84 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:07:53 +00:00
Diomidis Spinellis 4527cb9de0 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:07:52 +00:00
Diomidis Spinellis 2d8d15a997 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:07:51 +00:00
Diomidis Spinellis 17de32cf49 UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:07:50 +00:00
Diomidis Spinellis 285b7902ae UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:07:49 +00:00
Diomidis Spinellis 39a280a00f UmlGraphDoc now supports Javascript-collapsible UML diagrams.
(Franz Wilhelmstoetter)
2008-08-27 10:07:48 +00:00
Diomidis Spinellis 5da653bbf8 Add -nodesep and -ranksep options.
(Trustin Lee).
2008-08-16 09:32:18 +00:00
Diomidis Spinellis d8f18b8206 Add test update tool and procedure. 2008-08-16 09:02:46 +00:00
Diomidis Spinellis 5c6cb00f32 Make the class title appear as a tooltip when using -apidocroot.
(Anthony Callegaro)
2008-08-15 21:05:58 +00:00
Diomidis Spinellis 30d5235754 Add banner. 2008-03-17 08:42:35 +00:00
Diomidis Spinellis 3ee06c1f1c Fix license URL. 2008-03-15 11:23:25 +00:00
Diomidis Spinellis 14e65218ea Update Creative Commons license from 2.5 to 3.0. 2008-03-15 10:13:51 +00:00
Diomidis Spinellis b92066039f The guillemot characters are now output with their Unicode HTML numeric
escapes instead of their HTML symbolic values.  This makes the output
work correctly on Mac OS X, and also easier to validate with XML tools.
(patch submitted by Joshua Lim).
2008-01-16 11:01:38 +00:00
Diomidis Spinellis f74dbe01e7 Advice against pic2plot truncation. 2007-12-12 09:27:42 +00:00
Diomidis Spinellis dfb6bb46da Add change to version history. 2007-12-06 07:59:00 +00:00
Diomidis Spinellis c794b95d4a Correct nested class hyperlinks to Javadoc classes.
Submitted by:	David P. Caldwell
2007-12-06 07:11:49 +00:00
Diomidis Spinellis 7c5496dd99 Active classes now appear with a double vertical border, following UML2 2007-12-03 14:19:08 +00:00
Diomidis Spinellis edae9bd593 Update for moving to http://www.umlgraph.org 2007-11-29 13:34:57 +00:00
Diomidis Spinellis 3f44db55e4 Update location directory for www.umlgraph.org. 2007-11-29 13:29:05 +00:00
Diomidis Spinellis c68afc038a Separate old version links from the main page. 2007-11-29 13:20:16 +00:00
Diomidis Spinellis a0f8541ac3 Fix typo. 2007-11-29 13:17:53 +00:00
Diomidis Spinellis f602edc587 Document new functionality. 2007-11-29 13:02:58 +00:00
Diomidis Spinellis 00883b934b Rename UMLCommentOptions to UMLNoteOptions to be consistent with the UML
terminology.
2007-11-29 12:00:48 +00:00
Diomidis Spinellis 3d83e5d00f Draw activeclass shapes with a thick-border table, allowing them
to have compartments.
Refactor the handling of shapes to a new Shape class.
2007-11-29 11:33:15 +00:00
Diomidis Spinellis 6901d69a6c Add support for adding notes to elements as comments. 2007-11-29 10:39:26 +00:00
Diomidis Spinellis 66b795f23b Add tool for visually comparing test results.
This is needed when the strucural comparison fails.
2007-11-29 09:13:53 +00:00
Diomidis Spinellis 8d570e7db7 Reprime test data for current version of UMLGraph. 2007-11-29 08:59:57 +00:00
Diomidis Spinellis 1ffa818d41 Eliminate the possibility for a null pointer sception when testing
for hidden items.
2007-11-29 08:55:15 +00:00
Diomidis Spinellis 47453b0991 The non-class shapes are not rendered using an internal table.
Therefore don't land on the port p for them.
2007-11-29 08:18:23 +00:00
Rafael Chaves 0de944164f typo 2007-11-29 07:21:44 +00:00
Diomidis Spinellis 249c2633fb Add support for six new shapes. 2007-11-29 07:00:25 +00:00
Diomidis Spinellis 747ffd0b16 Update package name 2007-11-28 20:51:23 +00:00
Diomidis Spinellis 044f614ff9 Provide some guidance, when dot fails. 2007-11-28 20:24:58 +00:00
Diomidis Spinellis c8dec47886 Undo incorrect change. 2007-11-27 09:09:57 +00:00
Diomidis Spinellis 71f21d6b5c Ignore META DATA tags when comparing files. 2007-11-27 09:08:16 +00:00
Diomidis Spinellis c60483af35 Change references from gr.spinellis.umlgraph to org.umlgraph. 2007-11-27 09:04:22 +00:00
Diomidis Spinellis 20212d97f5 Force-commit repo-copied files. 2007-11-27 07:44:22 +00:00
Diomidis Spinellis 15b5b303bf Files repocopied to org/umlgraph 2007-11-27 07:40:28 +00:00
Diomidis Spinellis 6e5dabef48 Fix typo.
Noted by: Matthew Hillyard
2007-11-07 22:15:44 +00:00
Diomidis Spinellis d7700f1715 Fix typo. 2007-09-29 09:58:15 +00:00
Diomidis Spinellis c3d3578973 Clarify JDK versions required. 2007-09-28 14:25:46 +00:00
Diomidis Spinellis c2a24c9d41 Update invocation instructions. 2007-09-28 13:50:03 +00:00
Diomidis Spinellis e8da03aaf3 New release. 2007-09-28 13:29:46 +00:00
Diomidis Spinellis 0755e26ffa Add Vadim's updated Makefile 2007-09-28 13:23:40 +00:00
Diomidis Spinellis 4777ec26fd Add installation instructions and clarify invocation. 2007-09-28 12:44:56 +00:00
Diomidis Spinellis 3000c1920a Correctly specify UMLGRAPH_HOME 2007-09-28 11:46:48 +00:00
Diomidis Spinellis ca0b8c59c9 Drop the requirement for copying Tools.jar.
This follows a suggestion by Vadim Nasardinov.
2007-09-28 11:32:21 +00:00
Diomidis Spinellis 7155db4e89 Add request for adding comments support. 2007-09-28 10:59:45 +00:00
Diomidis Spinellis 2cf0987e50 Make the -noguillemot option output escaped characters compatible
with version 1.13 of Graphviz.
2007-09-28 07:14:07 +00:00
Diomidis Spinellis 58b41eb627 Mark deprecated methods to avoid Java 6 deprecation warnings. 2007-09-28 06:55:38 +00:00
Diomidis Spinellis 950ef99b7c Update HTML files for the Java 6 javadoc. 2007-09-28 06:42:49 +00:00
Diomidis Spinellis 023d908578 Support the sending of output to stdout. 2007-05-27 20:17:59 +00:00
Diomidis Spinellis 0af87dbf1d Correct invocation 2007-05-27 20:17:58 +00:00
Diomidis Spinellis 015ae1b747 Clarify -output 2007-05-27 20:17:57 +00:00
Diomidis Spinellis b9325a7f93 Clarify invocation. 2007-05-27 20:17:56 +00:00
Diomidis Spinellis 0a3d86a0d0 Use pipes. 2007-05-27 20:17:55 +00:00
Diomidis Spinellis 96ce9aac63 Fix inferred relations of maps to primitive Java types. 2007-05-27 20:17:54 +00:00
Diomidis Spinellis e9a1156d87 Style fixes. 2007-05-10 09:25:03 +00:00
Diomidis Spinellis 84b14f46e7 Package visibility is best for generating diagrams. 2007-05-06 14:29:33 +00:00
Diomidis Spinellis ac04f8c72e Document systems building on UMLGraph on a separate page. 2007-05-06 14:21:59 +00:00
Diomidis Spinellis 02a6de35e2 Add license file, and clarify licensing terms, following suggestion by
Rafael Chaves.
2007-05-06 11:20:54 +00:00
Diomidis Spinellis 6b7f7acc6a Document ClassCastException problem. 2007-05-06 11:09:57 +00:00
Diomidis Spinellis 031efd5bdd Parameterize cygwin C drive. 2007-04-05 13:27:38 +00:00
Diomidis Spinellis c1fcc32bfa Update reference files to match the output of
graphviz-2.13.20070328.0440
This release fixes GraphViz bug report 1093, which for some month
was causing tests to fail.
2007-03-29 07:29:47 +00:00
Diomidis Spinellis 1ade012c50 Post-release. 2007-03-29 07:28:04 +00:00
Diomidis Spinellis 6839e3c683 Fix InvocationTargetException.
Reported by: George Gousios
2007-03-26 07:04:06 +00:00
Diomidis Spinellis d852aea76f New release. 2007-03-26 07:03:35 +00:00
Diomidis Spinellis 9167c95fb8 Remove intermediate gzip step, introduced due to cygwin bug. 2007-03-16 07:49:52 +00:00
Diomidis Spinellis c5069700a1 Add link to Ruby-uml 2007-03-16 07:47:31 +00:00
Diomidis Spinellis c410ab3fad Correct output of UmlGraphDoc path-relative file names under Windows
Fix by: Panagiotis Astithas
2007-03-05 09:37:34 +00:00
Diomidis Spinellis ff7869b7c7 Enable agressive lint options. 2007-03-05 09:37:08 +00:00
Diomidis Spinellis f58bb743d4 Make the output more verbose to allow the testing of the executed commands
from the command-line.
2007-03-05 09:18:39 +00:00
Diomidis Spinellis 3755188d07 Correct file name (Dirk Datzert) 2007-02-05 21:50:43 +00:00
Diomidis Spinellis 71dec862c5 Release. 2007-02-05 21:49:47 +00:00
Diomidis Spinellis c8a8916a72 Cygwin fixes. 2007-02-05 21:49:39 +00:00
Diomidis Spinellis 2f726e3ea8 Prevent breakage under cygwin binary file handling. 2007-02-05 17:56:50 +00:00
Diomidis Spinellis 3f1c98a328 Pre-release. 2007-02-05 09:57:56 +00:00
Diomidis Spinellis 84a3c98d16 Double quotes don't work correctly in the Unix exec
(reported by Dirk Datzert)
Run exec(String []), which I tested to work on both Windows and Unix.
2007-02-05 09:22:16 +00:00
Diomidis Spinellis 19d2716782 Ready for releasing 4.5 2006-12-14 09:42:18 +00:00
Diomidis Spinellis b7b323ced5 Handle pathnames with embedded spaces. 2006-11-24 20:08:28 +00:00
Diomidis Spinellis 421785ef7d Change UmlDoc into UmlGraphDoc. 2006-11-24 20:08:03 +00:00
Diomidis Spinellis 6660aa26b5 Add pointer for creating C++ diagrams. 2006-09-21 08:52:56 +00:00
Diomidis Spinellis 14b4114e64 Add conformance icons obliterated in the previous commit. 2006-09-19 16:56:59 +00:00
Diomidis Spinellis 05d4587169 Change Copyright into a Creative Commons license 2006-09-19 16:46:58 +00:00
Diomidis Spinellis 4b50d26adb Document fixes. 2006-09-14 10:09:32 +00:00
Diomidis Spinellis b026ce6bc8 Correct the building of javadocs. 2006-09-14 10:08:20 +00:00
Diomidis Spinellis 41ffcdafcf Escape & characters from generics in the HTML output.
Reported by: Ivan F. Villanueva B.
2006-08-30 13:06:09 +00:00
Diomidis Spinellis 4321bf772f Propagate wolf's 2006/07/15 09:15:32 renaming of UMLDoc to UMLGraphDoc
to make the tests run again.
2006-08-30 12:38:07 +00:00
Diomidis Spinellis 845d9fac0d Fix name into UmlGraphDoc (Stefan Birkner) 2006-07-26 14:34:36 +00:00
Diomidis Spinellis 60d6271d6d Add release date 2006-07-18 21:31:56 +00:00
Diomidis Spinellis e6f904048d Remove extraneous tag. 2006-07-18 21:27:12 +00:00
Diomidis Spinellis 9925eb997e New release 2006-07-18 20:16:17 +00:00
Diomidis Spinellis 92fcfb1514 Mention UMLGraphDoc 2006-07-18 20:15:59 +00:00
Diomidis Spinellis d180a45fcc Small grammar and style changes. 2006-07-18 20:15:28 +00:00
Andrea Aime 6c120adba4 Renamed UMLDoc to UMLGraphDoc to avoid naming problems with http://www.umldoc.org/ 2006-07-15 09:15:32 +00:00
Andrea Aime 79f73a06d2 Documentation for UMLDoc and new options? Ready to release? 2006-07-09 15:15:43 +00:00
Andrea Aime 545613a15b Clean up and name fixes 2006-07-09 15:14:27 +00:00
Diomidis Spinellis 92d45a67d4 Update graphviz web site. 2006-07-07 21:06:32 +00:00
Andrea Aime b5837d2840 (whoops, forgot to commit this!)
Introduced explicit enums for relation types and relation directions, added an option to specify the direction and type of relations included in the context (basically, a tool to build a map from relation type to direction), fixed a test that still contained the old -inferassoc intestead of -inferrel
2006-07-02 16:24:03 +00:00
Andrea Aime 14b80c0eab Introduced explicit enums for relation types and relation directions, added an option to specify the direction and type of relations included in the context (basically, a tool to build a map from relation type to direction), fixed a test that still contained the old -inferassoc intestead of -inferrel 2006-07-02 16:23:39 +00:00
Diomidis Spinellis afa290cca5 Add submitter name. 2006-06-20 16:53:10 +00:00
Diomidis Spinellis 84fa647445 Filter-out static initializer method from classes
Submitted-by: Andreas Studer
2006-06-20 16:52:08 +00:00
Diomidis Spinellis cbc51f5ed5 Perl's in-place remove of \r characters doesn't appear to work.
Reported by: Juha-Pekka Syrjala
2006-06-19 14:34:05 +00:00
Andrea Aime 0f3c2cf511 Fixed bug in relative path computation (and made that testable alone, too, though I did not commit the test since we don't have unit testing in place) 2006-06-11 15:28:05 +00:00
Andrea Aime 10d62dabb8 Logged changes so far 2006-06-11 15:16:25 +00:00
Andrea Aime 9545893fa0 Allow in package inference to have the same results as before... as much as I hate incompatible changes, having a inferdepinpackage that has to be negated is not the best course of action (none of the options is meant to be used in negated form so far) 2006-06-11 13:50:31 +00:00
Andrea Aime 56e3b66325 Skip CVS directories during comparison 2006-06-11 13:48:25 +00:00
Andrea Aime e63dfd9fa8 Skip CVS directories during recursive comparison 2006-06-11 13:48:04 +00:00
Andrea Aime 1a066ccff8 Removed reliance on -verbose2 2006-06-11 13:47:30 +00:00
Andrea Aime 63dff2aaa3 Added support for new dependency filtering options 2006-06-11 13:46:44 +00:00
Andrea Aime fb49bafe0f Added two options:
- a way to avoid seeing intra-package dependencies between classes since classes in the same package are supposed to be releated anyway and in fact, there's no reliable way to spot all of them anyway (since you don't need imports for using classes in the same package)
- a way to limit the visibility of members used to perform dependency inference.

Both of these allow to reduce the "fur ball" effect.

Finally, removed the -version2 option since we can rely on the -quiet standard javadoc option if we use RootDoc.printNotice/Warning/Error
2006-06-11 13:45:55 +00:00
Andrea Aime 015357b8c7 Java visibility types enumeration, with some useful conversion methods for actually making it easy to use in the context of UmlGraph 2006-06-11 13:42:00 +00:00
Diomidis Spinellis 61a4cdea18 Add reference for the Human-Usable Textual Notation (HUTN) Specification. 2006-06-09 14:42:05 +00:00
Andrea Aime 1f6fcc90c7 Added testing for umldoc in the build 2006-06-04 13:59:35 +00:00
Andrea Aime 37cfbf2043 Reference data for umldoc testing 2006-06-04 13:59:03 +00:00
Andrea Aime 6704856194 Output folder for umldoc tests 2006-06-04 13:55:36 +00:00
Andrea Aime b467af9238 Source classes for umldoc tests 2006-06-04 13:55:15 +00:00
Andrea Aime d827bdf1f5 Added testing for umldoc, and moved shared methods with the umlgraph tests in an utility class 2006-06-04 13:55:00 +00:00
Andrea Aime 6bbf7d2f71 Don't infer dependencies from fields if we already inferred relationships (basically to avoid having dependencies on the collection containers that were not included in the relationships) 2006-06-04 13:54:27 +00:00
Andrea Aime 561b50c0f2 Inflict UmlDoc on itself: UmlGraph javadoc generation now uses UmlDoc to generate nice "fur ball class diagrams" as someone calls them. Heh, the package diagram and the ClassGraph diagrams do look like fur balls indeed, speaking to us and asking for mercy (aka, splitting the package into subpackages and splitting ClassGraph into smaller and better defined units).
All in all, having fur balls generation is not that bad, in a sense it makes people see what classes/package are brittle and which are on the contrary crisp, better defined...
2006-06-04 09:22:03 +00:00
Andrea Aime f971bded86 Renamed WrappedRootDoc due to a typo, removed package.html and fixed a few umlgraph tags on the classes for better output generation 2006-06-04 09:19:21 +00:00
Andrea Aime 9bac4fb51a Modified reference files to cope with the latest changes. Current output properly adds url references for external class references, whilst the previous version did not 2006-06-04 08:31:20 +00:00
Andrea Aime 0c41210872 Consistently use pw instead of System.out in every point of the file, better error reporting for file with difference, ensure to flush the printwriter before exiting 2006-06-04 08:29:29 +00:00
Andrea Aime 51a19f4be1 Use Version of printouts 2006-06-04 08:28:12 +00:00
Andrea Aime 20070fafaf Moved handling of api doc map to Options, and made options react to -link parameters the same way as the standard doclet does: by downloading and parsing the package-list file to populate the api doc map. 2006-06-04 08:27:03 +00:00
Andrea Aime 54796efd41 Moved api map to options, removed all dependencies to specified packages since we cannot assume the "user" will specify -subpackages on the command line 2006-06-04 08:24:47 +00:00
Andrea Aime 14932ba5b2 Lots of changes:
* output using the RootDoc.notice/warning methods instead of system.out (standard way, and allows the output to be seen from maven2 javadoc plugins as well)
* works also if the subpackages parameter is not specified on the command line
* added javadoc comments
* other smallish fixes
2006-06-02 09:36:19 +00:00
Andrea Aime 19989b3736 String formatting fix, and don't show package names in the package class diagram (waste of space, all classes do come from the same package anyway) 2006-06-02 09:19:00 +00:00
Andrea Aime 73c2338bce Avoid re-computing the set of returned options, which is really just composed of a handful of possibilities, optimize a little, and fixed a few bugs 2006-06-02 09:17:55 +00:00
Andrea Aime 78bea1ee77 Allow the reuse of the context matcher computed relations for various context center classes in order to speed up UMLDoc, which uses this one heavily.
Also, add an option to avoid overriding class hiding specified in the parent option provider, since the hides specifed for the doclet should not be modified in a context class diagram
2006-06-02 09:16:32 +00:00
Andrea Aime 8ad82c975c Update according to changes in ContextMatcher 2006-06-02 09:10:31 +00:00
Andrea Aime 74a9c16003 Various changes, hard to account for all of them. Yet, basically:
* ability to compute relative links for UmlDoc diagrams (client side image maps)
* better handling of sources with annotations and generics usage
* avoid relying on specifiedpacakges to check if classes are included in the parsed source, maven 2 does not provide javadoc with them, but with a plain list of classes
2006-06-02 09:09:00 +00:00
Andrea Aime a1f3f6ab6c A few changes related to the needs of UMLDoc to generate relative links between diagrams in javadoc files, and a few that are needed for a separate project I'm working on: an "interactive" version of UMLGraph that allows the parsing of source files just once, and re-parses just the views when the user asks for, so that it's way faster to build the views by iterative changes on a big source code base (that code is in such a bad shape now that I don't feel like commiting it now) 2006-06-02 09:03:32 +00:00
Andrea Aime 6e7f99ef8c Small performance improvements, new options for UMLDoc, in particular the ability to enable strict hide pattern matching (m.matches()) instead of lax matching (m.find()). We should think if having strict matching by default would be better (in my opinion it is, but that's just my opinion)...
Also added a reflective toString() that I've used for debugging settings during UmlDoc developtment (the code comes more or less from the first pages of Code Quality, the open source perspective :-) )
2006-06-02 08:56:15 +00:00
Andrea Aime 17779ac68b Classdoc and rootdoc wrappers used to improve the performance of UMLDoc 2006-06-02 08:47:47 +00:00
Diomidis Spinellis bdfc02ae06 Add an entry for the UML with dot site. 2006-05-23 06:30:38 +00:00
Andrea Aime 72f918b68c First stab at UmlDoc implementation. It's an "improved" javadoc that outputs docs along with class diagrams.
Diomidis, can you have a look at the output (UmlGraph javadoc are built with UmlDoc now) and review the code?
I know I still have to write the docs, and I will have to try out UmlDoc on something other than UmlGraph itself (was thinking of the java sources themselves, or Hibernate, Spring, ... whatever is big enough).
2006-05-01 19:38:12 +00:00
Diomidis Spinellis 23fbf7ff19 Fix XML validity errors. 2006-03-05 20:06:14 +00:00
Diomidis Spinellis bdc1e297ae Fix missing <notes> to have the file follow the XML schema. 2006-03-05 19:52:27 +00:00
Diomidis Spinellis b7a7c2335e We don;t need to go over Ghsotscript any more for creating .gif files,
because dot now offers anti-aliased drawing.
2006-03-05 19:45:44 +00:00
Diomidis Spinellis 6f36d06dc8 Update release date for 4.3 2006-03-05 19:45:05 +00:00
Andrea Aime 8e35628205 Stronger checks for view folders existence and accessibility. Let's see if you get a better error message. 2006-03-05 08:50:17 +00:00
Andrea Aime 44d645541a Unfortunately, some commits ago I added a bug in testing code that went
un-noticed since I never wiped out the testdata-out folder contents. Anyway,
 I've fixed the bug and made sure all .dot and .png files are removed from the
folder as the test starts, so that a similar problem won't stay hidden in future.

Anyway, the error you sent me seem to be something different (possibly HTML
code generation, dot is very picky about what HTML it can parse).
Can you try again with this patch and let me know? If you see again that error,
can you send me a few of those failing dot files?

Moreover, what dot version do you have? I have version 2.6 (Sun Aug 28
13:14:52 UTC 2005).

About my aliceposta mail address, I don't know, I'm receiving mail so it cannot
be fully broken, but yes, it's not the first message I don't receive this week.
The mail you sent me thru istlab.dmst.aueb.gr arrived fine (but it's just a
redirector, isn't it?).

Wow... pretty long for a commit message :-)
I'll be online again in the late afternoon. See you.
Andrea
2006-03-04 12:45:13 +00:00
Diomidis Spinellis 96163568f4 Update version number. 2006-03-02 22:26:10 +00:00
Diomidis Spinellis f6e22bc3d5 Fix wording. 2006-03-02 22:22:21 +00:00
Diomidis Spinellis f2e38d03e5 Add CQ blurb. 2006-03-02 22:22:12 +00:00
Diomidis Spinellis 9d6602d0f5 Add Mac OS X explanation. 2006-03-02 15:13:14 +00:00
Andrea Aime 3dc36ec498 Fixed a problematic situation. When all the operations of a class were hidden the generated html wasn't valid (see the test case, a class with a single hidden operation). Plus, when checking for hidden elements for elements other than a class, get the options against the containing class (the views are all based on class at the moment, we don't have views for methods or constructors) 2006-02-23 19:49:27 +00:00
Andrea Aime f7f0725667 New regression test to make sure the fixed bug doesn't get back 2006-02-23 19:46:45 +00:00
Andrea Aime fd167e489e A couple of tests added 2006-02-18 11:09:26 +00:00
Andrea Aime 287c34e3d7 More font options, as well as the ability to postfix the package declaration in class nodes.
Using enums in ClassGraph.
2006-02-18 11:08:58 +00:00
Andrea Aime bca022de5b New options documentation, a sample on font usage, updated release notes. 2006-02-18 11:07:33 +00:00
Andrea Aime 14c71ffd5a A few thing have been done. Removed them from the todo list. 2006-02-12 09:43:03 +00:00
Andrea Aime 6fc777d81f Added a couple of methods, a concrete and an abstract one, in the same class 2006-02-12 09:40:46 +00:00
Andrea Aime ea955c8b37 New set of reference files 2006-02-12 09:40:13 +00:00
Andrea Aime 2a7a49f4db Comment fix 2006-02-12 09:38:15 +00:00
Andrea Aime 2053cb50eb Changes for testable output (platform independent, compact) 2006-02-12 09:38:07 +00:00
Andrea Aime 11575dfd31 New HTML ouput format 2006-02-12 09:37:34 +00:00
Andrea Aime 6a16efccf3 Fixes for dot's font platform dependence, so that we can get italic fonts on windows too. Added a flag to generated "compact", that is, all HTML on one line, output, to ease testing, leaving the more human readable HTML multiline output as default 2006-02-12 09:37:21 +00:00
Diomidis Spinellis fa56977424 Keep echo off.
(Note, previous commit provided a way to specify umlgraph options.)
2006-02-04 23:05:37 +00:00
Diomidis Spinellis 18604f7165 Verbose output is enabled using the -verbose2 flag. 2006-02-04 23:03:31 +00:00
Diomidis Spinellis d04ac049c7 Remove trailing spaces, add file comment, and CVS Id. 2006-02-04 22:44:58 +00:00
Andrea Aime eacd052ed8 Added some feedback on the standard output, so that the user knows what's going on (on big code bases the use of context matches may require quite a bit of time, plus when the diagrams are too big dot just eats 100% CPU for a long time and has to be killed, at least we can show that UMLGraph has finished its part of the work).
The output looks like:

 [java] UMLGraph doclet started
     [java] Building view ViewProduct
     [java] Building view ViewColors
     [java] Building view ViewChildOverride
     [java] Building view ViewChildEmpty
     [java] Building view ViewAtt
     [java] Building view ViewAllDetailed
     [java] Building view ViewAll
     [java] Building view ViewContext
     [java] Building view ViewInterfaces
     [java] Building view ViewSubclasses
     [java] Class diagram generation complete
2006-02-04 09:24:43 +00:00
Andrea Aime 3339c047f2 Build UMLGraph with debug informations. This will improve eventual bug reports we get from users (previously stack trace did not include line numbers) 2006-01-28 10:17:21 +00:00
Andrea Aime bc42b5df48 Refactored test data, now we have one package for each match type 2006-01-28 10:16:18 +00:00
Andrea Aime 26a8c04d31 Reference diagrams for new match types 2006-01-28 10:15:21 +00:00
Andrea Aime 8022cbf8de Added new match tests 2006-01-28 10:14:51 +00:00
Andrea Aime 7edade65bb Changed the class diagram generation options, with the new classes the old diagram was getting hard to understand at a glance 2006-01-28 10:14:17 +00:00
Andrea Aime 5423bea7eb Added new @match types, with an general interface, an implementation for each kind, and a factory method in the View class to build the right implementation. Changed View implementation to work agains ClassMatchers instead of Patterns 2006-01-28 10:13:17 +00:00
Andrea Aime a96f721897 Changed view building so that a RootDoc is added to their constructor (some kind of @match need it) 2006-01-28 10:11:56 +00:00
Andrea Aime 43d02af81b Added a check for option length, to avoid ArrayOutOfBoundExceptions if the users specifies an option without its argument. Special treatment is reserved to "-hide", which accepts both 0 or 1 parameters. 2006-01-28 10:10:55 +00:00
Andrea Aime 7ae5c25bc8 Put the static fields togheter. Changed a visibility of a few methods to allow subclassing, allowed to infer dependencies and associations for a single class 2006-01-28 10:08:34 +00:00
Andrea Aime ff15f13cfc Updated view documentation 2006-01-28 10:04:47 +00:00
Diomidis Spinellis f5e2524b21 bib.xml is auto-generated. 2006-01-17 15:11:38 +00:00
Diomidis Spinellis 1fd2c1e280 Add command for generating bib.xml 2006-01-17 15:10:20 +00:00
Diomidis Spinellis a9b9b74fab Add book; markup URL. 2006-01-17 15:09:20 +00:00
Diomidis Spinellis fd5cf48554 Add identifier 2006-01-16 12:46:44 +00:00
Diomidis Spinellis 9be890d3b8 Split views into description and examples 2006-01-16 12:45:54 +00:00
Diomidis Spinellis 12821f9ed9 Fix XHTML validity 2006-01-16 12:45:43 +00:00
Diomidis Spinellis 611cfdcafe Remove duplicate description for the -d option 2006-01-16 12:45:39 +00:00
Diomidis Spinellis 17b83fe007 Use <ul> for the notes 2006-01-16 12:45:35 +00:00
Andrea Aime b52565829e "@match class" changes.
Btw, Diomidis, can you set up another snapshot?
2006-01-15 16:49:35 +00:00
Andrea Aime 67e7f42714 "@match class" changes and some feedback on why we skip incorrect @match specifications 2006-01-15 16:49:00 +00:00
Andrea Aime 3983568510 Avoid breaking previous behaviour for -output, properly parse the enumerations options (from Antti Hakala feedback).
Plus a little bug fix, since the parser accepted inferassoctype as a command line parameter.
2006-01-15 16:48:23 +00:00
Andrea Aime 182e9c96d8 Avoid breaking previous behaviour for -output (from Antti Hakala feedback) 2006-01-15 16:46:50 +00:00
Andrea Aime 2ae9b91a43 Better description for the command line invocation (Wendy Smoak feedback).
"@match class" changes
2006-01-15 16:46:16 +00:00
Andrea Aime d61b4dfdff Better specification on how to use -d/-output (from Antti Hakala feedback) 2006-01-15 16:44:21 +00:00
Andrea Aime f7928506a7 Specify how to build views with an Ant invocation (from Wendy Smoaks feedbacks, which lost an hour trying to understand why she only got a big diagram). Btw, maybe a "UMLGraph for the impatient" introduction would be nice. 2006-01-15 16:43:31 +00:00
Andrea Aime aa7fefa899 Forgot to add on option to the comman line checks 2006-01-05 11:05:28 +00:00
Andrea Aime fe09e407d1 Relationship inference documentation 2006-01-05 11:04:02 +00:00
Andrea Aime daf9b854bc Ignore dot files as well 2006-01-05 10:59:28 +00:00
Diomidis Spinellis 5c849c2a3f Add snapshot version functionality. 2006-01-05 09:55:10 +00:00
Diomidis Spinellis 6230ff6762 Fix XHTML validity errors. 2006-01-04 22:40:37 +00:00
Diomidis Spinellis 6ed807ff6b Fix misspelled image file names. 2006-01-04 22:34:41 +00:00
Andrea Aime 6cccd702ed Updated inferece test, added reference dot file 2006-01-04 21:56:20 +00:00
Andrea Aime d6c2a57086 Just a variable name change, since the documentation says "relationship" and not "association" 2006-01-04 21:55:57 +00:00
Andrea Aime b8740e3567 New association/dependecy inference options 2006-01-04 21:55:19 +00:00
Andrea Aime 31c437888c Removed inference hiding for the moment, since it's probably not needed (simple hiding will do), make inference work with -public switch and private fields, added an option to infer from import statements as well 2006-01-04 21:53:55 +00:00
Andrea Aime fa224fa492 New options brief documentation, complete views example using DBCP.
I still have to add a chapter on relationshipo inference.
2006-01-04 21:51:35 +00:00
Diomidis Spinellis 1a31306333 Matching is done using regular expressions. 2006-01-04 17:38:37 +00:00
Andrea Aime c1ed3aa942 Test for association/dependency inference 2006-01-03 21:35:44 +00:00
Andrea Aime 8817329e49 Share compare logic in view and basic tests, making basic tests more robust to missing output/reference files 2006-01-03 21:35:27 +00:00
Andrea Aime d8a465fc5d First cut to association/dependency inference. Needs discussion, sharing the code so that you can play with it if you want and examine the inference code behaviour. 2006-01-03 21:34:49 +00:00
Andrea Aime 4602a06841 First cut to association/dependency inference. Needs discussion, sharing the code so that you can play with it if you want and examine the inference code behaviour. Needed to split the relation method so that it could be used by dependency inference as well 2006-01-03 21:33:30 +00:00
Andrea Aime 297772ac76 First cut to association/dependency inference. Needs discussion, sharing the code so that you can play with it if you want and examine the inference code behaviour 2006-01-03 21:30:08 +00:00
Andrea Aime b9e04f474a Updated javadoc generation to deal with the changes in -output semantics 2006-01-02 14:07:45 +00:00
Andrea Aime cd90d5b402 Tests for view inheritance 2006-01-02 14:07:23 +00:00
Andrea Aime 761320b44d A support class to run one test in the debugger 2006-01-02 14:06:50 +00:00
Andrea Aime d23eab3432 Improved output 2006-01-02 14:06:31 +00:00
Andrea Aime 7234737f40 Updated umlgraph tags (no need for package spec now)
Added support for view inheritance
2006-01-02 14:05:49 +00:00
Andrea Aime c4a3b07ea2 Updated umlgraph tags (no need for package spec now)
Moved all output handling into ClassGraph (it's cleared, and it's needed
because otherwise the cloned Options would have needed a way to
share the output writer even when opened in a cloned class)

Added support for view inheritance
2006-01-02 14:05:22 +00:00
Andrea Aime dceb851073 Added a couple of methods to manage view inheritance
Moved all output handling into ClassGraph (it's cleared, and it's needed
because otherwise the cloned Options would have needed a way to
share the output writer even when opened in a cloned class)
2006-01-02 14:04:33 +00:00
Andrea Aime b77d5a9eb6 Added javadoc comments
Added a couple of methods to manage view inheritance
2006-01-02 14:03:52 +00:00
Andrea Aime 646a4d5280 Updated umlgraph tags (no need for package spec now)
Moved all output handling into ClassGraph (it's cleared, and it's needed
because otherwise the cloned Options would have needed a way to
share the output writer even when opened in a cloned class)
2006-01-02 14:02:42 +00:00
Andrea Aime f94c2df2bc Removed unused target 2005-12-31 17:33:23 +00:00
Andrea Aime a60f9fbabf Fixed reference file that was affected by the old association target lookup code 2005-12-31 17:32:47 +00:00
Andrea Aime 16c5db82b0 Lookup the association targets using the java standard mechanism 2005-12-31 17:32:10 +00:00
Andrea Aime 625a6d3cb3 Comments on the changed behaviour for association targets class lookup 2005-12-31 17:31:35 +00:00
Andrea Aime 4ad5a8ff64 Output a list of the file names that did not pass the test. Makes easier to find out what went wrong 2005-12-31 16:20:29 +00:00
Andrea Aime 68a3ae6afa Made the test target generate the diagrams as well for both dot-out and dot-ref directories... a visual comparison is faster than delving into the dot sources, at least to understand what's going on before going into detail. 2005-12-30 18:04:55 +00:00
Andrea Aime ef951d4d7a Ignore png files 2005-12-30 18:03:36 +00:00
Andrea Aime 8869faf749 Updated tests to check for the new view behaviours and to avoid the comeback of the bugs I fixed today 2005-12-30 17:57:40 +00:00
Andrea Aime 27efa03869 Ignore png files as well 2005-12-30 17:56:57 +00:00
Andrea Aime 1bde5b9787 Removed useless invocation parameter in the view tests 2005-12-30 17:56:44 +00:00
Andrea Aime 69aef6380f New UMLOptions lookup code
OptionProvider work
Make UMLGraph complain if the view specified on the command line has not been found
2005-12-30 17:55:27 +00:00
Andrea Aime 7d7a328406 Introduced OptionProvider interface 2005-12-30 17:54:16 +00:00
Andrea Aime 405b179f20 Three group of changes here:
* OptionProvider work -> made a few methods compute the options for
   the class they're working on, the others do receive an Options object
   as argument (as they cannot compute it by themselves)
* ClassInfo map work -> made sure every manipulation of classnames
   map goes thru a couple of methods, and that these methods remember
   to remove the template from the class names used as keys (I did found
   a few problems when referring a class without specifying the full
   template syntax in an association)
* grave bug fix -> if one association happened to point to a hidden class, the
   following associations of the same kind in the same class would have not
   been printed (code change in relation(...))
2005-12-30 17:53:48 +00:00
Andrea Aime bd53402181 New and changed options (-d, -hide) 2005-12-30 17:49:36 +00:00
Andrea Aime 3700ff6322 View support doc improvements (still incomplete) 2005-12-30 17:49:14 +00:00
Diomidis Spinellis f05546d9b6 Add ant example, and document the packagenames problem. 2005-12-29 19:35:55 +00:00
Andrea Aime 87df86413a Realized that there's no need for a .* match pattern, hide in this case is simply a global option 2005-12-28 15:30:28 +00:00
Andrea Aime 143fef34f1 Explainations for the new option resetting feature 2005-12-28 15:17:29 +00:00
Andrea Aime 7111a8e37b Updated changelog 2005-12-28 15:02:22 +00:00
Andrea Aime 4142c0ef11 Updated to follow the new @match syntax, and to assume that every view is hidden by default anyway 2005-12-28 14:58:02 +00:00
Andrea Aime 39048e6f0f New test to check local option disabling 2005-12-28 14:57:22 +00:00
Andrea Aime 85e0a62c74 Added the necessary -d option to the doclet invocation 2005-12-28 14:56:57 +00:00
Andrea Aime 6c1a02f67a Updated to work with the @match <regexp> syntax 2005-12-28 14:56:11 +00:00
Andrea Aime 4d2ee647b6 Make "@opt !option" a generally available syntax (so that we can disable a general option on a per class basis), added -d for the output folder (default, "."), allow to use "hide" without parameters to hide everything 2005-12-28 14:54:40 +00:00
Andrea Aime eb6a80e6a5 Hide view classes (using the same code path as @hidden) 2005-12-28 14:52:26 +00:00
Andrea Aime 567430483d Fixed silly bug in the testing code (basically it did not really test the views support) and fixed the reference files as well (they were empty) 2005-12-27 10:14:32 +00:00
Diomidis Spinellis 8f8024e767 Language and formatting improvements. 2005-12-26 22:21:39 +00:00
Diomidis Spinellis 3581178a23 Add missing image files. 2005-12-26 22:03:52 +00:00
Diomidis Spinellis 0233e2630a Support for creating pre-release documentation. 2005-12-26 22:03:22 +00:00
Andrea Aime 620440e472 Better use a wildcard match instead of listing every possible .dot file that will end up in this folder, isn't it? 2005-12-26 21:16:13 +00:00
Andrea Aime d8190eefb0 View support regression testing, test data and reference files 2005-12-26 21:15:34 +00:00
Andrea Aime 956673ffb7 View support code 2005-12-26 21:14:36 +00:00
Andrea Aime 7fe982d20e View support documentation 2005-12-26 21:14:23 +00:00
Andrea Aime f85f88c082 Minor formatting fix... the first pathelement is not indented by using spaces only, as the other two that follow it already were 2005-12-26 20:27:12 +00:00
Diomidis Spinellis 8da7b8c669 Import environment variables, so that we can run javadoc. 2005-12-26 17:20:26 +00:00
Diomidis Spinellis 73fc215e2c Correct output, after updating to JDK 1.5.0_06, which fixes a javadoc
bug.
2005-12-26 17:18:27 +00:00
Diomidis Spinellis 01a850bf2b Expand comment. 2005-12-25 15:42:03 +00:00
Andrea Aime 6cad56de7a Centralized option handling in the Option class (even for command line arguments) 2005-12-25 09:40:13 +00:00
Diomidis Spinellis c62e0905e1 Add FAQ link. 2005-12-22 23:25:51 +00:00
Diomidis Spinellis 72d03ede3a Add Xholon link. 2005-12-08 21:28:06 +00:00
Andrea Aime 7cd1549d58 Solved command order issues in javadocs target: the first run resulted in an IOException because the dot file is generated in a folder generated by the standard doclet (so we need to run the standard doclet first, and generate the class diagram afterwards) 2005-11-28 16:06:25 +00:00
Diomidis Spinellis 3eb795736f Add javadocs to the distribution. 2005-11-28 07:28:30 +00:00
Andrea Aime 865f1de24e Added javadoc generation, along with a package summary that contains the class diagram of UMLGraph (generated by UMLGraph itself).
Added a few tags in the classes to generate a more accurate diagram.
The generated javadoc directory has been added to cvsignore
2005-11-27 21:01:15 +00:00
Andrea Aime ed65bed552 Removed unecessary import statement 2005-11-27 19:57:48 +00:00
Diomidis Spinellis 102634a819 Remove trailing spaces. 2005-11-27 13:07:42 +00:00
Andrea Aime c9b7c3c3c8 Made Version.java generation platform independent using ant 2005-11-27 12:12:40 +00:00
Diomidis Spinellis c239058b38 More ignore files. 2005-11-24 08:19:15 +00:00
Diomidis Spinellis 9adce39cea Add cvsignore 2005-11-23 22:29:39 +00:00
Diomidis Spinellis 5e5f966a17 Add legacy Java 1.4 binaries. 2005-11-23 22:24:18 +00:00
Diomidis Spinellis 4a8c116f58 Add two missing root files. 2005-11-23 22:22:31 +00:00
Diomidis Spinellis cfd67610ab Add documentation files. 2005-11-23 22:21:22 +00:00
Diomidis Spinellis 35ffe1e685 Add test data. 2005-11-23 22:18:45 +00:00
Andrea Aime 3c3d5e14cb Adding the eclipse project files and a first version of .cvsignore file 2005-11-23 22:04:17 +00:00
Diomidis Spinellis ac7963f269 Correctly strip qualified generic class names (Arnaud Rogues). 2005-11-23 09:36:16 +00:00
Diomidis Spinellis c5d0bcecf8 Fix jarfile MD5. 2005-11-15 16:23:00 +00:00
Diomidis Spinellis 8d83db6ddc Fix jarfile locations. 2005-11-15 16:19:53 +00:00
Diomidis Spinellis eda1057e16 Fix tag rule. 2005-11-15 16:17:35 +00:00
285 changed files with 16959 additions and 2900 deletions

18
.gitignore vendored Normal file
View File

@ -0,0 +1,18 @@
*.DS_Store
*.iml
*.ipr
*.iws
*.swp
.idea
.settings
.project
.classpath
_vimrc
build
CHECKSUM.MD5
javadoc
lib
TAGS
target
UMLGraph-R*
UMLGraph-snapshot*

10
.travis.yml Normal file
View File

@ -0,0 +1,10 @@
language: java
addons:
apt:
packages:
- graphviz
install: ant
script: ant test

27
LICENSE Normal file
View File

@ -0,0 +1,27 @@
Copyright (c) 2002-2007, Diomidis Spinellis
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Diomidis Spinellis nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,13 +1,9 @@
#
# $Id$
#
VERSION=4.1
TARBALL=UMLGraph-$(VERSION).tar.gz
VERSION:=$(shell git describe --abbrev=6 HEAD | sed 's/R//;s/_/./;s/-/./;s/-.*$$/-SNAPSHOT/')
BALL_TAR_GZ=UMLGraph-$(VERSION).tar.gz
ZIPBALL=UMLGraph-$(VERSION).zip
DISTDIR=UMLGraph-$(VERSION)
WEBDIR=/dds/pubs/web/home/sw/umlgraph
DOCLETSRCPATH=src/gr/spinellis/umlgraph/doclet
WEBDIR=$(UH)/dds/pubs/web/home/umlgraph
DOCLETSRCPATH=src/main/java/org/umlgraph/doclet
DOCLETSRC= \
$(DOCLETSRCPATH)/ClassGraph.java \
$(DOCLETSRCPATH)/ClassInfo.java \
@ -16,13 +12,18 @@ DOCLETSRC= \
$(DOCLETSRCPATH)/UmlGraph.java \
$(DOCLETSRCPATH)/Version.java
TESTSRC = \
src/gr/spinellis/umlgraph/test/DotDiff.java \
src/gr/spinellis/umlgraph/test/BasicTest.java
src/main/java/org/umlgraph/test/DotDiff.java \
src/main/java/org/umlgraph/test/BasicTest.java
PICFILE=sequence.pic
README=README.txt
OTHERSRC=index.html build.xml Makefile
# Files to tag
ALLTAG=$(DOCLETSRC) $(TESTSRC) $(PICFILE) $(README) $(OTHERSRC)
LICENSE=LICENSE
OTHERSRC=index.html build.xml Makefile oldversion.html
# Documentation location (release)
ifeq ($(VERSION),snapshot)
DOC=snapshot-doc
else
DOC=doc
endif
JARFILE=lib/UmlGraph.jar
@ -31,30 +32,31 @@ LF=perl -p -e 'BEGIN {binmode(STDOUT);} s/\r//'
all: $(JARFILE)
tarball: $(TARBALL)
tarball: $(BALL_TAR_GZ)
src/gr/spinellis/umlgraph/doclet/Version.java: Makefile
echo "/* Automatically generated file */" >$@
echo "package gr.spinellis.umlgraph.doclet;" >>$@
echo "class Version { public static String VERSION = \"$(VERSION)\";}" >>$@
$(TARBALL): $(JARFILE) docs Makefile
$(BALL_TAR_GZ): $(JARFILE) docs Makefile
-cmd /c rd /s/q $(DISTDIR)
mkdir $(DISTDIR)
mkdir $(DISTDIR)/doc
mkdir $(DISTDIR)/lib
mkdir $(DISTDIR)/bin
$(LF) $(README) >$(DISTDIR)/$(README)
$(LF) $(LICENSE) >$(DISTDIR)/$(LICENSE)
$(LF) $(PICFILE) >$(DISTDIR)/lib/$(PICFILE)
cp $(JARFILE) $(DISTDIR)/lib
cp $(WEBDIR)/doc/* $(DISTDIR)/doc
cp $(WEBDIR)/$(DOC)/* $(DISTDIR)/doc
cp build.xml $(DISTDIR)
tar cf - src testdata/{java,dot-ref} --exclude='*/RCS' | tar -C $(DISTDIR) -xvf -
cp umlgraph.bat $(DISTDIR)/bin
$(LF) umlgraph >$(DISTDIR)/bin/umlgraph
tar cf - src testdata/{java,dot-ref} javadoc --exclude='*/CVS' | tar -C $(DISTDIR) -xvf -
$(LF) $(PICFILE) >$(DISTDIR)/src/$(PICFILE)
tar cvf - $(DISTDIR) | gzip -c >$(TARBALL)
tar czf $(BALL_TAR_GZ) $(DISTDIR)
zip -r $(ZIPBALL) $(DISTDIR)
docs:
(cd doc && make)
(cd $(UH)/dds/pubs/Courses/tools && make)
(cd doc && make DOC=$(DOC))
ant javadocs
$(JARFILE): $(DOCLETSRC)
ant compile
@ -62,13 +64,26 @@ $(JARFILE): $(DOCLETSRC)
test:
ant test
web: $(TARBALL) CHECKSUM.MD5
cp $(TARBALL) $(ZIPBALL) CHECKSUM.MD5 $(WEBDIR)
cp UmlGraph.jar $(WEBDIR)/jars/UmlGraph-$(VERSION).jar
sed "s/VERSION/$(VERSION)/g" index.html >$(WEBDIR)/index.html
testupdate:
bash tools/testupdate.sh
CHECKSUM.MD5: $(TARBALL)
md5 UMLGraph-2.10.* UMLGraph-$(VERSION).* UmlGraph.jar >CHECKSUM.MD5
# Create only the static HTML pages
static-web:
(cd web && sh build.sh)
cp web/build/* $(WEBDIR)
sed "s/VERSION/$(VERSION)/g" web/build/download.html >$(WEBDIR)/download.html
tag:
rcs -nV$(VERSION):
web: $(BALL_TAR_GZ) CHECKSUM.MD5
cp $(BALL_TAR_GZ) $(ZIPBALL) CHECKSUM.MD5 $(WEBDIR)
(cd web && sh build.sh)
cp web/build/* $(WEBDIR)
sed "s/VERSION/$(VERSION)/g" web/build/download.html >$(WEBDIR)/download.html
cp $(JARFILE) $(WEBDIR)/jars/UmlGraph-$(VERSION).jar
tar cf - javadoc | tar -C $(WEBDIR) -xvf -
CHECKSUM.MD5: $(BALL_TAR_GZ) $(JARFILE)
openssl md5 legacy/UMLGraph-2.10.* legacy/UMLGraph-4.8.* UMLGraph-$(VERSION).* >CHECKSUM.MD5
(cd lib ; openssl md5 UmlGraph.jar) >>CHECKSUM.MD5
tags:
etags **/*.java

69
README.md Normal file
View File

@ -0,0 +1,69 @@
# UMLGraph - Declarative Drawing of UML Diagrams
*UMLGraph* allows the declarative specification and drawing of UML diagrams.
You can browse the system's documentation
through [this link](http://www.spinellis.gr/umlgraph/doc/index.html),
or print it through [this link](http://www.spinellis.gr/umlgraph/doc/indexw.html).
In order to run *UMLGraph*, you need to have [GraphViz](https://www.graphviz.org/)
installed in your system path. On most Linux distributions, this can be easily
installed using the regular package manager.
To compile the Java doclet from the source code run *ant* on the
*build.xml* file.
If you change the source code, you can run regression tests by
executing *ant test*.
Visit the project's [home page](http://www.spinellis.gr/umlgraph) for more information.
## Compatibility
If you build against Java 8, please use latest version of 5.X of the Doclet.
Since Java 9 doclet APIs where completely rewritten, the Doclet in version 6 supports only supports Java 9 and above.
## Development versions
In order to use development versions, you can use [JitPack](https://jitpack.io/#dspinellis/UMLGraph/master-SNAPSHOT).
Note that as this is compiled on demand, you may sometimes see a "Read timed out" when the package is recompiled,
and it should be fine a few seconds later. And because the master branch can change any time, you may want to use
a versioned snapshot instead (see the Jitpack documentation for details).
**Gradle**:
```
repositories { maven { url 'https://jitpack.io' } }
configurations { umlgraph }
dependencies { umlgraph 'com.github.dspinellis:UMLGraph:master-SNAPSHOT' }
javadoc {
doclet = 'org.umlgraph.doclet.UmlGraphDoc'
docletpath = configurations.umlgraph.files.asType(List)
tags("hidden:X", "opt:X", "has:X", "navhas:X", "assoc:X", "navassoc:X",
"composed:X", "navcomposed:X", "stereotype:X", "depend:X")
}
```
**Maven**:
```
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
...
<dependency>
<groupId>com.github.dspinellis</groupId>
<artifactId>UMLGraph</artifactId>
<version>master-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
```
**Jar download**: <https://jitpack.io/com/github/dspinellis/UMLGraph/master-SNAPSHOT/UMLGraph-master-SNAPSHOT.jar>
## See also
* [D2: Declarative Diagraming](https://d2lang.com/) (Emphasis on aesthetics and extensionability)
* [Mermaid diagramming and charting tool](https://mermaid.js.org/) (JavaScript-based; easier syntax, good Markdown integration; interactive diagrams)
* [PlantUML](https://plantuml.com/) (Java-based; supports IDEs and more diagram types)
* [Comparison of textual diagraming systems](https://text-to-diagram.com/)

View File

@ -1,22 +0,0 @@
UMLGraph - Declarative Drawing of UML Diagrams
UMLGraph allows the declarative specification and drawing of
UML class and sequence diagrams. You can browse the system's
documentation from the doc/index.html page, or print it from
doc/indexw.html.
To install the elements required to run UMLGraph, simply copy
the contents of the lib directory to a location consistent with
your installation's conventions (for example to /usr/local/lib).
To compile the Java doclet from the source code run ant on the
build.xml file.
If you change the source code, you can run regression tests by
executing "ant test".
Project home page: http://www.spinellis.gr/sw/umlgraph
Diomidis Spinellis - November 2005
$Id$

41
TODO Normal file
View File

@ -0,0 +1,41 @@
http://stackoverflow.com/questions/8609546/umlgraph-not-automatic-integrated-in-javadoc
Support for all UML diagrams: state, use-case, etc.
State diagrams:
See state-example.dot
See also http://forrst.com/posts/State_Machine_Dont_abuse_the_if-1fE
Note that Hierarchically nested states cannot be shown in GraphViz,
because you can't set shape and labels in cluster, nor can they act
as edge targets.
Add in UmlGraphDoc support for showing package dependencies.
See http://java.dzone.com/articles/reverse-engineer-source-code-u#comment-6124
Yves Bossel: If I may do some suggestions:
+ Self-adjusting box size and placement on sequence diagrams would help (I use lots of inner classes whose names are long and descriptive).
Try the http://prefuse.sourceforge.net/ back end for large graphs.
Provide a parameter to say how (untagged) data members relate to other
classes.
The line can be a composition, an aggregation, or a navigable association.
public class A {
.....
}
public class B {
A myInstance;
}
Requires special care for containers and arrays.
command-line (and global) options for setting all graph attributes
Class options for setting edge attributes fillcolor fontcolor etc per edge
Use doclet error reporting functions
A class can specify its rank, or its cluster.
The dot edge routing is not the best possible for UML. Implement a rectangular routing strategy, maybe based on stochastic optimization using simulated annealing.

265
build.xml
View File

@ -1,17 +1,76 @@
<project name="umlgraph" default="compile" basedir=".">
<project name="umlgraph" default="compile" basedir="."
xmlns:artifact="antlib:org.apache.maven.artifact.ant" >
<description>
The specification for the Java-based umlgraph build processes.
$Id$
</description>
<!-- set global properties for this build -->
<property name="src" location="src"/>
<property name="src" location="src/main/java"/>
<property name="testsrc" location="src/test"/>
<property name="build" location="build"/>
<property name="javadoc" location="javadoc"/>
<property name="lib" location="lib"/>
<property name="testsrc" location="test/src"/>
<!-- import environment varibles -->
<property name="testout" location="${basedir}/testdata/dot-out"/>
<property name="testref" location="${basedir}/testdata/dot-ref"/>
<property name="dist" location="dist" />
<!-- obtain version from git; see http://techblog.41concepts.com/2009/05/08/generating-ant-build-numbers-using-subversion/ -->
<macrodef name="gitversion" description="Get git version.">
<attribute name="outputproperty"/>
<sequential>
<echo message="git rev-parse --short=6 => '@{outputproperty}'"/>
<exec executable="git"
failonerror="true"
outputproperty="@{outputproperty}">
<arg value="rev-parse"/>
<arg value="--short=6"/>
<arg value="HEAD"/>
<redirector>
<outputfilterchain>
<tokenfilter>
<replaceregex pattern="R" replace=""/>
<replaceregex pattern="_" replace="."/>
<replaceregex pattern="-" replace="."/>
<replaceregex pattern="(-.*)$" replace="-SNAPSHOT"/>
</tokenfilter>
</outputfilterchain>
</redirector>
</exec>
<echo message="gitversion returned '${@{outputproperty}}'"/>
</sequential>
</macrodef>
<!-- define Maven coordinates; see https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-7c.DeploySnapshotsandStageReleaseswithAnt -->
<property name="groupId" value="org.umlgraph" />
<property name="artifactId" value="UmlGraph" />
<!-- <property name="version" value="1.0-SNAPSHOT" /> -->
<gitversion outputproperty="version"/>
<!-- define artifacts' name, which follows the convention of Maven -->
<property name="maven-jar" value="${dist}/lib/${artifactId}-${version}.jar" />
<property name="maven-javadoc-jar" value="${dist}/lib/${artifactId}-${version}-javadoc.jar" />
<property name="maven-sources-jar" value="${dist}/lib/${artifactId}-${version}-sources.jar" />
<!-- defined maven snapshots and staging repository id and url -->
<!-- passwords are stored in \Users\Diomidis Spinellis\.m2\settings.xml -->
<property name="maven-snapshots-repository-id" value="sonatype-nexus-snapshots" />
<property name="maven-snapshots-repository-url" value="https://oss.sonatype.org/content/repositories/snapshots/" />
<property name="maven-staging-repository-id" value="sonatype-nexus-staging" />
<property name="maven-staging-repository-url" value="https://oss.sonatype.org/service/local/staging/deploy/maven2/" />
<!-- import environment variables -->
<property environment="env"/>
<target name="clean">
<delete dir="${build}"/>
<delete dir="${lib}"/>
<delete dir="testdata/dot-out"/>
<delete dir="${javadoc}"/>
<delete dir="${dist}/lib"/>
</target>
<target name="init">
<!-- Create the time stamp -->
@ -20,23 +79,201 @@
<mkdir dir="${build}"/>
<mkdir dir="${lib}"/>
<mkdir dir="testdata/dot-out"/>
<mkdir dir="${javadoc}"/>
<mkdir dir="${dist}/lib"/>
</target>
<target name="compile" depends="init"
<target name="version">
<exec executable="git"
outputproperty="VERSION">
<arg value="rev-parse"/>
<arg value="--short=6"/>
<arg value="HEAD"/>
</exec>
<echo>Version is ${VERSION}</echo>
<echo file="src/main/java/org/umlgraph/doclet/Version.java">/* Automatically generated file */
package org.umlgraph.doclet;
class Version { public static String VERSION = "${VERSION}";}
</echo>
</target>
<target name="compile" depends="init,version"
description="compile the source, build library " >
<javac srcdir="${src}" destdir="${build}" excludes="gr/spinellis/umlgraph/doclet/RCS/*,gr/spinellis/umlgraph/test/RCS/*"/>
<jar basedir="${build}" destfile="${lib}/UmlGraph.jar" includes="gr/spinellis/umlgraph/doclet/*.class"/>
<javac srcdir="${src}" destdir="${build}" debug="true"
deprecation="true" includeantruntime="false" >
<compilerarg value="-Xlint"/>
<classpath>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
</classpath>
</javac>
<jar basedir="${build}" destfile="${lib}/UmlGraph.jar" includes="org/umlgraph/doclet/*.class">
<manifest>
<attribute name="Main-Class" value="org.umlgraph.doclet.UmlGraph"/>
<attribute name="Class-Path" value="tools.jar"/>
</manifest>
</jar>
</target>
<target name="test" depends="compile"
description="run the regression tests" >
<java classname="gr.spinellis.umlgraph.test.BasicTest" fork="true">
<target name="testcompile" depends="init"
description="compile the test code " >
<javac srcdir="${testsrc}" destdir="${build}" debug="true"
deprecation="true" includeantruntime="false" >
<classpath>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
<pathelement location="${build}"/>
<pathelement location="${lib}/UmlGraph.jar"/>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
</classpath>
</java>
<compilerarg value="-Xlint"/>
</javac>
</target>
<target name="test" depends="compile,testcompile"
description="run the regression tests" >
<!-- postpone failures, so we get to see the pngs -->
<java classname="org.umlgraph.test.BasicTest" fork="true" resultproperty="BasicTest.exit">
<classpath>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
<pathelement location="${build}"/>
<pathelement location="${lib}/UmlGraph.jar"/>
</classpath>
</java>
<java classname="org.umlgraph.test.UmlDocTest" fork="true" resultproperty="UmlDocTest.exit">
<classpath>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
<pathelement location="${build}"/>
<pathelement location="${lib}/UmlGraph.jar"/>
</classpath>
</java>
<apply executable="dot" dest="${testout}" parallel="false">
<arg value="-Tpng"/>
<arg value="-o"/>
<targetfile/>
<srcfile/>
<fileset dir="${testout}" includes="*.dot"/>
<mapper type="glob" from="*.dot" to="*.png"/>
</apply>
<apply executable="dot" dest="${testref}" parallel="false">
<arg value="-Tpng"/>
<arg value="-o"/>
<targetfile/>
<srcfile/>
<fileset dir="${testref}" includes="*.dot"/>
<mapper type="glob" from="*.dot" to="*.png"/>
</apply>
<!-- postponed failure, so we get to see the pngs -->
<fail message="BasicTest failed">
<condition><not><equals arg1="0" arg2="${BasicTest.exit}"/></not></condition>
</fail>
<fail message="UmlDocTest failed">
<condition><not><equals arg1="0" arg2="${UmlDocTest.exit}"/></not></condition>
</fail>
</target>
<target name="javadocs" depends="compile">
<javadoc sourcepath="${src}" packagenames="org.umlgraph.doclet.*" destdir="${javadoc}" private="true">
<doclet name="org.umlgraph.doclet.UmlGraphDoc" path="${lib}/UmlGraph.jar">
<param name="-inferrel"/>
<param name="-inferdep"/>
<param name="-autosize"/>
<param name="-collapsible"/>
<param name="-hide" value="java.*"/>
<param name="-collpackages" value="java.util.*"/>
<param name="-qualify"/>
<param name="-postfixpackage"/>
<param name="-nodefontsize" value="9"/>
<param name="-nodefontpackagesize" value="7"/>
<param name="-link" value="http://docs.oracle.com/javase/7/docs/jdk/api/javadoc/doclet/"/>
<param name="-link" value="http://download.oracle.com/javase/7/docs/api/"/>
</doclet>
</javadoc>
</target>
<target name="pom" description="generate the pom.xml file with the correct version">
<copy file="pom.template.xml"
tofile="pom.xml"
filtering="yes" overwrite="yes">
<filterchain>
<filterreader classname="org.apache.tools.ant.filters.ExpandProperties"/>
</filterchain>
</copy>
</target>
<target name="dist" depends="compile" description="generate the distribution">
<!-- build the main artifact -->
<jar jarfile="${maven-jar}" basedir="${build}" />
<!-- build the javadoc artifact -->
<javadoc sourcepath="${src}" destdir="${dist}/javadoc" />
<jar jarfile="${maven-javadoc-jar}">
<fileset dir="${dist}/javadoc" />
</jar>
<!-- build the sources artifact -->
<jar jarfile="${maven-sources-jar}">
<fileset dir="${src}" />
</jar>
</target>
<target name="deploy" depends="dist,pom" description="deploy snapshot version to Maven snapshot repository">
<!-- for this to work install http://maven.apache.org/ant-tasks/download.html into ant/lib -->
<artifact:mvn>
<arg value="org.apache.maven.plugins:maven-deploy-plugin:2.6:deploy-file" />
<arg value="-Durl=${maven-snapshots-repository-url}" />
<arg value="-DrepositoryId=${maven-snapshots-repository-id}" />
<arg value="-DpomFile=pom.xml" />
<arg value="-Dfile=${maven-jar}" />
</artifact:mvn>
<artifact:mvn>
<arg value="org.apache.maven.plugins:maven-deploy-plugin:2.6:deploy-file" />
<arg value="-Durl=${maven-snapshots-repository-url}" />
<arg value="-DrepositoryId=${maven-snapshots-repository-id}" />
<arg value="-DpomFile=pom.xml" />
<arg value="-Dfile=${maven-sources-jar}" />
<arg value="-Dclassifier=sources" />
</artifact:mvn>
<!-- sign and deploy the javadoc artifact -->
<artifact:mvn>
<arg value="org.apache.maven.plugins:maven-deploy-plugin:2.6:deploy-file" />
<arg value="-Durl=${maven-snapshots-repository-url}" />
<arg value="-DrepositoryId=${maven-snapshots-repository-id}" />
<arg value="-DpomFile=pom.xml" />
<arg value="-Dfile=${maven-javadoc-jar}" />
<arg value="-Dclassifier=javadoc" />
</artifact:mvn>
</target>
<!-- before this, update project version (both build.xml and pom.xml) from SNAPSHOT to RELEASE -->
<target name="stage" depends="dist,pom" description="deploy release version to Maven staging repository">
<!-- sign and deploy the main artifact -->
<artifact:mvn>
<arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign-and-deploy-file" />
<arg value="-Durl=${maven-staging-repository-url}" />
<arg value="-DrepositoryId=${maven-staging-repository-id}" />
<arg value="-DpomFile=pom.xml" />
<arg value="-Dfile=${maven-jar}" />
<arg value="-Pgpg" />
</artifact:mvn>
<!-- sign and deploy the sources artifact -->
<artifact:mvn>
<arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign-and-deploy-file" />
<arg value="-Durl=${maven-staging-repository-url}" />
<arg value="-DrepositoryId=${maven-staging-repository-id}" />
<arg value="-DpomFile=pom.xml" />
<arg value="-Dfile=${maven-sources-jar}" />
<arg value="-Dclassifier=sources" />
<arg value="-Pgpg" />
</artifact:mvn>
<!-- sign and deploy the javadoc artifact -->
<artifact:mvn>
<arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign-and-deploy-file" />
<arg value="-Durl=${maven-staging-repository-url}" />
<arg value="-DrepositoryId=${maven-staging-repository-id}" />
<arg value="-DpomFile=pom.xml" />
<arg value="-Dfile=${maven-javadoc-jar}" />
<arg value="-Dclassifier=javadoc" />
<arg value="-Pgpg" />
</artifact:mvn>
</target>
</project>

5
doc/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
bib.xml
fmtcache
*.dot
*.gif
*.err

80
doc/GUI-DB.pic Normal file
View File

@ -0,0 +1,80 @@
# usage-example for the comment extensions to the
# "Pic macros for drawing UML sequence diagrams"
#
# (C) Copyright 2005 Sebastian Setzer
#
# Permission to use, copy, and distribute this software and its
# documentation for any purpose and without fee is hereby granted,
# provided that the above copyright notice appear in all copies and that
# both that copyright notice and this permission notice appear in
# supporting documentation.
#
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
#
.PS
copy "sequence.pic";
# Define the objects
actor(U, "");
object(G,"g:GUI");
placeholder_object(Dummy1); # more space
placeholder_object(D);
step();
# Message sequences
active(G);
step();
create_message(G,D,"db:DB");
active(D);
step();
inactive(D);
async(); # use asynchrone messages (not-filled arrowheads)
comment(D,C,down 1 right, wid 1 ht 0.7 "waiting for" "condition" "dbMailbox")
message(U,G,"openBrowser");
message(G,D,"query()"); active(D);
message(D,G,"result"); inactive(D);
connect_to_comment(D,C)
message(U,G,"scroll");
message(G,D,"query()"); active(D);
message(D,G,"result"); inactive(D);
connect_to_comment(D,C)
message(U,G,"Exit");
step();
begin_frame(G,F,"OnExit");
message(G,D,"shutdown()"); inactive(G); active(D);
comment(G,C,down .2 right .2, wid 2 ht 0.25 "wait for cond. dbShutdown")
step();
comment(D,C,right, wid 2 ht 1 \
"all queries preceeding the" \
"shutdown in the mailbox" \
"are answered already." \
"DbQuery-Objects can" \
"be destroyed")
message(D,G,"done"); inactive(D); active(G);
sync();
destroy_message(G,D,"");
step();
end_frame(D,F);
step();
inactive(G);
# Complete the lifelines
step();
complete(G);
complete(U);
.PE

44
doc/Makefile Normal file
View File

@ -0,0 +1,44 @@
#
#
ROOT=/cygdrive/c
PIC2PLOT=pic2plot
GS=gs
DESTDIR=/dds/pubs/web/home/umlgraph
NOTETOOLS=/dds/pubs/Courses/tools
GIF := $(shell sed -n 's/.*<img *src *= *"\([^.]*\.gif\)".*/\1/p' *.xml)
XML := $(wildcard *.xml)
DOC?=snapshot-doc
.SUFFIXES:.java .dot .ps .gif .pic .eps .png
.java.dot:
javadoc -docletpath ../lib/UmlGraph.jar -doclet org.umlgraph.doclet.UmlGraph -private $<
mv graph.dot $@
.dot.eps:
dot -Teps -o$@ $<
.dot.gif:
dot -Tgif $< -o$@
.pic.eps:
perl -p -e 'BEGIN {binmode(STDOUT);} s/\r//' $< | $(PIC2PLOT) -Teps >$@
# Could also use -Tgif, but going through Ghostscript produces a much better
# anti-aliased image
.pic.gif:
perl -p -e 'BEGIN {binmode(STDOUT);} s/\r//' $< | \
$(PIC2PLOT) -Tps | \
$(GS) -q -r360 -dNOPAUSE -sDEVICE=pnm -sOutputFile=- - -c quit | \
pnmcrop | \
pnmscale 0.25 | \
ppmtogif >$@
all: sequence.pic $(GIF) $(XML)
sh $(ROOT)/$(NOTETOOLS)/coursebib.sh bib
echo "Drawing UML Diagrams with UMLGraph" | /c/Perl/bin/perl $(NOTETOOLS)/thread.pl -n -h html -r -p ../index.html index ${DESTDIR}/${DOC}
sequence.pic: ../sequence.pic
perl -p -e 'BEGIN {binmode(STDOUT);} s/\r//' $< >$@

BIN
doc/Root-small.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

42
doc/Root.java Normal file
View File

@ -0,0 +1,42 @@
// Author: Vadim Nasardinov
import java.util.List;
import java.util.Map;
/**
* @assoc "1..1" - "0..n" Adapter
* @assoc "" - "0..n" ObjectType
* @assoc "" - "0..n" ObjectMap
* @assoc "" - "0..n" Table
* @assoc "" - "0..n" DataOperation
**/
class Root {
private Map m_adapters;
private List m_types;
private List m_maps;
private List m_tables;
private List m_ops;
public Adapter getAdapter(Class klass) {}
}
class Adapter {
public Root getRoot();
}
abstract class Element {
Root getRoot() {}
}
class ObjectType extends Element {}
/**
* @has "1..1" - "1..1" ObjectType
**/
class ObjectMap extends Element {
private ObjectType m_type;
}
class Table extends Element {}
class DataOperation extends Element {}

BIN
doc/Root.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

66
doc/RootViews.java Normal file
View File

@ -0,0 +1,66 @@
// Author: Vadim Nasardinov
// Author: Andrea Aime
import java.util.List;
import java.util.Map;
/**
* @assoc "1..1" - "0..n" Adapter
* @assoc "" - "0..n" ObjectType
* @assoc "" - "0..n" ObjectMap
* @assoc "" - "0..n" Table
* @assoc "" - "0..n" DataOperation
**/
class Root {
private Map m_adapters;
private List m_types;
private List m_maps;
private List m_tables;
private List m_ops;
public Adapter getAdapter(Class klass) {}
}
class Adapter {
public Root getRoot();
}
abstract class Element {
Root getRoot() {}
}
class ObjectType extends Element {}
/**
* @has "1..1" - "1..1" ObjectType
**/
class ObjectMap extends Element {
private ObjectType m_type;
}
class Table extends Element {}
class DataOperation extends Element {}
/**
* @hidden
* @opt nodefontname luxisr
* @opt nodefontabstractname luxisri
* @opt edgefontname luxisr
* @opt nodefontsize 8
* @opt edgefontsize 8
* @opt nodefillcolor LemonChiffon
*/
class UMLOptions {}
/**
* @view
* @opt attributes
* @opt operations
*/
class DetailedView {}
/**
* @view
*/
class Overview {}

59
doc/ack.xml Normal file
View File

@ -0,0 +1,59 @@
<?xml version="1.0" ?>
<notes>
<p>
UMLGraph was developed and is being maintained by
<a href="http://www.spinellis.gr">Diomidis Spinellis</a>.
Andrea Aime has contributed the functionality for
adding UML diagrams to javadoc pages, for inferring relationships,
and for multiple diagram views.
</p>
<p>
In addition,
the following individuals have contributed useful comments and code.
UMLGraph would not be in its current state without their contributions.
</p>
<ul>
<li>Nascif Abousalh-Neto</li>
<li>Roger Alexander</li>
<li>Panagiotis Astithas</li>
<li>Bernd Blacha</li>
<li>Yves Bossel</li>
<li>Maxim Butov</li>
<li>David P. Caldwell</li>
<li>Anthony Callegaro</li>
<li>Cimballi</li>
<li>Dirk Datzert</li>
<li>Christophe Deneux</li>
<li>Nick Efthymiou</li>
<li>Georgios Gousios</li>
<li>Antti Hakala</li>
<li>Art Hampton</li>
<li>Alan Jeffrey</li>
<li>&#216;yvind Jergan</li>
<li>Scott Johnson</li>
<li>Gunho Kim</li>
<li>Nikita Kozlov</li>
<li>Trustin Lee</li>
<li>Joshua Lim</li>
<li>Stefano Martina</li>
<li>Vadim Nasardinov</li>
<li>Laird Nelson</li>
<li>Bernd Onasch</li>
<li>S&#233;bastien Pierre</li>
<li>Olek Poplavskyy</li>
<li>Alessandro Riva</li>
<li>Arnaud Rogues</li>
<li>Soraya Santana de la Fe</li>
<li>Jonathan R. Santos</li>
<li>Jan Schl&#252;ter</li>
<li>Erich Schubert</li>
<li>Sebastian Setzer</li>
<li>J&#246;rn Guy S&#252;&#223;</li>
<li>Andreas Studer</li>
<li>Przemyslaw Szufel</li>
<li>Ivan F. Villanueva B.</li>
<li>Przemyslaw Wesolek</li>
<li>Franz Wilhelmstoetter</li>
<li>Zhigang Xie</li>
</ul>
</notes>

37
doc/advrel.java Normal file
View File

@ -0,0 +1,37 @@
/*
* Advanced relationships
* UML User Guide p. 137
*/
/**
* @opt attributes
* @opt operations
* @hidden
*/
class UMLOptions {}
class Controller {}
class EmbeddedAgent {}
class PowerManager {}
/**
* @extends Controller
* @extends EmbeddedAgent
* @navassoc - - - PowerManager
*/
class SetTopController implements URLStreamHandler {
int authorizationLevel;
void startUp() {}
void shutDown() {}
void connect() {}
}
/** @depend - <friend> - SetTopController */
class ChannelIterator {}
interface URLStreamHandler {
void OpenConnection();
void parseURL();
void setURL();
void toExternalForm();
}

42
doc/ant.xml Normal file
View File

@ -0,0 +1,42 @@
<?xml version="1.0" ?>
<notes>
To run the UMLGraph doclet from <em>ant</em>, use a rule,
like the following.
<fmtcode ext="xml">
<target name="uml" depends="prepare">
<property name="uml.dir" value="${basedir}/uml"/>
<property name="src.uml.dir" value="${src.dir}/uml"/>
<mkdir dir="${uml.dir}"/>
<path id="uml.source.path">
<pathelement path="${src.uml.dir}/"/>
<pathelement path="${src.java.dir}"/>
</path>
<javadoc sourcepathref="uml.source.path" packagenames="*" package="true">
<doclet name="org.umlgraph.doclet.UmlGraph" path="${basedir}/lib/UmlGraph.jar">
<param name="-d" value="${uml.dir}"/>
</doclet>
</javadoc>
<apply executable="dot" dest="${uml.dir}" parallel="false">
<arg value="-Tpng"/>
<arg value="-o"/>
<targetfile/>
<srcfile/>
<fileset dir="${uml.dir}" includes="*.dot"/>
<mapper type="glob" from="*.dot" to="*.png"/>
</apply>
</target>
</fmtcode>
<h2>Notes</h2>
<ul>
<li>When you pass the <code>packagenames</code> option to
<em>javadoc</em>, the default (unnamed) package (and the
<code>UMLOptions</code> class
located in it) is ignored.
In such cases you should include the <code>UMLOptions</code> class
within a named package.</li>
<li>The above invocation will generated a single class
diagram. If multiple view generation is required you should add
the <code>views</code> option.</li>
</ul>
</notes>

17
doc/assoc.java Normal file
View File

@ -0,0 +1,17 @@
/**
* Associations with visibility
* UML User Guide p. 145
*
* @opt horizontal
* @hidden
*/
class UMLOptions {}
/** @assoc * - "*\n\n+user " User */
class UserGroup {}
/** @navassoc "1\n\n+owner\r" - "*\n\n+key" Password */
class User{}
class Password{}

123
doc/bib.bib Normal file
View File

@ -0,0 +1,123 @@
@Article{GKNK93,
author = "Emden R. Gasner and Eleftherios Koutsofios and Stephen C. North and Kiem-Phong Vo",
Title="A Technique for Drawing Directed Graphs",
Journal=ieeese,
Pages="124--230",
Volume="19",
Number="3",
Month=may,
Year="1993"
}
@Article{Spi03e,
Title="On the Declarative Specification of Models",
Author="Diomidis Spinellis",
Journal="IEEE Software",
Month="March/April",
Year=2003,
Volume=20,
Pages="94--96",
Number=2,
URL="http://www.dmst.aueb.gr/dds/pubs/jrnl/2003-IEEESW-umlgraph/html/article.html"
}
@Book {Spi03i,
Author="Diomidis Spinellis",
Title="Code Reading: The Open Source Perspective",
Publisher="Addison-Wesley",
Address="Boston, MA",
URL="http://www.spinellis.gr/codereading",
Year=2003
}
@TechReport {TRPIC,
Author="Brian W. Kernighan",
Title="{PIC}---A Graphics Language for typesetting: Revised User Manual",
Type="Computer Science Technical Report",
Note="Available online at \url{http://cm.bell-labs.com/cm/cs/cstr}",
Number="116",
Month=dec,
Year="1984",
Institution="Bell Laboratories",
Address="Murray Hill, NJ"
}
@Book {FS00,
Author="Martin Fowler and Kendall Scott",
Title="{UML} Distilled: Applying the Standard Object Modeling Language",
Publisher="Addison-Wesley",
ISBN="0-201-65783-X",
Address="Boston, MA",
Edition="second",
Year=2000
}
@Book{BRJ99,
Title="The Unified Modeling Language User Guide",
Author="Grady Booch and James Rumbaugh and Ivar Jacobson",
Publisher="Addison-Wesley",
Address="Reading, MA",
Year="1999",
ISBN="0-201-57168-4"
}
@Book{RJB99,
Title="The Unified Modeling Language Reference Manual",
Author="James Rumbaugh and Ivar Jacobson and Grady Booch",
Publisher="Addison-Wesley",
Address="Reading, MA",
Year="1999",
ISBN="0-201-30998-X",
Where="dds-CD1"
}
@Book {Spi06,
Author="Diomidis Spinellis",
Title="Code Quality: The Open Source Perspective",
Publisher="Addison-Wesley",
Address="Boston, MA",
URL="http://www.spinellis.gr/codequality",
XISBN="0-321-16607-8",
Year=2006
}
@Misc{Shoe06,
Title="{UML} Diagrams Using {G}raphviz {D}ot",
Month=apr,
Year=2006,
URL="http://www.ffnn.nl/pages/articles/media/uml-diagrams-using-graphviz-dot.php",
Note="Available online \url{http://www.ffnn.nl/pages/articles/media/uml-diagrams-using-graphviz-dot.php}",
Author="Frank Schoep"
}
@TechReport{OMG02,
Author="{Object Management Group}",
Title="Human-Usable Textual Notation ({HUTN}) Specification",
Note="Available online \url{http://www.omg.org/docs/ptc/02-12-01.pdf}",
URL="http://www.omg.org/docs/ptc/02-12-01.pdf",
Number="ptc/02-12-01",
Month=dec,
Year=2002,
Institution="OMG Inc.",
Address="Needham, MA"
}
@Misc{Mir08,
Title="Reverse-engineer Source Code into UML Diagrams",
Month=aug,
Year=2008,
URL="http://java.dzone.com/articles/reverse-engineer-source-code-u",
Note="Available online \url{http://java.dzone.com/articles/reverse-engineer-source-code-u}",
Author="Meera Subbarao"
}
@CONFERENCE{SG16,
author={Seifermann, S. and Groenda, H.},
title={Survey on textual notations for the Unified Modeling Language},
journal={MODELSWARD 2016 - Proceedings of the 4th International Conference on Model-Driven Engineering and Software Development},
year={2016},
pages={28--39},
note={cited By 0},
url={https://www.cooperate-project.de/images/publications/MODELSWARD2016.pdf},
document_type={Conference Paper},
}

11
doc/car.java Normal file
View File

@ -0,0 +1,11 @@
class Tyre {}
class Engine {}
class Body {}
/**
* @composed 1 - 4 Tyre
* @composed 1 - 1 Engine
* @composed 1 - 1 Body
*/
class Car {}

30
doc/catalina.java Normal file
View File

@ -0,0 +1,30 @@
/*
* Interface and generalization relationships in Jakarta Catalina
*/
/**
* @opt nodefontname "Arial"
* @hidden
*/
class UMLOptions{}
class HttpResponseBase
extends ResponseBase
implements HttpResponse, HttpServletResponse {}
abstract class HttpResponseWrapper
extends ResponseWrapper
implements HttpResponse {}
class HttpResponseFacade
extends ResponseFacade
implements HttpServletResponse {}
abstract class ResponseWrapper implements Response {}
abstract interface HttpResponse extends Response {}
abstract class ResponseBase implements Response, ServletResponse {}
abstract interface HttpServletResponse {}
class ResponseFacade implements ServletResponse {}
abstract interface ServletResponse {}
abstract interface Response {}

28
doc/cd-intro.xml Normal file
View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="ISO-8859-7" ?>
<notes>
One specifies a class diagram using the Java syntax complemented by
<a href="http://java.sun.com/j2se/javadoc/"><em>javadoc</em></a>
tags.
Running the UmlGraph doclet on the specification will generate
a
<a href="http://www.graphviz.org/">Graphviz</a>
diagram specification that can be automatically processed to
create PNG, SVG, EMF, Postscript, GIF, JPEG, fig, or Framemaker drawings.
<p />
The following is an example of a specification and the resulting UML class
diagram:
<table>
<tr><td>
<fmtcode ext="java">
class Person {
String Name;
}
class Employee extends Person {}
class Client extends Person {}
</fmtcode>
</td><td>
<img src="class-eg.gif" alt="Simple UML class diagram" />
</td></tr></table>
</notes>

78
doc/cd-model.xml Normal file
View File

@ -0,0 +1,78 @@
<?xml version="1.0" ?>
<notes>
The UMLGraph class diagrams allows you to model
<ul>
<li>classes (specified as Java classes)
</li>
<li>
active classes, components, nodes, use cases,
collaborations, and packages
(specified as Java classes with an <code>@opt shape</code> tag)
</li>
<li>attributes (specified as Java class fields)
</li>
<li>operations (specified as Java class methods)
</li>
<li>stereotypes (using the <code>@stereotype</code> <em>name</em> tag)
</li>
<li>tagged values (using the <code>@tagvalue</code> <em>name</em> <em>value</em> tag)
</li>
<li>implementation relationships (specified using the Java <code>implements</code> declaration)
</li>
<li>generalization relationships (specified using the Java <code>extends</code> declaration or (for multiple inheritance) the <em>javadoc</em> <code>@extends</code> tag)
</li>
<li>association relationships (specified using the <em>javadoc</em> <code>@assoc</code> tag) </li>
<li>navigable (directed) association relationships (specified using the <em>javadoc</em> <code>@navassoc</code> tag) </li>
<li>aggregation relationships (specified using the <em>javadoc</em> <code>@has</code> tag) </li>
<li>navigable aggregation relationships (specified using the <em>javadoc</em> <code>@navhas</code> tag) </li>
<li>composition relationships (specified using the <em>javadoc</em> <code>@composed</code> tag) </li>
<li>navigable composition relationships (specified using the <em>javadoc</em> <code>@navcomposed</code> tag) </li>
<li>dependency relationships (specified using the <em>javadoc</em> <code>@depend</code> tag)
</li>
</ul>
All relationship tags apart from <code>@extends</code> take four arguments:
<ol>
<li> The source adornments (role, multiplicity, and visibility)
</li>
<li> The relationship name
</li>
<li> The target adornments (role, multiplicity, and visibility)
</li>
<li> The target class
</li>
</ol>
Arguments can be space-separated, or enclosed in quotes if they
need to contain the space character.
The - character is used as a placeholder to denote empty arguments.
You can use the \n sequence to separate the first three adornments
in separate centered lines;
the \l and \r sequences can also be used to generate left and right
aligned lines.
You can use the &lt; and &gt; characters in the relationship name
to enclose stereotype names.
These will be automatically enclosed in guillemots.
Note that a relationship's target class is not implicitly
defined; it should also be specified using the Java class syntax.
The target can be specified by simple name, java class lookup rules
(imports and visibility) will be used to determine the actual class.
The following is an example of a relationship
specification and the resulting UML diagram:
<table>
<tr><td>
<pre>
class Tyre {}
class Engine {}
class Body {}
/**
* @composed 1 - 4 Tyre
* @composed 1 - 1 Engine
* @composed 1 - 1 Body
*/
class Car {}
</pre>
</td><td>
<img src="car.gif" alt="UML relationship diagram" />
</td></tr></table>
</notes>

46
doc/cd-note.xml Normal file
View File

@ -0,0 +1,46 @@
<?xml version="1.0" ?>
<notes>
In UMLGraph you can easily add a note (comment) to an element,
using the <code>@note</code> tag.
The corresponding text will be split into lines, as specified in the note.
Multiple tags can be used to add more notes to the same element.
More complicated, (one to many) relationships can be established
by creating an element with a note shape, setting its contents
to its comment text through the <code>@opt commentname</code> tag,
and associating it with other elements with the <code>@assoc</code>
tag.
<table>
<tr><td>
<fmtcode ext="java">
/**
* @opt shape node
* @note Located in the
* machine room
* @note Sun Blade 6048
* @depend - - - MapLocation
* @depend - - - DataMine
*/
class Server{}
/** @opt shape component */
class MapLocation {}
/** @opt shape component */
class DataMine {}
/**
* CPU-munching
* components that must
* run on this server
* @opt shape note
* @opt commentname
* @assoc - - - MapLocation
* @assoc - - - DataMine
*/
class munchComment {}
</fmtcode>
</td><td>
<img src="note.gif" alt="UML note example" />
</td></tr></table>
</notes>

132
doc/cd-oper.xml Normal file
View File

@ -0,0 +1,132 @@
<?xml version="1.0" ?>
<notes>
UMLGraph's input follows the Java syntax and semantics.
However,
since the main purpose of UMLGraph is the declarative specification of
UML diagrams there is no need to flesh-out each class's methods,
to completely specify each class, or to specify package information.
You only specify the details you want to appear on the graph.
If you wish your (Java) implementation to evolve together with the
design feel free to include code or additional details.
You can hide these details from the UML diagram using the <em>javadoc</em>
<code>@hidden</code> tag applied to classes, methods, and fields.
In theory you can also use UMLGraph to reverse engineer existing
Java code.
Note however that UMLGraph was not originally designed for this purpose;
the resulting graphs may be large and unwieldy.
<p />
There are various ways to invoke UMLGraph,
each providing a different balance between convenience and flexibility.
<h2>Option 1: Using the Supplied Script</h2>
This is the simplest option.
If <code>umlgraph</code> (or <code>umlgraph.bat</code>) is correctly
installed,
you can run UMLGraph by simply specifying the basename of
the Java file containing the diagram specification and the file type of
the generated diagram (e.g. gif, ps, png, svg).
Example:
<fmtcode ext="sh">
umlgraph Test png
</fmtcode>
Any additional UMLGraph or <em>javadoc</em> arguments can be added at
the end of the command line.
This command will read the specification file (e.g. Test.java) and
generate directly a diagram of the appropriate type
(e.g. Test.png).
<h2>Option 2: Running Java</h2>
This option provides the maximum flexibility.
In order to run, <em>javadoc</em> needs to access <code>tools.jar</code>.
You can accomplish this in two ways.
<ol>
<li>
Specify the location of <code>tools.jar</code> as a part of Java's classpath
and specify the full name of the UMLGraph doclet as an argument to Java.
This is an invocation example under Windows
<fmtcode ext="bat">
java -classpath "lib/UmlGraph.jar;c:\program files\java\jdk1.6.0_02\lib\Tools.jar"
org.umlgraph.doclet.UmlGraph -package Test.java
</fmtcode>
and under Unix
<fmtcode ext="sh">
java -classpath '/usr/share/lib/UmlGraph.jar:/opt/Java-1.6/lib/tools.jar' \
org.umlgraph.doclet.UmlGraph -package Test.java
</fmtcode>
</li>
<li> Place the <code>UmlGraph.jar</code>
file in a directory that also contains the Java SDK <code>tools.jar</code> file.
You can accomplish this either by copying <code>UmlGraph.jar</code> to the SDK
<code>lib</code> directory where <code>tools.jar</code> resides,
or by copying the JDK <code>tools.jar</code> file into the directory
where you installed UMLGraph.
You then run
<fmtcode ext="sh">
java -jar /path/to/UmlGraph.jar yourfile1.java ...
</fmtcode>
</li>
</ol>
You can use any of the <em>javadoc</em> general options;
<code>-private</code> is usually needed to avoid having to explicitly
specify public elements.
Example:
<fmtcode ext="sh">
java -jar /usr/jvm/java-1.5.0/lib/UmlGraph.jar -private Simple.java
</fmtcode>
<p />
To generate a diagram of all classes in the package specify as arguments
to the Java invocation the name of the package and the directory where
it resides.
The following example generates a diagram of all UMLGraph classes.
<fmtcode ext="sh">
java -classpath ... org.umlgraph.doclet.UmlGraph -sourcepath src/main/java org.umlgraph.doclet
</fmtcode>
<p />
Specifying some packages before the list of source files will designate
those packages as <em>local</em>.
When you specify a package list,
the SVG output UMLgraph generates will contain
local hyperlinks for the local classes
and hyperlinks to the Sun Java API documentation for all other classes.
<p />
<h2>Option 3: Running Javadoc</h2>
Alternatively, you can also run <em>UMLGraph</em> from within <em>javadoc</em>.
This can be useful if your IDE provides additional support for running <em>javadoc</em>.
In this case you run
<em>javadoc</em> with arguments <code>-doclet org.umlgraph.doclet.UmlGraph</code>
<code>-docletpath /path/to/UmlGraph.jar</code>
and append at the end the file(s) that contain your diagram
specification.
Example:
<fmtcode ext="sh">
javadoc -docletpath UmlGraph.jar -doclet org.umlgraph.doclet.UmlGraph -private Simple.java
</fmtcode>
<h2>Running Dot</h2>
The last two options, will generate the UML diagram in
<em>Graphviz</em> <em>dot</em> format.
This is a text file that can be processed by the <em>Graphviz</em> <em>dot</em>
program to layout and draw the graph.
<em>javadoc</em> will create by default a file named <code>graph.dot</code>
in the current directory.
A command line like the following will convert the <code>graph.dot</code>
file into Postscript:
<fmtcode ext="sh">
dot -Tps -ograph.ps graph.dot
</fmtcode>
or PNG
<fmtcode ext="sh">
dot -Tpng -ograph.png graph.dot
</fmtcode>
Refer to the <em>dot</em> documentation for information on creating other file formats
or adjusting the UMLGraph output.
<p />
You also can pipe the result of <em>UMLGraph</em> directly into <em>dot</em>:
<fmtcode ext="sh">
java -jar /.../UmlGraph.jar -private -output - Simple.java | dot -Tgif -ograph.gif
</fmtcode>
<p />
Note that when you use <em>dot</em> for generating SVG diagrams your
should specify the <code>-outputencoding UTF-8</code> option to UMLGraph.
This option will correctly render the stereotype guillemot characters
in the <em>dot</em> output and the corresponding SVG file.
</notes>

45
doc/cd-opt-spec.xml Normal file
View File

@ -0,0 +1,45 @@
<?xml version="1.0" ?>
<notes>
Since the options are really a part of the generated graph you
want in many cases to include them in the diagram specification.
You can do that by adding <em>javadoc</em> <code>@opt</code> tags in front
of a class named <code>UMLOptions</code>, as in the following example:
<fmtcode ext="java">
/**
* @opt horizontal
* @opt all
* @hidden
*/
class UMLOptions {}
</fmtcode>
<p />
Similarly, you can also globally specify options for all the note elements.
through a class named <code>UMLNoteOptions</code>, as in the following example:
<fmtcode ext="java">
/**
* @hidden
* @opt nodefontcolor "blue"
*/
class UMLNoteOptions{}
</fmtcode>
<p />
You can also change the UMLGraph operation on a per-class basis by
using <code>@opt</code> attributes on individual classes.
In this case the <code>@opt</code> specification temporarily overrides
the particular global setting for the class being processed.
<p/>Finally, you can reset an option to its default value by prefixing it
with an exclamation mark. For example:
<fmtcode ext="java">
/**
* @opt !attributes
* @opt !nodefontsize
*/
class MyClass {}
</fmtcode>
will disable attribute listing for MyClass, and reset the node font size
to its default value (10).
</notes>

193
doc/cd-opt.xml Normal file
View File

@ -0,0 +1,193 @@
<?xml version="1.0" ?>
<notes>
A number of options control the operation of UMLGraph
class diagram generator.
These can be specified on the command line, and most can also
be specified through javadoc <code>@opt</code> tags within the diagram, affecting all or some elements.
Most have a negated version by prefixing an exclamation mark.
<p/>
<h2>What Gets Drawn</h2> <!-- {{{1 -->
<dl>
<dt>-all</dt><dd>Same as
<code>-attributes</code>
<code>-operations</code>
<code>-visibility</code>
<code>-types</code>
<code>-enumerations</code>
<code>-enumconstants</code>
</dd>
<dt>-attributes</dt><dd>Show class attributes (Java fields) </dd>
<dt>-commentname</dt><dd>Name the element using the text in the javadoc comment, instead of the name of its class. </dd>
<dt>-constructors</dt><dd>Show a class's constructors </dd>
<dt>-enumconstants</dt><dd>When showing enumerations, also show the values they can take. </dd>
<dt>-enumerations</dt><dd>Show enumarations as separate stereotyped primitive types. </dd>
<dt>-hide</dt><dd>Specify entities to hide from the graph.
Matching is done using a non-anchored regular match.
For instance, "<code>-hide (Big|\.)Widget</code>" would hide "<code>com.foo.widgets.Widget</code>" and
"<code>com.foo.widgets.BigWidget</code>". Can also be used without arguments,
in this case it will hide everything (useful in the context of views
to selectively unhide some portions of the graph, see the view chapter for
further details). </dd>
<dt>-include</dt><dd>Match classes to include with a non-anchored match. This is weaker than
the <code>-hide</code> option, but can be used to include classes from foreign packages
in the package view (which would by default filter to only include package members).</dd>
<dt>-operations</dt><dd>Show class operations (Java methods) </dd>
<dt>-qualify</dt><dd>Produce fully-qualified class names. </dd>
<dt>-qualifyGenerics</dt><dd>Use fully-qualified class names in Java generics.</dd>
<dt>-types</dt><dd>Add type information to attributes and operations </dd>
<dt>-view</dt><dd>Specify the fully qualified name of a class that contains
a view definition. Only the class diagram specified by this view will be generated.
<br/>See the views chapter for more details. </dd>
<dt>-views</dt><dd>Generate a class diagram for every view found in the source path. </dd>
<dt>-visibility</dt><dd>Adorn class elements according to their visibility (private, public, protected, package) </dd>
</dl>
<h2>Visual Appearance</h2> <!-- {{{1 -->
<dl>
<dt>-bgcolor</dt><dd>Specify the graph's background color. </dd>
<dt>-autosize</dt><dd>Fits generated graph to the width of the page/window. Defaults to true. </dd>
<dt>-collapsible</dt><dd>Enhance the javadoc HTML files containing UML diagrams with Javascript that provides a link for showing the (initially collapsed) diagrams. </dd>
<dt>-edgecolor</dt><dd>Specify the color for drawing edges. </dd>
<dt>-edgefontcolor</dt><dd>Specify the font color to use for edge labels. </dd>
<dt>-edgefontname</dt><dd>Specify the font name to use for edge labels. </dd>
<dt>-edgefontsize</dt><dd>Specify the font size to use for edge labels. </dd>
<dt>-horizontal</dt><dd>Layout the graph in the horizontal direction. </dd>
<dt>-nodefillcolor</dt><dd>Specify the color to use to fill the shapes. </dd>
<dt>-nodefontabstractname</dt><dd>Specify the font name to use inside abstract class nodes. </dd>
<dt>-nodefontclassabstractname</dt><dd>Specify the font name use for the class name of abstract classes. </dd>
<dt>-nodefontclassname</dt><dd>Specify the font name to use for the class names. </dd>
<dt>-nodefontclasssize</dt><dd>Specify the font size to use for the class names. </dd>
<dt>-nodefontcolor</dt><dd>Specify the font color to use inside nodes. </dd>
<dt>-nodefontname</dt><dd>Specify the font name to use inside nodes. </dd>
<dt>-nodefontpackagename</dt><dd>Specify the font name to use for the package names (used only when the package name is postfixed, see -postfixpackage). </dd>
<dt>-nodefontpackagesize</dt><dd>Specify the font size to use for the package names (used only when it package name is postfixed, see -postfixpackage). </dd>
<dt>-nodefontsize</dt><dd>Specify the font size to use inside nodes. </dd>
<dt>-nodefonttagname</dt><dd>Specify the font name to use for the tag names. </dd>
<dt>-nodefonttagsize</dt><dd>Specify the font size to use for the tag names. </dd>
<dt>-nodesep</dt><dd>Specify the horizontal separation between the class nodes (0.25 by default). Decreasing this can make a diagram more compact.</dd>
<dt>-noguillemot</dt><dd>Specify that guillemot characters should not be used to denote special terms like "interface" and stereotype names. This is used on some platforms to circumvent problems associated with displaying non-ASCII characters. </dd>
<dt>-postfixpackage</dt><dd>When using qualified class names, put the package name in the line after the class name, in order to reduce the width of class nodes. </dd>
<dt>-ranksep</dt><dd>Specify the vertical separation between the class nodes (0.5 by default). Decreasing this can make a diagram more compact.</dd>
<dt>-shape</dt><dd>Specify the shape to use for the rendered element(s).
The following UML shapes are available:
<ul>
<li>class (default)</li>
<li>node</li>
<li>component</li>
<li>package</li>
<li>collaboration</li>
<li>usecase</li>
<li>activeclass</li>
</ul>
</dd>
</dl>
<p />
All colors can be either a symbolic name (e.g. blue),
a triple specifying hue-saturation-brightness as values 0-1
(e.g. ".13 0.9 1"),
or a triple specifying red-green-blue values as hexadecimal
digits prefixed by a # (e.g. "#ff8020").
The symbolic color names are derived from the X Windows System;
you can find a complete list in the
<a href="http://www.graphviz.org/doc/info/colors.html">Graphviz documentation</a>
<p />
Font names are passed directly to the dot graph generation back-end.
In general the Postcript standard names Times, Helvetica, Courier, and
Symbol are safe to use.
<h2>Relationship Inference</h2> <!-- {{{1 -->
<dl>
<dt>-collpackages</dt><dd>Specify the classes that will be treated as
containers for one to many relationships when inference is enabled.
Matching is done using a non-anchored regular match. Empty by default.
</dd>
<dt>-inferdep</dt><dd>Try to automatically infer dependencies between classes by inspecting
methods and fields. See the class diagram inference chapter for more details. Disabled by default.
</dd>
<dt>-inferdepinpackage</dt><dd>Enable or disable dependency inference among classes in the
same package. This option is disabled by default, because classes in the same package are supposed
to be related anyway, and also because there's no working mechanism to actually detect all
of these dependencies since imports are not required to use classes in the same package.
</dd>
<dt>-inferdepvis</dt><dd>Specifies the lowest visibility level of elements used to infer
dependencies among classes. Possible values are private, package, protected, public, in this
order. The default value is private. Use higher levels to limit the number of inferred dependencies.
</dd>
<dt>-inferrel</dt><dd>Try to automatically infer relationships between classes by inspecting
field values. See the class diagram inference chapter for further details. Disabled by default.
</dd>
<dt>-inferreltype</dt><dd>The type of relationship inferred when -inferrel is activated.
Defaults to "navassoc" (see the class modelling chapter for a list of relationship types).
</dd>
<dt>-useimports</dt><dd>Will also use imports to infer dependencies.
Disabled by default, since it does not work properly if there are multiple
classes in the same source file (will add dependencies to every class in
the source file).
</dd>
</dl>
<h2>API Hyperlinks</h2> <!-- {{{1 -->
<dl>
<dt>-apidocmap</dt><dd>Specify the file name of the URL mapping table.
The is a standard Java property file, where the property name is a regular
expression (as defined in the java.util.regex package) and the property value is
an URL "root" as described above.
This table is used to resolved external class names (class names that do not
belong to the current package being processed by UMLGraph). If no file is provided,
external classes will just be mapped to the on-line Java API documentation.
</dd>
<dt>-apidocroot</dt><dd>Specify the URL that should be used as the "root" for local classes.
This URL will be used as a prefix, to which the page name for the local class or
package will be appended (following the JavaDoc convention).
For example, if the value <code>http://www.acme.org/apidocs</code> is
provided, the class <code>org.acme.util.MyClass</code> will be mapped to the URL
<code>http://www.acme.org/apidocs/org/acme/util/MyClass.html</code>.
This URL will then be added to .dot diagram and can be surfaced in the
final class diagram by setting the output to SVG, or by creating an HTML page
that associates the diagram static image (a .gif or .png) with a client-side
image map.
</dd>
<dt>-link</dt><dd>A clone of the standard doclet
<a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/javadoc.html#link">-link</a>
option, allows UMLGraph to generate links from class symbols to their external javadoc
documentation (image maps are automatically generated in UMLGraphDoc, you'll have to generate them
manually with graphviz if using UMLGraph).
</dd>
</dl>
<h2>Operation</h2> <!-- {{{1 -->
<dl>
<dt>-compact</dt><dd>Generate compact dot files, that is, print HTML labels
in a single line instead of "pretty printing" them. Useful if the dot file
has to be manipulated by an automated tool
(e.g., the UMLGraph regression test suite).
</dd>
<dt>-d</dt><dd>Specify the output directory (defaults to the current directory).
</dd>
<dt>-dotexecutable</dt><dd>Specify the path of the <em>dot</em> executable.
</dd>
<dt>-linkoffline</dt><dd>Specify
links to javadoc-generated documentation for external referenced classes.
The <code>-linkoffline</code> option takes two arguments:
the first for the string to be embedded in the <code>href</code>
links, the second telling it where to find the <code>package-list</code>.
Example:
<pre>
-linkoffline http://developer.android.com/reference file:/home/doc/android/
</pre>
See the <em>javadoc</em> documentation for more details.
</dd>
<dt>-output</dt><dd>Specify the output file (default <code>graph.dot</code>).
If the output directory is provided, -output can only specify a file name,
otherwise a full path is accepted as well.
If the filename specified is a dash, then the results are printed on the
standard output, and can be directly piped into <em>dot</em>.
Note that, in order to avoid <em>javadoc</em> messages to contaminate
UMLGraph's output, you must execute UMLGraph directly as a jar,
not through <em>javadoc</em>.
</dd>
<dt>-outputencoding</dt><dd>Specify the output encoding character set (default <code>ISO-8859-1</code>).
When using <em>dot</em> to generate SVG diagrams you should specify
<code>UTF-8</code> as the output encoding, to have guillemots correctly
appearing in the resulting SVG.
</dd>
</dl>
<!-- Footer {{{1 -->
</notes>

51
doc/cd-umldoc.xml Normal file
View File

@ -0,0 +1,51 @@
<?xml version="1.0" ?>
<notes>
UmlGraphDoc is a standard doclet wrapper that combines
the standard doclet output (javadoc documentation) along with auto-generated
class diagrams for both packages and classes.
The UmlGraphDoc process is driven by all the parameters that can be specified for
UMLGraph and the standard doclet; each will be passed to the appropriate
doclet.
Diagram generation is based on the idea of context:
<ul>
<li>for packages, the diagram contains all of the classes in the package itself</li>
<li>for classes, the set of classes somehow related to the current class</li>
</ul>
The actual content of the diagrams depends on the kind of relations declared on the
class files (with the UMLGraph javadoc annotations) and/or on the kind of automated
inference that UMLGraph is allowed to use.
UMLGraph javadocs are now generated with UmlGraphDoc with the following ant target:
<fmtcode ext="xml">
<target name="javadocs" depends="compile">
<javadoc sourcepath="${src}" packagenames="org.umlgraph.doclet.*" destdir="${javadoc}"
private="true">
<doclet name="org.umlgraph.doclet.UmlGraphDoc" path="${lib}/UMLGraph.jar">
<param name="-inferrel"/>
<param name="-inferdep"/>
<param name="-hide" value="java.*"/>
<param name="-collpackages" value="java.util.*"/>
<param name="-qualify"/>
<param name="-postfixpackage"/>
<param name="-nodefontsize" value="9"/>
<param name="-nodefontpackagesize" value="7"/>
<param name="-link" value="http://java.sun.com/j2se/1.5.0/docs/guide/javadoc/doclet/spec"/>
<param name="-link" value="http://java.sun.com/j2se/1.5/docs/api"/>
</doclet>
</javadoc>
</target>
</fmtcode>
When generating documentation with UmlGraphDoc you will encounter
at some point the "fur ball" effect: some central classes that
have very complex context diagrams.
To reduce this, you can avoid dependency inference
altogheter, or reduce the number of inferred dependencies by using the -inferdepvis options.
If you find that this is not enough and have suggestions on how to improve the situation further,
we are eager to listen.
</notes>

47
doc/ceg-adv.xml Normal file
View File

@ -0,0 +1,47 @@
<?xml version="1.0" ?>
<notes>
<table>
<tr><td>
<fmtcode ext="java">
/*
* Advanced relationships
* UML User Guide p. 137
*/
/**
* @opt attributes
* @opt operations
* @hidden
*/
class UMLOptions {}
class Controller {}
class EmbeddedAgent {}
class PowerManager {}
/**
* @extends Controller
* @extends EmbeddedAgent
* @navassoc - - - PowerManager
*/
class SetTopController implements URLStreamHandler {
int authorizationLevel;
void startUp() {}
void shutDown() {}
void connect() {}
}
/** @depend - &lt;friend&gt; - SetTopController */
class ChannelIterator {}
interface URLStreamHandler {
void OpenConnection();
void parseURL();
void setURL();
void toExternalForm();
}
</fmtcode>
</td><td>
<img src="advrel.gif" alt="UML diagram showing dependency and navigation relationships" />
</td></tr></table>
</notes>

26
doc/ceg-at.xml Normal file
View File

@ -0,0 +1,26 @@
<?xml version="1.0" ?>
<notes>
<table>
<tr><td>
<fmtcode ext="java">
/**
* Associations with visibility
* UML User Guide p. 145
*
* @opt horizontal
* @hidden
*/
class UMLOptions {}
/** @assoc * - "*\n\n+user " User */
class UserGroup {}
/** @navassoc "1\n\n+owner\r" - "*\n\n+key" Password */
class User{}
class Password{}
</fmtcode>
</td><td>
<img src="assoc.gif" alt="UML diagram showing association types" />
</td></tr></table>
</notes>

31
doc/ceg-cat.xml Normal file
View File

@ -0,0 +1,31 @@
<?xml version="1.0" ?>
<notes>
<fmtcode ext="java">
/*
* Interface and generalization relationships in Jakarta Catalina
*/
class HttpResponseBase
extends ResponseBase
implements HttpResponse, HttpServletResponse {}
abstract class HttpResponseWrapper
extends ResponseWrapper
implements HttpResponse {}
class HttpResponseFacade
extends ResponseFacade
implements HttpServletResponse {}
abstract class ResponseWrapper implements Response {}
abstract interface HttpResponse extends Response {}
abstract class ResponseBase implements Response, ServletResponse {}
abstract interface HttpServletResponse {}
class ResponseFacade implements ServletResponse {}
abstract interface ServletResponse {}
abstract interface Response {}
</fmtcode>
<img src="catalina.gif" alt="UML diagram of representative Cataline classes" /><br />
</notes>

91
doc/ceg-color.xml Normal file
View File

@ -0,0 +1,91 @@
<?xml version="1.0" ?>
<notes>
<table>
<tr><td>
<fmtcode ext="java">
/**
* @opt edgecolor "yellow"
* @opt nodefontname "Times"
* @opt bgcolor ".7 .9 1"
* @opt nodefillcolor "#a0a0a0"
* @opt nodefontsize 14
* @hidden
*/
class UMLOptions{}
/**
* @opt nodefontname "Helvetica-Bold"
* @opt nodefontcolor "white"
* @composed - - - Red
* @composed - - - Green
* @composed - - - Blue
* @opt attributes
* @opt visibility
* @opt types
*/
class Pixel {
private int x, y;
public void setColor(ColorValue v) {}
}
/** @opt nodefillcolor red */
class Red {}
/** @opt nodefillcolor green */
class Green {}
/** @opt nodefillcolor blue */
class Blue {}
/** @hidden */
class ColorValue{}
</fmtcode>
</td><td>
<img src="color.gif" alt="UML diagram demonstrating the use of colors" />
</td></tr>
<tr><td>
<fmtcode ext="java">
package net.sf.whatever.test;
/**
* @hidden
* @opt postfixpackage
* @opt edgefontname arialbd
* @opt nodefontname arial
* @opt nodefontsize 9
* @opt nodefontabstract ariali
* @opt nodefontclassname arialbd
* @opt nodefontclassabstractname arialbi
* @opt nodefonttagsize 6
* @opt nodefonttagname ariali
* @opt nodefontpackagesize 8
* @opt operations
* @opt attributes
* @opt qualify
* @opt types
*/
class UMLOptions{}
/**
* @stereotype base
* @tagvalue since 1.0
*/
abstract class AbstractBase {
/** @tagvalue since 1.5 */
private int field;
public abstract void abstractMethod();
public int concreteMethod() { return 1; }
}
/**
* @composed 1 has * from.Outer.Space.AlienClass
*/
class Composite extends AbstractBase {}
public class Style extends AbstractBase {}
</fmtcode>
</td><td>
<img src="style.png" alt="UML diagram demonstrating the use of fonts" />
</td></tr>
</table>
</notes>

14
doc/ceg-er.xml Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0" ?>
<notes>
The following was generated by annotating the
<a href="https://github.com/istlab/Alitheia-Core/tree/master/alitheia/core/src/main/java/eu/sqooss/service/db">source code</a> of the
<a href="https://github.com/istlab/Alitheia-Core/">Alitheia Core</a> project.
Georgios Gousios, who created it, wrote:
<blockquote>
<p>
I've used UMLgraph to generate an E-R diagram out of the DAOs we use in Alitheia Core. I've just annotated a few classes with @assoc tags, removed the super class DAObject from all entities with sed, did some tweaking by hand in the .dot output, et voila, an E-R depicting almost 30 classes in less than 30 minutes!
</p>
</blockquote>
<p />
<img src="er-sqo-oss.png" alt="UML diagram showing an entity relationship diagram" />
</notes>

35
doc/ceg-ev.xml Normal file
View File

@ -0,0 +1,35 @@
<?xml version="1.0" ?>
<notes>
<table>
<tr><td>
<fmtcode ext="java">
/**
* Attribute and operation visility
* UML User Guide p. 123
*
* @opt operations
* @opt attributes
* @opt types
* @opt visibility
* @hidden
*/
class UMLOptions {}
/** @hidden */
class Tool {}
class Toolbar {
protected Tool currentSelection;
protected Integer toolCount;
public void pickItem(Integer i) {}
public void addTool(Tool t) {}
public void removeTool(Integer i) {}
public Tool getTool() {}
protected void checkOrphans() {}
private void compact() {}
}
</fmtcode>
</td><td>
<img src="vis.gif" alt="UML diagram showing attribute and operation visility" />
</td></tr></table>
</notes>

37
doc/ceg-gen.xml Normal file
View File

@ -0,0 +1,37 @@
<?xml version="1.0" ?>
<notes>
<table>
<tr><td>
<fmtcode ext="java">
/*
* Generalisation
* UML User Guide p. 141
*/
/* Basic categorisations */
class Asset {}
class InterestBearingItem {}
class InsurableItem {}
/* Asset types */
/**
* @extends InsurableItem
* @extends InterestBearingItem
*/
class BankAccount extends Asset {}
/** @extends InsurableItem */
class RealEstate extends Asset {}
class Security extends Asset {}
/* Securities */
class Stock extends Security {}
class Bond extends Security {}
/* Bank accounts */
class CheckingAccount extends BankAccount {}
class SavingsAccount extends BankAccount {}
</fmtcode>
</td><td>
<img src="general.gif" alt="UML diagram showing generalization relationships" />
</td></tr></table>
</notes>

48
doc/ceg-infer.xml Normal file
View File

@ -0,0 +1,48 @@
<?xml version="1.0" ?>
<notes>
<table>
<tr><td>
<fmtcode ext="java">
import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import java.util.Arrays;
/**
* @opt inferrel
* @opt collpackages java.util.*
* @opt inferdep
* @opt inferdepinpackage
* @opt hide java.*
* @hidden
*/
class UMLOptions {}
class Person {
House[] houses;
List&lt;Dog&gt; dogs;
public Room getFavouriteRoom(House house) {}
}
/**
* @opt inferreltype composed
*/
class House {
Map&lt;String, Room&gt; nameRoomMap;
}
class Room {}
class Dog {
Person owner;
}
</fmtcode>
</td><td>
<img src="infer.png" alt="UML diagram with relationship inference" />
</td></tr></table>
<p/>In this diagram we enabled both relationship and dependency inference.<br/>
To make sure Person.dogs and Person.friends are interpreted as one to many relationship
the <code>collpackage</code> option has to be specified.
</notes>

123
doc/ceg-mv.xml Normal file
View File

@ -0,0 +1,123 @@
<?xml version="1.0" ?>
<notes>
Vadim Nasardinov noted that an advantage of UMLGraph over many
GUI-oriented UML drawing tools is the ability
to generate different views of a diagram
from the same source description.
The following two diagrams were generated from the same source;
a Makefile illustrates a way to organize this process.
<h2>Class Overview</h2>
<img src="Root-small.png" alt="Class overview" />
<h2>Detailed Class View</h2>
<img src="Root.png" alt="Detailed class view" />
<h2>Java Description</h2>
<fmtcode ext="java">
// Author: Vadim Nasardinov
import java.util.List;
import java.util.Map;
/**
* @assoc "1..1" - "0..n" Adapter
* @assoc "" - "0..n" ObjectType
* @assoc "" - "0..n" ObjectMap
* @assoc "" - "0..n" Table
* @assoc "" - "0..n" DataOperation
**/
class Root {
private Map m_adapters;
private List m_types;
private List m_maps;
private List m_tables;
private List m_ops;
public Adapter getAdapter(Class klass) {}
}
class Adapter {
public Root getRoot();
}
abstract class Element {
Root getRoot() {}
}
class ObjectType extends Element {}
/**
* @has "1..1" - "1..1" ObjectType
**/
class ObjectMap extends Element {
private ObjectType m_type;
}
class Table extends Element {}
class DataOperation extends Element {}
</fmtcode>
<h2>Makefile</h2>
<fmtcode ext="mak">
# Author: Vadim Nasardinov (vadimn@redhat.com)
# Since: 2004-05-26
# See: http://www.spinellis.gr/umlgraph/doc/ceg-mv.html
# Requires: graphviz
# Requires: javadoc
# Requires: JAVA_HOME/lib/tools.jar
.PHONY : clean all dot png
UMLGRAPH := /var/vadim/binaries/UMLGraph-4.8
uml_graph := $(UMLGRAPH)/lib/UmlGraph.jar
java_files := $(shell find diagrams -name *.java)
dot_files := $(subst .java,.dot,$(java_files))
dot_files := $(foreach dot, $(dot_files), build/$(dot))
dot_files += $(subst .dot,-small.dot,$(dot_files))
png_files := $(subst .dot,.png,$(dot_files))
jd:=javadoc
jd_flags := -docletpath $(uml_graph) -doclet org.umlgraph.doclet.UmlGraph -private
jd_flags += -nodefontsize 9 -edgefontsize 9
jd_flags += -nodefillcolor LemonChiffon
detailed_flags := -attributes -operations -types
all: png
clean:
rm -rf build
build/%.dot : %.java
mkdir -p $(dir $@)
$(jd) $(jd_flags) $(detailed_flags) -output $@ $&lt;
build/%-small.dot : %.java
mkdir -p $(dir $@)
$(jd) $(jd_flags) -output $@ $&lt;
%.png : %.dot
dot -Nheight=0.2 -Elabelfontcolor=DarkSlateBlue -Elabelfontsize=8 -Tpng -o $@ $&lt;
build/%.png : %.fig
mkdir -p $(dir $@)
fig2dev -L png -S 4 $&lt; $@
dot: $(dot_files)
png: $(png_files)
build/%.png : %.png
mkdir -p $(dir $@)
cp $&lt; $@
# Example usage:
# make debug-java_files
# make debug-png_files
debug-%:
@echo $* is $($*)
</fmtcode>
</notes>

79
doc/ceg-schema.xml Normal file
View File

@ -0,0 +1,79 @@
<?xml version="1.0" ?>
<notes>
<table>
<tr><td>
<fmtcode ext="java">
/*
* Schema model
* UML User Guide p. 112
*/
/**
* @opt operations
* @opt attributes
* @opt types
* @hidden
*/
class UMLOptions {}
/* Define some types we use */
/** @hidden */
class Name {}
/** @hidden */
class Number {}
/**
* @has 1..* Member * Student
* @composed 1..* Has 1..* Department
*/
class School {
Name name;
String address;
Number phone;
void addStudent() {}
void removeStudent() {}
void getStudent() {}
void getAllStudents() {}
void addDepartment() {}
void removeDepartment() {}
void getDepartment() {}
void getAllDepartments() {}
}
/**
* @has 1..* AssignedTo 1..* Instructor
* @assoc 1..* - 1..* Course
* @assoc 0..* - "0..1 chairperson" Instructor
*/
class Department {
Name name;
void addInstructor() {}
void removeInstructor() {}
void getInstructor() {}
void getAllInstructors() {}
}
/**
* @assoc * Attends * Course
*/
class Student {
Name name;
Number studentID;
}
class Course {
Name name;
Number courseID;
}
/**
* @assoc 1..* Teaches * Course
*/
class Instructor {
Name name;
}
</fmtcode>
</td><td>
<img src="schema.gif" alt="UML diagram showing a database scheme model" />
</td></tr></table>
</notes>

74
doc/ceg-shape.xml Normal file
View File

@ -0,0 +1,74 @@
<?xml version="1.0" ?>
<notes>
<fmtcode ext="java">
/**
* @hidden
* @opt nodefontcolor "blue"
*/
class UMLNoteOptions{}
/**
* Structural Things
* @opt commentname
* @note Notes can
* be extended to
* span multiple lines
*/
class Structural{}
/**
* spelling.java
* @opt shape component
* @opt commentname
* @note Component
*/
class Component extends Structural{}
/** @opt shape node */
class Node extends Structural{}
/**
* Chain of
* responsibility
* @opt shape collaboration
* @opt commentname
* @note Collaboration
*/
class Collaboration extends Structural{}
/**
* Place order
* @opt shape usecase
* @opt commentname
* @note Use Case
*/
class UseCase extends Structural{}
/**
* Business rules
* @opt shape package
* @opt commentname
* @note Package
*/
class Package{}
/**
* @opt all
* @note Class
*/
class Counter extends Structural {
static public int counter;
public int getCounter();
}
/**
* @opt shape activeclass
* @opt all
* @note Active Class
*/
class RunningCounter extends Counter{}
</fmtcode>
<p/>
<img src="shapes.gif" alt="UML diagram showing the shapes supported by UMLGraph" />
</notes>

40
doc/ceg-ster.xml Normal file
View File

@ -0,0 +1,40 @@
<?xml version="1.0" ?>
<notes>
<table>
<tr><td>
<fmtcode ext="java">
/*
* Class stereotypes and tagged values
* UML User Guide p. 439
*/
/**
* @opt attributes
* @opt operations
* @opt types
* @hidden
*/
class UMLOptions {}
/** @hidden */
class Action {}
/**
* @stereotype container
* @tagvalue version 3.2
*/
class ActionQueue {
void add(Action a) {};
/** @tagvalue version 1.0 */
void add(Action a, int n) {};
void remove(int n) {};
/** @stereotype query */
int length() {};
/** @stereotype "helper functions" */
void reorder() {};
}
</fmtcode>
</td><td>
<img src="classadd.gif" alt="UML diagram of class stereotypes and tagged values" />
</td></tr></table>
</notes>

91
doc/ceg-view-details.xml Normal file
View File

@ -0,0 +1,91 @@
<?xml version="1.0" ?>
<notes>
The makefile-based multiple view example can be generated by using internal
view support by means of the following sources (note the use of UmlOptions
to set the common appearance options, and the views to generate multiple
diagrams at different detail level).
<fmtcode ext="java">
// Author: Vadim Nasardinov
// Author: Andrea Aime
import java.util.List;
import java.util.Map;
/**
* @assoc "1..1" - "0..n" Adapter
* @assoc "" - "0..n" ObjectType
* @assoc "" - "0..n" ObjectMap
* @assoc "" - "0..n" Table
* @assoc "" - "0..n" DataOperation
**/
class Root {
private Map m_adapters;
private List m_types;
private List m_maps;
private List m_tables;
private List m_ops;
public Adapter getAdapter(Class klass) {}
}
class Adapter {
public Root getRoot();
}
abstract class Element {
Root getRoot() {}
}
class ObjectType extends Element {}
/**
* @has "1..1" - "1..1" ObjectType
**/
class ObjectMap extends Element {
private ObjectType m_type;
}
class Table extends Element {}
class DataOperation extends Element {}
/**
* @hidden
* @opt nodefontname luxisr
* @opt nodefontabstractname luxisri
* @opt edgefontname luxisr
* @opt nodefontsize 8
* @opt edgefontsize 8
* @opt nodefillcolor LemonChiffon
*/
class UMLOptions {}
/**
* @view
* @opt attributes
* @opt operations
*/
class DetailedView {}
/**
* @view
*/
class Overview {}
</fmtcode>
and by invoking the following commands (assuming UmlGraph.jar is in the
current directory):
<fmtcode ext="bat">
javadoc -doclet org.umlgraph.doclet.UmlGraph -private -docletpath UmlGraph.jar -views RootViews.java
dot -Tpng -o root-small.png Overview.dot
dot -Tpng -o root.png DetailedView.dot
</fmtcode>
The javadoc invocation asks UMLGraph to build a diagram for every view (-views)
contained in the RootViews.java file. Notably, there's no class RootViews
in the source file: this is not needed to make javadoc work on a single
class. Respecting the java rules for file and class naming is anyway advised
in any real situation.
</notes>

108
doc/ceg-view-packages.xml Normal file
View File

@ -0,0 +1,108 @@
<?xml version="1.0" ?>
<notes>
Views are especially interesting in big projects, since they allow to
generate package specific diagrams and overview diagrams in a quick and
consistent way. <br/>
As an example we include a few class diagrams that have been generated
from the <a href="http://jakarta.apache.org/commons/dbcp">DBCP connection pool</a>,
without altering the sources and using association and dependency inference
instead.<br/>
The base view defines commons options, in particular the use of inference,
common class coloring and class visibility (in particular, we hide the
java runtime classes, with the exclusion of a few java.sql classes).
To avoid visual clutter, we have first shown the java.sql package contents, and
then hid selected classes.
The <code>Overview</code> view provides a full view of the DBCP package,
generating quite a big diagram (click on the diagram to show a full size version).<br/>
<fmtcode ext="java">
package org.apache.commons;
/**
* @view
* @opt inferrel
* @opt inferdep
* @opt useimports
*
* @match class .*
* @opt nodefillcolor LightGray
*
* @match class org.apache.commons.*
* @opt nodefillcolor PaleGreen
*
* @match class org.apache.commons.dbcp.*
* @opt nodefillcolor LemonChiffon
*
* @match class java.*|org.xml.*
* @opt hide
*
* @match class java.sql.*
* @opt !hide
*
* @match class java.sql\.(Ref|Time|Timestamp|Array|Date|Time|Clob|Blob|SQLException|.*MetaData.*|SQLWarning)
* @opt hide
*/
public abstract class BaseView {
}
/**
* @view
*/
public class Overview extends BaseView {
}
</fmtcode>
<a href="dbcp-overview-full.png"><img src="dbcp-overview-small.png" alt="Overview"/></a>
<p/>The <code>CommonsDbcp</code> view concentrates on the content of org.apache.commons.dbcp
package, hiding other packages and subpackages available in the sources
(click on the diagram to show a full size version).<br/>
<fmtcode ext="java">
package org.apache.commons;
/**
* @view
*
* @match class org.apache.commons.*
* @opt hide
*
* @match class org.apache.commons.dbcp..*
* @opt !hide
*
* @match class org.apache.commons.dbcp..*\..*
* @opt hide
*/
public class CommonsDbcp extends BaseView {}
</fmtcode>
<a href="dbcp-full.png"><img src="dbcp-small.png" alt="Overview"/></a>
<p/>Finally, the <code>Statement</code> view shows only the Statement related
classes and their dependencies.
<fmtcode ext="java">
package org.apache.commons;
/**
* @view
*
* @match class org.apache.commons.*
* @opt hide
*
* @match class org.apache.commons.dbcp\..*Statement.*
* @opt !hide
*
* @match class org.apache.commons.dbcp..*\..*
* @opt hide
*/
public class Statement extends BaseView {
}
</fmtcode>
<img src="dbcp-statement.png" alt="Statement"/>
</notes>

84
doc/ceg-view-spec.xml Normal file
View File

@ -0,0 +1,84 @@
<?xml version="1.0" ?>
<notes>
Views are special classes that allow the generation of a custom class
diagram based on a set of diagram global options and a set of option
overrides for classes matching user specified conditions.
The <code>@view</code> tag, marks a class used to describe a single class diagram.
The general syntax for defining a view is:
<fmtcode ext="java">
/**
* @view
* @opt viewOption1
* @opt viewOption2
* ...
* @match matchtype regularExpression
* @opt option1.1 [argument]
* @opt option1.2 [argument]
* ...
* @match matchtype regularExpression
* @opt option2.1 [argument]
* @opt option2.2 [argument]
* ...
*/
</fmtcode>
The @match tags allow to specify option overrides for classes that satisfy
the match condition. The match types are:
<ul>
<li><i>class</i>: matches class names using a regular expression.</li>
<li><i>subclass</i>: first looks for the base classes using the specified
regular expression, then matches the whole inheritance hierarchy of these
classes. The base classes are included in the match as well.</li>
<li><i>interface</i>: first looks for interfaces using the specified
regular expression, then matches every class that implements them,
either directly or indirectly. The interfaces are included in the match
as well.</li>
<li><i>context</i>: looks for classes using a regular expression,
then matches every class that's directly connected to them.</li>
</ul>
<p/>The <i>class</i> match type is intended to be used with a regular
expression, the others are usually performed against a class/interface
name rather than a real regular expression, but the syntax allows for
a regular expression to retain some flexibility (for example, a regular
expression can be used to match multiple classes, as in "(A|B|C)").<br/>
Refer to the <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html">Pattern</a>
API docs for details on regular expression specifications.
<p/>Matches will be evaluted in the order of specification, each applying
its overrides to the current options. This means that options for a
specific class are built in the following order, where each item overrides
only the options specified locally, leaving the other options intact:
<ul>
<li>Command line options</li>
<li>UMLOptions options</li>
<li>View options</li>
<li>Match overrides, in the order they are specified, and only for
the classes that satisfy the match conditions</li>
</ul>
<p/>Each view will generate a .dot file whose name is the name of the view,
unless the "output" option is specified to override it. Along with the "-views"
parameter on the command line, this allows for multiple views to be generated
in a single doclet invocation.
<h2>View inheritance</h2>
View classes can inherit from other view classes, allowing views to
share a set of common matches. The standard java inheritance mechanism
is used to specify inheritance.<br/>
Abstract view classes won't be used to generate diagrams, the common
idiom is to declare a base abstract view to share common options and
overrides, and have concrete view classes that extend for diagram generation.
<p/>When using view inheritance the option building order is:
<ul>
<li>Command line options</li>
<li>UMLOptions options</li>
<li>Base view options</li>
<li>View options</li>
<li>Base view match overrides</li>
<li>View match overrides</li>
</ul>
</notes>

14
doc/class-eg.java Normal file
View File

@ -0,0 +1,14 @@
/**
* @opt nodefillcolor ".13 .9 1"
* @hidden
*/
class UMLOptions{}
class Person {
String Name;
}
class Employee extends Person {}
class Client extends Person {}

30
doc/classadd.java Normal file
View File

@ -0,0 +1,30 @@
/*
* Class stereotypes and tagged values
* UML User Guide p. 439
*/
/**
* @opt attributes
* @opt operations
* @opt types
* @hidden
*/
class UMLOptions {}
/** @hidden */
class Action {}
/**
* @stereotype container
* @tagvalue version 3.2
*/
class ActionQueue {
void add(Action a) {};
/** @tagvalue version 1.0 */
void add(Action a, int n) {};
void remove(int n) {};
/** @stereotype query */
int length() {};
/** @stereotype "helper functions" */
void reorder() {};
}

38
doc/color.java Normal file
View File

@ -0,0 +1,38 @@
/**
* @opt edgecolor "yellow"
* @opt nodefontname "Times"
* @opt bgcolor ".7 .9 1"
* @opt nodefillcolor "#a0a0a0"
* @opt nodefontsize 14
* @hidden
*/
class UMLOptions{}
/**
* @opt nodefontname "Arial"
* @opt nodefontcolor "white"
* @composed - - - Red
* @composed - - - Green
* @composed - - - Blue
* @opt attributes
* @opt operations
* @opt visibility
* @opt types
*/
class Pixel {
private int x, y;
public void setColor(ColorValue v) {}
}
/** @opt nodefillcolor red */
class Red {}
/** @opt nodefillcolor green */
class Green {}
/** @opt nodefillcolor blue */
class Blue {}
/** @hidden */
class ColorValue{}

BIN
doc/dbcp-full.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
doc/dbcp-overview-full.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
doc/dbcp-overview-small.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
doc/dbcp-small.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
doc/dbcp-statement.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

45
doc/deriv.xml Normal file
View File

@ -0,0 +1,45 @@
<?xml version="1.0" ?>
<notes>
Here are other programs or efforts that build on UMLGraph's
code or ideas.
<ul>
<li> <a href="http://maven-plugins.sourceforge.net/maven-dotuml-plugin/">Dotuml</a>
integrates UMLGraph into <a href="http://maven.apache.org/">Maven</a>.</li>
<li> The <a href="http://www.primordion.com/Xholon/index.html">Xholon</a>
framework for building loosely-organized systems
captures object interactions at runtime,
and creates UML 2.0 sequence diagrams using UMLGraph.</li>
<li> <a href="http://phpcallgraph.sourceforge.net/">phpCallGraph</a>
can output its analysis in UMLGraph format, allowing the
automatic production of UML sequence diagrams from PHP code.</li>
<li> <a href="http://lightuml.sourceforge.net/">LightUML</a>
integrates UMLGraph into <a href="http://www.eclipse.org">Eclipse</a>.</li>
<li> <a href="http://ruby-uml.rubyforge.org/">ruby-uml</a>
traces aspects of an application
using UMLGraph to generate sequence and class diagrams.</li>
<li> The Politecnico Di Torino SoftEng group has extended UMLGraph into
the <a href="http://softeng.polito.it/projects/XUG/">XUG</a>
reverse engineering tool.</li>
<li> Adam Feuer's
<a href="http://www.python.org/pypi/PyUMLGraph">PyUMLGraph</a>
system applies the concept to Python programs.</li>
<li> The <a href="http://moinmo.in/">MoinMoin</a> Wiki engine
uses UMLGraph to provide
<a href="http://moinmo.in/ParserMarket/UmlSequence">support for UML sequence diagrams</a>.</li>
<li> The <a href="http://jbrugge.com/glean/">Glean</a>
framework for generating feedback on a team's source code
supports the scripting of UMLGraph.</li>
<li> W. Goesgens has <a href="http://wiki.ioslo.net/dokuwiki/graphviz#plugging_umlgraph_infront_of_graphviz">documented here</a> a way to use
UMLGraph diagrams in
<a href="http://wiki.splitbrain.org/wiki:dokuwiki">DokuWiki</a>.</li>
<li> Mykhaylo Sorochan has built on top of UMLGraph a
<a href="http://macroexpand.org/doku.php/articles:uml-sequence-diagram-dsl-txl:start">higher-level domain-specific language for specifying UML sequence diagrams</a>.</li>
<li>
<a href="http://sketchlet.sourceforge.net/">Sketchlet</a> is using UMLGraph as a widget plugin. You can find a video about the Sketchlet UMLGraph widget usage at <a href="http://www.youtube.com/watch?v=H6lrgSYyzE0">http://www.youtube.com/watch?v=H6lrgSYyzE0</a>.
</li>
<li>
<a href="http://argouml-graphviz.tigris.org/">argouml-graphviz</a>
is a plugin to let ArgoUML generate graphviz files.
</li>
</ul>
</notes>

58
doc/dist-52.pic Normal file
View File

@ -0,0 +1,58 @@
# UML Distilled: Figure 5-2 p. 70
#
#
.PS
copy "sequence.pic";
boxwid = 1.3;
# Define the objects
pobject(X);
pobject(T);
pobject(C);
pobject(A1);
pobject(A2);
# Message sequences
cmessage(X,T,"a: Transaction");
active(T);
async();
cmessage(T,C,"a: TransCoord");
inactive(T);
active(C);
cmessage(C,A1,"a1: TransCheck");
active(A1);
cmessage(C,A2,"a2: TransCheck");
active(A2);
message(A1,C,"ok");
sync();
step();
active(C);
message(C,C,"all done?");
inactive(C);
async();
step();
delete(A1);
inactive(C);
step();
message(A2,C,"ok");
active(C);
sync();
step();
active(C);
message(C,C,"all done?");
inactive(C);
async();
step();
delete(A2);
message(C,T,"beValid");
inactive(C);
active(T);
step();
complete(T);
complete(C);
.PE

67
doc/dist-52.xml Normal file
View File

@ -0,0 +1,67 @@
<?xml version="1.0" ?>
<notes>
The following diagram, based on the diagram appearing on p. 70 of
UML Distilled, contains self calls, object activation,
self-deleted objects, and asynchronous messages.
<h2>Diagram</h2>
<img src="dist-52.gif" alt="UML Distilled: Concurrent processes and activations" />
<h2>Diagram Source Code</h2>
<fmtcode ext="pic">
# UML Distilled: Figure 5-2 p. 70
.PS
copy "sequence.pic";
boxwid = 1.3;
# Define the objects
pobject(X);
pobject(T);
pobject(C);
pobject(A1);
pobject(A2);
# Message sequences
cmessage(X,T,"a: Transaction");
active(T);
async();
cmessage(T,C,"a: TransCoord");
inactive(T);
active(C);
cmessage(C,A1,"a1: TransCheck");
active(A1);
cmessage(C,A2,"a2: TransCheck");
active(A2);
message(A1,C,"ok");
sync();
step();
active(C);
message(C,C,"all done?");
inactive(C);
async();
step();
delete(A1);
inactive(C);
step();
message(A2,C,"ok");
active(C);
sync();
step();
active(C);
message(C,C,"all done?");
inactive(C);
async();
step();
delete(A2);
message(C,T,"beValid");
inactive(C);
active(T);
step();
complete(T);
complete(C);
.PE
</fmtcode>
</notes>

67
doc/dns.xml Normal file
View File

@ -0,0 +1,67 @@
<?xml version="1.0" ?>
<notes>
The following diagram, illustrates the operating system calls of
a typical DNS query.
It will appear in the book
<a href="http://www.spinellis.gr/codequality">Code Quality: The Open Source Perspective</a> (Addison-Wesley 2006).
The diagram was the original motivation behind the UMLGraph sequence diagram
drawing facility.
<h2>Diagram</h2>
<img src="dnsq.gif" alt="DNS Query Messages" />
<h2>Diagram Source Code</h2>
<fmtcode ext="pic">
#/usr/bin/pic2plot -Tps
#
# Run as pic filename | groff | ps2eps
#
# DNS query collaboration diagram
#
#
.PS
copy "sequence.pic";
boxwid = 1.3;
# Define the objects
object(B,":Web Browser");
object(W,":Workstation Kernel");
object(S,":Server Kernel");
object(D,":DNS Server");
step();
# Message sequences
active(B);
active(D);
active(W);
active(S);
message(D,S,"select");
inactive(D);
message(B,W,"socket");
message(B,W,"connect");
message(B,W,"sendto");
message(W,W,"send packet");
message(W,S,"DNS A query");
message(B,W,"recvfrom");
inactive(B);
message(S,S,"receive packet");
rmessage(S,D,"select returns");
active(D);
message(D,S,"recvfrom");
message(D,S,"sendto");
message(S,S,"send packet");
message(S,W,"DNS A reply");
message(W,W,"receive packet");
rmessage(W,B,"recvfrom returns");
active(B);
message(B,W,"close");
complete(B);
complete(W);
complete(S);
complete(D);
.PE
</fmtcode>
</notes>

53
doc/dnsq.pic Normal file
View File

@ -0,0 +1,53 @@
#/usr/bin/pic2plot -Tps
#
# Run as pic filename | groff | ps2eps
#
# DNS query collaboration diagram
#
#
.PS
copy "sequence.pic";
boxwid = 1.3;
# Define the objects
object(B,":Web Browser");
object(W,":Workstation Kernel");
object(S,":Server Kernel");
object(D,":DNS Server");
step();
# Message sequences
active(B);
active(D);
active(W);
active(S);
message(D,S,"select");
inactive(D);
message(B,W,"socket");
message(B,W,"connect");
message(B,W,"sendto");
message(W,W,"send packet");
message(W,S,"DNS A query");
message(B,W,"recvfrom");
inactive(B);
message(S,S,"receive packet");
rmessage(S,D,"select returns");
active(D);
message(D,S,"recvfrom");
message(D,S,"sendto");
message(S,S,"send packet");
message(S,W,"DNS A reply");
message(W,W,"receive packet");
rmessage(W,B,"recvfrom returns");
active(B);
message(B,W,"close");
complete(B);
complete(W);
complete(S);
complete(D);
.PE

BIN
doc/er-sqo-oss.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

236
doc/faq.xml Normal file
View File

@ -0,0 +1,236 @@
<?xml version="1.0" ?>
<notes>
<!--
To update the table of contents execute the following vim command from a register
/^<h2>Contents jjma/ul> kmb/^$ "qyy:g/^<h2><a name/s,<h2><a name="\([^>]*\)>\(.*\)</a></h2>,<li> <a href="\#\1>\2</a></li>,|y Q|u 'ad'b"qP
-->
<h2>Contents</h2>
<ul>
<li> <a href="#cmdline">What is the command line sequence to generate a UMLGraph class diagram?</a></li>
<li> <a href="#utfsvg">Why are the SVG diagrams dot generates malformed?</a></li>
<li> <a href="#antialias">How can I improve the quality of the bitmap images I generate?</a></li>
<li> <a href="#layout">How can I improve the layout of my class diagrams?</a></li>
<li> <a href="#mclass">A class appears multiple times in a class diagram. Why?</a></li>
<li> <a href="#static">Shouldn't static fields appear underlined?</a></li>
<li> <a href="#winpic">Where can I find a <em>pic2plot</em> executable for Windows?</a></li>
<li> <a href="#cr">Under Windows the output of <em>pic2plot</em> appears empty. Why?</a></li>
<li> <a href="#maven">I have a problem with Maven's Dotuml plugin. Can you help me?</a></li>
<li> <a href="#autopic">How can I make the UMLGraph doclet generate sequence diagrams?</a></li>
<li> <a href="#unnamed">Why do the options specified in the <code>UMLOptions</code> class stop working, when I pass the <code>packagenames</code> option to <em>javadoc</em>?</a></li>
<li> <a href="#tiger">Why doesn't UMLGraph run under Mac OS X?</a></li>
<li> <a href="#cpp">Can I create UML class diagrams from C++ code?</a></li>
<li> <a href="#ClassCastException">How can I get around a UMLGraphDoc crash with a ClassCastException?</a></li>
<li> <a href="#license">Under what license is UMLGraph distributed?</a></li>
<li> <a href="#classnotfound">Why do I get an exception java.lang.NoClassDefFoundError: com/sun/tools/javadoc/Main?</a></li>
<li> <a href="#truncxml">How can I prevent clipped SVG images in sequence diagrams?</a></li>
<li> <a href="#private">How can I instruct UMLGraph to include private fields in its output?</a></li>
</ul>
<h2><a name="cmdline">What is the command line sequence to generate a UMLGraph class diagram?</a></h2>
Assuming that you diagram's description is in the file Diag.java,
issue the command:
<fmtcode ext="sh">
umlgraph Diag png
java -jar path-to/UmlGraph.jar -package -output - Diag.java | dot -Tpng -oDiag.png Diag.dot
</fmtcode>
In the above you can change <code>png</code> to another file format,
and add more UMLGraph switches at the end of the line.
<p />
<h2><a name="utfsvg">Why are the SVG diagrams dot generates malformed?</a></h2>
UMLGraph uses guillemot characters for representing the angle brackets around
stereotypes, as in &#171;interface&#187;.
By default these are encoded as ISO-8859-1 characters, which are illegal
in the UTF-8 output that dot generates for SVG.
When using dot to generate SVG output, you should also specify
<code>-outputencoding utf8</code> to UMLGraph.
<h2><a name="antialias">How can I improve the quality of the bitmap images I generate?</a></h2>
Both
<em>dot</em> and
<em>pic2plot</em> can directly produce bitmap images in
formats like GIF, PNG and PNM.
However, if you want to produce presentation-quality output
the a vector output format like Postscript or SVG is preferable.
If you do require a bitmap format, it might be worth to create
it at a higher resolution from a Postscript image, and then downsample it.
This procedure (used for the diagrams appearing on the UMLGraph web site)
will create an antialiased image of a higher quality than what the default
bitmap output options produce.
The following pipeline is an example of how you can achieve this
effect:
<fmtcode ext="sh">
dot -Tps FILENAME.dot |
gs -q -r360 -dNOPAUSE -sDEVICE=pnm -sOutputFile=- - -c quit |
pnmcrop |
pnmscale 0.25 |
ppmtogif >FILENAME.gif
</fmtcode>
(David Griffiths reports that he had to add to the <em>gs</em> command
<code>-sPAPERSIZE=a4</code> or
<code>-dDEVICEHEIGHTPOINTS=1000</code> to avoid getting
his results chopped-off.)
<p />
One other possibility for converting the sequence diagram into Postscript
is to pass it through <em>pic</em> and <em>groff</em>.
Tools like <em>ps2epsi</em> and <em>ps2eps</em> can then be used to
convert the Postscript into encapsulated Postscript.
Of course, <em>groff</em> users will just use the <em>pic</em>
program as part of their processing pipeline.
<h2><a name="layout">How can I improve the layout of my class diagrams?</a></h2>
Try manipulating the <em>dot</em> parameters ratio, minlen, ranksep, and
nodesep.
For example, Arnaud Rogues recommends running <em>dot</em> with
command-line arguments as follows.
<fmtcode ext="sh">
dot -Gratio=0.7 -Eminlen=2
</fmtcode>
<h2><a name="mclass">A class appears multiple times in a class diagram. Why?</a></h2>
Most probably your class diagram uses packages, and you are not
qualifying the classes with the respective package names in the
tags you use.
The tags are not smart enough to do the package resolution,
so you will have to prepend the package name to the class,
or avoid using packages.
<p />
<h3>Problematic Specification</h3>
<fmtcode ext="java">
package test;
abstract class AbstractNode {}
/** @composed 1 has * AbstractNode */
class InnerNode extends AbstractNode {}
class Leaf extends AbstractNode {}
</fmtcode>
<h3>First Approach: Class Name Qualified with the Package</h3>
<fmtcode ext="java">
package test;
abstract class AbstractNode {}
/** @composed 1 has * test.AbstractNode */
class InnerNode extends AbstractNode {}
class Leaf extends AbstractNode {}
</fmtcode>
<h3>Second Approach: No Package Specification</h3>
<fmtcode ext="java">
abstract class AbstractNode {}
/** @composed 1 has * test.AbstractNode */
class InnerNode extends AbstractNode {}
class Leaf extends AbstractNode {}
</fmtcode>
<h2><a name="static">Shouldn't static fields appear underlined?</a></h2>
Yes they should.
Unfortunately, <em>dot</em> does not (yet) support a way to underline
single labels, and thus <em>UMLGraph</em> can not show the static fields
underlined.
<h2><a name="winpic">Where can I find a <em>pic2plot</em> executable for Windows?</a></h2>
A port of <em>pic2plot</em> for Windows can be found in
GNU PlotUtils, which is part of the
<a href="http://gnuwin32.sourceforge.net/packages.html">GnuWin32</a>
project.
<h2><a name="cr">Under Windows the output of <em>pic2plot</em> appears empty. Why?</a></h2>
On Windows platforms note that the current version of
<em>pic2plot</em> appears to be very picky about carriage return (CR - \r)
characters (by default, CR is part of the platform's end of line sequence)
appearing in its input file.
Therefore, you will probably want to instruct your editor to create
Unix-style files, or filter the files to remove the carriage return
characters.
The following Perl invocation is such a filter:
<fmtcode ext="sh">
perl -p -e "BEGIN {binmode(STDOUT);} s/\r//"
</fmtcode>
In addition, <em>pic2plot</em> appears to require that the last input file
be properly terminated (with a newline).
Apparently, some Windows editors may leave the last line unterminated,
so if your editor is in this category it may be safer to add a blank line
in the end.
<h2><a name="maven">I have a problem with Maven's Dotuml plugin. Can you help me?</a></h2>
Sorry, I did not develop this plugin, and therefore can not offer help.
Have a look at the project's documentation and mailing lists available through
<a href="http://maven-plugins.sourceforge.net/maven-dotuml-plugin/">plugin web page</a>.
<h2><a name="autopic">How can I make the UMLGraph doclet generate sequence diagrams?</a></h2>
You can't.
You have to write the <em>pic</em> code for the sequence diagrams by hand.
<h2><a name="unnamed">Why do the options specified in the <code>UMLOptions</code> class stop working, when I pass the <code>packagenames</code> option to <em>javadoc</em>?</a></h2>
When you pass the <code>packagenames</code> option to
<em>javadoc</em>, the default (unnamed) package (and the
<code>UMLOptions</code> class
located in it) is ignored.
In such cases you should include the <code>UMLOptions</code> class
within a named package.
<h2><a name="tiger">Why doesn't UMLGraph run under Mac OS X?</a></h2>
Make sure you are running Java 1.5 (run <code>java -version</code> to see).
If you are not running 1.5 you may need to adjust the symbolic links
in
<code>/System/Library/Frameworks/JavaVM.framework/Versions</code>.
<h2><a name="cpp">Can I create UML class diagrams from C++ code?</a></h2>
This <a href="http://www.spinellis.gr/blog/20060921/">blog entry</a> describes
a simple solution that has worked for me.
Depending on your requirements YMMV.
<h2><a name="ClassCastException">How can I get around a UMLGraphDoc crash with a ClassCastException?</a></h2>
This happens due to a know <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6442982">javadoc bug</a>.
By fixing the classpath used for the UNLGraph invocation you can avoid this
problem.
Olivier Duysens notes:
<blockquote>
<p>
JBuilder users need to go to Preferences/Build/Ant,
and tick the box "Use project libraries when running ant" to solve the issue.
</p>
</blockquote>
<h2><a name="license">Under what license is UMLGraph distributed?</a></h2>
UMLGraph is distributed under the
<a href="http://www.opensource.org/licenses/bsd-license.html">BSD license</a>
(see the file LICENSE in the distribution).
For uniformity with the rest of the web content appearing on this site,
the web site of UMLGraph appears under a
<a href="http://creativecommons.org/licenses/by-nc-nd/2.5/">Creative Commons Attribution-NonCommercial-NoDerivs 2.5</a>
license.
This affects only the UMLGraph home page; all other material
(for example the documentation) is also part of the UMLGraph distribution,
and can therefore be used under the BSD license.
<h2><a name="classnotfound">Why do I get an exception java.lang.NoClassDefFoundError: com/sun/tools/javadoc/Main?</a></h2>
This exception will occur when you execute UMLGraph directly as a jar
(not through<em>javadoc</em>), and the files UmlGraph.jar and tools.jar
are not in the same directory.
Either copy UmlGraph.jar in the directory where the tools.jar
of the JDK distribution is located (and execute UmlGraph.jar from there),
or copy tools.jar to the directory where UmlGraph.jar is located.
(The file tools.jar is typically located in the lib directory
of your JDK distribution.)
<h2><a name="truncxml">How can I prevent clipped SVG images in sequence diagrams?</a></h2>
This appears to be a limitation of <em>pic2plot</em>.
You can work around it, by increasing the width and height values appearing
in the SVG XML file that <em>pic2plot</em> generates.
<h2><a name="private">How can I instruct UMLGraph to include private fields in its output?</a></h2>
You need to pass the <code>-private</code> flag to <em>javadoc</em>.
Note that
when processing code that includes annotations
defined by libraries outside the core J2SE distribution,
it is a good idea to include the library jars to the classpath.
Otherwise, <em>javadoc</em> (and concequently UMLGraph)
will fail to process the input classes correctly.
This is <a href="http://forums.oracle.com/forums/thread.jspa?threadID=1521148">a known issue</a> with <em>javadoc</em>,
but only manifests in certain occasions when running UMLGraph,
for example when processing private class fields.
</notes>

27
doc/general.java Normal file
View File

@ -0,0 +1,27 @@
/*
* Generalisation
* UML User Guide p. 141
*/
/* Basic categorisations */
class Asset {}
class InterestBearingItem {}
class InsurableItem {}
/* Asset types */
/**
* @extends InsurableItem
* @extends InterestBearingItem
*/
class BankAccount extends Asset {}
/** @extends InsurableItem */
class RealEstate extends Asset {}
class Security extends Asset {}
/* Securities */
class Stock extends Security {}
class Bond extends Security {}
/* Bank accounts */
class CheckingAccount extends BankAccount {}
class SavingsAccount extends BankAccount {}

75
doc/gui-db.xml Normal file
View File

@ -0,0 +1,75 @@
<?xml version="1.0" ?>
<notes>
The following sequence diagram demonstrates the use of the frame and comment elements.
<h2>Diagram</h2>
<img src="GUI-DB.gif" alt="Database GUI interface" />
<h2>Diagram Source Code</h2>
<fmtcode ext="pic">
# usage-example for the comment extensions to the
# Written by Sebastian Setzer
.PS
copy "sequence.pic";
# Define the objects
actor(U, "");
object(G,"g:GUI");
placeholder_object(Dummy1); # more space
placeholder_object(D);
step();
# Message sequences
active(G);
step();
create_message(G,D,"db:DB");
active(D);
step();
inactive(D);
async(); # use asynchrone messages (not-filled arrowheads)
comment(D,C,down 1 right, wid 1 ht 0.7 "waiting for" "condition" "dbMailbox")
message(U,G,"openBrowser");
message(G,D,"query()"); active(D);
message(D,G,"result"); inactive(D);
connect_to_comment(D,C)
message(U,G,"scroll");
message(G,D,"query()"); active(D);
message(D,G,"result"); inactive(D);
connect_to_comment(D,C)
message(U,G,"Exit");
step();
begin_frame(G,F,"OnExit");
message(G,D,"shutdown()"); inactive(G); active(D);
comment(G,C,down .2 right .2, wid 2 ht 0.25 "wait for cond. dbShutdown")
step();
comment(D,C,right, wid 2 ht 1 \
"all queries preceeding the" \
"shutdown in the mailbox" \
"are answered already." \
"DbQuery-Objects can" \
"be destroyed")
message(D,G,"done"); inactive(D); active(G);
sync();
destroy_message(G,D,"");
step();
end_frame(D,F);
step();
inactive(G);
# Complete the lifelines
step();
complete(G);
complete(U);
.PE
</fmtcode>
</notes>

48
doc/index.xml Normal file
View File

@ -0,0 +1,48 @@
<?xml version="1.0" ?>
<index>
<ch><ti>Introduction</ti><fi>intro</fi></ch>
<ch><ti>Installation</ti><fi>install</fi></ch>
<ch><ti>Class Diagrams</ti><fi>cd-intro</fi></ch>
<ch><ti>Class Diagram Operations</ti><fi>cd-oper</fi></ch>
<ch><ti>Class Modelling</ti><fi>cd-model</fi></ch>
<ch><ti>Notes in Class Diagrams</ti><fi>cd-note</fi></ch>
<ch><ti>Class Diagram Options</ti><fi>cd-opt</fi></ch>
<ch><ti>Specifying class Diagram Options</ti><fi>cd-opt-spec</fi></ch>
<ch><ti>Javadocs and UML class diagrams with UMLGraphDoc</ti><fi>cd-umldoc</fi></ch>
<ch><ti>Class Diagram Views</ti><fi>views</fi></ch>
<ch><ti>Class Diagram Example: Shapes</ti><fi>ceg-shape</fi></ch>
<ch><ti>Class Diagram Example: Generalisation Relationships</ti><fi>ceg-gen</fi></ch>
<ch><ti>Class Diagram Example: Advanced Relationships</ti><fi>ceg-adv</fi></ch>
<ch><ti>Class Diagram Example: Relationships Inference</ti><fi>ceg-infer</fi></ch>
<ch><ti>Class Diagram Example: Schema</ti><fi>ceg-schema</fi></ch>
<ch><ti>Class Diagram Example: ER</ti><fi>ceg-er</fi></ch>
<ch><ti>Class Diagram Example: Element Visibility</ti><fi>ceg-ev</fi></ch>
<ch><ti>Class Diagram Example: Association Types</ti><fi>ceg-at</fi></ch>
<ch><ti>Class Diagram Example: Real Example (Catalina Classes)</ti><fi>ceg-cat</fi></ch>
<ch><ti>Class Diagram Example: Class Stereotypes and Tagged Values</ti><fi>ceg-ster</fi></ch>
<ch><ti>Class Diagram Example: Fonts, Colors, Global and Local Options</ti><fi>ceg-color</fi></ch>
<ch><ti>Class Diagram Example: Multiple Views Through Command-Line Options</ti><fi>ceg-mv</fi></ch>
<ch><ti>Class Diagram Example: Built-in Support for Views</ti><fi>ceg-view-spec</fi></ch>
<ch><ti>Class Diagram Example: Views With Different Specification Details</ti><fi>ceg-view-details</fi></ch>
<ch><ti>Class Diagram Example: Views for Different Packages</ti><fi>ceg-view-packages</fi></ch>
<ch><ti>Running the Doclet from Ant</ti><fi>ant</fi></ch>
<ch><ti>Sequence Diagrams</ti><fi>seq-intro</fi></ch>
<ch><ti>Syntax of Sequence Diagram Definitions</ti><fi>seq-syntax</fi></ch>
<ch><ti>Defining a Simple Sequence Diagram</ti><fi>seq-simple</fi></ch>
<ch><ti>An Improved Sequence Diagram</ti><fi>seq-impr</fi></ch>
<ch><ti>Creating and Destroying Objects</ti><fi>seq-cd</fi></ch>
<ch><ti>Sequence Diagram Operations</ti><fi>seq-ops</fi></ch>
<ch><ti>Sequence Diagram Variables</ti><fi>seq-var</fi></ch>
<ch><ti>Sequence Diagram Example: Nested Activation and Complex Interactions</ti><fi>uml-appa</fi></ch>
<ch><ti>Sequence Diagram Example: Concurrent Processes and Activations</ti><fi>dist-52</fi></ch>
<ch><ti>Sequence Diagram Example: Create and Destroy</ti><fi>uml-182</fi></ch>
<ch><ti>Sequence Diagram Example: Lifeline Constraints</ti><fi>uml-184</fi></ch>
<ch><ti>Sequence Diagram Example: External Actor</ti><fi>uml-71</fi></ch>
<ch><ti>Sequence Diagram Example: A DNS Query</ti><fi>dns</fi></ch>
<ch><ti>Sequence Diagram Example: A Comments and Frames</ti><fi>gui-db</fi></ch>
<ch><ti>Frequently Asked Questions</ti><fi>faq</fi></ch>
<ch><ti>Bibliography</ti><fi>bib</fi></ch>
<ch><ti>Projects Based on UMLGraph</ti><fi>deriv</fi></ch>
<ch><ti>Version History</ti><fi>ver</fi></ch>
<ch><ti>Acknowledgements</ti><fi>ack</fi></ch>
</index>

38
doc/infer.java Normal file
View File

@ -0,0 +1,38 @@
/*
* Relationship inference
*/
import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import java.util.Arrays;
/**
* @opt inferrel
* @opt collpackages java.util.*
* @opt inferdep
* @opt inferdepinpackage
* @opt hide java.*
* @hidden
*/
class UMLOptions {}
class Person {
House[] houses;
List<Dog> dogs;
public Room getFavouriteRoom(House house) {}
}
/**
* @opt inferreltype composed
*/
class House {
Map<String, Room> nameRoomMap;
}
class Room {}
class Dog {
Person owner;
}

BIN
doc/infer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

37
doc/install.xml Normal file
View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="ISO-8859-7" ?>
<notes>
To install UmlGraph follow these steps.
<ol>
<li> Copy the files in <code>lib</code> to a directory you will
use for storing UmlGraph's installation
(for instance, <code>/usr/local/lib</code>).
</li>
<li> Copy the file <code>bin/umlgraph</code> (for Unix) or
<code>bin/umlgraph.bat</code> (for Windows) to a directory
of your execution path (for instance, <code>/usr/local/bin</code>).</li>
<li> Adjust the above file, setting <code>UMLGRAPH_HOME</code> to
point to the directory where you installed the UmlGraph library files.
</li>
</ol>
<p>
UMLGraph is implemented as a <em>javadoc</em> doclet (a program satisfying the
doclet API that specifies the content and format of the output
generated by the <em>javadoc</em> tool).
Furthermore, the output of UmlGraph needs to be post-processed
with the <em>Graphviz</em> <em>dot</em> program.
Therefore, to draw class diagrams with UmlGraph class you will need to have
<a href="http://java.sun.com/j2se/javadoc/"><em>javadoc</em></a>
and
<a href="http://www.graphviz.org/">Graphviz</a>
installed on your computer.
Both programs are freely available, from Sun and AT&amp;T respectively,
for many platforms including Unix and Windows.
<em>Javadoc</em> is part of the Sun JDK, so a typical JDK installation will also
include <em>javadoc</em>.
</p>
<p>
To draw UML sequence diagrams you must also install the free
<a href="http://www.gnu.org/software/plotutils/plotutils.html">GNU plotutils</a>
system.
</p>
</notes>

54
doc/intro.xml Normal file
View File

@ -0,0 +1,54 @@
<?xml version="1.0" ?>
<notes>
UMLGraph allows the declarative specification and drawing of
UML class and sequence diagrams.
The specification is done in text diagrams, that are then
transformed into the appropriate graphical representations.
<p />
There is no rule specifying that models should appear in a graphical
form. A model is a simplification of reality, so a model for a software
artifact could really be an outline of that artifact; think of a class
definition without code in the method bodies. However, we usually
prefer to examine many of our models in a graphical representation: UML
employs ten different diagrams for visualizing different perspectives
of a system.
<p />
Designers typically create their model diagrams using a drawing editor.
However, all drawing editors require the tedious placing and manipulation of drawing shapes on the canvas. The effort and the motor coordination skills required for this activity are mostly irrelevant to the end result: unlike architectural or mechanical engineering models the appearance of a software system's model diagram is only marginally related to the quality of the represented software design.
<p />
Computer power and automatic graph drawing algorithms have now
sufficiently advanced so as to allow the automatic placement of graph
nodes on the canvas and the near optimal routing of the respective
edges. We can therefore design models using a declarative textual
representation and subsequently view, publish, and share them in
graphical form.
UMLGraph's support for
declaratively specifying class and sequence diagrams
is part of an ongoing effort aiming to support all ten types of UML diagrams.
<p />
Creating models in a declarative, textual notation offers a number of advantages.
<ul>
<li> First of all, the model composition mechanism matches well both a programmer's high-level skills, the textual abstract formalization of concrete concepts, and the associated low-level skills, the manipulation of text using an editor and other text-based tools.</li>
<li> The declarative notation, by being closer to the program's representation (the notation I experimented with is based on the Java syntax and semantics), forces the designer to distinguish between the model and the respective implementation, between the essential system characteristics and the trivial adornments.
It is more difficult for designers to get away, as they often do now, with drawing for a model a nice picture of the implementation they have in mind.</li>
<li> The declarative representation is also highly malleable, the existing visual structure does not hinder drastic changes, nor is effort wasted on the tidy arrangement of graph nodes a psychological barrier against massive design refactoring.</li>
<li> Declarative models are also highly automatable: they can be easily generated from even higher-level descriptions by trivial scripts and tools operating on design process inputs such as database schemas, existing code, or structured requirements documents.</li>
<li> With a declarative specification under the programmer's control a macro processors can be used for configuration management, allowing the same model to be used for generating diverse diagrams.</li>
<li> Revision control and team integration activities can utilize the same proven tools and processes that are currently used for managing source code.
Thus with a tool like Subversion or Git one can keep track of design revisions, create and merge branches, monitor model changes, and split work among a team.</li>
<li> Finally, the declarative approach can readily utilize existing text processing tools for tasks that a drawing editor system may not provide.</li>
</ul>
Consider how your favorite model editor handles the following tasks and how you could handle them using a simple Perl script or a text-processing pipeline applied to the declarative model specification:
<ul>
<li>identify all classes containing a given field (as a prelude to an aspect-oriented cross-cut);</li>
<li>count the total number of private fields in a given design;</li>
<li>order methods appearing in multiple classes by their degree of commonality;</li>
<li>identify differences between two designs.</li>
</ul>
All the above tasks can be easily performed in text files using Unix commands
such as
<em>grep</em>,
<em>wc</em>,
<em>grep ... | sort ...</em>, and
<em>diff</em>.
</notes>

33
doc/note.java Normal file
View File

@ -0,0 +1,33 @@
/**
* @opt nodefontname "Helvetica"
* @opt edgefontname "Helvetica"
* @hidden
*/
class UMLOptions{}
/**
* @opt shape node
* @note Located in the
* machine room
* @note Sun Blade 6048
* @depend - - - MapLocation
* @depend - - - DataMine
*/
class Server{}
/** @opt shape component */
class MapLocation {}
/** @opt shape component */
class DataMine {}
/**
* CPU-munching
* components that must
* run on this server
* @opt shape note
* @opt commentname
* @assoc - - - MapLocation
* @assoc - - - DataMine
*/
class munchComment {}

69
doc/schema.java Normal file
View File

@ -0,0 +1,69 @@
/*
* Schema model
* UML User Guide p. 112
*/
/**
* @opt operations
* @opt attributes
* @opt types
* @hidden
*/
class UMLOptions {}
/* Define some types we use */
/** @hidden */
class Name {}
/** @hidden */
class Number {}
/**
* @has 1..* Member * Student
* @composed 1..* Has 1..* Department
*/
class School {
Name name;
String address;
Number phone;
void addStudent() {}
void removeStudent() {}
void getStudent() {}
void getAllStudents() {}
void addDepartment() {}
void removeDepartment() {}
void getDepartment() {}
void getAllDepartments() {}
}
/**
* @has 1..* AssignedTo 1..* Instructor
* @assoc 1..* - 1..* Course
* @assoc 0..* - "0..1 chairperson" Instructor
*/
class Department {
Name name;
void addInstructor() {}
void removeInstructor() {}
void getInstructor() {}
void getAllInstructors() {}
}
/**
* @assoc * Attends * Course
*/
class Student {
Name name;
Number studentID;
}
class Course {
Name name;
Number courseID;
}
/**
* @assoc 1..* Teaches * Course
*/
class Instructor {
Name name;
}

26
doc/seq-cd.pic Normal file
View File

@ -0,0 +1,26 @@
#
#
.PS
copy "sequence.pic";
# Define the objects
object(S,"s:Switch");
object(P,"p:Pump");
placeholder_object(F);
step();
active(S);
active(P);
# Message sequences
message(S,P,"run()");
create_message(P,F,"f:Flow");
active(F);
message(S,P,"stop()");
destroy_message(P,F);
step();
complete(S);
complete(P);
.PE

40
doc/seq-cd.xml Normal file
View File

@ -0,0 +1,40 @@
<?xml version="1.0" ?>
<notes>
Objects do not always appear at the top of a UML sequence diagram;
they are often constructed by other objects.
In this case, a placeholder object is defined at the beginning
of the diagram, to leave the appropriate space of the object.
Later a create message will actually create an object with the
given label.
Any object can also receive a destroy message, that will stop
its life.
The lifeline of destroyed messages is not typically completed.
<p />
The following definition extends our previous diagram with a
dynamically created flow object.
<fmtcode ext="pic">
# Define the objects
object(S,"s:Switch");
object(P,"p:Pump");
placeholder_object(F);
step();
active(S);
active(P);
# Message sequences
message(S,P,"run()");
create_message(P,F,"f:Flow");
active(F);
message(S,P,"stop()");
destroy_message(P,F);
# Object completion
step();
complete(S);
complete(P);
</fmtcode>
<p />
The resultant diagram is<br />
<img src="seq-cd.gif" alt="Sequence diagram with object construction and destruiction" />
<p />
</notes>

32
doc/seq-eg.pic Normal file
View File

@ -0,0 +1,32 @@
# UML User Guide: Appendix A,p. 436
#
#
.PS
copy "sequence.pic";
# Define the objects
object(O,"o:Toolkit");
placeholder_object(P);
step();
# Message sequences
active(O);
step();
active(O);
message(O,O,"callbackLoop()");
inactive(O);
create_message(O,P,"p:Peer");
message(O,P,"handleExpose()");
active(P);
return_message(P,O,"");
inactive(P);
destroy_message(O,P);
inactive(O);
# Complete the lifelines
step();
complete(O);
.PE

22
doc/seq-impr.pic Normal file
View File

@ -0,0 +1,22 @@
#
#
.PS
copy "sequence.pic";
# Define the objects
object(S,"s:Switch");
object(P,"p:Pump");
step();
active(S);
active(P);
# Message sequences
message(S,P,"run()");
message(S,P,"stop()");
step();
complete(S);
complete(P);
.PE

33
doc/seq-impr.xml Normal file
View File

@ -0,0 +1,33 @@
<?xml version="1.0" ?>
<notes>
Let us try to improve the simple sequence diagram.
<fmtcode ext="pic">
# Object definition
object(S,"s:Switch");
object(P,"p:Pump");
step();
active(S);
active(P);
# Message exchange
message(S,P,"run()");
message(S,P,"stop()");
# Object lifeline completion
step();
complete(S);
complete(P);
</fmtcode>
Here, we have manually advanced the timeline of our diagrams
with a <code>step();</code> call after we defined the objects,
to provide them with a bit of breathing space.
We also added a similar step call at the end of the diagram.
Finally, we made both objects active, after their definition.
Calling active on a given object will change the drawing of its
lifeline, from the dashed format indicating an inactive object,
to a thick swimming-lane, active object, format.
<p />
The resultant diagram is<br />
<img src="seq-impr.gif" alt="Improved sequence diagram" />
<p />
</notes>

50
doc/seq-intro.xml Normal file
View File

@ -0,0 +1,50 @@
<?xml version="1.0" ?>
<notes>
One specifies a sequence diagram using <em>pic</em> macros to define
objects and method invocations.
The <a href="http://www.gnu.org/software/plotutils/plotutils.html">GNU plotutils</a>
<em>pic2plot</em> program can then process the sequence diagram to create a
PNG, PNM, (pseudo)GIF, SVG, AI, Postscript, CGM, FIG, PCL, HPGL, Regis, or TEK
drawing.
<p />
The following is an example of a specification and the resulting UML sequence
diagram:
<table>
<tr><td>
<fmtcode ext="pic">
.PS
copy "sequence.pic";
# Define the objects
object(O,"o:Toolkit");
placeholder_object(P);
step();
# Message sequences
active(O);
step();
active(O);
message(O,O,"callbackLoop()");
inactive(O);
create_message(O,P,"p:Peer");
message(O,P,"handleExpose()");
active(P);
return_message(P,O,"");
inactive(P);
destroy_message(O,P);
inactive(O);
# Complete the lifelines
step();
complete(O);
.PE
</fmtcode>
</td><td>
<img src="seq-eg.gif" alt="Simple UML sequence diagram" />
</td></tr></table>
The diagram is drawn from its source code specification using a command
like:
<fmtcode ext="sh">
pic2plot -Tgif FILENAME.pic >FILENAME.gif
</fmtcode>
</notes>

115
doc/seq-ops.xml Normal file
View File

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8" ?>
<notes>
The following calls can be used to define a sequence diagram.
<dl>
<dt>object(name,label);</dt>
<dd>Defines an object with the given name, labeled on the diagram
as specified.</dd>
<dt>placeholder_object(name)</dt>
<dd>Defines a place where the named object will later be
created.
Can also be written as <code>pobject</code>.
</dd>
<dt>actor(name,label);</dt>
<dd>Defines an actor with the given name, labeled on the diagram
as specified.
Actors are typically used instead of objects to indicate operations
initiated by human actions. </dd>
<dt>complete(name);</dt>
<dd>Completes the lifeline of a given object (or actor)
by drawing its lifeline to the bottom of the diagram.</dd>
<dt>message(from_object,to_object,label)</dt>
<dd>Draws a message between two objects, with the given label.
Self messages (where an objects sends a message to itself)
are supported.
</dd>
<dt>return_message(from_object,to_object,label)</dt>
<dd>Draws a return message between two objects, with the given label.
Can also be written as <code>rmessage</code>.
</dd>
<dt>create_message(from_object,to_object,object_label);</dt>
<dd>Has from_object create the to_object, labeled
with object_label.
The message is labeled with the <code>«create»</code> stereotype.
Can also be written as <code>cmessage</code>.
</dd>
<dt>destroy_message(from_object,to_object);</dt>
<dd>Sends a message
labeled with the <code>«destroy»</code> stereotype
from the from_object to the to_object.
The object to_object is marked as destroyed, with an X at the
end of its lifeline.
The object's lifeline need not be otherwise completed.
Can also be written as <code>dmessage</code>.
</dd>
<dt>active(object);</dt>
<dd>Changes the object's status to active, and
changes its lifeline drawing style correspondingly.
An active call in an already active object will result
in a swimlane showing a nested object activation.</dd>
<dt>inactive(object);</dt>
<dd>Changes the object's status to inactive, and
changes its lifeline drawing style correspondingly.
An inactive call on a nested object invocation will
result in showing a simple active swimlane.</dd>
<dt>delete(object);</dt>
<dd>The object deletes itself, drawing an X at the end
of its lifeline.
The object's lifeline need not be otherwise completed.
</dd>
<dt>lifeline_constraint(object,label);</dt>
<dd>Displays a constraint label (typically given inside curly braces)
for the given object.
The constraint will appear on the right of the object's lifeline
at the time it appears.
Can also be used to place an message label on the left of a
message arrow, rather than its center.
Can also be written as <code>lconstraint</code>.
</dd>
<dt>lconstraint_below(object,label);</dt>
<dd>same as <code>lconstraint</code>,
but it will be shown below the current line instead of above.
</dd>
<dt>object_constraint(label)</dt>
<dd>Displays an object constraint (typically given inside curly braces)
for the last object defined.
Can also be written as <code>oconstraint</code>.
</dd>
<dt>step();</dt>
<dd>Steps the time by a single increment, extending all
lifelines.</dd>
<dt>async();</dt>
<dd>All subsequent messages are asynchronous and will
be drawn correspondingly.</dd>
<dt>sync();</dt>
<dd>All subsequent messages are synchronous and will
be drawn correspondingly.</dd>
<dt>begin_frame(left_object,name,label_text);</dt>
<dd>Begins a frame with the upper left corner at
<code>left_object</code> column and the current line.
The specified <code>label_text</code> is shown in the upper left corner.
</dd>
<dt>end_frame(right_object,name);</dt>
<dd>Ends a frame with the lower right corner at
<code>right_object</code> column and the current line.
The name must correspond to a <code>begin_frame</code>'s name.
</dd>
<dt>comment(object,[name],[line_movement],[box_size] text);</dt>
<dd>Displays a comment about the object.
The name can be used with
<code>connect_to_comment(object2,name);</code> to get additional
connecting lines to the comment.
<code>line_movement</code> changes the position of the comment and
<code>box_size</code> its size. Note that there's no comma between
<code>box_size</code> and <code>text</code>.
<code>text</code> is the (multiline) comment-text that will be displayed.
<code>name</code>, <code>line_movement</code> and <code>box_size</code> are optional
(but the commas must still appear).
</dd>
<dt>connect_to_comment(object2,name);</dt>
<dd>See <code>comment</code>.
</dd>
</dl>
</notes>

18
doc/seq-simple.pic Normal file
View File

@ -0,0 +1,18 @@
#
#
.PS
copy "sequence.pic";
# Define the objects
object(S,"s:Switch");
object(P,"p:Pump");
# Message sequences
message(S,P,"run()");
message(S,P,"stop()");
complete(S);
complete(P);
.PE

48
doc/seq-simple.xml Normal file
View File

@ -0,0 +1,48 @@
<?xml version="1.0" ?>
<notes>
A sequence diagram is defined in three main phases:
<ol>
<li> Object definition </li>
<li> Message exchange </li>
<li> Object lifeline completion</li>
</ol>
The following is an example of a very simple UMLGraph
sequence diagram
(from now on we will ommit the <code>.PS/.PE</code> and
<code>copy "sequence.pic";</code>
elements.)
<fmtcode ext="pic">
.PS
copy "sequence.pic";
# Object definition
object(S,"s:Switch");
object(P,"p:Pump");
# Message exchange
message(S,P,"run()");
message(S,P,"stop()");
# Object lifeline completion
complete(S);
complete(P);
.PE
</fmtcode>
The above code, defines two objects, S and P,
labeled as "s:Switch" and "p:Pump".
Objects are placed in the diagram from left to right, in the
order they are defined.
All defined objects are initially inactive.
<p />
The code then sends a messages from S to P labeled "run()",
and another one labeled "stop()".
Each message automatically advances the sequence diagram timeline by a
single step.
<p />
Finally, the code completes the lifelines of the two objects.
<p />
The resultant diagram is<br />
<img src="seq-simple.gif" alt="Simple sequence diagram" />
<p />
</notes>

47
doc/seq-syntax.xml Normal file
View File

@ -0,0 +1,47 @@
<?xml version="1.0" ?>
<notes>
Sequence diagrams consist of objects, their lifelines
(also known as smimming lanes),
and the exchanged messages.
Sequence diagrams are defined in UMLGraph using the <em>pic</em>
syntax.
<p />
A sequence diagram file must start with the sequence:
<fmtcode ext="pic">
.PS
copy "sequence.pic";
</fmtcode>
The <code>.PS</code> marks the beginning of <em>pic</em> commands.
The sequence
<code>copy "sequence.pic";</code>
loads the macros defining the sequence diagram operations.
The file <code>sequence.pic</code>, part of the UMLGraph distribution,
must exist in the directory where <em>pic2plot</em> will be executed.
<p />
Sequence diagram files must end with the sequence:
<fmtcode ext="pic">
.PE
</fmtcode>
<p />
The sequence diagrams are defined by calling function-like <em>pic</em>
macros.
Each function call is terminated with a semicolon.
Space is not significant between macro calls; on the other hand
adding a space character between a macro's arguments can lead
to surprises and should be avoided.
Objects are referenced using variable-like alphanumeric identifiers.
Strings are enclosed in double quotes.
<p />
As an example, the following defines an object <code>O</code>
that will be identified in the diagram as
<code>o:Toolkit</code>
<fmtcode ext="pic">
object(O,"o:Toolkit");
</fmtcode>
<p />
Comments start with a <code>#</code> character.
<fmtcode ext="pic">
# This is a comment
</fmtcode>
</notes>

28
doc/seq-var.xml Normal file
View File

@ -0,0 +1,28 @@
<?xml version="1.0" ?>
<notes>
The value of
<em>pic</em> variables can sometimes be modified by assignment
to achieve a better-looking result.
The following two lines change the width of the object boxes to
1.1" and the spacing between objects
to 0.5".
<fmtcode ext="pic">
boxwid = 1.1;
movewid = 0.5;
</fmtcode>
The following variables can be redefined to change the layout of
a drawing.
<p />
<table border = "1">
<tr><th>Variable Name</th><th>Default Value</th><th>Operation</th></tr>
<tr><td>boxht</td><td>0.3</td><td>Object box height</td></tr>
<tr><td>boxwid</td><td>0.75</td><td>Object box width</td></tr>
<tr><td>awid</td><td>0.1</td><td>Active lifeline width</td></tr>
<tr><td>spacing</td><td>0.25</td><td>Spacing between messages</td></tr>
<tr><td>movewid</td><td>0.75</td><td>Spacing between objects</td></tr>
<tr><td>dashwid</td><td>0.05</td><td>Interval for dashed lines</td></tr>
<tr><td>maxpswid</td><td>11</td><td>Maximum width of picture</td></tr>
<tr><td>maxpsht</td><td>11</td><td>Maximum height of picture</td></tr>
<tr><td>underline</td><td>1</td><td>Underline the name of objects</td></tr>
</table>
</notes>

406
doc/sequence.pic Normal file
View File

@ -0,0 +1,406 @@
#/usr/bin/pic2plot -Tps
#
# Pic macros for drawing UML sequence diagrams
#
# (C) Copyright 2004-2005 Diomidis Spinellis.
#
# Permission to use, copy, and distribute this software and its
# documentation for any purpose and without fee is hereby granted,
# provided that the above copyright notice appear in all copies and that
# both that copyright notice and this permission notice appear in
# supporting documentation.
#
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
#
# Default parameters (can be redefined)
# Spacing between messages
spacing = 0.25;
# Active box width
awid = .1;
# Box height
boxht = 0.3;
# Commend folding
corner_fold=awid
# Comment distance
define comment_default_move {up 0.25 right 0.25};
# Comment height
comment_default_ht=0.5;
# Comment width
comment_default_wid=1;
# Underline object name
underline=1;
# Create a new object(name,label)
define object {
$1: box $2; move;
# Could also underline text with \mk\ul\ul\ul...\rt
if (underline) then {
line from $1.w + (.1, -.07) to $1.e + (-.1, -.07);
}
move to $1.e;
move right;
# Active is the level of activations of the object
# 0 : inactive : draw thin line swimlane
# 1 : active : draw thick swimlane
# > 1: nested : draw nested swimlane
active_$1 = 0;
lifestart_$1 = $1.s.y;
}
# Create a new external actor(name,label)
define actor {
$1: [
XSEQC: circle rad 0.06;
XSEQL: line from XSEQC.s down .12;
line from XSEQL.start - (.15,.02) to XSEQL.start + (.15,-.02);
XSEQL1: line from XSEQL.end left .08 down .15;
XSEQL2: line from XSEQL.end right .08 down .15;
line at XSEQC.n invis "" "" "" $2;
]
move to $1.e;
move right;
active_$1 = 0;
lifestart_$1 = $1.s.y - .05;
}
# Create a new placeholder object(name)
define placeholder_object {
$1: box invisible;
move;
move to $1.e;
move right;
active_$1 = 0;
lifestart_$1 = $1.s.y;
}
define pobject {
placeholder_object($1);
}
define extend_lifeline {
if (active_$1 > 0) then {
# draw the left edges of the boxes
move to ($1.x - awid/2, Here.y);
for level = 1 to active_$1 do {
line from (Here.x, lifestart_$1) to Here;
move right awid/2
}
# draw the right edge of the innermost box
move right awid/2;
line from (Here.x, lifestart_$1) to Here;
} else {
line from ($1.x, lifestart_$1) to ($1.x, Here.y) dashed;
}
lifestart_$1 = Here.y;
}
# complete(name)
# Complete the lifeline of the object with the given name
define complete {
extend_lifeline($1)
if (active_$1) then {
# draw bottom of all active boxes
line right ((active_$1 + 1) * awid/2) from ($1.x - awid/2, Here.y);
}
}
# Draw a message(from_object,to_object,label)
define message {
down;
move spacing;
# Adjust so that lines and arrows do not fall into the
# active box. Should be .5, but the arrow heads tend to
# overshoot.
if ($1.x <= $2.x) then {
off_from = awid * .6;
off_to = -awid * .6;
} else {
off_from = -awid * .6;
off_to = awid * .6;
}
# add half a box width for each level of nesting
if (active_$1 > 1) then {
off_from = off_from + (active_$1 - 1) * awid/2;
}
# add half a box width for each level of nesting
if (active_$2 > 1) then {
off_to = off_to + (active_$2 - 1) * awid/2;
}
if ($1.x == $2.x) then {
arrow from ($1.x + off_from, Here.y) right then down .25 then left $3 ljust " " " " " " ;
} else {
arrow from ($1.x + off_from, Here.y) to ($2.x + off_to, Here.y) $3 " ";
}
}
# Display a lifeline constraint(object,label)
define lifeline_constraint {
off_from = awid;
# add half a box width for each level of nesting
if (active_$1 > 1) then {
off_from = off_from + (active_$1 - 1) * awid/2;
}
box at ($1.x + off_from, Here.y) invis $2 ljust " " ;
}
define lconstraint {
lifeline_constraint($1,$2);
}
# Display an object constraint(label)
# for the last object drawn
define object_constraint {
{ box invis with .s at last box .nw $1 ljust; }
}
define oconstraint {
object_constraint($1);
}
# Draw a creation message(from_object,to_object,object_label)
define create_message {
down;
move spacing;
if ($1.x <= $2.x) then {
off_from = awid * .6;
off_to = -boxwid * .51;
} else {
off_from = -awid * .6;
off_to = boxwid * .51;
}
# add half a box width for each level of nesting
if (active_$1 > 1) then {
off_from = off_from + (active_$1 - 1) * awid/2;
}
# See comment in destroy_message
XSEQA: arrow from ($1.x + off_from, Here.y) to ($2.x + off_to, Here.y) "«create»" " ";
if ($1.x <= $2.x) then {
{ XSEQB: box $3 with .w at XSEQA.end; }
} else {
{ XSEQB: box $3 with .e at XSEQA.end; }
}
{
line from XSEQB.w + (.1, -.07) to XSEQB.e + (-.1, -.07);
}
lifestart_$2 = XSEQB.s.y;
move (spacing + boxht) / 2;
}
define cmessage {
create_message($1,$2,$3);
}
# Draw an X for a given object
define drawx {
{
line from($1.x - awid, lifestart_$1 - awid) to ($1.x + awid, lifestart_$1 + awid);
line from($1.x - awid, lifestart_$1 + awid) to ($1.x + awid, lifestart_$1 - awid);
}
}
# Draw a destroy message(from_object,to_object)
define destroy_message {
down;
move spacing;
# The troff code is \(Fo \(Fc
# The groff code is also \[Fo] \[Fc]
# The pic2plot code is \Fo \Fc
# See http://www.delorie.com/gnu/docs/plotutils/plotutils_71.html
# To stay compatible with all we have to hardcode the characters
message($1,$2,"«destroy»");
complete($2);
drawx($2);
}
define dmessage {
destroy_message($1,$2);
}
# An object deletes itself: delete(object)
define delete {
complete($1);
lifestart_$1 = lifestart_$1 - awid;
drawx($1);
}
# Draw a message return(from_object,to_object,label)
define return_message {
down;
move spacing;
# See comment in message
if ($1.x <= $2.x) then {
off_from = awid * .6;
off_to = -awid * .6;
} else {
off_from = -awid * .6;
off_to = awid * .6;
}
# add half a box width for each level of nesting
if (active_$1 > 1) then {
off_from = off_from + (active_$1 - 1) * awid/2;
}
# add half a box width for each level of nesting
if (active_$2 > 1) then {
off_to = off_to + (active_$2 - 1) * awid/2;
}
arrow from ($1.x + off_from, Here.y) to ($2.x + off_to, Here.y) dashed $3 " ";
}
define rmessage {
return_message($1,$2,$3);
}
# Object becomes active
# Can be nested to show recursion
define active {
extend_lifeline($1);
# draw top of new active box
line right awid from ($1.x + (active_$1 - 1) * awid/2, Here.y);
active_$1 = active_$1 + 1;
}
# Object becomes inactive
# Can be nested to show recursion
define inactive {
extend_lifeline($1);
active_$1 = active_$1 - 1;
# draw bottom of innermost active box
line right awid from ($1.x + (active_$1 - 1) * awid/2, Here.y);
}
# Time step
# Useful at the beginning and the end
# to show object states
define step {
down;
move spacing;
}
# Switch to asynchronous messages
define async {
arrowhead = 0;
arrowwid = arrowwid * 2;
}
# Switch to synchronous messages
define sync {
arrowhead = 1;
arrowwid = arrowwid / 2;
}
# same as lifeline_constraint, but Text and empty string are exchanged.
define lconstraint_below{
off_from = awid;
# add half a box width for each level of nesting
if (active_$1 > 1) then {
off_from = off_from + (active_$1 - 1) * awid/2;
}
box at ($1.x + off_from, Here.y) invis "" $2 ljust;
}
# begin_frame(left_object,name,label_text);
define begin_frame {
# The lifeline will be cut here
extend_lifeline($1);
# draw the frame-label
$2: box $3 invis with .n at ($1.x, Here.y);
d = $2.e.y - $2.se.y;
line from $2.ne to $2.e then down d left d then to $2.sw;
# continue the lifeline below the frame-label
move to $2.s;
lifestart_$1 = Here.y;
}
# end_frame(right_object,name);
define end_frame {
# dummy-box for the lower right corner:
box invis "" with .s at ($1.x, Here.y);
# draw the frame
frame_wid = last box.se.x - $2.nw.x
frame_ht = - last box.se.y + $2.nw.y
box with .nw at $2.nw wid frame_wid ht frame_ht;
# restore Here.y
move to last box.s;
}
# comment(object,[name],[line_movement], [box_size] text);
define comment {
old_y = Here.y
# draw the first connecting line, at which's end the box wil be positioned
move to ($1.x, Here.y)
if "$3" == "" then {
line comment_default_move() dashed;
} else {
line $3 dashed;
}
# draw the box, use comment_default_xx if no explicit
# size is given together with the text in parameter 4
old_boxht=boxht;
old_boxwid=boxwid;
boxht=comment_default_ht;
boxwid=comment_default_wid;
if "$2" == "" then {
box invis $4;
} else {
$2: box invis $4;
}
boxht=old_boxht;
boxwid=old_boxwid;
# draw the frame of the comment
line from last box.nw \
to last box.ne - (corner_fold, 0) \
then to last box.ne - (0, corner_fold) \
then to last box.se \
then to last box.sw \
then to last box.nw ;
line from last box.ne - (corner_fold, 0) \
to last box.ne - (corner_fold, corner_fold) \
then to last box.ne - (0, corner_fold) ;
# restore Here.y
move to ($1.x, old_y)
}
# connect_to_comment(object,name);
define connect_to_comment {
old_y = Here.y
# start at the object
move to ($1.x, Here.y)
# find the best connection-point of the comment to use as line-end
if $1.x < $2.w.x then {
line to $2.w dashed;
} else {
if $1.x > $2.e.x then {
line to $2.e dashed;
} else {
if Here.y < $2.s.y then {
line to $2.s dashed;
} else {
if Here.y > $2.n.y then {
line to $2.n dashed;
}
}
}
}
# restore Here.y
move to ($1.x, old_y)
}

67
doc/shapes.java Normal file
View File

@ -0,0 +1,67 @@
/**
* @hidden
* @opt nodefontcolor "blue"
*/
class UMLNoteOptions{}
/**
* Structural Things
* @opt commentname
* @note Notes can
* be extended to
* span multiple lines
*/
class Structural{}
/**
* spelling.java
* @opt shape component
* @opt commentname
* @note Component
*/
class Component extends Structural{}
/** @opt shape node */
class Node extends Structural{}
/**
* Chain of
* responsibility
* @opt shape collaboration
* @opt commentname
* @note Collaboration
*/
class Collaboration extends Structural{}
/**
* Place order
* @opt shape usecase
* @opt commentname
* @note Use Case
*/
class UseCase extends Structural{}
/**
* Business rules
* @opt shape package
* @opt commentname
* @note Package
*/
class Package{}
/**
* @opt all
* @note Class
*/
class Counter extends Structural {
static public int counter;
public int getCounter();
}
/**
* @opt shape activeclass
* @opt all
* @note Active Class
*/
class RunningCounter extends Counter{}

BIN
doc/style.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

42
doc/uml-182.pic Normal file
View File

@ -0,0 +1,42 @@
# UML User Guide: Figure 18-2
#
#
.PS
copy "sequence.pic";
boxwid = 1.1;
movewid = 0.5;
# Define the objects
object(C,"c:Client");
pobject(T);
object(P,"p:ODBCProxy");
# Message sequences
step();
active(C);
cmessage(C,T,":Transaction");
oconstraint("{Transient}");
step();
message(C,T,"setActions(a,d,o)");
active(T);
message(T,P,"setValues(d,3.4)");
active(P);
step();
inactive(P);
message(T,P,"setValues(a,\"CO\")");
active(P);
rmessage(T,C,"committed");
inactive(T);
inactive(P);
async(); dmessage(C,T);
step();
inactive(C);
step();
complete(C);
complete(P);
.PE

51
doc/uml-182.xml Normal file
View File

@ -0,0 +1,51 @@
<?xml version="1.0" ?>
<notes>
The following diagram, based on the one appearing on p. 247 of the
UML User Guide, illustrates the dynamic creation and destruction of
objects, an object constraint, and the changing of the focus of control.
<h2>Diagram</h2>
<img src="uml-182.gif" alt="UML User Guide: Figure 18-2, p. 247" />
<h2>Diagram Source Code</h2>
<fmtcode ext="pic">
# UML User Guide: Figure 18-2
.PS
copy "sequence.pic";
boxwid = 1.1;
movewid = 0.5;
# Define the objects
object(C,"c:Client");
pobject(T);
object(P,"p:ODBCProxy");
# Message sequences
step();
active(C);
cmessage(C,T,":Transaction");
oconstraint("{Transient}");
step();
message(C,T,"setActions(a,d,o)");
active(T);
message(T,P,"setValues(d,3.4)");
active(P);
step();
inactive(P);
message(T,P,"setValues(a,\"CO\")");
active(P);
rmessage(T,C,"committed");
inactive(T);
inactive(P);
async(); dmessage(C,T);
step();
inactive(C);
step();
complete(C);
complete(P);
.PE
</fmtcode>
</notes>

44
doc/uml-184.pic Normal file
View File

@ -0,0 +1,44 @@
# UML User Guide: Figure 18-4
#
#
.PS
copy "sequence.pic";
movewid = 0.5;
# Define the objects
object(S,"s:Caller");
object(W,":Switch");
pobject(C);
object(R,"r:Caller");
# Message sequences
step();
active(W);
async(); message(S,W,"liftReceiver"); sync();
active(S);
message(W,S,"setDialTone()");
async(); message(S,W,"*dialDigit(d)"); sync();
lconstraint(W,"{dialing.executionTime < 30s}");
active(W);
message(W,W,"routeCalls(s,n)");
inactive(W);
cmessage(W,C,"c:Convers");
active(C);
message(C,R,"ring()");
active(R);
async(); message(R,C,"liftReceiver"); sync();
message(C,W,"connect(r,s)");
message(W,S,"connect(r)");
# Specify label as a "constraint" to allign on W
message(W,R,""); lconstraint(W,"connect(s)");
step();
complete(S);
complete(W);
complete(C);
complete(R);
.PE

55
doc/uml-184.xml Normal file
View File

@ -0,0 +1,55 @@
<?xml version="1.0" ?>
<notes>
The following diagram, based on Figure 18-4 appearing on p. 252 of the
UML User Guide, illustrates constraints on an object's lifeline,
used both as genuine constraints, and to place a message label
on a particular position.
In addition, this diagram also uses nested activation.
<h2>Diagram</h2>
<img src="uml-184.gif" alt="UML User Guide: Figure 18-4, p. 252" />
<h2>Diagram Source Code</h2>
<fmtcode ext="pic">
# UML User Guide: Figure 18-4
.PS
copy "sequence.pic";
movewid = 0.5;
# Define the objects
object(S,"s:Caller");
object(W,":Switch");
pobject(C);
object(R,"r:Caller");
# Message sequences
step();
active(W);
async(); message(S,W,"liftReceiver"); sync();
active(S);
message(W,S,"setDialTone()");
async(); message(S,W,"*dialDigit(d)"); sync();
lconstraint(W,"{dialing.executionTime &lt; 30s}");
active(W);
message(W,W,"routeCalls(s,n)");
inactive(W);
cmessage(W,C,"c:Convers");
active(C);
message(C,R,"ring()");
active(R);
async(); message(R,C,"liftReceiver"); sync();
message(C,W,"connect(r,s)");
message(W,S,"connect(r)");
# Specify label as a "constraint" to allign on W
message(W,R,""); lconstraint(W,"connect(s)");
step();
complete(S);
complete(W);
complete(C);
complete(R);
.PE
</fmtcode>
</notes>

22
doc/uml-71.pic Normal file
View File

@ -0,0 +1,22 @@
# UML User Guide Figure 7-1.
#
#
.PS
copy "sequence.pic";
actor(A,"");
object(T,":OTaker");
object(F,":OFulfill");
step();
message(A,T,"submitOrder");
message(T,F,"placeOrder");
message(F,A,"acknowledgeOrder");
step();
complete(A);
complete(T);
complete(F);
.PE

31
doc/uml-71.xml Normal file
View File

@ -0,0 +1,31 @@
<?xml version="1.0" ?>
<notes>
The following diagram, based on Figure 7-1 appearing on p. 102 of the
UML User Guide, illustrates an interaction diagram with an
external actor.
<h2>Diagram</h2>
<img src="uml-71.gif" alt="UML User Guide: Figure 7-1, p. 102" />
<h2>Diagram Source Code</h2>
<fmtcode ext="pic">
# UML User Guide Figure 7-1.
.PS
copy "sequence.pic";
actor(A,"");
object(T,":OTaker");
object(F,":OFulfill");
step();
message(A,T,"submitOrder");
message(T,F,"placeOrder");
message(F,A,"acknowledgeOrder");
step();
complete(A);
complete(T);
complete(F);
.PE
</fmtcode>
</notes>

39
doc/uml-appa.pic Normal file
View File

@ -0,0 +1,39 @@
# UML User Guide: Appendix A,p. 436
#
#
.PS
copy "sequence.pic";
# Define the objects
pobject(E,"External Messages");
object(T,"t:thread");
object(O,":Toolkit");
pobject(P);
step();
# Message sequences
message(E,T,"a1: run(3)");
active(T);
message(T,O,"run()");
active(O);
message(O,O,"callbackLoop()");
cmessage(O,P,"p:Peer"," ");
active(O);
message(O,P,"handleExpose()");
active(P);
rmessage(P,O,"");
inactive(P);
inactive(O);
dmessage(O,P);
inactive(T);
inactive(O);
step();
complete(T);
complete(O);
.PE

50
doc/uml-appa.xml Normal file
View File

@ -0,0 +1,50 @@
<?xml version="1.0" ?>
<notes>
The following diagram, based on the one appearing on p. 436 of the
UML User Guide, contains the most important elements
of an interaction.
It also uses nested
<em>active</em> <em>inactive</em> calls to show a nested object activation.
<h2>Diagram</h2>
<img src="uml-appa.gif" alt="UML User Guide: Appendix A, p. 436" />
<h2>Diagram Source Code</h2>
<fmtcode ext="pic">
# UML User Guide: Appendix A,p. 436
.PS
copy "sequence.pic";
# Define the objects
pobject(E,"External Messages");
object(T,"t:thread");
object(O,":Toolkit");
pobject(P);
step();
# Message sequences
message(E,T,"a1: run(3)");
active(T);
message(T,O,"run()");
active(O);
message(O,O,"callbackLoop()");
cmessage(O,P,"p:Peer"," ");
active(O);
message(O,P,"handleExpose()");
active(P);
rmessage(P,O,"");
inactive(P);
inactive(O);
dmessage(O,P);
inactive(T);
inactive(O);
step();
complete(T);
complete(O);
.PE
</fmtcode>
</notes>

476
doc/ver.xml Normal file
View File

@ -0,0 +1,476 @@
<?xml version="1.0" ?>
<notes>
<dl>
<dt>Version 5.7 Under development </dt><dd>
<ul>
<li>The <code>@opt include</code> option can be used to include classes from
foreign packages in the package view (unless hidden with <code>@opt hide</code>).</li>
<li>You can now also use <code>@opt</code> in <code>package-info.java</code>.</li>
<li>Added <code>-qualifyGenerics</code> option to separately control the inclusion of
package names for the class (<code>-qualify</code>) and its generics. In particular
this works well with <code>-qualify -postfixpackage</code> (and <code>-!qualifyGenerics</code>).<br />
To get the old <code>-qualify</code> behavior, you need to add <code>-qualifyGenerics</code>,
the default is off, and it will not inherit from <code>-qualify</code>.</li>
<li>Better handling of complex names with generics and inner classes such as <code>pkg.Outer&lt;T&gt;.Inner</code>.</li>
<li>Use &lt;i&gt; tags for italic, because the old font naming approach does not work with SVG anymore.
Replace <code>-nodefontabstractname</code> and <code>-nodefontclassabstractname</code>
with a simple flag <code>-nodefontabstractitalic</code> instead.</li>
<li>Added <code>-hideprivateinner</code> to hide all private inner classes.</li>
</ul>
</dd>
<dt>Version 5.6 2012-05-31 </dt><dd>
<ul>
<li>Maven artifact deployment</li>
</ul>
</dd>
<dt>Version 5.5 2012-05-13 </dt><dd>
<ul>
<li>Added ability to make aggregate relationships (<code>@has</code> and
<code>@composed</code>) navigable through the new <code>@navhas</code>
and <code>@navcomposed</code> relationships.
(Contributed by Alan Jeffrey.)</li>
<li>Make UMLGraphDoc generation compatible with JDK 7
(Contributed by Stefano Martina.)</li>
<li>Moved project's source code repository hosting to
<a href="https://github.com/dspinellis/UMLGraph">GitHub</a>.</li>
<li>Various documentation improvements.</li>
</ul>
</dd>
<dt>Version 5.4 2011-01-08</dt><dd>
<ul>
<li>Make the generation of diamond shapes compatible with GraphViz 2.27.
(Contributed by Soraya Santana de la Fe.)</li>
<li>Make the diagram elements appearing in HTML content clickable.
(Contributed by Bernd Onasch.)</li>
<li>Fix to ensure that class images only appear once.
(Contributed by Zhigang Xie.)</li>
</ul>
</dd>
<dt>Version 5.3 2010-05-24</dt><dd>
<ul>
<li>Sequence diagrams provide an option to specify whether objects are
underlined or not.</li>
<li>Documentation generated with UMLGraph will process correctly
non-ASCII characters.
(Fix contributed by Gunho Kim.)</li>
<li>New <code>-dotexecutable</code> option allows the explicit specification of
<em>dot</em>'s location.
(Contributed by Laird Nelson.)</li>
<li><em>UmlGraphDoc</em> will obey the options specified through
<code>@opt</code> tags within Java files.
(Contributed by Laird Nelson.)</li>
<li>Use a logical font rather than a font file name for italics.
This fixes a problem with unresolved fonts under Windows and
modern versions of Graphviz.
(Suggested by Przemyslaw Szufel.)</li>
<li>Support for <em>javadoc</em>'s <code>-linkoffline</code> option.
(Contributed by Nikita Kozlov.)</li>
<li>Do not show relations of hidden fields.
(Fix contributed by Cimballi.)</li>
</ul>
</dd>
<dt>Version 5.2 2008-12-03</dt><dd>
<ul>
<li> Corrected case of the tools.jar filename in the umlgraph shell script.
(Reported by &#216;yvind Jergan).
</li>
<li> Fixed exception when an unknown class dependency is specified.
(Reported by Jan Schl&#252;ter).
</li>
<li> Corrected NullPointerException occurring when no global options were
available.
(Fix supplied by Bernd Blacha.)</li>
</ul>
</dd>
<dt>Version 5.1 2008-08-27 </dt><dd>
<ul>
<li> Active classes now appear with a double vertical border, following UML2.</li>
<li>Reorganized the documentation of class diagram options.</li>
<li> New class diagram options <code>-nodesep</code> and <code>-ranksep</code>,
which allow fine control of the generated diagram layout.
(Patch submitted by Trustin Lee.)
</li>
<li> A class's title will appear as a tooltip in image files that support this
feature.
(Patch submitted by Anthony Callegaro.)
</li>
<li>
Nested class hyperlinks to Javadoc documentation now work correctly.
(Patch submitted by David P. Caldwell.)
</li>
<li>
The guillemot characters are now output with their Unicode HTML numeric
escapes instead of their HTML symbolic values.
This makes the output work correctly on Mac OS X, and is also easier
to validate with XML tools.
(Patch submitted by Joshua Lim.)
</li>
<li>
UmlGraphDoc now supports Javascript-collapsible UML diagrams.
A new option <code>-collapsible</code> can be used to enable this
feature.
(Patch submitted by Franz Wilhelmstoetter.)
</li>
</ul>
</dd>
<dt>Version 5.0 2007-11-29 </dt><dd>
<ul>
<li> All code now lives under <code>org.umlgraph</code>.
This change requires corresponding modifications to the UMLGraph
callers.</li>
<li> Add support for six new shapes: node, component, package, collaboration,
usecase, and activeclass.
These shapes require GraphViz 2.16 or newer.
</li>
<li> A new <code>@note</code> tag allows the annotation of elements with comments.
(Suggested by S&#233;bastien Pierre.)
</li>
<li> A new <code>@commentname</code> option allows the naming of elements
with the text of the <em>javadoc</em> comment.</li>
</ul>
</dd>
<dt>Version 4.9 2007-09-28 </dt><dd>
<ul>
<li> <b>Note that from this version UMLGraph requires JDK 6.</b></li>
<li> Added installation instructions. </li>
<li> Improved documentation for invoking UmlGraph. </li>
<li> Command-line scripts for invoking UmlGraph from Windows and Unix. </li>
<li> Test data is now compatible with the output of the JDK 6 javadoc</li>
<li> Java 6.0 deprecated methods are marked in the code as such.</li>
<li> The -noguillemot option now outputs escaped characters compatible
with version 1.13 of Graphviz.
(reported by Roger Alexander).</li>
<li> Fix inferred relations of maps to primitive Java types.
(reported by Przemyslaw Wesolek).</li>
</ul></dd>
<dt>Version 4.8 2007-05-10 </dt><dd>
<ul>
<li> This is the last version compatible with Java 1.5.</li>
<li> UmlGraph can now be invoked directly as a jar file. </li>
<li> Support for sending results to the standard output for piping into <em>dot</em>. </li>
<li> The distribution includes an example shell script and batch file for
invoking UmlGraph. </li>
</ul>
</dd>
<dt>Version 4.7 2007-03-26 </dt><dd>
<ul>
<li> Correct the build file for generating the UmlGraph
javadocs under Unix (Dirk Datzert)</li>
<li> Correct output of UmlGraphDoc path-relative file names under Windows
(fix by: Panagiotis Astithas)</li>
<li> Fix InvocationTargetException when a relative output file name is
given (reported by: Georgios Gousios)</li>
</ul>
</dd>
<dt>Version 4.6 2007-02-05</dt><dd>
<ul>
<li>Portability fix so that UmlGraphDoc can now run again under Unix (bug introduced in version 4.5).</li>
<li>Note: Image maps and the UmlGraphDoc tests will not work correctly with dot 2.12; see <a href="http://www.graphviz.org/bugs/b1069.html">this GraphViz problem report</a>.</li>
</ul>
</dd>
<dt>Version 4.5 2006-12-14</dt><dd>
<ul>
<li>Correct running of the UmlGraphDoc tests</li>
<li>Correct the JavaDoc generation (Maxim Butov)</li>
<li>Correct appearance of generic names (Ivan F. Villanueva B.)</li>
<li>UmlGraphDoc now handles filenames with embedded spaces (reported and tested
by J&#246;rn Guy S&#252;&#223; and Christophe DENEUX)</li>
</ul>
</dd>
<dt>Version 4.4 2006-07-19 </dt><dd>
<ul>
<li>Major new functionality: UmlGraphDoc, a new doclet that can generate context and package
class diagrams integrated with the standard javadoc output. Uses the same switches
as UmlGraph. (Andrea Aime)</li>
<li>Removed -verbose2 option, use the standard -quiet option instead to avoid UmlGraphDoc and
UmlGraph printing notices. (Andrea Aime)</li>
<li>Added a -inferdepvis option that allows to control which member of a class will be used
for dependency inference. Acceptable values are private, package, protected and public.
Makes sense when inferring dependencies without using -useimports.</li>
<li>Added a -inferdepinpackage option that enables dependency inference among classes in the
same package. This is disabled by default, since there is no reliable way to infer
dependencies, and classes in the same package are supposed to be related anyway.</li>
<li>Support the -link flag in the same way as the standard doclet, in order to populate
the api doc map, used to generate image maps with links to associated external classes.
</li>
<li> Filter-out the static initializer method from classes (Andreas Studer)</li>
</ul>
</dd>
<dt>Version 4.3 2006-03-05 </dt><dd>
<ul>
<li> Now using HTML labels in dot files. This allows for a different font
in each row of the class nodes. Added options
to control fonts for class names, packages and tags. (Andrea Aime)
</li>
</ul>
</dd>
<dt>Version 4.2 (internal release) </dt><dd>
<ul>
<li> Correct the handling of qualified class names following
the extends keyword (Arnaud Rogues).</li>
<li> Relationship inference support. When enabled UMLGraph will try to
compute relationships and dependecies by field/method/import
statements examination. (Andrea Aime)
</li>
<li> Standard class lookup for association targets. The target can be
specified by name without the need to include the full package
information, imports and standard visibility rules will be applied
to determine the actual class (Andrea Aime)
</li>
<li> A <em>views</em> feature provides the ability to specify
option overrides for classes satisfying specific conditions
and to generate multiple diagrams in a single doclet invocation.
See the new tags @view, @match and the command line
parameters -d, -view, -views (Andrea Aime)</li>
<li> Options can be reset to their default value using the "@opt !option"
syntax (useful for local overrides and in views) (Andrea Aime)</li>
<li> Javadoc documentation (Andrea Aime).</li>
<li> Centralized option handling in the Option class (even for command line
arguments) (Andrea Aime).</li>
</ul>
</dd>
<dt>Version 4.1 2005-11-15</dt><dd>
<ul>
<li> Major source code reorganization to move closer to the Java coding
conventions.
The user-visible change is that the doclet is now invoked as
<fmtcode ext="sh">
javadoc -docletpath UmlGraph.jar -doclet gr.spinellis.umlgraph.doclet.UmlGraph
</fmtcode>
</li>
<li> Show package visibility for class members (Olek Poplavskyy). </li>
<li> Prevent crash when processing erroneous relation specifications (Andrea Aime).</li>
<li> Most loops were refarctored to use the typesafe Java 1.5 foreach construct. </li>
<li> Fix Eclipse warning (Andrea Aime).</li>
<li> Better control of class hiding.
Now classes are hidden even when involved in a relationship with a visible class
(Andrea Aime).</li>
<li> Source code modifications to allow Java-based testing (Andrea Aime).</li>
</ul>
</dd>
<dt>Version 3.3 2005-10-19</dt><dd>
<ul>
<li> The sequence diagrams now include support for drawing
comments and frames. (Contributed by Sebastian Setzer)</li>
<li> The -noguillemot option will output two angle bracket pairs
instead of round brackets around stereotypes.</li>
</ul>
</dd>
<dt>Version 3.2 2005-07-19</dt><dd>
<ul>
<li> Display the template arguments of generic classes inside angle brackets.
Note that according to the UML specification these arguments should
be displayed in a dashed box on the top right of the class.
However, such a display is currently not possible in GraphViz.</li>
<li> Display the type parameters of fields and method arguments. </li>
</ul>
</dd>
<dt>Version 3.1 2005-03-26</dt><dd>
<ul>
<li> <b>Note that from this version UMLGraph requires Java 1.5.</b></li>
<li> First step of the Java 1.5 transition; more will follow.</li>
<li> The container code in the source was changed to use the Java 1.5 generics.</li>
<li> Will display enumerations as a stereotyped primitive type.
Two new options <code>-enumerations</code> and <code>-enumconstants</code>
control the corresponding operation.</li>
</ul>
</dd>
<dt>Version 2.10 2004-11-19</dt><dd>
<ul>
<li> This is the last version compatible with Java 1.4.</li>
<li> Corrected the interaction between the
<code>-attributes</code> and
<code>-operations</code> options and classes with no
fields or methods.
Many thanks to Jonathan Wright for this contribution. </li>
<li>New documentation look, designed by George Zouganelis</li>
</ul>
</dd>
<dt>Version 2.9 2004-10-07</dt><dd>
<ul>
<li> Class diagrams can now include constructors, through the new
<code>-constructors</code> option.</li>
</ul>
</dd>
<dt>Version 2.8 2004-08-09</dt><dd>
<ul>
<li> Fixes to support the Maven plugin.</li>
<li> From this version onward, use the appropriate options to create
documentation links; no hyperlinks are created by default.</li>
</ul>
</dd>
<dt>Version 2.7 2004-08-06</dt><dd>
<ul>
<li> The -noguillemot option will output round brackets around stereotypes,
instead of angle brackets.
The angle brackets appear to be breaking some programs.
</li>
</ul>
</dd>
<dt>Version 2.6 2004-08-03</dt><dd>
<ul>
<li> <b>Note that from this version UMLGraph requires Java 1.4.</b></li>
<li> Documentation example: multiple views from the same source.
Many thanks to Vadim Nasardinov for this contribution. </li>
<li> Documentation now includes a FAQ section. </li>
<li> Documented the fact that package names must be explicitly
specified in tags. Arne Bayer noticed the associated problem. </li>
<li> Correct handling of multiple space in tags.
Noted by Jeffrey M. Thompson which the help of
<a href="http://findbugs.sourceforge.net/">FindBugs</a>.
</li>
<li> Completed customization of URL mapping. Now the mapping is fully
configurable and can be controlled by the use of two new options:
"-apiDocRoot" and -"apiDocMapFileName".
This change allows the creation of "clickable"
diagrams fully integrated with web-based documentation
(for example JavaDoc pages).
The upcoming UMLGraph Maven plugin will take full advantage of this feature.
Implementation contributed by Nascif Abousalh-Neto
</li>
<li> The -hide argument now accepts regular expressions. </li>
<li> Removed copy-pasted Java code that was introduced in version 1.24.</li>
<li> Some dot edges were missing a semicolon. This is now fixed. </li>
</ul>
</dd>
<dt>Version 2.5 2004-06-15</dt><dd>
The object swimlanes in a sequence diagram
can now show nested object invocations.
This very useful and non-trivial change was contributed by Jonathan R. Santos.
</dd>
<dt>Version 2.4 2004-05-29</dt><dd>
Will now generate local URL hyperlinks for packages specified in
the command line; and links to the Sun documentation for all
other packages.
Many thanks to Nascif Abousalh-Neto for contributing this change.
</dd>
<dt>Version 2.3 2004-05-27</dt><dd>
<ul>
<li>
Remove hardcoded default node and edge fonts.
Thanks to Vadim Nasardinov for submitting the corresponding patch.
</li>
<li>
Generate javadoc hyperlink paths in a directory-tree structure;
do not show arcs on hidden classes.
Thanks to Alessandro Riva for submitting the corresponding patch.
</li>
</ul>
</dd>
<dt>Version 2.2 2004-05-25</dt><dd>
SVG class diagrams containing guillemot characters
for stereotypes
can now be made valid through a new -outputencoding option.
Use "-outputencoding UTF-8" when using dot to generate SVG diagrams.
Many thanks to Nascif Abousalh-Neto for bringing this problem to
my attention.
</dd>
<dt>Version 2.1 2004-05-16</dt><dd>
The guillemot characters used for the create and destroy stereotypes
are now portable between <em>groff</em> and <em>pic2plot</em>.
Many thanks to Scott Johnson (Duluth, MN) for recommending the change.
</dd>
<dt>Version 2.0 2004-05-09</dt><dd>
<ul>
<li> Support for drawing sequence diagrams.</li>
<li> New distribution format.</li>
<li> Browsable and printable documentation.</li>
<li> Removed the <em>ant</em>-based compilation and distribution
system; it was proving a hindrance in organizing the project in
a resonable manner.
Compiling the documentation and distribution is now handled by
a (non-distributed) Makefile; the compilation process is described
in the README file.
</li>
</ul>
</dd>
<dt>Version 1.24 2003-07-30</dt><dd>
Changes by Art Hampton (thanks):
<ul>
<li> Create the appropriate label for relationship tags when referring to
classes which were not parsed by javadoc.
</li>
<li> New "-hide &lt;matchstring&gt;" option, where &lt;matchstring&gt;
matches the end of the name of an entity.
Matched entities are removed from the graph.
A regular expression matching facility will be added when Java 1.4
becomes more widespread.
</li>
</ul>
</dd>
<dt>Version 1.23 2003-05-7</dt><dd>
Added <code>-output</code> command-line option, and an <em>ant</em>-based
build file.
Modified the dot output to avoid triggering a graphviz bug that made escape codes visible.
</dd>
<dt>Version 1.20 2003-04-25</dt><dd>
Fixes by Nick Efthymiou (thanks):
will generate SVG hyperlinks to Javadoc documentation,
better handling of abstract class fonts,
and correct listing of interfaces.
</dd>
<dt>Version 1.19 2002-09-20</dt><dd>
New options:
nodefontname,
nodefontabstractname,
nodefontsize,
nodefontcolor,
edgefontname,
edgefontsize,
edgefontcolor,
edgecolor,
bgcolor.
</dd>
<dt>Version 1.18 2002-08-26</dt><dd>
<ul>
<li> Can now specify class-local options.
</li>
<li> Support for the @tagvalue tag.
</li>
<li> Support for the @stereotype tag.
</li>
<li> Added nodefillcolor option.
</li>
</ul>
</dd>
<dt>Version 1.15 2002-07-26</dt><dd>First public release.
</dd>
</dl>
</notes>

51
doc/views.xml Normal file
View File

@ -0,0 +1,51 @@
<?xml version="1.0" ?>
<notes>
Documenting a big project often requires multiple diagrams:
each to show a specific and limited portion of the system.
Each diagram is usually composed of few classes, possibily using a different detail level.<p/>
The <code>@view</code> tag, marks a special class used to describe a single class diagram.
Similarly to UMLOptions, the view can define its own general options,
but allows to define <em>overrides</em> that allow to adopt different options
for different classes based on regular expressions matching.
The general syntax for defining a view is:
<fmtcode ext="java">
/**
* @view
* @opt [!]viewOption1
* @opt [!]viewOption2
* ...
* @match matchtype regularExpression1
* @opt [!]option1.1 [argument]
* @opt [!]option1.2 [argument]
* ...
* @match matchtype regularExpression2
* @opt [!]option2.1 [argument]
* @opt [!]option2.2 [argument]
* ...
*/
</fmtcode>
At the moment UMLGraph supports only the 'class' match type, in the future
other types of match will be added (tags, implemented interfaces,
superclasses, just to name a few possibilities).<br/>
The view options are applied to every class in the view (so they are the
global options for this class diagram).<br/>
The regular expression will be used to match a single class, a group of
classes, or a package, and the options that follow will be applied to
those classes. <br/>
Multiple matches will be evaluted in the order of specification.<br/>
Refer to the <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html">Pattern</a>
class documentation for details on a proper regular expression specification.
<p/>Each view will generate a .dot file whose name is the name of the view,
unless the "output" option is specified to override it.
<h2>View inheritance</h2>
View classes can inherit from other view classes, allowing views to
share a set of common matches. The standard java inheritance mechanism
is used to specify inheritance.<br/>
Abstract view classes won't be used to generate diagrams, the common
idiom is to declare a base abstract view to share common options and
overrides, and have concrete view classes that extend for diagram generation.
</notes>

26
doc/vis.java Normal file
View File

@ -0,0 +1,26 @@
/**
* Attribute and operation visility
* UML User Guide p. 123
*
* @opt operations
* @opt attributes
* @opt types
* @opt visibility
* @hidden
*/
class UMLOptions {}
/** @hidden */
class Tool {}
class Toolbar {
protected Tool currentSelection;
protected Integer toolCount;
public void pickItem(Integer i) {}
public void addTool(Tool t) {}
public void removeTool(Integer i) {}
public Tool getTool() {}
protected void checkOrphans() {}
private void compact() {}
}

View File

@ -1,168 +0,0 @@
<?xml version="1.0" encoding="us-ascii"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- No not edit this page in the web directory. -->
<!-- $Id$ -->
<head>
<title>UMLGraph - Declarative Drawing of UML Diagrams</title>
<meta name="AUTHOR" content="Diomidis Spinellis" />
</head>
<body>
<h1 align="right"><tt><font color="#ff0000">UMLGraph dds</font></tt></h1>
<h2>UMLGraph - Declarative Drawing of UML Diagrams</h2>
<!-- Introduction {{{1 -->
UMLGraph allows the declarative specification and drawing of
UML class and sequence diagrams.
The current features
are part of an ongoing effort aiming to provide support for
all types UML diagrams.
An <em>IEEE Software</em> article titled
<a href="../../pubs/jrnl/2003-IEEESW-umlgraph/html/article.html">On the declarative specification of models</a>
explains the rationale behind this approach.
The tehnology behind UMLGraph was used to draw many of the diagrams
appearing in the book
<a href="http://www.spinellis.gr/codereading">Code Reading: The Open Source Perspective</a> (Addison Wesley, 2003).
In addition,
<a href="http://lightuml.sourceforge.net/">LightUML</a>
integrates UMLGraph into <a href="http://www.eclipse.org">Eclipse</a>,
and <a href="http://maven-plugins.sourceforge.net/maven-dotuml-plugin/">Dotuml</a> integrates UMLGraph into <a href="http://maven.apache.org/">Maven</a>.
Furthermore,
the Politecnico Di Torino SoftEng group has extended UMLGraph into
the <a href="http://softeng.polito.it/projects/XUG/">XUG</a>
reverse engineering tool, and
Adam Feuer's
<a href="http://www.python.org/pypi/PyUMLGraph">PyUMLGraph</a>
system applies the concept to Python programs,
Finally,
<a href="http://martinfowler.com">Martin Fowler</a> writes:
<blockquote>
I thought I'd send you a note saying how much I enjoyed discovering UML Graph. I've long fancied a text based way of describing UML diagrams, but never felt sufficiently time-rich to develop anything.
</blockquote>
Martin has created a
<a href="http://martinfowler.com/bliki/UmlSketchingTools.html">bliki entry</a>
describing his ideas of what an ideal textual language might look like.
<h3>Class Diagrams</h3> <!-- {{{1 -->
One specifies a class diagram using the Java syntax complemented by
<a href="http://java.sun.com/j2se/javadoc/"><em>javadoc</em></a>
tags.
Running the UmlGraph doclet on the specification will generate
a
<a href="http://www.research.att.com/sw/tools/graphviz/">Graphviz</a>
diagram specification that can be automatically processed to
create Postscript, GIF, SVG, JPEG, fig, or Framemaker drawings.
<p />
The following is an example of a class diagram specification and the resulting UML
diagram:
<table>
<tr><td>
<pre>
class Person {
String Name;
}
class Employee extends Person {}
class Client extends Person {}
</pre>
</td><td>
<img src="doc/class-eg.gif" alt="Simple UML class diagram" />
</td></tr></table>
<h3>Sequence Diagrams</h3> <!-- {{{1 -->
One specifies a sequence diagram using <em>pic</em> macros to define
objects and method invocations.
The <a href="http://www.gnu.org/software/plotutils/plotutils.html">GNU plotutils</a>
<em>pic2plot</em> program can then process the sequence diagram to create a
PNG, PNM, (pseudo)GIF, SVG, AI, Postscript, CGM, FIG, PCL, HPGL, Regis, or TEK
drawing.
<p />
The following is an example of a sequence diagram specification and the
resulting UML diagram:
<table>
<tr><td>
<pre>
# Define the objects
object(O,"o:Toolkit");
placeholder_object(P);
step();
# Activation and messages
active(O);
message(O,O,"callbackLoop()");
create_message(O,P,"p:Peer");
message(O,P,"handleExpose()");
active(P);
return_message(P,O,"");
inactive(P);
destroy_message(O,P);
inactive(O);
# Complete the lifeline of O
step();
complete(O);
</pre>
</td><td>
<img src="doc/seq-eg.gif" alt="Simple UML sequence diagram" />
</td></tr></table>
<h3>Download and Links</h3> <!-- {{{1 -->
UMLGraph is hereby made freely available as Open Source Software.
The current version of UMLGraph is VERSION.
You can download UMLGraph and its documentation from the following links:
<ul>
<li> <a href="UMLGraph-VERSION.tar.gz">UmlGraph package version VERSION - .tar.gz</a>
(compressed tar file containing the source code, the compiled doclet,
and the complete documentation in HTML format).
</li>
<li> <a href="UMLGraph-VERSION.zip">UmlGraph package version VERSION - .zip</a>
(zip file containing the source code, the compiled doclet,
and the complete documentation in HTML format).
</li>
<li> <a href="doc/index.html">Documentation</a>
(table of contents - suitable for web browsing).
</li>
<li> <a href="doc/indexw.html">Printable documentation</a>
(the above as a single printable page).
</li>
<li> <a href="doc/ver.html">Version history</a> </li>
<li> <a href="http://freshmeat.net/projects/umlgraph/">freshmeat.net page</a> (use it to subscribe and post comments).</li>
<li> <a href="UMLGraph-2.10.tar.gz">UmlGraph package version 2.10 - .tar.gz</a>
(The last version compatible with Java 1.4; compressed tar file containing the source code, the compiled doclet,
and the complete documentation in HTML format).
</li>
<li> <a href="UMLGraph-2.10.zip">UmlGraph package version 2.10 - .zip</a>
(The last version compatible with Java 1.4; zip file containing the source code, the compiled doclet,
and the complete documentation in HTML format).
</li>
<li> <a href="jars/UmlGraph-VERSION.jar">UmlGraph binary - UmlGraph-VERSION.jar</a>
(jar file containing only the UmlGraph classes;
please use this only for pulling UmlGraph into other projects).
</li>
<li> <a href="CHECKSUM.MD5">MD5 checksums</a> for each of the above .zip, .tar.gz, and jar archives.
</li>
</ul>
<!-- End matter {{{1 -->
<p />
<a href="../../">Diomidis Spinellis home page</a>
<hr />
<table>
<tr><td>
<a href="http://validator.w3.org/check/referer"><img src="../../valid-xhtml10.png" border="0" alt="Valid XHTML 1.0!" height="31" width="88" /></a>
<a href="http://www.w3.org/WAI/WCAG1AAA-Conformance" title="Explanation of Level Triple-A Conformance"><img border="0" height="32" width="88" src="../../wcag1AAA.gif" alt="Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0" /></a>
</td><td>
<font size="-2">
(C) Copyright 2002-2005 D. Spinellis.
May be freely uploaded by WWW viewers and similar programs.
All other rights reserved.
<br />
Last modified: $Date$
</font>
</td></tr>
</table>
</body>
</html>

BIN
legacy/UMLGraph-2.10.tar.gz Normal file

Binary file not shown.

BIN
legacy/UMLGraph-2.10.zip Normal file

Binary file not shown.

BIN
legacy/UMLGraph-4.8.tar.gz Normal file

Binary file not shown.

BIN
legacy/UMLGraph-4.8.zip Normal file

Binary file not shown.

38
pom.template.xml Normal file
View File

@ -0,0 +1,38 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.umlgraph</groupId>
<artifactId>umlgraph</artifactId>
<packaging>jar</packaging>
<name>UMLGraph</name>
<version>${version}</version>
<description>Declarative Drawing of UML Diagrams</description>
<url>http://www.spinellis.gr/umlgraph</url>
<licenses>
<license>
<name>BSD License (original)</name>
<url>http://www.opensource.org/licenses/bsd-license.php</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<url>https://github.com/dspinellis/UMLGraph</url>
<connection>git://github.com/dspinellis/UMLGraph.git</connection>
</scm>
<developers>
<developer>
<id>dspinellis</id>
<name>Diomidis Spinellis</name>
<email>dds@aueb.gr</email>
</developer>
</developers>
<dependencies/>
</project>

156
pom.xml Normal file
View File

@ -0,0 +1,156 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.umlgraph</groupId>
<artifactId>umlgraph</artifactId>
<packaging>jar</packaging>
<name>UMLGraph</name>
<version>6.0.1-SNAPSHOT</version>
<description>Declarative Drawing of UML Diagrams</description>
<url>http://www.spinellis.gr/umlgraph</url>
<licenses>
<license>
<name>BSD License (original)</name>
<url>http://www.opensource.org/licenses/bsd-license.php</url>
<distribution>repo</distribution>
</license>
</licenses>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<scm>
<url>https://github.com/dspinellis/UMLGraph/</url>
<connection>scm:git://github.com/dspinellis/UMLGraph.git</connection>
<developerConnection>scm:git:git@github.com:dspinellis/UMLGraph.git</developerConnection>
<tag>R5_7_1</tag>
</scm>
<developers>
<developer>
<id>dspinellis</id>
<name>Diomidis Spinellis</name>
<email>dds@aueb.gr</email>
</developer>
</developers>
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>9</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<source>9</source>
<target>9</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>org.umlgraph.doclet.UmlGraph</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>3.0.0-M7</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<useReleaseProfile>false</useReleaseProfile>
<releaseProfiles>release</releaseProfiles>
<goals>deploy</goals>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<tags>
<tag>
<name>depend</name>
<placement>X</placement>
</tag>
<tag>
<name>hidden</name>
<placement>X</placement>
</tag>
<tag>
<name>opt</name>
<placement>X</placement>
</tag>
</tags>
<doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>
<docletPath>${project.build.directory}${file.separator}${project.build.finalName}.jar</docletPath>
<additionalOptions>
<option>-inferrel</option>
<option>-inferdep</option>
<option>-autosize</option>
<option>-collapsible</option>
<option>--hide="java.*"</option>
<option>--collpackages=</option>
<option>-qualify</option>
<option>-postfixpackage</option>
<option>-nodefontsize 9</option>
<option>-nodefontpackagesize 7</option>
<option>--link="https://docs.oracle.com/javase/9/docs/api/"</option>
</additionalOptions>
<detectJavaApiLink>false</detectJavaApiLink>
<useStandardDocletOptions>true</useStandardDocletOptions>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

Some files were not shown because too many files have changed in this diff Show More