diff --git a/doc/cd-model.xml b/doc/cd-model.xml
index a44a41e..0682650 100644
--- a/doc/cd-model.xml
+++ b/doc/cd-model.xml
@@ -22,14 +22,12 @@ collaborations, and packages
generalization relationships (specified using the Java extends declaration or (for multiple inheritance) the javadoc @extends tag)
-association relationships (specified using the javadoc @assoc tag)
-
-navigatable (directed) association relationships (specified using the javadoc @navassoc tag)
-
-aggregation relationships (specified using the javadoc @has tag)
-
-composition relationships (specified using the javadoc @composed tag)
-
+association relationships (specified using the javadoc @assoc tag)
+navigable (directed) association relationships (specified using the javadoc @navassoc tag)
+aggregation relationships (specified using the javadoc @has tag)
+navigable aggregation relationships (specified using the javadoc @navhas tag)
+composition relationships (specified using the javadoc @composed tag)
+navigable composition relationships (specified using the javadoc @navcomposed tag)
dependency relationships (specified using the javadoc @depend tag)
diff --git a/doc/ver.xml b/doc/ver.xml
index 826c2f2..11ba308 100644
--- a/doc/ver.xml
+++ b/doc/ver.xml
@@ -5,6 +5,10 @@
Version 5.5 Under development
+- Added ability to make aggregate relationships (
@has and
+@composed) navigable through the new @navhas
+and @navcomposed relationships.
+(Contributed by Alan Jeffrey.)
- Make UMLGraphDoc generation compatible with JDK 7
(Contributed by Stefano Martina.)
- Various documentation improvements.
diff --git a/src/org/umlgraph/doclet/ClassGraph.java b/src/org/umlgraph/doclet/ClassGraph.java
index 45ebb69..a3676e1 100644
--- a/src/org/umlgraph/doclet/ClassGraph.java
+++ b/src/org/umlgraph/doclet/ClassGraph.java
@@ -74,7 +74,9 @@ class ClassGraph {
associationMap.put(RelationType.ASSOC, "arrowhead=none");
associationMap.put(RelationType.NAVASSOC, "arrowhead=open");
associationMap.put(RelationType.HAS, "arrowhead=none, arrowtail=ediamond, dir=both");
+ associationMap.put(RelationType.NAVHAS, "arrowhead=open, arrowtail=ediamond, dir=both");
associationMap.put(RelationType.COMPOSED, "arrowhead=none, arrowtail=diamond, dir=both");
+ associationMap.put(RelationType.NAVCOMPOSED, "arrowhead=open, arrowtail=diamond, dir=both");
associationMap.put(RelationType.DEPEND, "arrowhead=open, style=dashed");
}
protected Map classnames = new HashMap();
@@ -757,7 +759,9 @@ class ClassGraph {
allRelation(opt, RelationType.ASSOC, c);
allRelation(opt, RelationType.NAVASSOC, c);
allRelation(opt, RelationType.HAS, c);
+ allRelation(opt, RelationType.NAVHAS, c);
allRelation(opt, RelationType.COMPOSED, c);
+ allRelation(opt, RelationType.NAVCOMPOSED, c);
allRelation(opt, RelationType.DEPEND, c);
}
diff --git a/src/org/umlgraph/doclet/RelationType.java b/src/org/umlgraph/doclet/RelationType.java
index a4c13ae..eb6b4cf 100644
--- a/src/org/umlgraph/doclet/RelationType.java
+++ b/src/org/umlgraph/doclet/RelationType.java
@@ -6,5 +6,5 @@ package org.umlgraph.doclet;
*
*/
public enum RelationType {
- ASSOC, NAVASSOC, HAS, COMPOSED, DEPEND, EXTENDS, IMPLEMENTS;
+ ASSOC, NAVASSOC, HAS, NAVHAS, COMPOSED, NAVCOMPOSED, DEPEND, EXTENDS, IMPLEMENTS;
}