bug 552922: [help] Remove generic tags from links
This removes the trailing generic tags from parameter class names, to
avoid creating invalid links
Fixed the NPE from previous similar patch
Change-Id: I76ba609e3c07e339db462900830bcb79ef298194
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
diff --git a/developers/org.eclipse.ease.helpgenerator/resources/org.eclipse.ease.helpgenerator.testproject/src/org/eclipse/ease/helpgenerator/testproject/valid/ValidModule.java b/developers/org.eclipse.ease.helpgenerator/resources/org.eclipse.ease.helpgenerator.testproject/src/org/eclipse/ease/helpgenerator/testproject/valid/ValidModule.java
index 6cd4578..5ac0467 100644
--- a/developers/org.eclipse.ease.helpgenerator/resources/org.eclipse.ease.helpgenerator.testproject/src/org/eclipse/ease/helpgenerator/testproject/valid/ValidModule.java
+++ b/developers/org.eclipse.ease.helpgenerator/resources/org.eclipse.ease.helpgenerator.testproject/src/org/eclipse/ease/helpgenerator/testproject/valid/ValidModule.java
@@ -1,6 +1,7 @@
package org.eclipse.ease.helpgenerator.testproject.valid;
import java.io.IOException;
+import java.util.function.Function;
import org.eclipse.ease.modules.WrapToScript;
@@ -54,4 +55,28 @@
public void pleaseThrow() throws IOException {
throw new IOException("Bad thing happened");
}
+
+ /**
+ * Simple method that converts a long to string.
+ *
+ * @param myLongNumber
+ * A function to execute and whose return value will be returned
+ * @return result of the function
+ */
+ @WrapToScript
+ public String thisMethodHasNoParameters(long myLongNumber) {
+ return String.valueOf(myLongNumber);
+ }
+
+ /**
+ * Method that uses generic parameters. For a simpler case, use {@link #thisMethodHasNoParameters(long)}, just to link to it from this javadoc.
+ *
+ * @param myFunctionParameter
+ * A function to execute and whose return value will be returned
+ * @return result of the function
+ */
+ @WrapToScript
+ public String thisMethodHasGenericParameters(Function<Long, String> myFunctionParameter) {
+ return myFunctionParameter.apply(100L);
+ }
}
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..aa7f2c4 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(resolveClassName(parameter.substring(0, parameter.indexOf('[')), clazz)));
else
- link.append(findClass(parameter, clazz));
+ link.append(removeGenericsTags(resolveClassName(parameter, clazz)));
while (parameter.endsWith("]")) {
link.append(":A");
@@ -215,6 +215,21 @@
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) {
+ if (className == null) {
+ return null;
+ }
+ 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);