Corrections for type region in html and tests for no javadoc comment
This commit is contained in:
@@ -22,7 +22,8 @@ public class HtmlJavadocProvider implements IJavadocProvider {
|
||||
public IJavadoc getJavadoc(IType type) {
|
||||
try {
|
||||
JavadocContents javadocContents = findHtml(type);
|
||||
return new HtmlJavadoc(javadocContents.getTypeDoc(type));
|
||||
String html = javadocContents == null ? null : javadocContents.getTypeDoc(type);
|
||||
return html == null ? null : new HtmlJavadoc(html);
|
||||
} catch (Exception e) {
|
||||
Log.log(e);
|
||||
return null;
|
||||
@@ -34,7 +35,8 @@ public class HtmlJavadocProvider implements IJavadocProvider {
|
||||
try {
|
||||
IType declaringType = field.getDeclaringType();
|
||||
JavadocContents javadocContents = findHtml(declaringType);
|
||||
return new HtmlJavadoc(javadocContents.getFieldDoc(field));
|
||||
String html = javadocContents == null ? null : javadocContents.getFieldDoc(field);
|
||||
return html == null ? null : new HtmlJavadoc(html);
|
||||
} catch (Exception e) {
|
||||
Log.log(e);
|
||||
return null;
|
||||
@@ -46,7 +48,8 @@ public class HtmlJavadocProvider implements IJavadocProvider {
|
||||
try {
|
||||
IType declaringType = method.getDeclaringType();
|
||||
JavadocContents javadocContents = findHtml(declaringType);
|
||||
return new HtmlJavadoc(javadocContents.getMethodDoc(method));
|
||||
String html = javadocContents == null ? null : javadocContents.getMethodDoc(method);
|
||||
return html == null ? null : new HtmlJavadoc(html);
|
||||
} catch (Exception e) {
|
||||
Log.log(e);
|
||||
return null;
|
||||
|
||||
@@ -207,7 +207,7 @@ public class JavadocContents {
|
||||
|
||||
int javadocStart = indexOfEndLink + JavadocConstants.ANCHOR_SUFFIX_LENGTH;
|
||||
int javadocEnd = indexOfNextElement == -1 ? indexOfBottom : Math.min(indexOfNextElement, indexOfBottom);
|
||||
range = sanitizeRange(new int[]{javadocStart, javadocEnd});
|
||||
range = sanitizeRange(new int[]{javadocStart, javadocEnd}, "ul", "li");
|
||||
} else {
|
||||
// the anchor has no suffix
|
||||
range = UNKNOWN_FORMAT;
|
||||
@@ -240,7 +240,7 @@ public class JavadocContents {
|
||||
// we take the end of class data
|
||||
final int indexOfStartOfClassData = CharOperation.indexOf(JavadocConstants.START_OF_CLASS_DATA, this.content, false);
|
||||
this.indexOfEndOfClassData = CharOperation.indexOf(JavadocConstants.END_OF_CLASS_DATA, this.content, false, lastIndex);
|
||||
int[] classDataRange = sanitizeRange(new int[] { indexOfStartOfClassData + JavadocConstants.START_OF_CLASS_DATA.length, indexOfEndOfClassData});
|
||||
int[] classDataRange = sanitizeRange(new int[] { indexOfStartOfClassData + JavadocConstants.START_OF_CLASS_DATA.length, indexOfEndOfClassData}, "ul", "li", "div");
|
||||
this.indexOfEndOfClassData = classDataRange[1];
|
||||
|
||||
// try to find the field detail end
|
||||
@@ -257,14 +257,14 @@ public class JavadocContents {
|
||||
this.indexOfAllMethodsBottom = this.indexOfEndOfClassData;
|
||||
|
||||
// Get rid of possible <ul><li> tag wrappers
|
||||
int[] fieldsRange = sanitizeRange(new int[] {indexOfFieldDetails + JavadocConstants.FIELD_DETAIL.length, indexOfFieldsBottom});
|
||||
int[] fieldsRange = sanitizeRange(new int[] {indexOfFieldDetails + JavadocConstants.FIELD_DETAIL.length, indexOfFieldsBottom}, "ul", "li", "div");
|
||||
indexOfFieldDetails = fieldsRange[0];
|
||||
indexOfFieldsBottom = fieldsRange[1];
|
||||
|
||||
int[] methodsRange = sanitizeRange(new int[] {
|
||||
indexOfAllMethodsTop + (indexOfAllMethodsTop == indexOfConstructorDetails
|
||||
? JavadocConstants.CONSTRUCTOR_DETAIL.length : JavadocConstants.METHOD_DETAIL.length),
|
||||
indexOfAllMethodsBottom });
|
||||
indexOfAllMethodsBottom }, "ul", "li", "div");
|
||||
indexOfAllMethodsTop = methodsRange[0];
|
||||
indexOfAllMethodsBottom = methodsRange[1];
|
||||
|
||||
@@ -565,12 +565,16 @@ public class JavadocContents {
|
||||
}
|
||||
if (afterHierarchy != indexOfNextSummary) {
|
||||
start = afterHierarchy;
|
||||
|
||||
int indexOfClassDescriptionEnd = trimBadEnding("<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n", indexOfNextSummary);
|
||||
indexOfClassDescriptionEnd = trimBadEnding("</li>\n</ul>\n</div>\n", indexOfClassDescriptionEnd);
|
||||
this.typeDocRange = new int[]{start, indexOfClassDescriptionEnd};
|
||||
this.typeDocRange = sanitizeRange(typeDocRange, "ul", "li");
|
||||
} else {
|
||||
// No room left for class comment;
|
||||
this.typeDocRange = null;
|
||||
}
|
||||
|
||||
int indexOfClassDescriptionEnd = trimBadEnding("<div class=\"summary\">\n<ul class=\"blockList\">\n<li class=\"blockList\">\n", indexOfNextSummary);
|
||||
indexOfClassDescriptionEnd = trimBadEnding("</li>\n</ul>\n</div>\n", indexOfClassDescriptionEnd);
|
||||
this.typeDocRange = new int[]{start, indexOfClassDescriptionEnd};
|
||||
this.typeDocRange = sanitizeRange(typeDocRange);
|
||||
|
||||
}
|
||||
|
||||
@@ -604,13 +608,16 @@ public class JavadocContents {
|
||||
}
|
||||
}
|
||||
|
||||
private int[] sanitizeRange(int[] range) {
|
||||
private int[] sanitizeRange(int[] range, CharSequence... removeWrapperTags) {
|
||||
boolean changed = false;
|
||||
do {
|
||||
int[] newRange = trimRange(range);
|
||||
newRange = trimTag(newRange, "div");
|
||||
newRange = trimTag(newRange, "ul");
|
||||
newRange = trimTag(newRange, "li");
|
||||
for (CharSequence tag : removeWrapperTags) {
|
||||
newRange = trimTag(newRange, tag);
|
||||
}
|
||||
// newRange = trimTag(newRange, "div");
|
||||
// newRange = trimTag(newRange, "ul");
|
||||
// newRange = trimTag(newRange, "li");
|
||||
changed = !Arrays.equals(newRange, range);
|
||||
range = newRange;
|
||||
} while (changed);
|
||||
|
||||
@@ -389,8 +389,8 @@ public class JavaIndexTest {
|
||||
IType type = project.findType("hello.Greeting");
|
||||
|
||||
assertNotNull(type);
|
||||
String expected = "Comment for Greeting class";
|
||||
assertEquals(expected, type.getJavaDoc().html().substring(0, expected.length()));
|
||||
String expected = "<div class=\"block\">Comment for Greeting class</div>";
|
||||
assertEquals(expected, type.getJavaDoc().html());
|
||||
|
||||
IField field = type.getField("id");
|
||||
assertNotNull(field);
|
||||
@@ -420,7 +420,7 @@ public class JavaIndexTest {
|
||||
|
||||
IType type = project.findType("hello.Greeting$TestInnerClass");
|
||||
assertNotNull(type);
|
||||
assertEquals("Comment for inner class", type.getJavaDoc().html());
|
||||
assertEquals("<div class=\"block\">Comment for inner class</div>", type.getJavaDoc().html());
|
||||
|
||||
IField field = type.getField("innerField");
|
||||
assertNotNull(field);
|
||||
@@ -450,7 +450,7 @@ public class JavaIndexTest {
|
||||
|
||||
IType type = project.findType("hello.Greeting$TestInnerClass$TestInnerClassLevel2");
|
||||
assertNotNull(type);
|
||||
assertEquals("Comment for level 2 nested class", type.getJavaDoc().html());
|
||||
assertEquals("<div class=\"block\">Comment for level 2 nested class</div>", type.getJavaDoc().html());
|
||||
|
||||
IField field = type.getField("innerLevel2Field");
|
||||
assertNotNull(field);
|
||||
@@ -470,4 +470,69 @@ public class JavaIndexTest {
|
||||
);
|
||||
assertEquals(expected, method.getJavaDoc().html());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void html_testNoJavadocClass() throws Exception {
|
||||
MavenProjectClasspath.providerType = JavadocProviderTypes.HTML;
|
||||
Path projectPath = projectsCache.get("gs-rest-service-cors-boot-1.4.1-with-classpath-file");
|
||||
MavenCore.generateJavadocFolderForMavenProject(projectPath);
|
||||
MavenJavaProject project = createMavenProject(projectPath);
|
||||
|
||||
IType type = project.findType("hello.GreetingController");
|
||||
assertNotNull(type);
|
||||
assertNull(type.getJavaDoc());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void html_testEmptyJavadocClass() throws Exception {
|
||||
MavenProjectClasspath.providerType = JavadocProviderTypes.HTML;
|
||||
Path projectPath = projectsCache.get("gs-rest-service-cors-boot-1.4.1-with-classpath-file");
|
||||
MavenCore.generateJavadocFolderForMavenProject(projectPath);
|
||||
MavenJavaProject project = createMavenProject(projectPath);
|
||||
|
||||
IType type = project.findType("hello.Application");
|
||||
assertNotNull(type);
|
||||
assertNull(type.getJavaDoc());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void html_testNoJavadocMethod() throws Exception {
|
||||
MavenProjectClasspath.providerType = JavadocProviderTypes.HTML;
|
||||
Path projectPath = projectsCache.get("gs-rest-service-cors-boot-1.4.1-with-classpath-file");
|
||||
MavenCore.generateJavadocFolderForMavenProject(projectPath);
|
||||
MavenJavaProject project = createMavenProject(projectPath);
|
||||
|
||||
IType type = project.findType("hello.Application");
|
||||
assertNotNull(type);
|
||||
IMethod method = type.getMethod("corsConfigurer", Stream.empty());
|
||||
assertNotNull(method);
|
||||
String expected = String.join("\n",
|
||||
"<h4>corsConfigurer</h4>",
|
||||
"<pre>@Bean",
|
||||
"public org.springframework.web.servlet.config.annotation.WebMvcConfigurer corsConfigurer()</pre>"
|
||||
);
|
||||
assertEquals(expected, method.getJavaDoc().html());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void html_testNoJavadocField() throws Exception {
|
||||
MavenProjectClasspath.providerType = JavadocProviderTypes.HTML;
|
||||
Path projectPath = projectsCache.get("gs-rest-service-cors-boot-1.4.1-with-classpath-file");
|
||||
MavenCore.generateJavadocFolderForMavenProject(projectPath);
|
||||
MavenJavaProject project = createMavenProject(projectPath);
|
||||
|
||||
IType type = project.findType("hello.GreetingController");
|
||||
assertNotNull(type);
|
||||
IField field = type.getField("template");
|
||||
assertNotNull(field);
|
||||
String expected = String.join("\n",
|
||||
"<h4>template</h4>",
|
||||
"<pre>public static final <a href=\"http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true\" title=\"class or interface in java.lang\">String</a> template</pre>",
|
||||
"<dl>",
|
||||
"<dt><span class=\"seeLabel\">See Also:</span></dt>",
|
||||
"<dd><a href=\"../constant-values.html#hello.GreetingController.template\">Constant Field Values</a></dd>",
|
||||
"</dl>"
|
||||
);
|
||||
assertEquals(expected, field.getJavaDoc().html());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
|
||||
|
||||
@SpringBootApplication
|
||||
/**
|
||||
*/
|
||||
public class Application {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RestController
|
||||
public class GreetingController {
|
||||
|
||||
private static final String template = "Hello, %s!";
|
||||
public static final String template = "Hello, %s!";
|
||||
private final AtomicLong counter = new AtomicLong();
|
||||
|
||||
@CrossOrigin(origins = "http://localhost:9000")
|
||||
|
||||
Reference in New Issue
Block a user