JavaDocInfoGenerator creation through factory (to be overridden by Upsource)

This commit is contained in:
pasynkov
2016-01-05 16:34:52 +01:00
parent d9588d3262
commit 6257912187
6 changed files with 46 additions and 8 deletions
@@ -1265,7 +1265,7 @@ public class JavaDocInfoGenerator {
}
}
private void generatePrologue(StringBuilder buffer) {
protected void generatePrologue(StringBuilder buffer) {
URL baseUrl = getBaseUrl();
buffer.append("<html><head>");
if (baseUrl != null) {
@@ -1295,7 +1295,7 @@ public class JavaDocInfoGenerator {
}
@SuppressWarnings({"HardCodedStringLiteral"})
private static void generateEpilogue(StringBuilder buffer) {
protected void generateEpilogue(StringBuilder buffer) {
while (true) {
if (buffer.length() < BR_TAG.length()) break;
char c = buffer.charAt(buffer.length() - 1);
@@ -0,0 +1,36 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.codeInsight.javadoc;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
public class JavaDocInfoGeneratorFactory {
public static JavaDocInfoGeneratorFactory getInstance() {
return ServiceManager.getService(JavaDocInfoGeneratorFactory.class);
}
protected JavaDocInfoGenerator createImpl(Project project, PsiElement element) {
return new JavaDocInfoGenerator(project, element);
}
@NotNull
public static JavaDocInfoGenerator create(Project project, PsiElement element) {
return getInstance().createImpl(project, element);
}
}
@@ -17,6 +17,7 @@ package com.intellij.lang.java;
import com.intellij.codeInsight.javadoc.JavaDocExternalFilter;
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator;
import com.intellij.codeInsight.javadoc.JavaDocInfoGeneratorFactory;
import com.intellij.lang.documentation.AbstractDocumentationProvider;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.Nullable;
@@ -28,7 +29,7 @@ public class FileDocumentationProvider extends AbstractDocumentationProvider {
@Override
public String generateDoc(PsiElement element, @Nullable PsiElement originalElement) {
final JavaDocInfoGenerator javaDocInfoGenerator = new JavaDocInfoGenerator(element.getProject(), element);
final JavaDocInfoGenerator javaDocInfoGenerator = JavaDocInfoGeneratorFactory.create(element.getProject(), element);
return JavaDocExternalFilter.filterInternalDocInfo(javaDocInfoGenerator.generateFileInfo());
}
}
@@ -21,6 +21,7 @@ import com.intellij.codeInsight.documentation.PlatformDocumentationUtil;
import com.intellij.codeInsight.editorActions.CodeDocumentationUtil;
import com.intellij.codeInsight.javadoc.JavaDocExternalFilter;
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator;
import com.intellij.codeInsight.javadoc.JavaDocInfoGeneratorFactory;
import com.intellij.codeInsight.javadoc.JavaDocUtil;
import com.intellij.lang.CodeDocumentationAwareCommenter;
import com.intellij.lang.LangBundle;
@@ -548,7 +549,7 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement
@Nullable
public static String generateExternalJavadoc(final PsiElement element) {
final JavaDocInfoGenerator javaDocInfoGenerator = new JavaDocInfoGenerator(element.getProject(), element);
final JavaDocInfoGenerator javaDocInfoGenerator = JavaDocInfoGeneratorFactory.create(element.getProject(), element);
final List<String> docURLs = getExternalJavaDocUrl(element);
return JavaDocExternalFilter.filterInternalDocInfo(javaDocInfoGenerator.generateDocInfo(docURLs));
}
@@ -239,7 +239,7 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase {
}
private void verifyJavaDoc(final PsiElement field, List<String> docUrls) throws IOException {
String docInfo = new JavaDocInfoGenerator(getProject(), field).generateDocInfo(docUrls);
String docInfo = JavaDocInfoGeneratorFactory.create(getProject(), field).generateDocInfo(docUrls);
assertNotNull(docInfo);
assertEquals(exampleHtmlFileText(getTestName(true)), replaceEnvironmentDependentContent(docInfo));
}
@@ -248,8 +248,7 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase {
final String path = JavaTestUtil.getJavaTestDataPath() + "/codeInsight/javadocIG/";
final String packageInfo = path + getTestName(true);
PsiTestUtil.createTestProjectStructure(myProject, myModule, path, myFilesToDelete);
final String info =
new JavaDocInfoGenerator(getProject(), JavaPsiFacade.getInstance(getProject()).findPackage(getTestName(true))).generateDocInfo(null);
final String info = JavaDocInfoGeneratorFactory.create(getProject(), JavaPsiFacade.getInstance(getProject()).findPackage(getTestName(true))).generateDocInfo(null);
String htmlText = FileUtil.loadFile(new File(packageInfo + File.separator + "packageInfo.html"));
assertNotNull(info);
assertEquals(StringUtil.convertLineSeparators(htmlText.trim()), replaceEnvironmentDependentContent(info));
@@ -294,7 +293,7 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase {
private void verifyJavadocFor(String className) throws IOException {
PsiClass psiClass = JavaPsiFacade.getInstance(myProject).findClass(className, GlobalSearchScope.allScope(myProject));
assertNotNull(psiClass);
String doc = new JavaDocInfoGenerator(myProject, psiClass).generateDocInfo(null);
String doc = JavaDocInfoGeneratorFactory.create(myProject, psiClass).generateDocInfo(null);
assertNotNull(doc);
PsiDirectory dir = (PsiDirectory)psiClass.getParent().getParent();
PsiFile htmlFile = dir.findFile(psiClass.getName() + ".html");
+1
View File
@@ -553,6 +553,7 @@
<projectService serviceImplementation="com.intellij.javadoc.JavadocGenerationManager"/>
<projectService serviceImplementation="com.intellij.codeInsight.JavaProjectCodeInsightSettings"/>
<applicationService serviceImplementation="com.intellij.codeInsight.javadoc.JavaDocInfoGeneratorFactory"/>
<highlightVisitor implementation="com.intellij.codeInsight.daemon.impl.analysis.HighlightVisitorImpl"/>