From ff8c5ce491a29af6bb6847ac7dab1a6681efa53f Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Thu, 17 Nov 2016 11:11:18 -0500 Subject: [PATCH] Factor staff out in javadoc package --- .../vscode/commons/jandex/JandexIndex.java | 2 +- .../ide/vscode/commons/jandex/Wrappers.java | 2 +- .../ide/vscode/commons/java/IJavaElement.java | 2 + .../vscode/commons/java/IJavadocProvider.java | 2 + .../java/parser/AbstractJavadocProvider.java | 15 ++--- .../vscode/commons/java/parser/Javadoc.java | 35 ----------- .../commons/{java => javadoc}/IJavadoc.java | 2 +- .../vscode/commons/javadoc/RawJavadoc.java | 31 ++++++++++ .../commons/maven/java/MavenJavaProject.java | 2 +- .../JavaProjectWithClasspathFile.java | 2 +- .../vscode/commons/maven/JavaIndexTest.java | 61 ++++++++++++++----- 11 files changed, 94 insertions(+), 62 deletions(-) delete mode 100644 vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/parser/Javadoc.java rename vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/{java => javadoc}/IJavadoc.java (66%) create mode 100644 vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/RawJavadoc.java diff --git a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/JandexIndex.java b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/JandexIndex.java index 198e281ae..4bd7f7a70 100644 --- a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/JandexIndex.java +++ b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/JandexIndex.java @@ -21,10 +21,10 @@ import org.jboss.jandex.Indexer; import org.jboss.jandex.JarIndexer; import org.springframework.ide.vscode.commons.java.IAnnotation; import org.springframework.ide.vscode.commons.java.IField; -import org.springframework.ide.vscode.commons.java.IJavadoc; import org.springframework.ide.vscode.commons.java.IJavadocProvider; import org.springframework.ide.vscode.commons.java.IMethod; import org.springframework.ide.vscode.commons.java.IType; +import org.springframework.ide.vscode.commons.javadoc.IJavadoc; import org.springframework.ide.vscode.commons.util.Log; import com.google.common.base.Supplier; diff --git a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/Wrappers.java b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/Wrappers.java index 89baaf7e0..e7128ed0e 100644 --- a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/Wrappers.java +++ b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/Wrappers.java @@ -20,13 +20,13 @@ import org.springframework.ide.vscode.commons.java.Flags; import org.springframework.ide.vscode.commons.java.IAnnotation; import org.springframework.ide.vscode.commons.java.IField; import org.springframework.ide.vscode.commons.java.IJavaType; -import org.springframework.ide.vscode.commons.java.IJavadoc; import org.springframework.ide.vscode.commons.java.IJavadocProvider; import org.springframework.ide.vscode.commons.java.IMemberValuePair; import org.springframework.ide.vscode.commons.java.IMethod; import org.springframework.ide.vscode.commons.java.IPrimitiveType; import org.springframework.ide.vscode.commons.java.IType; import org.springframework.ide.vscode.commons.java.IVoidType; +import org.springframework.ide.vscode.commons.javadoc.IJavadoc; public class Wrappers { diff --git a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavaElement.java b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavaElement.java index 5be8993a0..2738b7c18 100644 --- a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavaElement.java +++ b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavaElement.java @@ -1,5 +1,7 @@ package org.springframework.ide.vscode.commons.java; +import org.springframework.ide.vscode.commons.javadoc.IJavadoc; + public interface IJavaElement { String getElementName(); IJavadoc getJavaDoc(); diff --git a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavadocProvider.java b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavadocProvider.java index 3eb42027a..2766706bc 100644 --- a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavadocProvider.java +++ b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavadocProvider.java @@ -1,5 +1,7 @@ package org.springframework.ide.vscode.commons.java; +import org.springframework.ide.vscode.commons.javadoc.IJavadoc; + public interface IJavadocProvider { IJavadoc getJavadoc(IType type); diff --git a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/parser/AbstractJavadocProvider.java b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/parser/AbstractJavadocProvider.java index 749b06bc8..d9ca22434 100644 --- a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/parser/AbstractJavadocProvider.java +++ b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/parser/AbstractJavadocProvider.java @@ -6,10 +6,11 @@ import java.util.Optional; import org.springframework.ide.vscode.commons.java.IAnnotation; import org.springframework.ide.vscode.commons.java.IField; -import org.springframework.ide.vscode.commons.java.IJavadoc; import org.springframework.ide.vscode.commons.java.IJavadocProvider; import org.springframework.ide.vscode.commons.java.IMethod; import org.springframework.ide.vscode.commons.java.IType; +import org.springframework.ide.vscode.commons.javadoc.IJavadoc; +import org.springframework.ide.vscode.commons.javadoc.RawJavadoc; import org.springframework.ide.vscode.commons.util.Log; import com.github.javaparser.ast.CompilationUnit; @@ -25,10 +26,10 @@ public abstract class AbstractJavadocProvider implements IJavadocProvider { public IJavadoc getJavadoc(IType type) { if (type.isEnum()) { EnumDeclaration declaration = getEnumDeclaration(type); - return declaration.getJavaDoc() == null ? null : new Javadoc(declaration.getJavaDoc()); + return declaration.getJavaDoc() == null ? null : new RawJavadoc(declaration.getJavaDoc().toString()); } else { ClassOrInterfaceDeclaration declaration = getClassOrInterfaceDeclaration(type); - return declaration.getJavaDoc() == null ? null : new Javadoc(declaration.getJavaDoc()); + return declaration.getJavaDoc() == null ? null : new RawJavadoc(declaration.getJavaDoc().toString()); } } @@ -36,10 +37,10 @@ public abstract class AbstractJavadocProvider implements IJavadocProvider { IType declaringType = field.getDeclaringType(); if (declaringType.isEnum()) { FieldDeclaration declaration = createVisitorToFindField(field).visit(getEnumDeclaration(declaringType), null); - return declaration.getJavaDoc() == null ? null : new Javadoc(declaration.getJavaDoc()); + return declaration.getJavaDoc() == null ? null : new RawJavadoc(declaration.getJavaDoc().toString()); } else { FieldDeclaration declaration = createVisitorToFindField(field).visit(getClassOrInterfaceDeclaration(declaringType), null); - return declaration.getJavaDoc() == null ? null : new Javadoc(declaration.getJavaDoc()); + return declaration.getJavaDoc() == null ? null : new RawJavadoc(declaration.getJavaDoc().toString()); } } @@ -50,10 +51,10 @@ public abstract class AbstractJavadocProvider implements IJavadocProvider { IType declaringType = method.getDeclaringType(); if (declaringType.isEnum()) { MethodDeclaration declaration = createVisitorToFindMethod(method).visit(getEnumDeclaration(declaringType), null); - return declaration.getJavaDoc() == null ? null : new Javadoc(declaration.getJavaDoc()); + return declaration.getJavaDoc() == null ? null : new RawJavadoc(declaration.getJavaDoc().toString()); } else { MethodDeclaration declaration = createVisitorToFindMethod(method).visit(getClassOrInterfaceDeclaration(declaringType), null); - return declaration.getJavaDoc() == null ? null : new Javadoc(declaration.getJavaDoc()); + return declaration.getJavaDoc() == null ? null : new RawJavadoc(declaration.getJavaDoc().toString()); } } diff --git a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/parser/Javadoc.java b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/parser/Javadoc.java deleted file mode 100644 index cbc1315a4..000000000 --- a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/parser/Javadoc.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.springframework.ide.vscode.commons.java.parser; - -import org.springframework.ide.vscode.commons.java.IJavadoc; - -import com.github.javaparser.ast.comments.JavadocComment; - -final class Javadoc implements IJavadoc { - - private JavadocComment javadocComment; - - Javadoc(JavadocComment javadocComment) { - this.javadocComment = javadocComment; - } - - @Override - public String raw() { - return javadocComment.getContent(); - } - - @Override - public String plainText() { - throw new UnsupportedOperationException("Not yet implemnted"); - } - - @Override - public String html() { - throw new UnsupportedOperationException("Not yet implemnted"); - } - - @Override - public String markdown() { - throw new UnsupportedOperationException("Not yet implemnted"); - } - -} diff --git a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavadoc.java b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/IJavadoc.java similarity index 66% rename from vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavadoc.java rename to vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/IJavadoc.java index 51bb2d893..f50e5c4f1 100644 --- a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavadoc.java +++ b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/IJavadoc.java @@ -1,4 +1,4 @@ -package org.springframework.ide.vscode.commons.java; +package org.springframework.ide.vscode.commons.javadoc; public interface IJavadoc { diff --git a/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/RawJavadoc.java b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/RawJavadoc.java new file mode 100644 index 000000000..1cee09aaf --- /dev/null +++ b/vscode-extensions/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/RawJavadoc.java @@ -0,0 +1,31 @@ +package org.springframework.ide.vscode.commons.javadoc; + +public class RawJavadoc implements IJavadoc { + + private String rawContent; + + public RawJavadoc(String rawContent) { + this.rawContent = rawContent; + } + + @Override + public String raw() { + return rawContent; + } + + @Override + public String plainText() { + throw new UnsupportedOperationException("Not yet implemnted"); + } + + @Override + public String html() { + throw new UnsupportedOperationException("Not yet implemnted"); + } + + @Override + public String markdown() { + throw new UnsupportedOperationException("Not yet implemnted"); + } + +} diff --git a/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenJavaProject.java b/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenJavaProject.java index 6e951cc32..1acc33dd1 100644 --- a/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenJavaProject.java +++ b/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenJavaProject.java @@ -17,8 +17,8 @@ import java.nio.file.Paths; import org.apache.maven.project.MavenProject; import org.springframework.ide.vscode.commons.java.IClasspath; import org.springframework.ide.vscode.commons.java.IJavaProject; -import org.springframework.ide.vscode.commons.java.IJavadoc; import org.springframework.ide.vscode.commons.java.IType; +import org.springframework.ide.vscode.commons.javadoc.IJavadoc; import org.springframework.ide.vscode.commons.maven.MavenCore; /** diff --git a/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/classpathfile/JavaProjectWithClasspathFile.java b/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/classpathfile/JavaProjectWithClasspathFile.java index 3e24c8c1e..7df72c797 100644 --- a/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/classpathfile/JavaProjectWithClasspathFile.java +++ b/vscode-extensions/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/classpathfile/JavaProjectWithClasspathFile.java @@ -15,8 +15,8 @@ import java.nio.file.Paths; import org.springframework.ide.vscode.commons.java.IClasspath; import org.springframework.ide.vscode.commons.java.IJavaProject; -import org.springframework.ide.vscode.commons.java.IJavadoc; import org.springframework.ide.vscode.commons.java.IType; +import org.springframework.ide.vscode.commons.javadoc.IJavadoc; /** * Java project that contains classpath text file diff --git a/vscode-extensions/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/JavaIndexTest.java b/vscode-extensions/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/JavaIndexTest.java index 6bd927e9c..742b51fcb 100644 --- a/vscode-extensions/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/JavaIndexTest.java +++ b/vscode-extensions/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/JavaIndexTest.java @@ -94,16 +94,31 @@ public class JavaIndexTest { MavenJavaProject project = projectsCache.get("gs-rest-service-cors-boot-1.4.1-with-classpath-file"); IType type = project.findType("hello.Greeting"); - assertNotNull(type); - assertEquals("* Comment for Greeting class", type.getJavaDoc().raw().trim()); + assertNotNull(type); + String expected = String.join("\n", + "/**", + " * Comment for Greeting class ", + " */" + ); + assertEquals(expected, type.getJavaDoc().raw().trim()); IField field = type.getField("id"); assertNotNull(field); - assertEquals("* Comment for id field", field.getJavaDoc().raw().trim()); + expected = String.join("\n", + "/**", + " * Comment for id field", + " */" + ); + assertEquals(expected, field.getJavaDoc().raw().trim()); IMethod method = type.getMethod("getId", Stream.empty()); assertNotNull(method); - assertEquals("* Comment for getId()", method.getJavaDoc().raw().trim()); + expected = String.join("\n", + "/**", + " * Comment for getId()", + " */" + ); + assertEquals(expected, method.getJavaDoc().raw().trim()); } @Test @@ -111,15 +126,15 @@ public class JavaIndexTest { MavenJavaProject project = projectsCache.get("gs-rest-service-cors-boot-1.4.1-with-classpath-file"); IType type = project.findType("hello.Greeting$TestInnerClass"); assertNotNull(type); - assertEquals("* Comment for inner class", type.getJavaDoc().raw().trim()); + assertEquals("/**\n * Comment for inner class\n */", type.getJavaDoc().raw().trim()); IField field = type.getField("innerField"); assertNotNull(field); - assertEquals("* Comment for inner field", field.getJavaDoc().raw().trim()); + assertEquals("/**\n \t * Comment for inner field\n \t */", field.getJavaDoc().raw().trim()); IMethod method = type.getMethod("getInnerField", Stream.empty()); assertNotNull(method); - assertEquals("* Comment for method inside nested class", method.getJavaDoc().raw().trim()); + assertEquals("/**\n \t * Comment for method inside nested class\n \t */", method.getJavaDoc().raw().trim()); } @Test @@ -127,13 +142,21 @@ public class JavaIndexTest { MavenJavaProject project = projectsCache.get("gs-rest-service-cors-boot-1.4.1-with-classpath-file"); IType type = project.findType("org.springframework.boot.liquibase.LiquibaseServiceLocatorApplicationListener"); - assertNotNull(type); - String expectedPrefix = "* {@link ApplicationListener} that replaces the liquibase {@link ServiceLocator} with a"; - assertEquals(expectedPrefix, type.getJavaDoc().raw().trim().substring(0, expectedPrefix.length())); + assertNotNull(type); + String expected = String.join("\n", + "/**", + " * {@link ApplicationListener} that replaces the liquibase {@link ServiceLocator} with a" + ); + assertEquals(expected, type.getJavaDoc().raw().trim().substring(0, expected.length())); type = project.findType("org.springframework.boot.liquibase.LiquibaseServiceLocatorApplicationListener$LiquibasePresent"); - assertNotNull(type); - assertEquals("* Inner class to prevent class not found issues.", type.getJavaDoc().raw().trim()); + assertNotNull(type); + expected = String.join("\n", + "/**", + " * Inner class to prevent class not found issues.", + " */" + ); + assertEquals(expected, type.getJavaDoc().raw().trim()); } @Test @@ -145,12 +168,20 @@ public class JavaIndexTest { IField field = type.getField("BANNER_LOCATION_PROPERTY_VALUE"); assertNotNull(field); - assertEquals("* Default banner location.", field.getJavaDoc().raw().trim()); + String expected = String.join("\n", + "/**", + " * Default banner location.", + " */" + ); + assertEquals(expected, field.getJavaDoc().raw().trim()); IMethod method = type.getMethod("getListeners", Stream.empty()); assertNotNull(method); - String expectedPrefix = "* Returns read-only ordered Set of the {@link ApplicationListener}s that will be"; - assertEquals(expectedPrefix, method.getJavaDoc().raw().trim().substring(0, expectedPrefix.length())); + expected = String.join("\n", + "/**", + " * Returns read-only ordered Set of the {@link ApplicationListener}s that will be" + ); + assertEquals(expected, method.getJavaDoc().raw().trim().substring(0, expected.length())); } }