help: Remove generic tags from links
bug 552922
This removes the trailing generic tags from parameter class names, to
avoid creating invalid links
Change-Id: I09165f3240f719ca1db47c6c30f5807ee279287a
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
diff --git a/developers/org.eclipse.ease.helpgenerator/src/org/eclipse/ease/helpgenerator/HTMLWriter.java b/developers/org.eclipse.ease.helpgenerator/src/org/eclipse/ease/helpgenerator/HTMLWriter.java
index 8647082..a624c7b 100644
--- a/developers/org.eclipse.ease.helpgenerator/src/org/eclipse/ease/helpgenerator/HTMLWriter.java
+++ b/developers/org.eclipse.ease.helpgenerator/src/org/eclipse/ease/helpgenerator/HTMLWriter.java
@@ -160,6 +160,17 @@
addLine(buffer,
"\t\t<h3" + (isDeprecated(method) ? " class=\"deprecatedText\"" : "") + "><a id=\"" + method.name() + "\">" + method.name() + "</a></h3>");
+ final Parameter[] parameters = method.parameters();
+ if (parameters.length > 0) {
+ // Add a link anchor to method name + parameters
+ final StringBuilder anchorBuilder = new StringBuilder();
+ anchorBuilder.append(method.name()).append('-');
+ for (final Parameter parameter : parameters) {
+ anchorBuilder.append(LinkProvider.removeGenericsTags(parameter.typeName())).append('-');
+ }
+ addLine(buffer, "\t\t<a id=\"" + anchorBuilder.toString() + "\"></a>");
+ }
+
// synopsis
addLine(buffer, createSynopsis(method));
diff --git a/developers/org.eclipse.ease.helpgenerator/src/org/eclipse/ease/helpgenerator/LinkProvider.java b/developers/org.eclipse.ease.helpgenerator/src/org/eclipse/ease/helpgenerator/LinkProvider.java
index f9a6c10..28515ae 100644
--- a/developers/org.eclipse.ease.helpgenerator/src/org/eclipse/ease/helpgenerator/LinkProvider.java
+++ b/developers/org.eclipse.ease.helpgenerator/src/org/eclipse/ease/helpgenerator/LinkProvider.java
@@ -145,9 +145,9 @@
for (String parameter : linkMatcher.group(3).split(",")) {
parameter = parameter.trim().replace(" ", "");
if (parameter.endsWith("]"))
- link.append(findClass(parameter.substring(0, parameter.indexOf('[')), clazz));
+ link.append(removeGenericsTags(findClass(parameter.substring(0, parameter.indexOf('[')), clazz)));
else
- link.append(findClass(parameter, clazz));
+ link.append(removeGenericsTags(findClass(parameter, clazz)));
while (parameter.endsWith("]")) {
link.append(":A");
@@ -215,6 +215,18 @@
return output.toString();
}
+ /**
+ * Remove the generic tags from class name
+ *
+ * @param className
+ * The complete name of the class, including generic tags
+ * @return the class name without the generic tags
+ */
+ public static String removeGenericsTags(String className) {
+ final int indexOf = className.indexOf('<');
+ return indexOf < 0 ? className : className.substring(0, className.indexOf('<'));
+ }
+
private static String capitalizeFirst(final String content) {
if (!content.isEmpty())
return content.substring(0, 1).toUpperCase() + content.substring(1);