diff --git a/java/java-tests/testData/codeInsight/externalJavadoc/packageSummaryJava8/expected.html b/java/java-tests/testData/codeInsight/externalJavadoc/packageSummaryJava8/expected.html
new file mode 100644
index 000000000000..a917fb3d15f0
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/externalJavadoc/packageSummaryJava8/expected.html
@@ -0,0 +1,20 @@
+
Package my.pack Description
+Description
+- Since:
+- 42
+
+
+
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/externalJavadoc/packageSummaryJava8/package-info.java b/java/java-tests/testData/codeInsight/externalJavadoc/packageSummaryJava8/package-info.java
new file mode 100644
index 000000000000..c3230cddbf45
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/externalJavadoc/packageSummaryJava8/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * Description
+ *
+ * @since 42
+ */
+package my.pack;
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/externalJavadoc/packageSummaryJava8/package-summary.html b/java/java-tests/testData/codeInsight/externalJavadoc/packageSummaryJava8/package-summary.html
new file mode 100644
index 000000000000..c4c769a55ad2
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/externalJavadoc/packageSummaryJava8/package-summary.html
@@ -0,0 +1,135 @@
+
+
+
+
+
+my.pack
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Package my.pack Description
+
Description
+
+- Since:
+- 42
+
+
+
+
+
+
+
+
diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/ExternalJavadocPresentationTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/ExternalJavadocPresentationTest.java
index 2c0ac742239b..344938b2eb6f 100644
--- a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/ExternalJavadocPresentationTest.java
+++ b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/ExternalJavadocPresentationTest.java
@@ -63,6 +63,10 @@ public class ExternalJavadocPresentationTest extends LightCodeInsightTestCase {
doTest("SimpleInterface.html", "noMethodsOrFieldsInClass/SimpleInterface.html", "noMethodsOrFieldsInClass/expected.html");
}
+ public void testPackageSummaryJava8() throws Exception {
+ doTest("package-summary.html", "packageSummaryJava8/package-summary.html", "packageSummaryJava8/expected.html");
+ }
+
private void doTest(@NonNls String url, @NonNls String pageText, @NonNls String expected) throws Exception {
doTest(url, pageText, expected, true);
}
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/AbstractExternalFilter.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/AbstractExternalFilter.java
index 86e9bd556896..c839358be3ae 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/AbstractExternalFilter.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/AbstractExternalFilter.java
@@ -269,12 +269,12 @@ public abstract class AbstractExternalFilter {
StringBuilder classDetails = new StringBuilder();
while (((read = buf.readLine()) != null) && !StringUtil.toUpperCase(read).equals(HR) && !StringUtil.toUpperCase(read).equals(P)) {
- if (reachTheEnd(data, read, classDetails)) return;
+ if (reachTheEnd(data, read, classDetails, endSection)) return;
appendLine(classDetails, read);
}
while (((read = buf.readLine()) != null) && !StringUtil.toUpperCase(read).equals(P) && !StringUtil.toUpperCase(read).equals(HR)) {
- if (reachTheEnd(data, read, classDetails)) return;
+ if (reachTheEnd(data, read, classDetails, endSection)) return;
appendLine(data, read.replaceAll(DT, DT + BR));
}
@@ -313,10 +313,11 @@ public abstract class AbstractExternalFilter {
return new ParseSettings(startSection, endSection, !anchorPresent, anchorPresent);
}
- private static boolean reachTheEnd(StringBuilder data, String read, StringBuilder classDetails) {
+ private static boolean reachTheEnd(StringBuilder data, String read, StringBuilder classDetails, Pattern endSection) {
if (StringUtil.indexOfIgnoreCase(read, FIELD_SUMMARY, 0) != -1 ||
StringUtil.indexOfIgnoreCase(read, CLASS_SUMMARY, 0) != -1 ||
- StringUtil.indexOfIgnoreCase(read, GREATEST_END_SECTION, 0) != -1) {
+ StringUtil.indexOfIgnoreCase(read, GREATEST_END_SECTION, 0) != -1 ||
+ endSection.matcher(read).find()) {
data.append(classDetails);
data.append(HTML_CLOSE);
return true;