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);