diff --git a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocCodeStyleImpl.java b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocCodeStyleImpl.java new file mode 100644 index 000000000000..16cf0b42e2fb --- /dev/null +++ b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocCodeStyleImpl.java @@ -0,0 +1,25 @@ +package com.intellij.codeInsight.javadoc; + +import com.intellij.openapi.project.Project; +import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.codeStyle.CodeStyleSettingsManager; + +public class JavaDocCodeStyleImpl extends JavaDocCodeStyle { + private final Project myProject; + + public JavaDocCodeStyleImpl(Project project) { + myProject = project; + } + + @Override + public boolean spaceBeforeComma() { + CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(myProject); + return styleSettings.SPACE_BEFORE_COMMA; + } + + @Override + public boolean spaceAfterComma() { + CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(myProject); + return styleSettings.SPACE_AFTER_COMMA; + } +} diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocCodeStyle.java b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocCodeStyle.java new file mode 100644 index 000000000000..b7124a9efb79 --- /dev/null +++ b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocCodeStyle.java @@ -0,0 +1,13 @@ +package com.intellij.codeInsight.javadoc; + +import com.intellij.openapi.components.ServiceManager; +import com.intellij.openapi.project.Project; + +public abstract class JavaDocCodeStyle { + public static JavaDocCodeStyle getInstance(Project project) { + return ServiceManager.getService(project, JavaDocCodeStyle.class); + } + + public abstract boolean spaceBeforeComma(); + public abstract boolean spaceAfterComma(); +} diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java index 12a9ce0b0ad0..3eec2ce2c00f 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java @@ -24,6 +24,7 @@ import com.intellij.lang.LangBundle; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.JDOMUtil; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -37,14 +38,16 @@ import com.intellij.psi.javadoc.PsiInlineDocTag; import com.intellij.psi.util.PsiFormatUtil; import com.intellij.psi.util.PsiFormatUtilBase; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.psi.xml.XmlFile; -import com.intellij.psi.xml.XmlTag; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.JDOMException; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; @@ -518,21 +521,21 @@ public class JavaDocInfoGenerator { } private void generatePackageHtmlJavaDoc(final StringBuilder buffer, final PsiFile packageHtmlFile) { - String htmlText; - XmlFile packageXmlFile = (XmlFile) packageHtmlFile; - final XmlTag rootTag = packageXmlFile.getDocument().getRootTag(); - if (rootTag != null) { - final XmlTag subTag = rootTag.findFirstSubTag("body"); - if (subTag != null) { - htmlText = subTag.getValue().getText(); - } - else { - htmlText = packageHtmlFile.getText(); + String htmlText = packageHtmlFile.getText(); + + try { + final Document document = JDOMUtil.loadDocument(new ByteArrayInputStream(htmlText.getBytes())); + final Element rootTag = document.getRootElement(); + if (rootTag != null) { + final Element subTag = rootTag.getChild("body"); + if (subTag != null) { + htmlText = subTag.getValue(); + } } } - else { - htmlText = packageHtmlFile.getText(); - } + catch (JDOMException ignore) {} + catch (IOException ignore) {} + htmlText = StringUtil.replace(htmlText, "*/", "*/"); final String fileText = "/** " + htmlText + " */"; diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocUtil.java b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocUtil.java index f5de67ebd889..242071766e6e 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocUtil.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocUtil.java @@ -19,8 +19,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; -import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.TypeConversionUtil; import com.intellij.util.IncorrectOperationException; @@ -212,9 +210,8 @@ public class JavaDocUtil { buffer.append(name); buffer.append("("); PsiParameter[] parms = method.getParameterList().getParameters(); - CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(project); - boolean spaceBeforeComma = styleSettings.SPACE_BEFORE_COMMA; - boolean spaceAfterComma = styleSettings.SPACE_AFTER_COMMA; + boolean spaceBeforeComma = JavaDocCodeStyle.getInstance(project).spaceBeforeComma(); + boolean spaceAfterComma = JavaDocCodeStyle.getInstance(project).spaceAfterComma(); for (int i = 0; i < parms.length; i++) { PsiParameter parm = parms[i]; String typeText = TypeConversionUtil.erasure(parm.getType()).getCanonicalText(); @@ -319,9 +316,8 @@ public class JavaDocUtil { if (!StringUtil.endsWithChar(memberText, ')')) return memberText; String parms = memberText.substring(parenthIndex + 1, memberText.length() - 1); StringBuffer buffer = new StringBuffer(); - CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(project); - boolean spaceBeforeComma = styleSettings.SPACE_BEFORE_COMMA; - boolean spaceAfterComma = styleSettings.SPACE_AFTER_COMMA; + boolean spaceBeforeComma = JavaDocCodeStyle.getInstance(project).spaceBeforeComma(); + boolean spaceAfterComma = JavaDocCodeStyle.getInstance(project).spaceAfterComma(); StringTokenizer tokenizer = new StringTokenizer(parms, ","); while (tokenizer.hasMoreTokens()) { String param = tokenizer.nextToken().trim(); diff --git a/plugins/devkit/src/references/extensions/ExtensionPointQuickDocProvider.java b/plugins/devkit/src/references/extensions/ExtensionPointQuickDocProvider.java index 96deeac6f017..9e5ce037d6f4 100644 --- a/plugins/devkit/src/references/extensions/ExtensionPointQuickDocProvider.java +++ b/plugins/devkit/src/references/extensions/ExtensionPointQuickDocProvider.java @@ -69,7 +69,7 @@ public class ExtensionPointQuickDocProvider implements DocumentationProvider { final Project project = element.getProject(); final PsiClass psiClass = JavaPsiFacade.getInstance(project).findClass(fqn, GlobalSearchScope.allScope(project)); if (psiClass != null) { - return JavaDocumentationProvider.generateExternalJavadoc(psiClass); + return new JavaDocumentationProvider().generateExternalJavadoc(psiClass); } } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/documentation/GroovyDocumentationProvider.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/documentation/GroovyDocumentationProvider.java index 818591a20c4f..e9d92202ce8e 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/documentation/GroovyDocumentationProvider.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/documentation/GroovyDocumentationProvider.java @@ -305,7 +305,7 @@ public class GroovyDocumentationProvider implements CodeDocumentationProvider, E if (docElement != null) { ContainerUtil.addIfNotNull(result, docElement.getUserData(NonCodeMembersHolder.DOCUMENTATION_URL)); } - List list = JavaDocumentationProvider.getExternalJavaDocUrl(element); + List list = new JavaDocumentationProvider().getExternalJavaDocUrl(element); if (list != null) { result.addAll(list); } @@ -335,7 +335,7 @@ public class GroovyDocumentationProvider implements CodeDocumentationProvider, E if (element == null) return null; - String standard = JavaDocumentationProvider.generateExternalJavadoc(element); + String standard = new JavaDocumentationProvider().generateExternalJavadoc(element); if (element instanceof GrVariable && ((GrVariable)element).getTypeElementGroovy() == null && diff --git a/resources/src/META-INF/IdeaPlugin.xml b/resources/src/META-INF/IdeaPlugin.xml index 69f9baf59b9e..3198932b8494 100644 --- a/resources/src/META-INF/IdeaPlugin.xml +++ b/resources/src/META-INF/IdeaPlugin.xml @@ -314,6 +314,9 @@ + +