diff --git a/src/gr/spinellis/umlgraph/doclet/ClassGraph.java b/src/gr/spinellis/umlgraph/doclet/ClassGraph.java
index 043a34f..505f1c5 100644
--- a/src/gr/spinellis/umlgraph/doclet/ClassGraph.java
+++ b/src/gr/spinellis/umlgraph/doclet/ClassGraph.java
@@ -265,6 +265,8 @@ class ClassGraph {
private static final String DEFAULT_EXTERNAL_APIDOC = "http://java.sun.com/j2se/1.4.2/docs/api/";
+ private static final char FILE_SEPARATOR = '/';
+
private Options opt;
private Set specifiedPackages;
@@ -284,6 +286,7 @@ class ClassGraph {
userMap.load(is);
for (Iterator iter = userMap.entrySet().iterator(); iter.hasNext();) {
Map.Entry mapEntry = (Map.Entry)iter.next();
+
try {
Pattern regex = Pattern.compile((String)mapEntry.getKey());
String thisRoot = (String)mapEntry.getValue();
@@ -298,18 +301,22 @@ class ClassGraph {
}
}
} else
- apiDocMap.put(Pattern.compile(""), DEFAULT_EXTERNAL_APIDOC);
+ apiDocMap.put(Pattern.compile(".*"), DEFAULT_EXTERNAL_APIDOC);
}
/** Trim and append a file separator to the string */
private String fixApiDocRoot(String str) {
+ String fixed = null;
if (str != null) {
- String fixed = str.trim();
- if (!fixed.endsWith(File.separator))
- fixed = fixed + "/";
- return fixed;
- } else
- return null;
+ fixed = str.trim();
+ if (fixed.length() > 0) {
+ if (!File.separator.equals("/"))
+ fixed = fixed.replace(File.separator.charAt(0), '/');
+ if (!fixed.endsWith("/"))
+ fixed = fixed + "/";
+ }
+ }
+ return fixed;
}
/** Return the class's name, possibly by stripping the leading path */
@@ -429,7 +436,9 @@ class ClassGraph {
opt.w.print(", style=filled, fillcolor=\"" + opt.nodeFillColor + "\"");
opt.w.print(", fontcolor=\"" + opt.nodeFontColor + "\"");
opt.w.print(", fontsize=" + opt.nodeFontSize);
- opt.w.print(", URL=\"" + classToUrl(s)+ "\"");
+ String url = classToUrl(s);
+ if (url != null)
+ opt.w.print(", URL=\"" + url + "\"");
opt.w.println("];");
}
@@ -452,7 +461,7 @@ class ClassGraph {
System.err.println("@tagvalue expects two fields: " + tags[i].text());
return ("");
}
- r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
+ r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
}
return (r);
}
@@ -637,11 +646,14 @@ class ClassGraph {
/** Convert the class name into a corresponding URL */
public String classToUrl(String className) {
- String DocRoot = mapApiDocRoot(className);
- StringBuffer buf = new StringBuffer(DocRoot);
- buf.append(className.replace('.', File.separatorChar));
- buf.append(".html");
- String result = buf.toString();
+ String result = null;
+ String docRoot = mapApiDocRoot(className);
+ if (docRoot != null) {
+ StringBuffer buf = new StringBuffer(docRoot);
+ buf.append(className.replace('.', FILE_SEPARATOR));
+ buf.append(".html");
+ result = buf.toString();
+ }
return result;
}
@@ -651,34 +663,12 @@ class ClassGraph {
* the final diagram to the associated JavaDoc page.
*/
private String mapApiDocRoot(String className) {
+
String root = null;
if (specifiedPackages.isEmpty() || isSpecifiedPackage(className))
- root = getLocalApiDocRoot(className);
+ root = apiDocRoot;
else
root = getExternalApiDocRoot(className);
- if (root == null)
- root = "";
- return root;
- }
-
- /**
- * Returns the appropriate URL "root" for a local class name. It will use the
- * value set in the apiDocRoot if set, otherwise will calculate a
- * relative path.
- */
- public String getLocalApiDocRoot(String className) {
- String root = null;
- if (apiDocRoot == null) {
- // works if the diagram is placed in the package doc-files directory,
- // to be used as part of a "customized" JavaDoc.
- String[] s = className.split("\\.");
- StringBuffer tmp = new StringBuffer(className.length() * 2);
- for (int i = 0; i < s.length - 1; i++)
- tmp.append("..").append(File.separatorChar);
- root = tmp.toString();
- } else
- // usually the case when part of a maven plugin.
- root = apiDocRoot;
return root;
}
@@ -696,7 +686,7 @@ class ClassGraph {
Map.Entry mapEntry = (Map.Entry)iter.next();
Pattern regex = (Pattern)mapEntry.getKey();
Matcher matcher = regex.matcher(className);
- if (matcher.matches())
+ if (matcher.matches())
return (String)mapEntry.getValue();
}
return null;
@@ -716,8 +706,7 @@ public class UmlGraph {
ClassDoc[] classes = root.classes();
ClassGraph c = new ClassGraph(root.specifiedPackages(),
- opt.apiDocRoot,
- opt.apiDocMapFileName);
+ opt.apiDocRoot, opt.apiDocMapFileName);
for (int i = 0; i < classes.length; i++)
c.print(opt, classes[i]);
c.printExtraClasses();
diff --git a/src/gr/spinellis/umlgraph/doclet/ClassInfo.java b/src/gr/spinellis/umlgraph/doclet/ClassInfo.java
index 043a34f..505f1c5 100644
--- a/src/gr/spinellis/umlgraph/doclet/ClassInfo.java
+++ b/src/gr/spinellis/umlgraph/doclet/ClassInfo.java
@@ -265,6 +265,8 @@ class ClassGraph {
private static final String DEFAULT_EXTERNAL_APIDOC = "http://java.sun.com/j2se/1.4.2/docs/api/";
+ private static final char FILE_SEPARATOR = '/';
+
private Options opt;
private Set specifiedPackages;
@@ -284,6 +286,7 @@ class ClassGraph {
userMap.load(is);
for (Iterator iter = userMap.entrySet().iterator(); iter.hasNext();) {
Map.Entry mapEntry = (Map.Entry)iter.next();
+
try {
Pattern regex = Pattern.compile((String)mapEntry.getKey());
String thisRoot = (String)mapEntry.getValue();
@@ -298,18 +301,22 @@ class ClassGraph {
}
}
} else
- apiDocMap.put(Pattern.compile(""), DEFAULT_EXTERNAL_APIDOC);
+ apiDocMap.put(Pattern.compile(".*"), DEFAULT_EXTERNAL_APIDOC);
}
/** Trim and append a file separator to the string */
private String fixApiDocRoot(String str) {
+ String fixed = null;
if (str != null) {
- String fixed = str.trim();
- if (!fixed.endsWith(File.separator))
- fixed = fixed + "/";
- return fixed;
- } else
- return null;
+ fixed = str.trim();
+ if (fixed.length() > 0) {
+ if (!File.separator.equals("/"))
+ fixed = fixed.replace(File.separator.charAt(0), '/');
+ if (!fixed.endsWith("/"))
+ fixed = fixed + "/";
+ }
+ }
+ return fixed;
}
/** Return the class's name, possibly by stripping the leading path */
@@ -429,7 +436,9 @@ class ClassGraph {
opt.w.print(", style=filled, fillcolor=\"" + opt.nodeFillColor + "\"");
opt.w.print(", fontcolor=\"" + opt.nodeFontColor + "\"");
opt.w.print(", fontsize=" + opt.nodeFontSize);
- opt.w.print(", URL=\"" + classToUrl(s)+ "\"");
+ String url = classToUrl(s);
+ if (url != null)
+ opt.w.print(", URL=\"" + url + "\"");
opt.w.println("];");
}
@@ -452,7 +461,7 @@ class ClassGraph {
System.err.println("@tagvalue expects two fields: " + tags[i].text());
return ("");
}
- r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
+ r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
}
return (r);
}
@@ -637,11 +646,14 @@ class ClassGraph {
/** Convert the class name into a corresponding URL */
public String classToUrl(String className) {
- String DocRoot = mapApiDocRoot(className);
- StringBuffer buf = new StringBuffer(DocRoot);
- buf.append(className.replace('.', File.separatorChar));
- buf.append(".html");
- String result = buf.toString();
+ String result = null;
+ String docRoot = mapApiDocRoot(className);
+ if (docRoot != null) {
+ StringBuffer buf = new StringBuffer(docRoot);
+ buf.append(className.replace('.', FILE_SEPARATOR));
+ buf.append(".html");
+ result = buf.toString();
+ }
return result;
}
@@ -651,34 +663,12 @@ class ClassGraph {
* the final diagram to the associated JavaDoc page.
*/
private String mapApiDocRoot(String className) {
+
String root = null;
if (specifiedPackages.isEmpty() || isSpecifiedPackage(className))
- root = getLocalApiDocRoot(className);
+ root = apiDocRoot;
else
root = getExternalApiDocRoot(className);
- if (root == null)
- root = "";
- return root;
- }
-
- /**
- * Returns the appropriate URL "root" for a local class name. It will use the
- * value set in the apiDocRoot if set, otherwise will calculate a
- * relative path.
- */
- public String getLocalApiDocRoot(String className) {
- String root = null;
- if (apiDocRoot == null) {
- // works if the diagram is placed in the package doc-files directory,
- // to be used as part of a "customized" JavaDoc.
- String[] s = className.split("\\.");
- StringBuffer tmp = new StringBuffer(className.length() * 2);
- for (int i = 0; i < s.length - 1; i++)
- tmp.append("..").append(File.separatorChar);
- root = tmp.toString();
- } else
- // usually the case when part of a maven plugin.
- root = apiDocRoot;
return root;
}
@@ -696,7 +686,7 @@ class ClassGraph {
Map.Entry mapEntry = (Map.Entry)iter.next();
Pattern regex = (Pattern)mapEntry.getKey();
Matcher matcher = regex.matcher(className);
- if (matcher.matches())
+ if (matcher.matches())
return (String)mapEntry.getValue();
}
return null;
@@ -716,8 +706,7 @@ public class UmlGraph {
ClassDoc[] classes = root.classes();
ClassGraph c = new ClassGraph(root.specifiedPackages(),
- opt.apiDocRoot,
- opt.apiDocMapFileName);
+ opt.apiDocRoot, opt.apiDocMapFileName);
for (int i = 0; i < classes.length; i++)
c.print(opt, classes[i]);
c.printExtraClasses();
diff --git a/src/gr/spinellis/umlgraph/doclet/Options.java b/src/gr/spinellis/umlgraph/doclet/Options.java
index 043a34f..505f1c5 100644
--- a/src/gr/spinellis/umlgraph/doclet/Options.java
+++ b/src/gr/spinellis/umlgraph/doclet/Options.java
@@ -265,6 +265,8 @@ class ClassGraph {
private static final String DEFAULT_EXTERNAL_APIDOC = "http://java.sun.com/j2se/1.4.2/docs/api/";
+ private static final char FILE_SEPARATOR = '/';
+
private Options opt;
private Set specifiedPackages;
@@ -284,6 +286,7 @@ class ClassGraph {
userMap.load(is);
for (Iterator iter = userMap.entrySet().iterator(); iter.hasNext();) {
Map.Entry mapEntry = (Map.Entry)iter.next();
+
try {
Pattern regex = Pattern.compile((String)mapEntry.getKey());
String thisRoot = (String)mapEntry.getValue();
@@ -298,18 +301,22 @@ class ClassGraph {
}
}
} else
- apiDocMap.put(Pattern.compile(""), DEFAULT_EXTERNAL_APIDOC);
+ apiDocMap.put(Pattern.compile(".*"), DEFAULT_EXTERNAL_APIDOC);
}
/** Trim and append a file separator to the string */
private String fixApiDocRoot(String str) {
+ String fixed = null;
if (str != null) {
- String fixed = str.trim();
- if (!fixed.endsWith(File.separator))
- fixed = fixed + "/";
- return fixed;
- } else
- return null;
+ fixed = str.trim();
+ if (fixed.length() > 0) {
+ if (!File.separator.equals("/"))
+ fixed = fixed.replace(File.separator.charAt(0), '/');
+ if (!fixed.endsWith("/"))
+ fixed = fixed + "/";
+ }
+ }
+ return fixed;
}
/** Return the class's name, possibly by stripping the leading path */
@@ -429,7 +436,9 @@ class ClassGraph {
opt.w.print(", style=filled, fillcolor=\"" + opt.nodeFillColor + "\"");
opt.w.print(", fontcolor=\"" + opt.nodeFontColor + "\"");
opt.w.print(", fontsize=" + opt.nodeFontSize);
- opt.w.print(", URL=\"" + classToUrl(s)+ "\"");
+ String url = classToUrl(s);
+ if (url != null)
+ opt.w.print(", URL=\"" + url + "\"");
opt.w.println("];");
}
@@ -452,7 +461,7 @@ class ClassGraph {
System.err.println("@tagvalue expects two fields: " + tags[i].text());
return ("");
}
- r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
+ r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
}
return (r);
}
@@ -637,11 +646,14 @@ class ClassGraph {
/** Convert the class name into a corresponding URL */
public String classToUrl(String className) {
- String DocRoot = mapApiDocRoot(className);
- StringBuffer buf = new StringBuffer(DocRoot);
- buf.append(className.replace('.', File.separatorChar));
- buf.append(".html");
- String result = buf.toString();
+ String result = null;
+ String docRoot = mapApiDocRoot(className);
+ if (docRoot != null) {
+ StringBuffer buf = new StringBuffer(docRoot);
+ buf.append(className.replace('.', FILE_SEPARATOR));
+ buf.append(".html");
+ result = buf.toString();
+ }
return result;
}
@@ -651,34 +663,12 @@ class ClassGraph {
* the final diagram to the associated JavaDoc page.
*/
private String mapApiDocRoot(String className) {
+
String root = null;
if (specifiedPackages.isEmpty() || isSpecifiedPackage(className))
- root = getLocalApiDocRoot(className);
+ root = apiDocRoot;
else
root = getExternalApiDocRoot(className);
- if (root == null)
- root = "";
- return root;
- }
-
- /**
- * Returns the appropriate URL "root" for a local class name. It will use the
- * value set in the apiDocRoot if set, otherwise will calculate a
- * relative path.
- */
- public String getLocalApiDocRoot(String className) {
- String root = null;
- if (apiDocRoot == null) {
- // works if the diagram is placed in the package doc-files directory,
- // to be used as part of a "customized" JavaDoc.
- String[] s = className.split("\\.");
- StringBuffer tmp = new StringBuffer(className.length() * 2);
- for (int i = 0; i < s.length - 1; i++)
- tmp.append("..").append(File.separatorChar);
- root = tmp.toString();
- } else
- // usually the case when part of a maven plugin.
- root = apiDocRoot;
return root;
}
@@ -696,7 +686,7 @@ class ClassGraph {
Map.Entry mapEntry = (Map.Entry)iter.next();
Pattern regex = (Pattern)mapEntry.getKey();
Matcher matcher = regex.matcher(className);
- if (matcher.matches())
+ if (matcher.matches())
return (String)mapEntry.getValue();
}
return null;
@@ -716,8 +706,7 @@ public class UmlGraph {
ClassDoc[] classes = root.classes();
ClassGraph c = new ClassGraph(root.specifiedPackages(),
- opt.apiDocRoot,
- opt.apiDocMapFileName);
+ opt.apiDocRoot, opt.apiDocMapFileName);
for (int i = 0; i < classes.length; i++)
c.print(opt, classes[i]);
c.printExtraClasses();
diff --git a/src/gr/spinellis/umlgraph/doclet/StringUtil.java b/src/gr/spinellis/umlgraph/doclet/StringUtil.java
index 043a34f..505f1c5 100644
--- a/src/gr/spinellis/umlgraph/doclet/StringUtil.java
+++ b/src/gr/spinellis/umlgraph/doclet/StringUtil.java
@@ -265,6 +265,8 @@ class ClassGraph {
private static final String DEFAULT_EXTERNAL_APIDOC = "http://java.sun.com/j2se/1.4.2/docs/api/";
+ private static final char FILE_SEPARATOR = '/';
+
private Options opt;
private Set specifiedPackages;
@@ -284,6 +286,7 @@ class ClassGraph {
userMap.load(is);
for (Iterator iter = userMap.entrySet().iterator(); iter.hasNext();) {
Map.Entry mapEntry = (Map.Entry)iter.next();
+
try {
Pattern regex = Pattern.compile((String)mapEntry.getKey());
String thisRoot = (String)mapEntry.getValue();
@@ -298,18 +301,22 @@ class ClassGraph {
}
}
} else
- apiDocMap.put(Pattern.compile(""), DEFAULT_EXTERNAL_APIDOC);
+ apiDocMap.put(Pattern.compile(".*"), DEFAULT_EXTERNAL_APIDOC);
}
/** Trim and append a file separator to the string */
private String fixApiDocRoot(String str) {
+ String fixed = null;
if (str != null) {
- String fixed = str.trim();
- if (!fixed.endsWith(File.separator))
- fixed = fixed + "/";
- return fixed;
- } else
- return null;
+ fixed = str.trim();
+ if (fixed.length() > 0) {
+ if (!File.separator.equals("/"))
+ fixed = fixed.replace(File.separator.charAt(0), '/');
+ if (!fixed.endsWith("/"))
+ fixed = fixed + "/";
+ }
+ }
+ return fixed;
}
/** Return the class's name, possibly by stripping the leading path */
@@ -429,7 +436,9 @@ class ClassGraph {
opt.w.print(", style=filled, fillcolor=\"" + opt.nodeFillColor + "\"");
opt.w.print(", fontcolor=\"" + opt.nodeFontColor + "\"");
opt.w.print(", fontsize=" + opt.nodeFontSize);
- opt.w.print(", URL=\"" + classToUrl(s)+ "\"");
+ String url = classToUrl(s);
+ if (url != null)
+ opt.w.print(", URL=\"" + url + "\"");
opt.w.println("];");
}
@@ -452,7 +461,7 @@ class ClassGraph {
System.err.println("@tagvalue expects two fields: " + tags[i].text());
return ("");
}
- r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
+ r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
}
return (r);
}
@@ -637,11 +646,14 @@ class ClassGraph {
/** Convert the class name into a corresponding URL */
public String classToUrl(String className) {
- String DocRoot = mapApiDocRoot(className);
- StringBuffer buf = new StringBuffer(DocRoot);
- buf.append(className.replace('.', File.separatorChar));
- buf.append(".html");
- String result = buf.toString();
+ String result = null;
+ String docRoot = mapApiDocRoot(className);
+ if (docRoot != null) {
+ StringBuffer buf = new StringBuffer(docRoot);
+ buf.append(className.replace('.', FILE_SEPARATOR));
+ buf.append(".html");
+ result = buf.toString();
+ }
return result;
}
@@ -651,34 +663,12 @@ class ClassGraph {
* the final diagram to the associated JavaDoc page.
*/
private String mapApiDocRoot(String className) {
+
String root = null;
if (specifiedPackages.isEmpty() || isSpecifiedPackage(className))
- root = getLocalApiDocRoot(className);
+ root = apiDocRoot;
else
root = getExternalApiDocRoot(className);
- if (root == null)
- root = "";
- return root;
- }
-
- /**
- * Returns the appropriate URL "root" for a local class name. It will use the
- * value set in the apiDocRoot if set, otherwise will calculate a
- * relative path.
- */
- public String getLocalApiDocRoot(String className) {
- String root = null;
- if (apiDocRoot == null) {
- // works if the diagram is placed in the package doc-files directory,
- // to be used as part of a "customized" JavaDoc.
- String[] s = className.split("\\.");
- StringBuffer tmp = new StringBuffer(className.length() * 2);
- for (int i = 0; i < s.length - 1; i++)
- tmp.append("..").append(File.separatorChar);
- root = tmp.toString();
- } else
- // usually the case when part of a maven plugin.
- root = apiDocRoot;
return root;
}
@@ -696,7 +686,7 @@ class ClassGraph {
Map.Entry mapEntry = (Map.Entry)iter.next();
Pattern regex = (Pattern)mapEntry.getKey();
Matcher matcher = regex.matcher(className);
- if (matcher.matches())
+ if (matcher.matches())
return (String)mapEntry.getValue();
}
return null;
@@ -716,8 +706,7 @@ public class UmlGraph {
ClassDoc[] classes = root.classes();
ClassGraph c = new ClassGraph(root.specifiedPackages(),
- opt.apiDocRoot,
- opt.apiDocMapFileName);
+ opt.apiDocRoot, opt.apiDocMapFileName);
for (int i = 0; i < classes.length; i++)
c.print(opt, classes[i]);
c.printExtraClasses();
diff --git a/src/gr/spinellis/umlgraph/doclet/UmlGraph.java b/src/gr/spinellis/umlgraph/doclet/UmlGraph.java
index 043a34f..505f1c5 100644
--- a/src/gr/spinellis/umlgraph/doclet/UmlGraph.java
+++ b/src/gr/spinellis/umlgraph/doclet/UmlGraph.java
@@ -265,6 +265,8 @@ class ClassGraph {
private static final String DEFAULT_EXTERNAL_APIDOC = "http://java.sun.com/j2se/1.4.2/docs/api/";
+ private static final char FILE_SEPARATOR = '/';
+
private Options opt;
private Set specifiedPackages;
@@ -284,6 +286,7 @@ class ClassGraph {
userMap.load(is);
for (Iterator iter = userMap.entrySet().iterator(); iter.hasNext();) {
Map.Entry mapEntry = (Map.Entry)iter.next();
+
try {
Pattern regex = Pattern.compile((String)mapEntry.getKey());
String thisRoot = (String)mapEntry.getValue();
@@ -298,18 +301,22 @@ class ClassGraph {
}
}
} else
- apiDocMap.put(Pattern.compile(""), DEFAULT_EXTERNAL_APIDOC);
+ apiDocMap.put(Pattern.compile(".*"), DEFAULT_EXTERNAL_APIDOC);
}
/** Trim and append a file separator to the string */
private String fixApiDocRoot(String str) {
+ String fixed = null;
if (str != null) {
- String fixed = str.trim();
- if (!fixed.endsWith(File.separator))
- fixed = fixed + "/";
- return fixed;
- } else
- return null;
+ fixed = str.trim();
+ if (fixed.length() > 0) {
+ if (!File.separator.equals("/"))
+ fixed = fixed.replace(File.separator.charAt(0), '/');
+ if (!fixed.endsWith("/"))
+ fixed = fixed + "/";
+ }
+ }
+ return fixed;
}
/** Return the class's name, possibly by stripping the leading path */
@@ -429,7 +436,9 @@ class ClassGraph {
opt.w.print(", style=filled, fillcolor=\"" + opt.nodeFillColor + "\"");
opt.w.print(", fontcolor=\"" + opt.nodeFontColor + "\"");
opt.w.print(", fontsize=" + opt.nodeFontSize);
- opt.w.print(", URL=\"" + classToUrl(s)+ "\"");
+ String url = classToUrl(s);
+ if (url != null)
+ opt.w.print(", URL=\"" + url + "\"");
opt.w.println("];");
}
@@ -452,7 +461,7 @@ class ClassGraph {
System.err.println("@tagvalue expects two fields: " + tags[i].text());
return ("");
}
- r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
+ r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
}
return (r);
}
@@ -637,11 +646,14 @@ class ClassGraph {
/** Convert the class name into a corresponding URL */
public String classToUrl(String className) {
- String DocRoot = mapApiDocRoot(className);
- StringBuffer buf = new StringBuffer(DocRoot);
- buf.append(className.replace('.', File.separatorChar));
- buf.append(".html");
- String result = buf.toString();
+ String result = null;
+ String docRoot = mapApiDocRoot(className);
+ if (docRoot != null) {
+ StringBuffer buf = new StringBuffer(docRoot);
+ buf.append(className.replace('.', FILE_SEPARATOR));
+ buf.append(".html");
+ result = buf.toString();
+ }
return result;
}
@@ -651,34 +663,12 @@ class ClassGraph {
* the final diagram to the associated JavaDoc page.
*/
private String mapApiDocRoot(String className) {
+
String root = null;
if (specifiedPackages.isEmpty() || isSpecifiedPackage(className))
- root = getLocalApiDocRoot(className);
+ root = apiDocRoot;
else
root = getExternalApiDocRoot(className);
- if (root == null)
- root = "";
- return root;
- }
-
- /**
- * Returns the appropriate URL "root" for a local class name. It will use the
- * value set in the apiDocRoot if set, otherwise will calculate a
- * relative path.
- */
- public String getLocalApiDocRoot(String className) {
- String root = null;
- if (apiDocRoot == null) {
- // works if the diagram is placed in the package doc-files directory,
- // to be used as part of a "customized" JavaDoc.
- String[] s = className.split("\\.");
- StringBuffer tmp = new StringBuffer(className.length() * 2);
- for (int i = 0; i < s.length - 1; i++)
- tmp.append("..").append(File.separatorChar);
- root = tmp.toString();
- } else
- // usually the case when part of a maven plugin.
- root = apiDocRoot;
return root;
}
@@ -696,7 +686,7 @@ class ClassGraph {
Map.Entry mapEntry = (Map.Entry)iter.next();
Pattern regex = (Pattern)mapEntry.getKey();
Matcher matcher = regex.matcher(className);
- if (matcher.matches())
+ if (matcher.matches())
return (String)mapEntry.getValue();
}
return null;
@@ -716,8 +706,7 @@ public class UmlGraph {
ClassDoc[] classes = root.classes();
ClassGraph c = new ClassGraph(root.specifiedPackages(),
- opt.apiDocRoot,
- opt.apiDocMapFileName);
+ opt.apiDocRoot, opt.apiDocMapFileName);
for (int i = 0; i < classes.length; i++)
c.print(opt, classes[i]);
c.printExtraClasses();
diff --git a/src/org/umlgraph/doclet/ClassGraph.java b/src/org/umlgraph/doclet/ClassGraph.java
index 043a34f..505f1c5 100644
--- a/src/org/umlgraph/doclet/ClassGraph.java
+++ b/src/org/umlgraph/doclet/ClassGraph.java
@@ -265,6 +265,8 @@ class ClassGraph {
private static final String DEFAULT_EXTERNAL_APIDOC = "http://java.sun.com/j2se/1.4.2/docs/api/";
+ private static final char FILE_SEPARATOR = '/';
+
private Options opt;
private Set specifiedPackages;
@@ -284,6 +286,7 @@ class ClassGraph {
userMap.load(is);
for (Iterator iter = userMap.entrySet().iterator(); iter.hasNext();) {
Map.Entry mapEntry = (Map.Entry)iter.next();
+
try {
Pattern regex = Pattern.compile((String)mapEntry.getKey());
String thisRoot = (String)mapEntry.getValue();
@@ -298,18 +301,22 @@ class ClassGraph {
}
}
} else
- apiDocMap.put(Pattern.compile(""), DEFAULT_EXTERNAL_APIDOC);
+ apiDocMap.put(Pattern.compile(".*"), DEFAULT_EXTERNAL_APIDOC);
}
/** Trim and append a file separator to the string */
private String fixApiDocRoot(String str) {
+ String fixed = null;
if (str != null) {
- String fixed = str.trim();
- if (!fixed.endsWith(File.separator))
- fixed = fixed + "/";
- return fixed;
- } else
- return null;
+ fixed = str.trim();
+ if (fixed.length() > 0) {
+ if (!File.separator.equals("/"))
+ fixed = fixed.replace(File.separator.charAt(0), '/');
+ if (!fixed.endsWith("/"))
+ fixed = fixed + "/";
+ }
+ }
+ return fixed;
}
/** Return the class's name, possibly by stripping the leading path */
@@ -429,7 +436,9 @@ class ClassGraph {
opt.w.print(", style=filled, fillcolor=\"" + opt.nodeFillColor + "\"");
opt.w.print(", fontcolor=\"" + opt.nodeFontColor + "\"");
opt.w.print(", fontsize=" + opt.nodeFontSize);
- opt.w.print(", URL=\"" + classToUrl(s)+ "\"");
+ String url = classToUrl(s);
+ if (url != null)
+ opt.w.print(", URL=\"" + url + "\"");
opt.w.println("];");
}
@@ -452,7 +461,7 @@ class ClassGraph {
System.err.println("@tagvalue expects two fields: " + tags[i].text());
return ("");
}
- r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
+ r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
}
return (r);
}
@@ -637,11 +646,14 @@ class ClassGraph {
/** Convert the class name into a corresponding URL */
public String classToUrl(String className) {
- String DocRoot = mapApiDocRoot(className);
- StringBuffer buf = new StringBuffer(DocRoot);
- buf.append(className.replace('.', File.separatorChar));
- buf.append(".html");
- String result = buf.toString();
+ String result = null;
+ String docRoot = mapApiDocRoot(className);
+ if (docRoot != null) {
+ StringBuffer buf = new StringBuffer(docRoot);
+ buf.append(className.replace('.', FILE_SEPARATOR));
+ buf.append(".html");
+ result = buf.toString();
+ }
return result;
}
@@ -651,34 +663,12 @@ class ClassGraph {
* the final diagram to the associated JavaDoc page.
*/
private String mapApiDocRoot(String className) {
+
String root = null;
if (specifiedPackages.isEmpty() || isSpecifiedPackage(className))
- root = getLocalApiDocRoot(className);
+ root = apiDocRoot;
else
root = getExternalApiDocRoot(className);
- if (root == null)
- root = "";
- return root;
- }
-
- /**
- * Returns the appropriate URL "root" for a local class name. It will use the
- * value set in the apiDocRoot if set, otherwise will calculate a
- * relative path.
- */
- public String getLocalApiDocRoot(String className) {
- String root = null;
- if (apiDocRoot == null) {
- // works if the diagram is placed in the package doc-files directory,
- // to be used as part of a "customized" JavaDoc.
- String[] s = className.split("\\.");
- StringBuffer tmp = new StringBuffer(className.length() * 2);
- for (int i = 0; i < s.length - 1; i++)
- tmp.append("..").append(File.separatorChar);
- root = tmp.toString();
- } else
- // usually the case when part of a maven plugin.
- root = apiDocRoot;
return root;
}
@@ -696,7 +686,7 @@ class ClassGraph {
Map.Entry mapEntry = (Map.Entry)iter.next();
Pattern regex = (Pattern)mapEntry.getKey();
Matcher matcher = regex.matcher(className);
- if (matcher.matches())
+ if (matcher.matches())
return (String)mapEntry.getValue();
}
return null;
@@ -716,8 +706,7 @@ public class UmlGraph {
ClassDoc[] classes = root.classes();
ClassGraph c = new ClassGraph(root.specifiedPackages(),
- opt.apiDocRoot,
- opt.apiDocMapFileName);
+ opt.apiDocRoot, opt.apiDocMapFileName);
for (int i = 0; i < classes.length; i++)
c.print(opt, classes[i]);
c.printExtraClasses();
diff --git a/src/org/umlgraph/doclet/ClassInfo.java b/src/org/umlgraph/doclet/ClassInfo.java
index 043a34f..505f1c5 100644
--- a/src/org/umlgraph/doclet/ClassInfo.java
+++ b/src/org/umlgraph/doclet/ClassInfo.java
@@ -265,6 +265,8 @@ class ClassGraph {
private static final String DEFAULT_EXTERNAL_APIDOC = "http://java.sun.com/j2se/1.4.2/docs/api/";
+ private static final char FILE_SEPARATOR = '/';
+
private Options opt;
private Set specifiedPackages;
@@ -284,6 +286,7 @@ class ClassGraph {
userMap.load(is);
for (Iterator iter = userMap.entrySet().iterator(); iter.hasNext();) {
Map.Entry mapEntry = (Map.Entry)iter.next();
+
try {
Pattern regex = Pattern.compile((String)mapEntry.getKey());
String thisRoot = (String)mapEntry.getValue();
@@ -298,18 +301,22 @@ class ClassGraph {
}
}
} else
- apiDocMap.put(Pattern.compile(""), DEFAULT_EXTERNAL_APIDOC);
+ apiDocMap.put(Pattern.compile(".*"), DEFAULT_EXTERNAL_APIDOC);
}
/** Trim and append a file separator to the string */
private String fixApiDocRoot(String str) {
+ String fixed = null;
if (str != null) {
- String fixed = str.trim();
- if (!fixed.endsWith(File.separator))
- fixed = fixed + "/";
- return fixed;
- } else
- return null;
+ fixed = str.trim();
+ if (fixed.length() > 0) {
+ if (!File.separator.equals("/"))
+ fixed = fixed.replace(File.separator.charAt(0), '/');
+ if (!fixed.endsWith("/"))
+ fixed = fixed + "/";
+ }
+ }
+ return fixed;
}
/** Return the class's name, possibly by stripping the leading path */
@@ -429,7 +436,9 @@ class ClassGraph {
opt.w.print(", style=filled, fillcolor=\"" + opt.nodeFillColor + "\"");
opt.w.print(", fontcolor=\"" + opt.nodeFontColor + "\"");
opt.w.print(", fontsize=" + opt.nodeFontSize);
- opt.w.print(", URL=\"" + classToUrl(s)+ "\"");
+ String url = classToUrl(s);
+ if (url != null)
+ opt.w.print(", URL=\"" + url + "\"");
opt.w.println("];");
}
@@ -452,7 +461,7 @@ class ClassGraph {
System.err.println("@tagvalue expects two fields: " + tags[i].text());
return ("");
}
- r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
+ r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
}
return (r);
}
@@ -637,11 +646,14 @@ class ClassGraph {
/** Convert the class name into a corresponding URL */
public String classToUrl(String className) {
- String DocRoot = mapApiDocRoot(className);
- StringBuffer buf = new StringBuffer(DocRoot);
- buf.append(className.replace('.', File.separatorChar));
- buf.append(".html");
- String result = buf.toString();
+ String result = null;
+ String docRoot = mapApiDocRoot(className);
+ if (docRoot != null) {
+ StringBuffer buf = new StringBuffer(docRoot);
+ buf.append(className.replace('.', FILE_SEPARATOR));
+ buf.append(".html");
+ result = buf.toString();
+ }
return result;
}
@@ -651,34 +663,12 @@ class ClassGraph {
* the final diagram to the associated JavaDoc page.
*/
private String mapApiDocRoot(String className) {
+
String root = null;
if (specifiedPackages.isEmpty() || isSpecifiedPackage(className))
- root = getLocalApiDocRoot(className);
+ root = apiDocRoot;
else
root = getExternalApiDocRoot(className);
- if (root == null)
- root = "";
- return root;
- }
-
- /**
- * Returns the appropriate URL "root" for a local class name. It will use the
- * value set in the apiDocRoot if set, otherwise will calculate a
- * relative path.
- */
- public String getLocalApiDocRoot(String className) {
- String root = null;
- if (apiDocRoot == null) {
- // works if the diagram is placed in the package doc-files directory,
- // to be used as part of a "customized" JavaDoc.
- String[] s = className.split("\\.");
- StringBuffer tmp = new StringBuffer(className.length() * 2);
- for (int i = 0; i < s.length - 1; i++)
- tmp.append("..").append(File.separatorChar);
- root = tmp.toString();
- } else
- // usually the case when part of a maven plugin.
- root = apiDocRoot;
return root;
}
@@ -696,7 +686,7 @@ class ClassGraph {
Map.Entry mapEntry = (Map.Entry)iter.next();
Pattern regex = (Pattern)mapEntry.getKey();
Matcher matcher = regex.matcher(className);
- if (matcher.matches())
+ if (matcher.matches())
return (String)mapEntry.getValue();
}
return null;
@@ -716,8 +706,7 @@ public class UmlGraph {
ClassDoc[] classes = root.classes();
ClassGraph c = new ClassGraph(root.specifiedPackages(),
- opt.apiDocRoot,
- opt.apiDocMapFileName);
+ opt.apiDocRoot, opt.apiDocMapFileName);
for (int i = 0; i < classes.length; i++)
c.print(opt, classes[i]);
c.printExtraClasses();
diff --git a/src/org/umlgraph/doclet/Options.java b/src/org/umlgraph/doclet/Options.java
index 043a34f..505f1c5 100644
--- a/src/org/umlgraph/doclet/Options.java
+++ b/src/org/umlgraph/doclet/Options.java
@@ -265,6 +265,8 @@ class ClassGraph {
private static final String DEFAULT_EXTERNAL_APIDOC = "http://java.sun.com/j2se/1.4.2/docs/api/";
+ private static final char FILE_SEPARATOR = '/';
+
private Options opt;
private Set specifiedPackages;
@@ -284,6 +286,7 @@ class ClassGraph {
userMap.load(is);
for (Iterator iter = userMap.entrySet().iterator(); iter.hasNext();) {
Map.Entry mapEntry = (Map.Entry)iter.next();
+
try {
Pattern regex = Pattern.compile((String)mapEntry.getKey());
String thisRoot = (String)mapEntry.getValue();
@@ -298,18 +301,22 @@ class ClassGraph {
}
}
} else
- apiDocMap.put(Pattern.compile(""), DEFAULT_EXTERNAL_APIDOC);
+ apiDocMap.put(Pattern.compile(".*"), DEFAULT_EXTERNAL_APIDOC);
}
/** Trim and append a file separator to the string */
private String fixApiDocRoot(String str) {
+ String fixed = null;
if (str != null) {
- String fixed = str.trim();
- if (!fixed.endsWith(File.separator))
- fixed = fixed + "/";
- return fixed;
- } else
- return null;
+ fixed = str.trim();
+ if (fixed.length() > 0) {
+ if (!File.separator.equals("/"))
+ fixed = fixed.replace(File.separator.charAt(0), '/');
+ if (!fixed.endsWith("/"))
+ fixed = fixed + "/";
+ }
+ }
+ return fixed;
}
/** Return the class's name, possibly by stripping the leading path */
@@ -429,7 +436,9 @@ class ClassGraph {
opt.w.print(", style=filled, fillcolor=\"" + opt.nodeFillColor + "\"");
opt.w.print(", fontcolor=\"" + opt.nodeFontColor + "\"");
opt.w.print(", fontsize=" + opt.nodeFontSize);
- opt.w.print(", URL=\"" + classToUrl(s)+ "\"");
+ String url = classToUrl(s);
+ if (url != null)
+ opt.w.print(", URL=\"" + url + "\"");
opt.w.println("];");
}
@@ -452,7 +461,7 @@ class ClassGraph {
System.err.println("@tagvalue expects two fields: " + tags[i].text());
return ("");
}
- r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
+ r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
}
return (r);
}
@@ -637,11 +646,14 @@ class ClassGraph {
/** Convert the class name into a corresponding URL */
public String classToUrl(String className) {
- String DocRoot = mapApiDocRoot(className);
- StringBuffer buf = new StringBuffer(DocRoot);
- buf.append(className.replace('.', File.separatorChar));
- buf.append(".html");
- String result = buf.toString();
+ String result = null;
+ String docRoot = mapApiDocRoot(className);
+ if (docRoot != null) {
+ StringBuffer buf = new StringBuffer(docRoot);
+ buf.append(className.replace('.', FILE_SEPARATOR));
+ buf.append(".html");
+ result = buf.toString();
+ }
return result;
}
@@ -651,34 +663,12 @@ class ClassGraph {
* the final diagram to the associated JavaDoc page.
*/
private String mapApiDocRoot(String className) {
+
String root = null;
if (specifiedPackages.isEmpty() || isSpecifiedPackage(className))
- root = getLocalApiDocRoot(className);
+ root = apiDocRoot;
else
root = getExternalApiDocRoot(className);
- if (root == null)
- root = "";
- return root;
- }
-
- /**
- * Returns the appropriate URL "root" for a local class name. It will use the
- * value set in the apiDocRoot if set, otherwise will calculate a
- * relative path.
- */
- public String getLocalApiDocRoot(String className) {
- String root = null;
- if (apiDocRoot == null) {
- // works if the diagram is placed in the package doc-files directory,
- // to be used as part of a "customized" JavaDoc.
- String[] s = className.split("\\.");
- StringBuffer tmp = new StringBuffer(className.length() * 2);
- for (int i = 0; i < s.length - 1; i++)
- tmp.append("..").append(File.separatorChar);
- root = tmp.toString();
- } else
- // usually the case when part of a maven plugin.
- root = apiDocRoot;
return root;
}
@@ -696,7 +686,7 @@ class ClassGraph {
Map.Entry mapEntry = (Map.Entry)iter.next();
Pattern regex = (Pattern)mapEntry.getKey();
Matcher matcher = regex.matcher(className);
- if (matcher.matches())
+ if (matcher.matches())
return (String)mapEntry.getValue();
}
return null;
@@ -716,8 +706,7 @@ public class UmlGraph {
ClassDoc[] classes = root.classes();
ClassGraph c = new ClassGraph(root.specifiedPackages(),
- opt.apiDocRoot,
- opt.apiDocMapFileName);
+ opt.apiDocRoot, opt.apiDocMapFileName);
for (int i = 0; i < classes.length; i++)
c.print(opt, classes[i]);
c.printExtraClasses();
diff --git a/src/org/umlgraph/doclet/StringUtil.java b/src/org/umlgraph/doclet/StringUtil.java
index 043a34f..505f1c5 100644
--- a/src/org/umlgraph/doclet/StringUtil.java
+++ b/src/org/umlgraph/doclet/StringUtil.java
@@ -265,6 +265,8 @@ class ClassGraph {
private static final String DEFAULT_EXTERNAL_APIDOC = "http://java.sun.com/j2se/1.4.2/docs/api/";
+ private static final char FILE_SEPARATOR = '/';
+
private Options opt;
private Set specifiedPackages;
@@ -284,6 +286,7 @@ class ClassGraph {
userMap.load(is);
for (Iterator iter = userMap.entrySet().iterator(); iter.hasNext();) {
Map.Entry mapEntry = (Map.Entry)iter.next();
+
try {
Pattern regex = Pattern.compile((String)mapEntry.getKey());
String thisRoot = (String)mapEntry.getValue();
@@ -298,18 +301,22 @@ class ClassGraph {
}
}
} else
- apiDocMap.put(Pattern.compile(""), DEFAULT_EXTERNAL_APIDOC);
+ apiDocMap.put(Pattern.compile(".*"), DEFAULT_EXTERNAL_APIDOC);
}
/** Trim and append a file separator to the string */
private String fixApiDocRoot(String str) {
+ String fixed = null;
if (str != null) {
- String fixed = str.trim();
- if (!fixed.endsWith(File.separator))
- fixed = fixed + "/";
- return fixed;
- } else
- return null;
+ fixed = str.trim();
+ if (fixed.length() > 0) {
+ if (!File.separator.equals("/"))
+ fixed = fixed.replace(File.separator.charAt(0), '/');
+ if (!fixed.endsWith("/"))
+ fixed = fixed + "/";
+ }
+ }
+ return fixed;
}
/** Return the class's name, possibly by stripping the leading path */
@@ -429,7 +436,9 @@ class ClassGraph {
opt.w.print(", style=filled, fillcolor=\"" + opt.nodeFillColor + "\"");
opt.w.print(", fontcolor=\"" + opt.nodeFontColor + "\"");
opt.w.print(", fontsize=" + opt.nodeFontSize);
- opt.w.print(", URL=\"" + classToUrl(s)+ "\"");
+ String url = classToUrl(s);
+ if (url != null)
+ opt.w.print(", URL=\"" + url + "\"");
opt.w.println("];");
}
@@ -452,7 +461,7 @@ class ClassGraph {
System.err.println("@tagvalue expects two fields: " + tags[i].text());
return ("");
}
- r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
+ r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
}
return (r);
}
@@ -637,11 +646,14 @@ class ClassGraph {
/** Convert the class name into a corresponding URL */
public String classToUrl(String className) {
- String DocRoot = mapApiDocRoot(className);
- StringBuffer buf = new StringBuffer(DocRoot);
- buf.append(className.replace('.', File.separatorChar));
- buf.append(".html");
- String result = buf.toString();
+ String result = null;
+ String docRoot = mapApiDocRoot(className);
+ if (docRoot != null) {
+ StringBuffer buf = new StringBuffer(docRoot);
+ buf.append(className.replace('.', FILE_SEPARATOR));
+ buf.append(".html");
+ result = buf.toString();
+ }
return result;
}
@@ -651,34 +663,12 @@ class ClassGraph {
* the final diagram to the associated JavaDoc page.
*/
private String mapApiDocRoot(String className) {
+
String root = null;
if (specifiedPackages.isEmpty() || isSpecifiedPackage(className))
- root = getLocalApiDocRoot(className);
+ root = apiDocRoot;
else
root = getExternalApiDocRoot(className);
- if (root == null)
- root = "";
- return root;
- }
-
- /**
- * Returns the appropriate URL "root" for a local class name. It will use the
- * value set in the apiDocRoot if set, otherwise will calculate a
- * relative path.
- */
- public String getLocalApiDocRoot(String className) {
- String root = null;
- if (apiDocRoot == null) {
- // works if the diagram is placed in the package doc-files directory,
- // to be used as part of a "customized" JavaDoc.
- String[] s = className.split("\\.");
- StringBuffer tmp = new StringBuffer(className.length() * 2);
- for (int i = 0; i < s.length - 1; i++)
- tmp.append("..").append(File.separatorChar);
- root = tmp.toString();
- } else
- // usually the case when part of a maven plugin.
- root = apiDocRoot;
return root;
}
@@ -696,7 +686,7 @@ class ClassGraph {
Map.Entry mapEntry = (Map.Entry)iter.next();
Pattern regex = (Pattern)mapEntry.getKey();
Matcher matcher = regex.matcher(className);
- if (matcher.matches())
+ if (matcher.matches())
return (String)mapEntry.getValue();
}
return null;
@@ -716,8 +706,7 @@ public class UmlGraph {
ClassDoc[] classes = root.classes();
ClassGraph c = new ClassGraph(root.specifiedPackages(),
- opt.apiDocRoot,
- opt.apiDocMapFileName);
+ opt.apiDocRoot, opt.apiDocMapFileName);
for (int i = 0; i < classes.length; i++)
c.print(opt, classes[i]);
c.printExtraClasses();
diff --git a/src/org/umlgraph/doclet/UmlGraph.java b/src/org/umlgraph/doclet/UmlGraph.java
index 043a34f..505f1c5 100644
--- a/src/org/umlgraph/doclet/UmlGraph.java
+++ b/src/org/umlgraph/doclet/UmlGraph.java
@@ -265,6 +265,8 @@ class ClassGraph {
private static final String DEFAULT_EXTERNAL_APIDOC = "http://java.sun.com/j2se/1.4.2/docs/api/";
+ private static final char FILE_SEPARATOR = '/';
+
private Options opt;
private Set specifiedPackages;
@@ -284,6 +286,7 @@ class ClassGraph {
userMap.load(is);
for (Iterator iter = userMap.entrySet().iterator(); iter.hasNext();) {
Map.Entry mapEntry = (Map.Entry)iter.next();
+
try {
Pattern regex = Pattern.compile((String)mapEntry.getKey());
String thisRoot = (String)mapEntry.getValue();
@@ -298,18 +301,22 @@ class ClassGraph {
}
}
} else
- apiDocMap.put(Pattern.compile(""), DEFAULT_EXTERNAL_APIDOC);
+ apiDocMap.put(Pattern.compile(".*"), DEFAULT_EXTERNAL_APIDOC);
}
/** Trim and append a file separator to the string */
private String fixApiDocRoot(String str) {
+ String fixed = null;
if (str != null) {
- String fixed = str.trim();
- if (!fixed.endsWith(File.separator))
- fixed = fixed + "/";
- return fixed;
- } else
- return null;
+ fixed = str.trim();
+ if (fixed.length() > 0) {
+ if (!File.separator.equals("/"))
+ fixed = fixed.replace(File.separator.charAt(0), '/');
+ if (!fixed.endsWith("/"))
+ fixed = fixed + "/";
+ }
+ }
+ return fixed;
}
/** Return the class's name, possibly by stripping the leading path */
@@ -429,7 +436,9 @@ class ClassGraph {
opt.w.print(", style=filled, fillcolor=\"" + opt.nodeFillColor + "\"");
opt.w.print(", fontcolor=\"" + opt.nodeFontColor + "\"");
opt.w.print(", fontsize=" + opt.nodeFontSize);
- opt.w.print(", URL=\"" + classToUrl(s)+ "\"");
+ String url = classToUrl(s);
+ if (url != null)
+ opt.w.print(", URL=\"" + url + "\"");
opt.w.println("];");
}
@@ -452,7 +461,7 @@ class ClassGraph {
System.err.println("@tagvalue expects two fields: " + tags[i].text());
return ("");
}
- r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
+ r += "\\{" + t[0] + " = " + t[1] + "\\}\\" + term;
}
return (r);
}
@@ -637,11 +646,14 @@ class ClassGraph {
/** Convert the class name into a corresponding URL */
public String classToUrl(String className) {
- String DocRoot = mapApiDocRoot(className);
- StringBuffer buf = new StringBuffer(DocRoot);
- buf.append(className.replace('.', File.separatorChar));
- buf.append(".html");
- String result = buf.toString();
+ String result = null;
+ String docRoot = mapApiDocRoot(className);
+ if (docRoot != null) {
+ StringBuffer buf = new StringBuffer(docRoot);
+ buf.append(className.replace('.', FILE_SEPARATOR));
+ buf.append(".html");
+ result = buf.toString();
+ }
return result;
}
@@ -651,34 +663,12 @@ class ClassGraph {
* the final diagram to the associated JavaDoc page.
*/
private String mapApiDocRoot(String className) {
+
String root = null;
if (specifiedPackages.isEmpty() || isSpecifiedPackage(className))
- root = getLocalApiDocRoot(className);
+ root = apiDocRoot;
else
root = getExternalApiDocRoot(className);
- if (root == null)
- root = "";
- return root;
- }
-
- /**
- * Returns the appropriate URL "root" for a local class name. It will use the
- * value set in the apiDocRoot if set, otherwise will calculate a
- * relative path.
- */
- public String getLocalApiDocRoot(String className) {
- String root = null;
- if (apiDocRoot == null) {
- // works if the diagram is placed in the package doc-files directory,
- // to be used as part of a "customized" JavaDoc.
- String[] s = className.split("\\.");
- StringBuffer tmp = new StringBuffer(className.length() * 2);
- for (int i = 0; i < s.length - 1; i++)
- tmp.append("..").append(File.separatorChar);
- root = tmp.toString();
- } else
- // usually the case when part of a maven plugin.
- root = apiDocRoot;
return root;
}
@@ -696,7 +686,7 @@ class ClassGraph {
Map.Entry mapEntry = (Map.Entry)iter.next();
Pattern regex = (Pattern)mapEntry.getKey();
Matcher matcher = regex.matcher(className);
- if (matcher.matches())
+ if (matcher.matches())
return (String)mapEntry.getValue();
}
return null;
@@ -716,8 +706,7 @@ public class UmlGraph {
ClassDoc[] classes = root.classes();
ClassGraph c = new ClassGraph(root.specifiedPackages(),
- opt.apiDocRoot,
- opt.apiDocMapFileName);
+ opt.apiDocRoot, opt.apiDocMapFileName);
for (int i = 0; i < classes.length; i++)
c.print(opt, classes[i]);
c.printExtraClasses();