Factor common logic for javadoc in javadoc package

This commit is contained in:
BoykoAlex
2016-11-17 14:34:07 -05:00
parent ff8c5ce491
commit f2abf2d21d
6 changed files with 72 additions and 72 deletions

View File

@@ -1,31 +0,0 @@
package org.springframework.ide.vscode.commons.java.parser;
import java.net.MalformedURLException;
import java.net.URL;
import org.springframework.ide.vscode.commons.java.IType;
import com.google.common.base.Supplier;
public class JarSourcesJavadocProvider extends AbstractJavadocProvider {
private Supplier<URL> sourcesJarUrl;
public JarSourcesJavadocProvider(Supplier<URL> sourcesJarUrl) {
super();
this.sourcesJarUrl = sourcesJarUrl;
}
@Override
protected URL createSourceUrl(IType type) throws MalformedURLException {
StringBuilder sourceUrlStr = new StringBuilder();
sourceUrlStr.append("jar:");
sourceUrlStr.append(sourcesJarUrl.get());
sourceUrlStr.append("!");
sourceUrlStr.append('/');
sourceUrlStr.append(type.getFullyQualifiedName().replaceAll("\\.", "/"));
sourceUrlStr.append(".java");
return new URL(sourceUrlStr.toString());
}
}

View File

@@ -1,6 +1,5 @@
package org.springframework.ide.vscode.commons.java.parser;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Optional;
@@ -11,6 +10,7 @@ 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.javadoc.SourceUrlProvider;
import org.springframework.ide.vscode.commons.util.Log;
import com.github.javaparser.ast.CompilationUnit;
@@ -21,7 +21,13 @@ import com.github.javaparser.ast.body.MethodDeclaration;
import com.github.javaparser.ast.body.VariableDeclarator;
import com.github.javaparser.ast.visitor.GenericVisitorAdapter;
public abstract class AbstractJavadocProvider implements IJavadocProvider {
public class JavadocProvider implements IJavadocProvider {
private SourceUrlProvider sourceUrlProvider;
public JavadocProvider(SourceUrlProvider sourceUrlProvider) {
this.sourceUrlProvider = sourceUrlProvider;
}
public IJavadoc getJavadoc(IType type) {
if (type.isEnum()) {
@@ -64,9 +70,9 @@ public abstract class AbstractJavadocProvider implements IJavadocProvider {
private CompilationUnit getCompilationUnit(IType type) {
try {
URL sourceUrl = createSourceUrl(type);
URL sourceUrl = sourceUrlProvider.sourceUrl(type);
return CompilationUnitIndex.DEFAULT.getCompilationUnit(sourceUrl);
} catch (MalformedURLException e) {
} catch (Exception e) {
Log.log("Invalid source URL for type " + type, e);
return null;
}
@@ -156,6 +162,4 @@ public abstract class AbstractJavadocProvider implements IJavadocProvider {
};
}
abstract protected URL createSourceUrl(IType type) throws MalformedURLException;
}

View File

@@ -1,23 +0,0 @@
package org.springframework.ide.vscode.commons.java.parser;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import org.springframework.ide.vscode.commons.java.IType;
public class SourceFolderJavadocProvider extends AbstractJavadocProvider {
private File sourceFolder;
public SourceFolderJavadocProvider(File sourceFolder) {
super();
this.sourceFolder = sourceFolder;
}
@Override
protected URL createSourceUrl(IType type) throws MalformedURLException {
return new File(sourceFolder, type.getFullyQualifiedName().replaceAll("\\.", "/") + ".java").toURI().toURL();
}
}

View File

@@ -0,0 +1,12 @@
package org.springframework.ide.vscode.commons.javadoc;
import java.net.URL;
import org.springframework.ide.vscode.commons.java.IType;
@FunctionalInterface
public interface SourceUrlProvider {
URL sourceUrl(IType type) throws Exception;
}

View File

@@ -0,0 +1,29 @@
package org.springframework.ide.vscode.commons.javadoc;
import java.net.URL;
import java.nio.file.Paths;
import org.springframework.ide.vscode.commons.java.IType;
@FunctionalInterface
public interface SourceUrlProviderFromSourceContainer {
public static final SourceUrlProviderFromSourceContainer JAR_SOURCE_URL_PROVIDER = (sourceContainerUrl, type) -> {
StringBuilder sourceUrlStr = new StringBuilder();
sourceUrlStr.append("jar:");
sourceUrlStr.append(sourceContainerUrl);
sourceUrlStr.append("!");
sourceUrlStr.append('/');
sourceUrlStr.append(type.getFullyQualifiedName().replaceAll("\\.", "/"));
sourceUrlStr.append(".java");
return new URL(sourceUrlStr.toString());
};
public static final SourceUrlProviderFromSourceContainer SOURCE_FOLDER_URL_SUPPLIER = (sourceContainerUrl, type) -> {
return Paths.get(sourceContainerUrl.toURI()).resolve(type.getFullyQualifiedName().replaceAll("\\.", "/") + ".java").toUri().toURL();
};
URL sourceUrl(URL sourceContainerUrl, IType type) throws Exception;
}