aboutsummaryrefslogtreecommitdiffstats
path: root/ajdoc/src/main/java
diff options
context:
space:
mode:
authorAlexander Kriegisch <Alexander@Kriegisch.name>2021-03-21 21:45:34 +0700
committerAlexander Kriegisch <Alexander@Kriegisch.name>2021-03-22 01:02:15 +0700
commitab85eea3a337662b2c875b96ad5eb057995dbbe2 (patch)
tree87f2f63d7cf420426b5c6cef0a5104a1a9b00716 /ajdoc/src/main/java
parent354212214df5afff0bbd1534ffbea1295201796b (diff)
downloadaspectj-ab85eea3a337662b2c875b96ad5eb057995dbbe2.tar.gz
aspectj-ab85eea3a337662b2c875b96ad5eb057995dbbe2.zip
Add Java 16 Linux matcher variant to HtmlDecorator
The Java 16 Javadoc generator has changed the HTML structure once again even compared to Java 15. I adjusted the matching in HtmlDecorator and also fixed CoverageTestCase. Most methods there I just made to work quickly, but method 'testInnerAspect()' I actually refactored. Some other methods could (probably should) be restructured in a similar fashion, but for now I just wanted to understand what the test does and see how much work it would be to refactor it. But finally, I just want to get the GitHub CI build running on Java 16. TODO: I did not check if the decorated HTML actually looks OK and am unsure if the tests cover that sufficiently, I never reviewed the tests. It would also be better to do regex matches instead of looking for variants of fixed strings or maybe even to operate on a DOM. But I am not in a mood to refactor that tonight. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Diffstat (limited to 'ajdoc/src/main/java')
-rw-r--r--ajdoc/src/main/java/org/aspectj/tools/ajdoc/HtmlDecorator.java61
1 files changed, 41 insertions, 20 deletions
diff --git a/ajdoc/src/main/java/org/aspectj/tools/ajdoc/HtmlDecorator.java b/ajdoc/src/main/java/org/aspectj/tools/ajdoc/HtmlDecorator.java
index 17dcaab9c..56565e05a 100644
--- a/ajdoc/src/main/java/org/aspectj/tools/ajdoc/HtmlDecorator.java
+++ b/ajdoc/src/main/java/org/aspectj/tools/ajdoc/HtmlDecorator.java
@@ -39,9 +39,24 @@ import org.aspectj.util.TypeSafeEnum;
*/
class HtmlDecorator {
- public static final String TYPE_NAME_LABEL = LangUtil.is15VMOrGreater()
- ? "type-name-label"
- : (LangUtil.is1dot8VMOrGreater() ? "typeNameLabel" : "strong");
+ public static final String TYPE_NAME_LABEL;
+ public static final String CLOSING_SPAN;
+
+ static {
+ if (LangUtil.is16VMOrGreater())
+ TYPE_NAME_LABEL = "element-name type-name-label";
+ else if (LangUtil.is15VMOrGreater())
+ TYPE_NAME_LABEL = "type-name-label";
+ else if (LangUtil.is1dot8VMOrGreater())
+ TYPE_NAME_LABEL = "typeNameLabel";
+ else
+ TYPE_NAME_LABEL = "strong";
+
+ if (LangUtil.is16VMOrGreater())
+ CLOSING_SPAN = "</span>";
+ else
+ CLOSING_SPAN = "";
+ }
private static final String POINTCUT_DETAIL = "Pointcut Detail";
private static final String ADVICE_DETAIL = "Advice Detail";
@@ -223,33 +238,35 @@ class HtmlDecorator {
}
boolean br = true;
- int classStartIndex = fileContents.toString().indexOf("<BR>\nClass ");
+ contents = fileContents.toString();
+ int classStartIndex = contents.indexOf("<BR>\nClass ");
if (classStartIndex == -1) {
- classStartIndex = fileContents.toString().indexOf("<H2>\nClass ");
+ classStartIndex = contents.indexOf("<H2>\nClass ");
br = false;
}
if (classStartIndex == -1) {
// Java8 looks more like this:
// <h2 title="Class A" class="title">Class A</h2>
- classStartIndex = fileContents.toString().indexOf("<h2 title=\"Class ");
- int classEndIndex = fileContents.toString().indexOf("</h2>", classStartIndex);
+ classStartIndex = contents.indexOf("<h2 title=\"Class ");
+ int classEndIndex = contents.indexOf("</h2>", classStartIndex);
if (classStartIndex == -1) {
// Java 13 - replaced h2 with h1 here
- classStartIndex = fileContents.toString().indexOf("<h1 title=\"Class ");
- classEndIndex = fileContents.toString().indexOf("</h1>", classStartIndex);
+ classStartIndex = contents.indexOf("<h1 title=\"Class ");
+ classEndIndex = contents.indexOf("</h1>", classStartIndex);
}
if (classEndIndex != -1) {
// Convert it to "<h2 title="Aspect A" class="title">Aspect A</h2>"
- String classLine = fileContents.toString().substring(classStartIndex, classEndIndex);
+ String classLine = contents.substring(classStartIndex, classEndIndex);
String aspectLine = classLine.replaceAll("Class ","Aspect ");
fileContents.delete(classStartIndex, classEndIndex);
fileContents.insert(classStartIndex, aspectLine);
}
}
else if (classStartIndex != -1) {
- int classEndIndex = fileContents.toString().indexOf("</H2>", classStartIndex);
- if (classStartIndex != -1 && classEndIndex != -1) {
- String classLine = fileContents.toString().substring(classStartIndex, classEndIndex);
+ contents = fileContents.toString();
+ int classEndIndex = contents.indexOf("</H2>", classStartIndex);
+ if (classEndIndex != -1) {
+ String classLine = contents.substring(classStartIndex, classEndIndex);
String aspectLine = "";
if (br) {
aspectLine += "<BR>\n" + "Aspect " + classLine.substring(11, classLine.length());
@@ -260,23 +277,27 @@ class HtmlDecorator {
fileContents.insert(classStartIndex, aspectLine);
}
}
- int secondClassStartIndex = fileContents.toString().indexOf("class <B>");
+ contents = fileContents.toString();
+ int secondClassStartIndex = contents.indexOf("class <B>");
if (secondClassStartIndex != -1) {
String name = decl.toSignatureString();
- int classEndIndex = fileContents.toString().indexOf(name + "</B><DT>");
- if (secondClassStartIndex != -1 && classEndIndex != -1) {
- StringBuffer sb = new StringBuffer(fileContents.toString().substring(secondClassStartIndex, classEndIndex));
+ int classEndIndex = contents.indexOf(name + "</B><DT>");
+ if (classEndIndex != -1) {
+ StringBuffer sb = new StringBuffer(contents.substring(secondClassStartIndex, classEndIndex));
sb.replace(0, 5, "aspect");
fileContents.delete(secondClassStartIndex, classEndIndex);
fileContents.insert(secondClassStartIndex, sb.toString());
}
}
else {
+ contents = fileContents.toString();
+ // Java16: <span class="modifiers">static class </span><span class="type-name-label">ClassA.InnerAspect</span>
// Java15: <pre>static class <span class="type-name-label">ClassA.InnerAspect</span>
// Java8: <pre>static class <span class="typeNameLabel">ClassA.InnerAspect</span>
// Java7 (464604): <pre>public class <span class="strong">Azpect</span>
- classStartIndex = fileContents.toString().indexOf("class <span class=\"" + TYPE_NAME_LABEL + "\">");
- int classEndIndex = fileContents.toString().indexOf("</span>", classStartIndex);
+ String startString = "class " + CLOSING_SPAN + "<span class=\"";
+ classStartIndex = contents.indexOf(startString + TYPE_NAME_LABEL + "\">");
+ int classEndIndex = contents.indexOf("</span>", classStartIndex + startString.length());
// This is where after Java version upgrades usually tests fail or the first time.
// Logging context information helps fixing the issue quickly.
@@ -291,7 +312,7 @@ class HtmlDecorator {
if (classEndIndex != -1) {
// Convert it to "aspect <span class="TYPE_NAME_LABEL">ClassA.InnerAspect</span>"
- String aspectLine = "aspect" + fileContents.substring(classStartIndex + 5, classEndIndex);
+ String aspectLine = "aspect" + contents.substring(classStartIndex + 5, classEndIndex);
fileContents.delete(classStartIndex, classEndIndex);
fileContents.insert(classStartIndex, aspectLine);
}