langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java
changeset 40587 1c355ea550ed
parent 40303 96a1226aca18
child 45417 f7479ee8de69
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java	Wed Jul 05 22:07:34 2017 +0200
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java	Mon Aug 22 16:32:40 2016 -0700
@@ -25,7 +25,6 @@
 
 package jdk.javadoc.internal.doclets.formats.html;
 
-import java.io.*;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -38,10 +37,9 @@
 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
 import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
 import jdk.javadoc.internal.doclets.toolkit.Content;
-import jdk.javadoc.internal.doclets.toolkit.Messages;
+import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
 import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
 import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
-import jdk.javadoc.internal.doclets.toolkit.util.DocletAbortException;
 import jdk.javadoc.internal.doclets.toolkit.util.IndexBuilder;
 
 
@@ -71,20 +69,24 @@
      */
     protected int next;
 
-    private List<Character> indexElements;
+    private final List<Character> indexElements;
 
     /**
      * Construct the SplitIndexWriter. Uses path to this file and relative path
      * from this file.
      *
+     * @param configuration the configuration for this doclet
      * @param path       Path to the file which is getting generated.
      * @param indexbuilder Unicode based Index from {@link IndexBuilder}
+     * @param elements the collection of characters for which to generate index files
+     * @param prev  the previous character that was indexed
+     * @param next  the next character to be indexed
      */
     public SplitIndexWriter(ConfigurationImpl configuration,
                             DocPath path,
                             IndexBuilder indexbuilder,
                             Collection<Character> elements,
-                            int prev, int next) throws IOException {
+                            int prev, int next) {
         super(configuration, path, indexbuilder);
         this.indexElements = new ArrayList<>(elements);
         this.prev = prev;
@@ -95,34 +97,26 @@
      * Generate separate index files, for each Unicode character, listing all
      * the members starting with the particular unicode character.
      *
+     * @param configuration the configuration for this doclet
      * @param indexbuilder IndexBuilder built by {@link IndexBuilder}
-     * @throws DocletAbortException
+     * @throws DocFileIOException if there is a problem generating the index files
      */
     public static void generate(ConfigurationImpl configuration,
-                                IndexBuilder indexbuilder) {
-        SplitIndexWriter indexgen;
-        DocPath filename = DocPath.empty;
+                                IndexBuilder indexbuilder) throws DocFileIOException {
         DocPath path = DocPaths.INDEX_FILES;
-        try {
-            Set<Character> keys = new TreeSet<>(indexbuilder.getIndexMap().keySet());
-            keys.addAll(configuration.tagSearchIndexKeys);
-            ListIterator<Character> li = new ArrayList<>(keys).listIterator();
-            while (li.hasNext()) {
-                Object ch = li.next();
-                filename = DocPaths.indexN(li.nextIndex());
-                indexgen = new SplitIndexWriter(configuration,
-                        path.resolve(filename),
-                        indexbuilder, keys, li.previousIndex(), li.nextIndex());
-                indexgen.generateIndexFile((Character) ch);
-                if (!li.hasNext()) {
-                    indexgen.createSearchIndexFiles();
-                }
+        Set<Character> keys = new TreeSet<>(indexbuilder.getIndexMap().keySet());
+        keys.addAll(configuration.tagSearchIndexKeys);
+        ListIterator<Character> li = new ArrayList<>(keys).listIterator();
+        while (li.hasNext()) {
+            Object ch = li.next();
+            DocPath filename = DocPaths.indexN(li.nextIndex());
+            SplitIndexWriter indexgen = new SplitIndexWriter(configuration,
+                    path.resolve(filename),
+                    indexbuilder, keys, li.previousIndex(), li.nextIndex());
+            indexgen.generateIndexFile((Character) ch);
+            if (!li.hasNext()) {
+                indexgen.createSearchIndexFiles();
             }
-        } catch (IOException exc) {
-            Messages messages = configuration.getMessages();
-            messages.error("doclet.exception_encountered",
-                        exc.toString(), filename.getPath());
-            throw new DocletAbortException(exc);
         }
     }
 
@@ -132,8 +126,9 @@
      *
      * @param unicode Unicode character referring to the character for the
      * index.
+     * @throws DocFileIOException if there is a problem generating an index file
      */
-    protected void generateIndexFile(Character unicode) throws IOException {
+    protected void generateIndexFile(Character unicode) throws DocFileIOException {
         String title = configuration.getText("doclet.Window_Split_Index",
                 unicode.toString());
         HtmlTree body = getBody(true, getWindowTitle(title));
@@ -188,6 +183,7 @@
      *
      * @return a content tree for the link
      */
+    @Override
     public Content getNavLinkPrevious() {
         Content prevletterLabel = contents.prevLetter;
         if (prev == -1) {
@@ -205,6 +201,7 @@
      *
      * @return a content tree for the link
      */
+    @Override
     public Content getNavLinkNext() {
         Content nextletterLabel = contents.nextLetter;
         if (next == -1) {