Regeneration from plexi dbaee2b
diff --git a/coverage/com.google.enterprise.adaptor.AsyncDocIdSender.html b/coverage/com.google.enterprise.adaptor.AsyncDocIdSender.html
index 98ecb0a..3bcf3b9 100644
--- a/coverage/com.google.enterprise.adaptor.AsyncDocIdSender.html
+++ b/coverage/com.google.enterprise.adaptor.AsyncDocIdSender.html
@@ -78,7 +78,7 @@
<td class="src"><pre class="src"> <span class="comment"> * and running for items to be sent.</span></pre></td></tr>
<tr> <td class="numLine"> 29</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 30</td> <td class="nbHitsCovered"> 165</td> <td class="src"><pre class="src"> <span class="keyword">class</span> AsyncDocIdSender <span class="keyword">implements</span> AsyncDocIdPusher,</pre></td></tr>
+<tr> <td class="numLineCover"> 30</td> <td class="nbHitsCovered"> 173</td> <td class="src"><pre class="src"> <span class="keyword">class</span> AsyncDocIdSender <span class="keyword">implements</span> AsyncDocIdPusher,</pre></td></tr>
<tr> <td class="numLine"> 31</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> DocumentHandler.AsyncPusher {</pre></td></tr>
<tr> <td class="numLineCover"> 32</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Logger log</pre></td></tr>
@@ -187,20 +187,20 @@
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 96</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> run() {</pre></td></tr>
-<tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> Set<DocIdSender.Item> items = <span class="keyword">new</span> LinkedHashSet<DocIdSender.Item>();</pre></td></tr>
+<tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> Set<DocIdSender.Item> items = <span class="keyword">new</span> LinkedHashSet<DocIdSender.Item>();</pre></td></tr>
<tr> <td class="numLine"> 98</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLine"> 99</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">while</span> (<span class="keyword">true</span>) {</pre></td></tr>
-<tr> <td class="numLineCover"> 100</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> BlockingQueueBatcher.take(</pre></td></tr>
+<tr> <td class="numLineCover"> 100</td> <td class="nbHitsCovered"> 22</td> <td class="src"><pre class="src"> BlockingQueueBatcher.take(</pre></td></tr>
<tr> <td class="numLine"> 101</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> queue, items, maxBatchSize, maxLatency, maxLatencyUnit);</pre></td></tr>
<tr> <td class="numLineCover"> 102</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> itemPusher.pushItems(items.iterator(), <span class="keyword">null</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 103</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> items.clear();</pre></td></tr>
<tr> <td class="numLine"> 104</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 105</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (InterruptedException ex) {</pre></td></tr>
-<tr> <td class="numLineCover"> 106</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> log.log(Level.FINE, <span class="string">"AsyncDocIdSender worker shutting down"</span>, ex);</pre></td></tr>
+<tr> <td class="numLineCover"> 105</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (InterruptedException ex) {</pre></td></tr>
+<tr> <td class="numLineCover"> 106</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> log.log(Level.FINE, <span class="string">"AsyncDocIdSender worker shutting down"</span>, ex);</pre></td></tr>
<tr> <td class="numLine"> 107</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLine"> 108</td> <td class="nbHits"> </td>
@@ -213,8 +213,8 @@
<td class="src"><pre class="src"> <span class="comment">// have interrupted itself before draining the queue; might as well</span></pre></td></tr>
<tr> <td class="numLine"> 112</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// send everything that was put on the queue.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 113</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> queue.drainTo(items);</pre></td></tr>
-<tr> <td class="numLineCover"> 114</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> itemPusher.pushItems(items.iterator(),</pre></td></tr>
+<tr> <td class="numLineCover"> 113</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> queue.drainTo(items);</pre></td></tr>
+<tr> <td class="numLineCover"> 114</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> itemPusher.pushItems(items.iterator(),</pre></td></tr>
<tr> <td class="numLine"> 115</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> ExceptionHandlers.noRetryHandler());</pre></td></tr>
<tr> <td class="numLineCover"> 116</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (InterruptedException ex2) {</span></pre></td></tr>
@@ -226,12 +226,12 @@
<td class="src"><pre class="src"> <span class="comment">// but the precise behavior of pushItems() may change in the future.</span></pre></td></tr>
<tr> <td class="numLine"> 120</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 121</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> log.log(Level.FINE, <span class="string">"AsyncDocIdSender worker shutdown"</span>, ex);</pre></td></tr>
-<tr> <td class="numLineCover"> 122</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> Thread.currentThread().interrupt();</pre></td></tr>
-<tr> <td class="numLineCover"> 123</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 121</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> log.log(Level.FINE, <span class="string">"AsyncDocIdSender worker shutdown"</span>, ex);</pre></td></tr>
+<tr> <td class="numLineCover"> 122</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> Thread.currentThread().interrupt();</pre></td></tr>
+<tr> <td class="numLineCover"> 123</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 124</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 125</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 125</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 126</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 127</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.BlockingQueueBatcher.html b/coverage/com.google.enterprise.adaptor.BlockingQueueBatcher.html
index a2ec0b2..ee371a4 100644
--- a/coverage/com.google.enterprise.adaptor.BlockingQueueBatcher.html
+++ b/coverage/com.google.enterprise.adaptor.BlockingQueueBatcher.html
@@ -117,22 +117,22 @@
<td class="src"><pre class="src"> Collection<? <span class="keyword">super</span> T> batch, <span class="keyword">int</span> maxBatchSize, <span class="keyword">long</span> maxLatency,</pre></td></tr>
<tr> <td class="numLine"> 51</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> TimeUnit maxLatencyUnit) <span class="keyword">throws</span> InterruptedException {</pre></td></tr>
-<tr> <td class="numLineCover"> 52</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> <span class="keyword">long</span> maxLatencyNanos = maxLatencyUnit.toNanos(maxLatency);</pre></td></tr>
+<tr> <td class="numLineCover"> 52</td> <td class="nbHitsCovered"> 26</td> <td class="src"><pre class="src"> <span class="keyword">long</span> maxLatencyNanos = maxLatencyUnit.toNanos(maxLatency);</pre></td></tr>
<tr> <td class="numLine"> 53</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 54</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> <span class="keyword">int</span> curBatchSize = 0;</pre></td></tr>
-<tr> <td class="numLineCover"> 55</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> <span class="keyword">long</span> stopBatchTimeNanos = -1;</pre></td></tr>
+<tr> <td class="numLineCover"> 54</td> <td class="nbHitsCovered"> 26</td> <td class="src"><pre class="src"> <span class="keyword">int</span> curBatchSize = 0;</pre></td></tr>
+<tr> <td class="numLineCover"> 55</td> <td class="nbHitsCovered"> 26</td> <td class="src"><pre class="src"> <span class="keyword">long</span> stopBatchTimeNanos = -1;</pre></td></tr>
<tr> <td class="numLine"> 56</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 57</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// The loop flow is 1) block, 2) drain queue, 3) possibly consume batch.</span></pre></td></tr>
<tr> <td class="numLine"> 58</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">while</span> (<span class="keyword">true</span>) {</pre></td></tr>
-<tr> <td class="numLineCover"> 59</td> <td class="nbHitsCovered"> 29</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> timeout = <span class="keyword">false</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 60</td> <td class="nbHitsCovered"><a title="Line 60: Conditional coverage 100% (2/2)."> 29</a></td> <td class="src"><pre class="src"> <a title="Line 60: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (stopBatchTimeNanos == -1) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 59</td> <td class="nbHitsCovered"> 30</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> timeout = <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 60</td> <td class="nbHitsCovered"><a title="Line 60: Conditional coverage 100% (2/2)."> 30</a></td> <td class="src"><pre class="src"> <a title="Line 60: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (stopBatchTimeNanos == -1) {</a></pre></td></tr>
<tr> <td class="numLine"> 61</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Start of new batch. Block for the first item of this batch.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 62</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> batch.add(queue.take());</pre></td></tr>
+<tr> <td class="numLineCover"> 62</td> <td class="nbHitsCovered"> 26</td> <td class="src"><pre class="src"> batch.add(queue.take());</pre></td></tr>
<tr> <td class="numLineCover"> 63</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> curBatchSize++;</pre></td></tr>
<tr> <td class="numLineCover"> 64</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> stopBatchTimeNanos = timeProvider.relativeTime(TimeUnit.NANOSECONDS)</pre></td></tr>
<tr> <td class="numLine"> 65</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.CircularBufferHandler.html b/coverage/com.google.enterprise.adaptor.CircularBufferHandler.html
index c407f1c..ebdfcc5 100644
--- a/coverage/com.google.enterprise.adaptor.CircularBufferHandler.html
+++ b/coverage/com.google.enterprise.adaptor.CircularBufferHandler.html
@@ -107,17 +107,17 @@
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 49</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">synchronized</span> <span class="keyword">void</span> publish(LogRecord record) {</pre></td></tr>
-<tr> <td class="numLineCover"> 50</td> <td class="nbHitsUncovered"><a title="Line 50: Conditional coverage 50% (1/2)."> 33</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 50: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!isLoggable(record)) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 50</td> <td class="nbHitsUncovered"><a title="Line 50: Conditional coverage 50% (1/2)."> 34</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 50: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!isLoggable(record)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 51</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span>;</span></pre></td></tr>
<tr> <td class="numLine"> 52</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 53</td> <td class="nbHitsCovered"> 33</td> <td class="src"><pre class="src"> buffer[tail] = record;</pre></td></tr>
-<tr> <td class="numLineCover"> 54</td> <td class="nbHitsCovered"> 33</td> <td class="src"><pre class="src"> tail = (tail + 1) % buffer.length;</pre></td></tr>
-<tr> <td class="numLineCover"> 55</td> <td class="nbHitsUncovered"><a title="Line 55: Conditional coverage 50% (1/2)."> 33</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 55: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (head == tail) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 53</td> <td class="nbHitsCovered"> 34</td> <td class="src"><pre class="src"> buffer[tail] = record;</pre></td></tr>
+<tr> <td class="numLineCover"> 54</td> <td class="nbHitsCovered"> 34</td> <td class="src"><pre class="src"> tail = (tail + 1) % buffer.length;</pre></td></tr>
+<tr> <td class="numLineCover"> 55</td> <td class="nbHitsUncovered"><a title="Line 55: Conditional coverage 50% (1/2)."> 34</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 55: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (head == tail) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 56</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> head = (head + 1) % buffer.length;</span></pre></td></tr>
<tr> <td class="numLine"> 57</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 58</td> <td class="nbHitsCovered"> 33</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 58</td> <td class="nbHitsCovered"> 34</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 59</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 60</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.Config.html b/coverage/com.google.enterprise.adaptor.Config.html
index 882662f..44d08e4 100644
--- a/coverage/com.google.enterprise.adaptor.Config.html
+++ b/coverage/com.google.enterprise.adaptor.Config.html
@@ -1045,7 +1045,7 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 568</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">int</span> getFeedMaxUrls() {</pre></td></tr>
-<tr> <td class="numLineCover"> 569</td> <td class="nbHitsCovered"> 55</td> <td class="src"><pre class="src"> <span class="keyword">return</span> Integer.parseInt(getValue(<span class="string">"feed.maxUrls"</span>));</pre></td></tr>
+<tr> <td class="numLineCover"> 569</td> <td class="nbHitsCovered"> 56</td> <td class="src"><pre class="src"> <span class="keyword">return</span> Integer.parseInt(getValue(<span class="string">"feed.maxUrls"</span>));</pre></td></tr>
<tr> <td class="numLine"> 570</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 571</td> <td class="nbHits"> </td>
@@ -1250,14 +1250,14 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 701</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> String getRawValue(String key) {</pre></td></tr>
-<tr> <td class="numLineCover"> 702</td> <td class="nbHitsCovered"> 1058</td> <td class="src"><pre class="src"> String value = config.getProperty(key);</pre></td></tr>
-<tr> <td class="numLineCover"> 703</td> <td class="nbHitsUncovered"><a title="Line 703: Conditional coverage 50% (1/2)."> 1058</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 703: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (value == <span class="keyword">null</span>) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 702</td> <td class="nbHitsCovered"> 1059</td> <td class="src"><pre class="src"> String value = config.getProperty(key);</pre></td></tr>
+<tr> <td class="numLineCover"> 703</td> <td class="nbHitsUncovered"><a title="Line 703: Conditional coverage 50% (1/2)."> 1059</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 703: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (value == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 704</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalStateException(MessageFormat.format(</span></pre></td></tr>
<tr> <td class="numLine"> 705</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="string">"You must set configuration key ''{0}''."</span>, key));</pre></td></tr>
<tr> <td class="numLine"> 706</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 707</td> <td class="nbHitsCovered"> 1058</td> <td class="src"><pre class="src"> <span class="keyword">return</span> value;</pre></td></tr>
+<tr> <td class="numLineCover"> 707</td> <td class="nbHitsCovered"> 1059</td> <td class="src"><pre class="src"> <span class="keyword">return</span> value;</pre></td></tr>
<tr> <td class="numLine"> 708</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 709</td> <td class="nbHits"> </td>
@@ -1284,13 +1284,13 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 720</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> String getValue(String key) {</pre></td></tr>
-<tr> <td class="numLineCover"> 721</td> <td class="nbHitsCovered"> 1057</td> <td class="src"><pre class="src"> String value = getRawValue(key);</pre></td></tr>
-<tr> <td class="numLineCover"> 722</td> <td class="nbHitsCovered"> 1057</td> <td class="src"><pre class="src"> ValueComputer computer = computeMap.get(key);</pre></td></tr>
-<tr> <td class="numLineCover"> 723</td> <td class="nbHitsCovered"><a title="Line 723: Conditional coverage 100% (2/2)."> 1057</a></td> <td class="src"><pre class="src"> <a title="Line 723: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (computer != <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 721</td> <td class="nbHitsCovered"> 1058</td> <td class="src"><pre class="src"> String value = getRawValue(key);</pre></td></tr>
+<tr> <td class="numLineCover"> 722</td> <td class="nbHitsCovered"> 1058</td> <td class="src"><pre class="src"> ValueComputer computer = computeMap.get(key);</pre></td></tr>
+<tr> <td class="numLineCover"> 723</td> <td class="nbHitsCovered"><a title="Line 723: Conditional coverage 100% (2/2)."> 1058</a></td> <td class="src"><pre class="src"> <a title="Line 723: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (computer != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 724</td> <td class="nbHitsCovered"> 123</td> <td class="src"><pre class="src"> value = computer.compute(value);</pre></td></tr>
<tr> <td class="numLine"> 725</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 726</td> <td class="nbHitsCovered"> 1057</td> <td class="src"><pre class="src"> <span class="keyword">return</span> value;</pre></td></tr>
+<tr> <td class="numLineCover"> 726</td> <td class="nbHitsCovered"> 1058</td> <td class="src"><pre class="src"> <span class="keyword">return</span> value;</pre></td></tr>
<tr> <td class="numLine"> 727</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 728</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.DocIdSender.html b/coverage/com.google.enterprise.adaptor.DocIdSender.html
index 01b7f3c..efc6477 100644
--- a/coverage/com.google.enterprise.adaptor.DocIdSender.html
+++ b/coverage/com.google.enterprise.adaptor.DocIdSender.html
@@ -265,14 +265,14 @@
<td class="src"><pre class="src"> <span class="keyword">public</span> <T <span class="keyword">extends</span> Item> T pushItems(Iterator<T> items,</pre></td></tr>
<tr> <td class="numLine"> 155</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> ExceptionHandler handler) <span class="keyword">throws</span> InterruptedException {</pre></td></tr>
-<tr> <td class="numLineCover"> 156</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"Pushing items"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 157</td> <td class="nbHitsCovered"><a title="Line 157: Conditional coverage 100% (2/2)."> 20</a></td> <td class="src"><pre class="src"> <a title="Line 157: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (handler == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 156</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"Pushing items"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 157</td> <td class="nbHitsCovered"><a title="Line 157: Conditional coverage 100% (2/2)."> 21</a></td> <td class="src"><pre class="src"> <a title="Line 157: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (handler == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 158</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> handler = defaultErrorHandler;</pre></td></tr>
<tr> <td class="numLine"> 159</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 160</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> firstBatch = <span class="keyword">true</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 161</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> max = config.getFeedMaxUrls();</pre></td></tr>
-<tr> <td class="numLineCover"> 162</td> <td class="nbHitsCovered"><a title="Line 162: Conditional coverage 100% (2/2)."> 26</a></td> <td class="src"><pre class="src"> <a title="Line 162: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (items.hasNext()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 160</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> firstBatch = <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 161</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> max = config.getFeedMaxUrls();</pre></td></tr>
+<tr> <td class="numLineCover"> 162</td> <td class="nbHitsCovered"><a title="Line 162: Conditional coverage 100% (2/2)."> 27</a></td> <td class="src"><pre class="src"> <a title="Line 162: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (items.hasNext()) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 163</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> List<T> batch = <span class="keyword">new</span> ArrayList<T>();</pre></td></tr>
<tr> <td class="numLineCover"> 164</td> <td class="nbHitsCovered"><a title="Line 164: Conditional coverage 100% (2/2)."> 24</a></td> <td class="src"><pre class="src"> <a title="Line 164: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> j = 0; j < max; j++) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 165</td> <td class="nbHitsCovered"><a title="Line 165: Conditional coverage 100% (2/2)."> 20</a></td> <td class="src"><pre class="src"> <a title="Line 165: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!items.hasNext()) {</a></pre></td></tr>
@@ -315,8 +315,8 @@
<tr> <td class="numLineCover"> 191</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> firstBatch = <span class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLineCover"> 192</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> journal.recordDocIdPush(batch);</pre></td></tr>
<tr> <td class="numLineCover"> 193</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 194</td> <td class="nbHitsCovered"> 16</td> <td class="src"><pre class="src"> log.info(<span class="string">"Pushed items"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 195</td> <td class="nbHitsCovered"> 16</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 194</td> <td class="nbHitsCovered"> 17</td> <td class="src"><pre class="src"> log.info(<span class="string">"Pushed items"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 195</td> <td class="nbHitsCovered"> 17</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 196</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 197</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.ExceptionHandlers.html b/coverage/com.google.enterprise.adaptor.ExceptionHandlers.html
index 00cb0f0..2963416 100644
--- a/coverage/com.google.enterprise.adaptor.ExceptionHandlers.html
+++ b/coverage/com.google.enterprise.adaptor.ExceptionHandlers.html
@@ -121,7 +121,7 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 55</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> ExceptionHandler noRetryHandler() {</pre></td></tr>
-<tr> <td class="numLineCover"> 56</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> <span class="keyword">return</span> noRetryHandler;</pre></td></tr>
+<tr> <td class="numLineCover"> 56</td> <td class="nbHitsCovered"> 22</td> <td class="src"><pre class="src"> <span class="keyword">return</span> noRetryHandler;</pre></td></tr>
<tr> <td class="numLine"> 57</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 58</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.GroupPrincipal.html b/coverage/com.google.enterprise.adaptor.GroupPrincipal.html
index 52edcb7..b5ef2df 100644
--- a/coverage/com.google.enterprise.adaptor.GroupPrincipal.html
+++ b/coverage/com.google.enterprise.adaptor.GroupPrincipal.html
@@ -83,7 +83,7 @@
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 35</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">boolean</span> isUser() {</pre></td></tr>
-<tr> <td class="numLineCover"> 36</td> <td class="nbHitsCovered"> 897</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 36</td> <td class="nbHitsCovered"> 898</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 37</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 38</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.IOHelper.html b/coverage/com.google.enterprise.adaptor.IOHelper.html
index 62057e7..3f0761a 100644
--- a/coverage/com.google.enterprise.adaptor.IOHelper.html
+++ b/coverage/com.google.enterprise.adaptor.IOHelper.html
@@ -99,8 +99,8 @@
<tr> <td class="numLineCover"> 42</td> <td class="nbHitsCovered"> 524</td> <td class="src"><pre class="src"> out.write(buffer, 0, read);</pre></td></tr>
<tr> <td class="numLine"> 43</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 44</td> <td class="nbHitsCovered"> 118</td> <td class="src"><pre class="src"> out.flush();</pre></td></tr>
-<tr> <td class="numLineCover"> 45</td> <td class="nbHitsCovered"> 118</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 44</td> <td class="nbHitsCovered"> 115</td> <td class="src"><pre class="src"> out.flush();</pre></td></tr>
+<tr> <td class="numLineCover"> 45</td> <td class="nbHitsCovered"> 115</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 46</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 47</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.Journal.html b/coverage/com.google.enterprise.adaptor.Journal.html
index 24bc11b..a65653a 100644
--- a/coverage/com.google.enterprise.adaptor.Journal.html
+++ b/coverage/com.google.enterprise.adaptor.Journal.html
@@ -377,8 +377,8 @@
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">long</span> determineTimeResolutionOnce() {</pre></td></tr>
<tr> <td class="numLineCover"> 216</td> <td class="nbHitsCovered"> 1035</td> <td class="src"><pre class="src"> <span class="keyword">long</span> time = timeProvider.currentTimeMillis();</pre></td></tr>
<tr> <td class="numLineCover"> 217</td> <td class="nbHitsCovered"> 1035</td> <td class="src"><pre class="src"> <span class="keyword">long</span> startTime = time;</pre></td></tr>
-<tr> <td class="numLineCover"> 218</td> <td class="nbHitsCovered"><a title="Line 218: Conditional coverage 100% (2/2)."> 165126</a></td> <td class="src"><pre class="src"> <a title="Line 218: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (startTime == time) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 219</td> <td class="nbHitsCovered"> 164091</td> <td class="src"><pre class="src"> time = timeProvider.currentTimeMillis();</pre></td></tr>
+<tr> <td class="numLineCover"> 218</td> <td class="nbHitsCovered"><a title="Line 218: Conditional coverage 100% (2/2)."> 169680</a></td> <td class="src"><pre class="src"> <a title="Line 218: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (startTime == time) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 219</td> <td class="nbHitsCovered"> 168645</td> <td class="src"><pre class="src"> time = timeProvider.currentTimeMillis();</pre></td></tr>
<tr> <td class="numLine"> 220</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 221</td> <td class="nbHitsCovered"> 1035</td> <td class="src"><pre class="src"> <span class="keyword">return</span> time - startTime;</pre></td></tr>
diff --git a/coverage/com.google.enterprise.adaptor.Principal.html b/coverage/com.google.enterprise.adaptor.Principal.html
index 0fdb3dc..e7efa3e 100644
--- a/coverage/com.google.enterprise.adaptor.Principal.html
+++ b/coverage/com.google.enterprise.adaptor.Principal.html
@@ -62,7 +62,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Represents either a user or a group.</span></pre></td></tr>
<tr> <td class="numLine"> 21</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 22</td> <td class="nbHitsCovered"> 675</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keyword">class</span> Principal <span class="keyword">implements</span> Comparable<Principal> {</pre></td></tr>
+<tr> <td class="numLineCover"> 22</td> <td class="nbHitsCovered"> 667</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keyword">class</span> Principal <span class="keyword">implements</span> Comparable<Principal> {</pre></td></tr>
<tr> <td class="numLine"> 23</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> String DEFAULT_NAMESPACE = <span class="string">"Default"</span>;</pre></td></tr>
<tr> <td class="numLine"> 24</td> <td class="nbHits"> </td>
@@ -167,24 +167,24 @@
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 85</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">int</span> compareTo(Principal other) {</pre></td></tr>
-<tr> <td class="numLineCover"> 86</td> <td class="nbHitsCovered"> 675</td> <td class="src"><pre class="src"> <span class="keyword">int</span> spacecmp = namespace.compareTo(other.namespace);</pre></td></tr>
-<tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"><a title="Line 87: Conditional coverage 100% (2/2)."> 675</a></td> <td class="src"><pre class="src"> <a title="Line 87: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (0 != spacecmp) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 88</td> <td class="nbHitsCovered"> 169</td> <td class="src"><pre class="src"> <span class="keyword">return</span> spacecmp;</pre></td></tr>
+<tr> <td class="numLineCover"> 86</td> <td class="nbHitsCovered"> 667</td> <td class="src"><pre class="src"> <span class="keyword">int</span> spacecmp = namespace.compareTo(other.namespace);</pre></td></tr>
+<tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"><a title="Line 87: Conditional coverage 100% (2/2)."> 667</a></td> <td class="src"><pre class="src"> <a title="Line 87: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (0 != spacecmp) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 88</td> <td class="nbHitsCovered"> 166</td> <td class="src"><pre class="src"> <span class="keyword">return</span> spacecmp;</pre></td></tr>
<tr> <td class="numLine"> 89</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 90</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// OK, same namespace</span></pre></td></tr>
<tr> <td class="numLine"> 91</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 92</td> <td class="nbHitsCovered"><a title="Line 92: Conditional coverage 100% (2/2)."> 506</a></td> <td class="src"><pre class="src"> <a title="Line 92: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (isUser() != other.isUser()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 93</td> <td class="nbHitsCovered"><a title="Line 93: Conditional coverage 100% (2/2)."> 47</a></td> <td class="src"><pre class="src"> <a title="Line 93: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> isUser() ? -1 : 1;</a></pre></td></tr>
+<tr> <td class="numLineCover"> 92</td> <td class="nbHitsCovered"><a title="Line 92: Conditional coverage 100% (2/2)."> 501</a></td> <td class="src"><pre class="src"> <a title="Line 92: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (isUser() != other.isUser()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 93</td> <td class="nbHitsCovered"><a title="Line 93: Conditional coverage 100% (2/2)."> 50</a></td> <td class="src"><pre class="src"> <a title="Line 93: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> isUser() ? -1 : 1;</a></pre></td></tr>
<tr> <td class="numLine"> 94</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 95</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// OK, same namespace and same type</span></pre></td></tr>
<tr> <td class="numLine"> 96</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 459</td> <td class="src"><pre class="src"> <span class="keyword">return</span> name.compareTo(other.name);</pre></td></tr>
+<tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 451</td> <td class="src"><pre class="src"> <span class="keyword">return</span> name.compareTo(other.name);</pre></td></tr>
<tr> <td class="numLine"> 98</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 99</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.ShutdownWaiter.html b/coverage/com.google.enterprise.adaptor.ShutdownWaiter.html
index faab20f..870de20 100644
--- a/coverage/com.google.enterprise.adaptor.ShutdownWaiter.html
+++ b/coverage/com.google.enterprise.adaptor.ShutdownWaiter.html
@@ -128,8 +128,8 @@
<tr> <td class="numLineCover"> 55</td> <td class="nbHitsCovered"> 19</td> <td class="src"><pre class="src"> stopped = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine"> 56</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Inform processing requests to shut down.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 57</td> <td class="nbHitsCovered"><a title="Line 57: Conditional coverage 100% (2/2)."> 35</a></td> <td class="src"><pre class="src"> <a title="Line 57: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Thread thread : processingThreads.toArray(<span class="keyword">new</span> Thread[0])) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 58</td> <td class="nbHitsCovered"> 16</td> <td class="src"><pre class="src"> thread.interrupt();</pre></td></tr>
+<tr> <td class="numLineCover"> 57</td> <td class="nbHitsCovered"><a title="Line 57: Conditional coverage 100% (2/2)."> 36</a></td> <td class="src"><pre class="src"> <a title="Line 57: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Thread thread : processingThreads.toArray(<span class="keyword">new</span> Thread[0])) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 58</td> <td class="nbHitsCovered"> 17</td> <td class="src"><pre class="src"> thread.interrupt();</pre></td></tr>
<tr> <td class="numLine"> 59</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 60</td> <td class="nbHits"> </td>
@@ -200,11 +200,11 @@
<tr> <td class="numLineCover"> 100</td> <td class="nbHitsCovered"><a title="Line 100: Conditional coverage 100% (2/2)."> 36</a></td> <td class="src"><pre class="src"> <a title="Line 100: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (stopped) {</a></pre></td></tr>
<tr> <td class="numLine"> 101</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Cleanup.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 102</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> processingCompleted(thread);</pre></td></tr>
-<tr> <td class="numLineCover"> 103</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> ShutdownException();</pre></td></tr>
+<tr> <td class="numLineCover"> 102</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> processingCompleted(thread);</pre></td></tr>
+<tr> <td class="numLineCover"> 103</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> ShutdownException();</pre></td></tr>
<tr> <td class="numLine"> 104</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 105</td> <td class="nbHitsCovered"> 30</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 105</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 106</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 107</td> <td class="nbHits"> </td>
@@ -261,10 +261,10 @@
<td class="src"><pre class="src"> <span class="comment"> * Denotes that processing has been shutdown.</span></pre></td></tr>
<tr> <td class="numLine"> 137</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 138</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">class</span> ShutdownException <span class="keyword">extends</span> Exception {</pre></td></tr>
-<tr> <td class="numLineCover"> 139</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">private</span> ShutdownException() {</pre></td></tr>
-<tr> <td class="numLineCover"> 140</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">super</span>(<span class="string">"Already shutdown"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 141</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 138</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">class</span> ShutdownException <span class="keyword">extends</span> Exception {</pre></td></tr>
+<tr> <td class="numLineCover"> 139</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">private</span> ShutdownException() {</pre></td></tr>
+<tr> <td class="numLineCover"> 140</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">super</span>(<span class="string">"Already shutdown"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 141</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 142</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 143</td> <td class="nbHits"> </td>
@@ -322,17 +322,17 @@
<tr> <td class="numLine"> 177</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 178</td> <td class="nbHitsCovered"> 29</td> <td class="src"><pre class="src"> processingStarting(thread);</pre></td></tr>
-<tr> <td class="numLineCover"> 179</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (ShutdownException ex) {</pre></td></tr>
-<tr> <td class="numLineCover"> 180</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> RuntimeException(ex);</pre></td></tr>
-<tr> <td class="numLineCover"> 181</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 179</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (ShutdownException ex) {</pre></td></tr>
+<tr> <td class="numLineCover"> 180</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> RuntimeException(ex);</pre></td></tr>
+<tr> <td class="numLineCover"> 181</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 182</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 183</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> delegate.run();</pre></td></tr>
+<tr> <td class="numLineCover"> 183</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> delegate.run();</pre></td></tr>
<tr> <td class="numLine"> 184</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 185</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> processingCompleted(thread);</pre></td></tr>
-<tr> <td class="numLineCover"> 186</td> <td class="nbHitsCovered"> 23</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 187</td> <td class="nbHitsCovered"> 23</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 185</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> processingCompleted(thread);</pre></td></tr>
+<tr> <td class="numLineCover"> 186</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 187</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 188</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 189</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.SystemTimeProvider.html b/coverage/com.google.enterprise.adaptor.SystemTimeProvider.html
index fa32a68..9dad8da 100644
--- a/coverage/com.google.enterprise.adaptor.SystemTimeProvider.html
+++ b/coverage/com.google.enterprise.adaptor.SystemTimeProvider.html
@@ -58,7 +58,7 @@
<tr> <td class="numLineCover"> 20</td> <td class="nbHitsCovered"> 109</td> <td class="src"><pre class="src"> <span class="keyword">class</span> SystemTimeProvider <span class="keyword">implements</span> TimeProvider {</pre></td></tr>
<tr> <td class="numLine"> 21</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">long</span> currentTimeMillis() {</pre></td></tr>
-<tr> <td class="numLineCover"> 22</td> <td class="nbHitsCovered"> 163536</td> <td class="src"><pre class="src"> <span class="keyword">return</span> System.currentTimeMillis();</pre></td></tr>
+<tr> <td class="numLineCover"> 22</td> <td class="nbHitsCovered"> 168090</td> <td class="src"><pre class="src"> <span class="keyword">return</span> System.currentTimeMillis();</pre></td></tr>
<tr> <td class="numLine"> 23</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 24</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.UserPrincipal.html b/coverage/com.google.enterprise.adaptor.UserPrincipal.html
index 130b769..21274f3 100644
--- a/coverage/com.google.enterprise.adaptor.UserPrincipal.html
+++ b/coverage/com.google.enterprise.adaptor.UserPrincipal.html
@@ -75,7 +75,7 @@
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 31</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">boolean</span> isUser() {</pre></td></tr>
-<tr> <td class="numLineCover"> 32</td> <td class="nbHitsCovered"> 1161</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 32</td> <td class="nbHitsCovered"> 1153</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine"> 33</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 34</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.prebuilt.StreamingCommand.html b/coverage/com.google.enterprise.adaptor.prebuilt.StreamingCommand.html
index 55b88ee..9ee7294 100644
--- a/coverage/com.google.enterprise.adaptor.prebuilt.StreamingCommand.html
+++ b/coverage/com.google.enterprise.adaptor.prebuilt.StreamingCommand.html
@@ -19,7 +19,7 @@
<tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$InputSourceRunnable</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">1</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:88px"><span class="text">8/9</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$NoInputSource</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">2/2</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$OutputSink</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
- <tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$OutputSinkRunnable</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">1</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:88px"><span class="text">8/9</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
+ <tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$OutputSinkRunnable</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">9/9</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$StreamInputSource</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">5/5</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$StreamOutputSink</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">5/5</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
@@ -180,7 +180,7 @@
<tr> <td class="numLine"> 87</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 88</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> in.join();</pre></td></tr>
-<tr> <td class="numLineCover"> 89</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> out.join();</pre></td></tr>
+<tr> <td class="numLineCover"> 89</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> out.join();</pre></td></tr>
<tr> <td class="numLineCover"> 90</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> err.join();</pre></td></tr>
<tr> <td class="numLine"> 91</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
@@ -341,7 +341,7 @@
<tr> <td class="numLine"> 182</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> sink(InputStream in) <span class="keyword">throws</span> IOException {</pre></td></tr>
<tr> <td class="numLineCover"> 183</td> <td class="nbHitsCovered"> 16</td> <td class="src"><pre class="src"> IOHelper.copyStream(in, out);</pre></td></tr>
-<tr> <td class="numLineCover"> 184</td> <td class="nbHitsCovered"> 16</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 184</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 185</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 186</td> <td class="nbHits"> </td>
@@ -400,7 +400,7 @@
<tr> <td class="numLine"> 219</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 220</td> <td class="nbHitsCovered"> 18</td> <td class="src"><pre class="src"> sink.sink(in);</pre></td></tr>
-<tr> <td class="numLineCover"> 221</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
+<tr> <td class="numLineCover"> 221</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (IOException ex) {</pre></td></tr>
<tr> <td class="numLine"> 222</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Ignore, but stop thread.</span></pre></td></tr>
<tr> <td class="numLine"> 223</td> <td class="nbHits"> </td>
diff --git a/coverage/frame-sourcefiles-com.google.enterprise.adaptor.prebuilt.html b/coverage/frame-sourcefiles-com.google.enterprise.adaptor.prebuilt.html
index e9ce435..d0b853e 100644
--- a/coverage/frame-sourcefiles-com.google.enterprise.adaptor.prebuilt.html
+++ b/coverage/frame-sourcefiles-com.google.enterprise.adaptor.prebuilt.html
@@ -33,7 +33,7 @@
<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.prebuilt.RecursiveFileIterator.html">RecursiveFileIterator</a> <i>(82%)</i></td>
</tr>
<tr>
-<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand</a> <i>(94%)</i></td>
+<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand</a> <i>(95%)</i></td>
</tr>
</tbody>
</table>
diff --git a/coverage/frame-sourcefiles.html b/coverage/frame-sourcefiles.html
index 9af5166..64ab684 100644
--- a/coverage/frame-sourcefiles.html
+++ b/coverage/frame-sourcefiles.html
@@ -372,7 +372,7 @@
<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.StatusSource.html">StatusSource</a> <i>(N/A)</i></td>
</tr>
<tr>
-<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand</a> <i>(94%)</i></td>
+<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand</a> <i>(95%)</i></td>
</tr>
<tr>
<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.secmgr.common.Stringify.html">Stringify</a> <i>(0%)</i></td>
diff --git a/coverage/frame-summary-com.google.enterprise.adaptor.html b/coverage/frame-summary-com.google.enterprise.adaptor.html
index 1433488..94eff9b 100644
--- a/coverage/frame-summary-com.google.enterprise.adaptor.html
+++ b/coverage/frame-summary-com.google.enterprise.adaptor.html
@@ -19,7 +19,7 @@
<tr><td><a href="frame-summary-com.google.enterprise.adaptor.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.html"'>com.google.enterprise.adaptor</a></td><td class="value">219</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">876</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:84px"><span class="text">4651/5527</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">333</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:83px"><span class="text">1651/1984</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.5773694390715667;</span>2.577</td></tr>
<tr><td><a href="frame-summary-com.google.enterprise.adaptor.examples.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.examples.html"'>com.google.enterprise.adaptor.examples</a></td><td class="value">9</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">342</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:6px"><span class="text">22/364</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">83</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:7px"><span class="text">7/90</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.6122448979591835;</span>2.612</td></tr>
<tr><td><a href="frame-summary-com.google.enterprise.adaptor.experimental.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.experimental.html"'>com.google.enterprise.adaptor.experimental</a></td><td class="value">8</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">219</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:0px"><span class="text">0/219</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">77</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:0px"><span class="text">0/77</span></div></div></td></tr></table></td><td class="value"><span class="hidden">3.8;</span>3.8</td></tr>
- <tr><td><a href="frame-summary-com.google.enterprise.adaptor.prebuilt.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.prebuilt.html"'>com.google.enterprise.adaptor.prebuilt</a></td><td class="value">25</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">146</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:73px"><span class="text">396/542</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">57</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:67px"><span class="text">121/178</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.5934065934065935;</span>2.593</td></tr>
+ <tr><td><a href="frame-summary-com.google.enterprise.adaptor.prebuilt.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.prebuilt.html"'>com.google.enterprise.adaptor.prebuilt</a></td><td class="value">25</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">145</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:73px"><span class="text">397/542</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">57</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:67px"><span class="text">121/178</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.5934065934065935;</span>2.593</td></tr>
<tr><td><a href="frame-summary-com.google.enterprise.adaptor.secmgr.authncontroller.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.secmgr.authncontroller.html"'>com.google.enterprise.adaptor.secmgr.authncontroller</a></td><td class="value">6</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">26</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:58px"><span class="text">37/63</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">15</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:16px"><span class="text">3/18</span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.3333333333333333;</span>1.333</td></tr>
<tr><td><a href="frame-summary-com.google.enterprise.adaptor.secmgr.common.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.secmgr.common.html"'>com.google.enterprise.adaptor.secmgr.common</a></td><td class="value">5</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">80</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:25px"><span class="text">28/108</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">24</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:11px"><span class="text">3/27</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.0357142857142856;</span>2.036</td></tr>
<tr><td><a href="frame-summary-com.google.enterprise.adaptor.secmgr.config.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.secmgr.config.html"'>com.google.enterprise.adaptor.secmgr.config</a></td><td class="value">4</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">14</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:41px"><span class="text">10/24</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.0;</span>1</td></tr>
diff --git a/coverage/frame-summary-com.google.enterprise.adaptor.prebuilt.html b/coverage/frame-summary-com.google.enterprise.adaptor.prebuilt.html
index c855c2a..afc8f5f 100644
--- a/coverage/frame-summary-com.google.enterprise.adaptor.prebuilt.html
+++ b/coverage/frame-summary-com.google.enterprise.adaptor.prebuilt.html
@@ -16,7 +16,7 @@
<table class="report" id="packageResults">
<thead><tr> <td class="heading">Package</td> <td class="heading"># Classes</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead>
<tbody>
- <tr><td><a href="frame-summary-com.google.enterprise.adaptor.prebuilt.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.prebuilt.html"'>com.google.enterprise.adaptor.prebuilt</a></td><td class="value">25</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">146</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:73px"><span class="text">396/542</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">57</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:67px"><span class="text">121/178</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.5934065934065935;</span>2.593</td></tr>
+ <tr><td><a href="frame-summary-com.google.enterprise.adaptor.prebuilt.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.prebuilt.html"'>com.google.enterprise.adaptor.prebuilt</a></td><td class="value">25</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">145</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:73px"><span class="text">397/542</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">57</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:67px"><span class="text">121/178</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.5934065934065935;</span>2.593</td></tr>
</tbody>
</table>
<script type="text/javascript">
@@ -56,7 +56,7 @@
<tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$InputSourceRunnable</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">1</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:88px"><span class="text">8/9</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$NoInputSource</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">2/2</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$OutputSink</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
- <tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$OutputSinkRunnable</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">1</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:88px"><span class="text">8/9</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
+ <tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$OutputSinkRunnable</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">9/9</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$StreamInputSource</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">5/5</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.prebuilt.StreamingCommand.html">StreamingCommand$StreamOutputSink</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">5/5</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5;</span>1.5</td></tr>
diff --git a/coverage/frame-summary.html b/coverage/frame-summary.html
index 70b98d8..5d8a388 100644
--- a/coverage/frame-summary.html
+++ b/coverage/frame-summary.html
@@ -16,11 +16,11 @@
<table class="report" id="packageResults">
<thead><tr> <td class="heading">Package</td> <td class="heading"># Classes</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead>
<tbody>
- <tr><td><b>All Packages</b></td><td class="value">313</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">2171</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:72px"><span class="text">5643/7814</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">785</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:70px"><span class="text">1907/2692</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.448634590377113;</span>2.449</td></tr>
+ <tr><td><b>All Packages</b></td><td class="value">313</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">2170</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:72px"><span class="text">5644/7814</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">785</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:70px"><span class="text">1907/2692</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.448634590377113;</span>2.449</td></tr>
<tr><td><a href="frame-summary-com.google.enterprise.adaptor.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.html"'>com.google.enterprise.adaptor</a></td><td class="value">219</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">876</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:84px"><span class="text">4651/5527</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">333</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:83px"><span class="text">1651/1984</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.5773694390715667;</span>2.577</td></tr>
<tr><td><a href="frame-summary-com.google.enterprise.adaptor.examples.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.examples.html"'>com.google.enterprise.adaptor.examples</a></td><td class="value">9</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">342</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:6px"><span class="text">22/364</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">83</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:7px"><span class="text">7/90</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.6122448979591835;</span>2.612</td></tr>
<tr><td><a href="frame-summary-com.google.enterprise.adaptor.experimental.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.experimental.html"'>com.google.enterprise.adaptor.experimental</a></td><td class="value">8</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">219</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:0px"><span class="text">0/219</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">77</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:0px"><span class="text">0/77</span></div></div></td></tr></table></td><td class="value"><span class="hidden">3.8;</span>3.8</td></tr>
- <tr><td><a href="frame-summary-com.google.enterprise.adaptor.prebuilt.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.prebuilt.html"'>com.google.enterprise.adaptor.prebuilt</a></td><td class="value">25</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">146</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:73px"><span class="text">396/542</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">57</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:67px"><span class="text">121/178</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.5934065934065935;</span>2.593</td></tr>
+ <tr><td><a href="frame-summary-com.google.enterprise.adaptor.prebuilt.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.prebuilt.html"'>com.google.enterprise.adaptor.prebuilt</a></td><td class="value">25</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">145</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:73px"><span class="text">397/542</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">57</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:67px"><span class="text">121/178</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.5934065934065935;</span>2.593</td></tr>
<tr><td><a href="frame-summary-com.google.enterprise.adaptor.secmgr.authncontroller.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.secmgr.authncontroller.html"'>com.google.enterprise.adaptor.secmgr.authncontroller</a></td><td class="value">6</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">26</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:58px"><span class="text">37/63</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">15</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:16px"><span class="text">3/18</span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.3333333333333333;</span>1.333</td></tr>
<tr><td><a href="frame-summary-com.google.enterprise.adaptor.secmgr.common.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.secmgr.common.html"'>com.google.enterprise.adaptor.secmgr.common</a></td><td class="value">5</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">80</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:25px"><span class="text">28/108</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">24</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:11px"><span class="text">3/27</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.0357142857142856;</span>2.036</td></tr>
<tr><td><a href="frame-summary-com.google.enterprise.adaptor.secmgr.config.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.secmgr.config.html"'>com.google.enterprise.adaptor.secmgr.config</a></td><td class="value">4</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">14</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:41px"><span class="text">10/24</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.0;</span>1</td></tr>
diff --git a/javadoc/overview-summary.html b/javadoc/overview-summary.html
index 012a59e..e418573 100644
--- a/javadoc/overview-summary.html
+++ b/javadoc/overview-summary.html
@@ -100,25 +100,37 @@
<p class="subTitle">
<div class="block"><p>Easily provide repository data to a Google Search Appliance (GSA).
- <p> If you'd like to use a language other than Java or if you have command
- line programs that can provide repository access, see if <a href="com/google/enterprise/adaptor/prebuilt/CommandLineAdaptor.html" title="class in com.google.enterprise.adaptor.prebuilt"><code>CommandLineAdaptor</code></a> fits your needs.
+ <p> Note: If instead of Java you'd like to use another language take a look
+ at <a href="com/google/enterprise/adaptor/prebuilt/CommandLineAdaptor.html" title="class in com.google.enterprise.adaptor.prebuilt"><code>CommandLineAdaptor</code></a>.
</p>
- <h3>Basic GSA Setup</h3>
+ <h1>Table Of Contents</h1>
+ <ul>
+ <li> <a href=#gsasetup>Basic GSA Setup </a></li>
+ <li> <a href=#runtempl>Running the Adaptor Template, as an initial test </a></li>
+ <li> <a href=#createown>Creating your own Adaptor </a></li>
+ <li> <a href=#testtip>Testing Tip </a></li>
+ <li> <a href=#admintip>Admin Tip </a></li>
+ <li> <a href=#service>Running as a Windows Service </a></li>
+ <li> <a href=#secure>Enabling Security </a></li>
+ </ul>
+
+ <h1><a name=gsasetup>Basic GSA Setup </a></h1>
<ol>
<li>Add the IP address of the computer that hosts the adaptor to the <b>List
of Trusted IP Addresses</b> on the GSA.
- <p>In the GSA's Admin Console, go to <b>Crawl and Index > Feeds</b>,
+ <p>In the GSA's Admin Console, go to <b>Content Sources > Feeds</b>,
and scroll down to <b>List of Trusted IP Addresses</b>. Add the IP address
for the adaptor to the list.</p>
- <li>Add the URLs provided by the adaptor to the <b>Follow and Crawl Only
- URLs with the Following Patterns</b> on the GSA.
- <p>In the Admin console, go to <b>Crawl And Index > Crawl URLs</b>, and
- scroll down to <b>Follow and Crawl Only URLs with the Following
- Patterns</b>. Add an entry like <code>hostname:port/</code> where <code>hostname</code> is the hostname of the machine that hosts the adaptor and <code>port</code> defaults to 5678 (read on to change port number).</p>
+ <li>Add the URLs provided by the adaptor to the <b>Follow Patterns</b> on the GSA.
+ <p>In the Admin console, go to <b>Content Sources > Web Crawl > Start and
+ Block URLs </b>, and scroll down to <b>Follow Patterns</b>. Add an entry like
+ <code>hostname:port/</code> where <code>hostname</code> is the hostname of the machine
+ that hosts the adaptor and <code>port</code> defaults to 5678 (read on to
+ change port number).</p>
</ol>
- <h3>Running the Adaptor Template, as an initial test</h3>
+ <h1><a name=runtempl>Running the Adaptor Template, as an initial test </a></h1>
<ol>
<li>You should have already installed JDK 6 or higher and gotten a plexi
release (download from https://code.google.com/p/plexi/). From the
@@ -155,12 +167,12 @@
<pre>java -cp adaptor-20130612-withlib.jar:examples/adaptor-20130612-examples.jar com.google.enterprise.adaptor.examples.AdaptorTemplate</pre>
<li> Ensure crawling is enabled on your GSA.
<p>
- Go to <b>Status and Reports</b> and click <b>Resume Crawl</b> if
- crawling system is currently paused.
+ Go to <b>Content Sources > Diagnostics > Crawl Status </b>
+ and click <b>Resume Crawl</b> if crawling system is currently paused.
<li> Confirm things ran successfully.
<p>
- In the GSA, go to <b>Crawl and Index > Feeds</b>.
+ In the GSA, go to <b>Contents Sources > Feeds</b>.
In the <b>Current Feeds</b> section, you should see an entry for a
"adaptor_HOSTNAME_PORT" (which can be changed by setting the
<code>feed.name</code> configuration variable).
@@ -169,7 +181,7 @@
requests for document contents being served.
</ol>
- <h3>Creating your own Adaptor</h3>
+ <h1><a name=createown>Creating your own Adaptor </a></h1>
<ol>
<li>Review JavaDoc for <a href="com/google/enterprise/adaptor/Adaptor.html" title="interface in com.google.enterprise.adaptor"><code>Adaptor</code></a>
and <a href="com/google/enterprise/adaptor/AbstractAdaptor.html" title="class in com.google.enterprise.adaptor"><code>AbstractAdaptor</code></a>.
@@ -185,7 +197,7 @@
GSA.
</ol>
- <h3>Testing Tip</h3>
+ <h1><a name=testtip>Testing Tip </a></h1>
<p>An adaptor, by default, will deny all document accesses, except from the
GSA. To allow debugging and testing an adaptor without a GSA, you can add a
hostname to the <code>server.fullAccessHosts</code> config key to allow that
@@ -194,7 +206,7 @@
HTTP headers. This can be very useful when combined with Firebug or the Web
Inspector in your browser to observe an Adaptor's behavior.
- <h3>Advanced</h3>
+ <h1><a name=admintip>Admin Tip </a></h1>
<p>You can set configuration variables on the command line instead of in
<code>adaptor-config.properties</code>. You are allowed multiple arguments
of the form "-Dconfigkey=configvalue". When providing a value on the command
@@ -204,7 +216,7 @@
com.google.enterprise.adaptor.examples.AdaptorTemplate -Dgsa.hostname=mygsahostname
-Dserver.port=6677</pre>
- <h3 id="windows-service">Running as a Windows Service</h3>
+ <h1><a name=service>Running as a Windows Service </a></h1>
<p>Download and extract prunsrv.exe from the
<a href="http://www.us.apache.org/dist/commons/daemon/binaries/windows/">
latest Windows binary download</a> of Apache Commons Daemon. If you are
@@ -230,7 +242,7 @@
<p>Where <code>someadaptor</code> is the same service name used during
registration.</p>
- <h3 id="secure-mode">Enabling Security</h3>
+ <h1><a name=secure>Enabling Security </a></h1>
<p>Security is not enabled by default because it requires a reasonable amount
of setup, on both the GSA and adaptor. The GSA needs a valid certificate for
the hostname you are accessing it with (<code>gsa.hostname</code>). Thus,
@@ -238,7 +250,7 @@
one. Setting up security is required before users can access non-public
documents directly from the adaptor.
- <h4>Creating Self-Signed Certificates</h4>
+ <h3>Creating Self-Signed Certificates</h3>
<p>In the GSA's Admin Console, go to <b>Administration > SSL Settings</b>.
Under the <b>Create a New SSL Certificate</b> heading change <b>Host
Name</b> to GSA's hostname written exactly as the adaptor will use.
@@ -297,7 +309,7 @@
<pre>keytool -importcert -keystore cacerts.jks -storepass changeit -file adaptor.crt -alias adaptor</pre>
<p>Answer "yes" to "Trust this certificate?"
- <h4>Exchanging Certificates</h4>
+ <h3>Exchanging Certificates</h3>
<p>To allow the adaptor to trust the GSA, execute:
<pre>keytool -importcert -keystore cacerts.jks -storepass changeit -file gsa.crt -alias gsa</pre>
<p>Answer "yes" to "Trust this certificate?"
@@ -309,7 +321,7 @@
Choose "adaptor.crt" in the adaptor's directory and click <b>Save
Settings</b>.
- <h4>Flipping the Switch</h4>
+ <h3>Flipping the Switch</h3>
<p>Now that everything is prepared, you can flip the security switch with the
adaptor by adding a line to your <code>adaptor-config.properties</code>:
<pre>server.secure=true</pre>
@@ -329,7 +341,7 @@
com.google.enterprise.adaptor.examples.AdaptorWithCrawlTimeMetadataTemplate
</pre>
- <h4>Enable Stricter Security (optional)</h4>
+ <h3>Enable Stricter Security (optional)</h3>
<p>There are additional security options you can control on the GSA.
You may want to try running an adaptor with server.secure set before
enabling these stricter features.