Regeneration from plexi 52142b6
diff --git a/coverage/com.google.enterprise.adaptor.AbstractAdaptor.html b/coverage/com.google.enterprise.adaptor.AbstractAdaptor.html
index fe6eed3..6bf312d 100644
--- a/coverage/com.google.enterprise.adaptor.AbstractAdaptor.html
+++ b/coverage/com.google.enterprise.adaptor.AbstractAdaptor.html
@@ -65,7 +65,7 @@
<td class="src"><pre class="src"> <span class="comment"> * and {@link Adaptor#getDocContent}.</span></pre></td></tr>
<tr> <td class="numLine"> 24</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 25</td> <td class="nbHitsCovered"> 321</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keyword">class</span> AbstractAdaptor <span class="keyword">implements</span> Adaptor {</pre></td></tr>
+<tr> <td class="numLineCover"> 25</td> <td class="nbHitsCovered"> 322</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keyword">class</span> AbstractAdaptor <span class="keyword">implements</span> Adaptor {</pre></td></tr>
<tr> <td class="numLineCover"> 26</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>
<tr> <td class="numLine"> 27</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> = Logger.getLogger(AbstractAdaptor.<span class="keyword">class</span>.getName());</pre></td></tr>
diff --git a/coverage/com.google.enterprise.adaptor.AbstractDocIdPusher.html b/coverage/com.google.enterprise.adaptor.AbstractDocIdPusher.html
index ac2816f..8e36b71 100644
--- a/coverage/com.google.enterprise.adaptor.AbstractDocIdPusher.html
+++ b/coverage/com.google.enterprise.adaptor.AbstractDocIdPusher.html
@@ -59,7 +59,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Abstract class providing most methods required for a {@code DocIdPusher}.</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"> 45</td> <td class="src"><pre class="src"> <span class="keyword">abstract</span> <span class="keyword">class</span> AbstractDocIdPusher <span class="keyword">implements</span> DocIdPusher {</pre></td></tr>
+<tr> <td class="numLineCover"> 22</td> <td class="nbHitsCovered"> 46</td> <td class="src"><pre class="src"> <span class="keyword">abstract</span> <span class="keyword">class</span> AbstractDocIdPusher <span class="keyword">implements</span> DocIdPusher {</pre></td></tr>
<tr> <td class="numLine"> 23</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 24</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.Acl.html b/coverage/com.google.enterprise.adaptor.Acl.html
index 4da119b..2b99d99 100644
--- a/coverage/com.google.enterprise.adaptor.Acl.html
+++ b/coverage/com.google.enterprise.adaptor.Acl.html
@@ -917,7 +917,7 @@
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 523</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> String toString() {</pre></td></tr>
-<tr> <td class="numLineCover"> 524</td> <td class="nbHitsUncovered"><a title="Line 524: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 524: Conditional coverage 50% (1/2)."> <span class="keyword">return</span> <span class="string">"Acl(caseSensitive="</span> + caseSensitive</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 524</td> <td class="nbHitsUncovered"><a title="Line 524: Conditional coverage 50% (1/2)."> 5</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 524: Conditional coverage 50% (1/2)."> <span class="keyword">return</span> <span class="string">"Acl(caseSensitive="</span> + caseSensitive</a></span></pre></td></tr>
<tr> <td class="numLine"> 525</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> + <span class="string">", inheritFrom="</span> + inheritFrom</pre></td></tr>
<tr> <td class="numLine"> 526</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.AclTransform.html b/coverage/com.google.enterprise.adaptor.AclTransform.html
index dfb59b7..564b0a4 100644
--- a/coverage/com.google.enterprise.adaptor.AclTransform.html
+++ b/coverage/com.google.enterprise.adaptor.AclTransform.html
@@ -73,9 +73,9 @@
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> List<Rule> rules;</pre></td></tr>
<tr> <td class="numLine"> 27</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 28</td> <td class="nbHitsCovered"> 186</td> <td class="src"><pre class="src"> <span class="keyword">public</span> AclTransform(List<Rule> rules) {</pre></td></tr>
-<tr> <td class="numLineCover"> 29</td> <td class="nbHitsCovered"> 186</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.rules = Collections.unmodifiableList(<span class="keyword">new</span> ArrayList<Rule>(rules));</pre></td></tr>
-<tr> <td class="numLineCover"> 30</td> <td class="nbHitsCovered"> 186</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 28</td> <td class="nbHitsCovered"> 187</td> <td class="src"><pre class="src"> <span class="keyword">public</span> AclTransform(List<Rule> rules) {</pre></td></tr>
+<tr> <td class="numLineCover"> 29</td> <td class="nbHitsCovered"> 187</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.rules = Collections.unmodifiableList(<span class="keyword">new</span> ArrayList<Rule>(rules));</pre></td></tr>
+<tr> <td class="numLineCover"> 30</td> <td class="nbHitsCovered"> 187</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 31</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 32</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.Application.html b/coverage/com.google.enterprise.adaptor.Application.html
index 7fd1da2..3e186cb 100644
--- a/coverage/com.google.enterprise.adaptor.Application.html
+++ b/coverage/com.google.enterprise.adaptor.Application.html
@@ -101,7 +101,7 @@
<td class="src"><pre class="src"> <span class="comment"> * shutdown handling, and more.</span></pre></td></tr>
<tr> <td class="numLine"> 40</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 41</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">final</span> <span class="keyword">class</span> Application {</pre></td></tr>
+<tr> <td class="numLineCover"> 41</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">final</span> <span class="keyword">class</span> Application {</pre></td></tr>
<tr> <td class="numLine"> 42</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String SLEEP_PATH = <span class="string">"/sleep"</span>;</pre></td></tr>
<tr> <td class="numLine"> 43</td> <td class="nbHits"> </td>
@@ -366,10 +366,10 @@
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 204</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> conn.getInputStream().close();</pre></td></tr>
<tr> <td class="numLineCover"> 205</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> log.finer(<span class="string">"Closed shutdown GET"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 206</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="numLineCover"> 207</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> log.log(Level.WARNING, <span class="string">"Error closing stream of shutdown GET"</span>, ex);</pre></td></tr>
+<tr> <td class="numLineCover"> 206</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (IOException ex) {</pre></td></tr>
+<tr> <td class="numLineCover"> 207</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> log.log(Level.WARNING, <span class="string">"Error closing stream of shutdown GET"</span>, ex);</pre></td></tr>
<tr> <td class="numLineCover"> 208</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 209</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 209</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 210</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }).start();</pre></td></tr>
<tr> <td class="numLineCover"> 211</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> }</pre></td></tr>
diff --git a/coverage/com.google.enterprise.adaptor.CircularBufferHandler.html b/coverage/com.google.enterprise.adaptor.CircularBufferHandler.html
index 881f54a..8ebc157 100644
--- a/coverage/com.google.enterprise.adaptor.CircularBufferHandler.html
+++ b/coverage/com.google.enterprise.adaptor.CircularBufferHandler.html
@@ -103,17 +103,17 @@
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 47</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"> 48</td> <td class="nbHitsUncovered"><a title="Line 48: Conditional coverage 50% (1/2)."> 138</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 48: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!isLoggable(record)) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 48</td> <td class="nbHitsUncovered"><a title="Line 48: Conditional coverage 50% (1/2)."> 139</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 48: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!isLoggable(record)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 49</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"> 50</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 51</td> <td class="nbHitsCovered"> 138</td> <td class="src"><pre class="src"> buffer[tail] = record;</pre></td></tr>
-<tr> <td class="numLineCover"> 52</td> <td class="nbHitsCovered"> 138</td> <td class="src"><pre class="src"> tail = (tail + 1) % buffer.length;</pre></td></tr>
-<tr> <td class="numLineCover"> 53</td> <td class="nbHitsUncovered"><a title="Line 53: Conditional coverage 50% (1/2)."> 138</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 53: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (head == tail) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 51</td> <td class="nbHitsCovered"> 139</td> <td class="src"><pre class="src"> buffer[tail] = record;</pre></td></tr>
+<tr> <td class="numLineCover"> 52</td> <td class="nbHitsCovered"> 139</td> <td class="src"><pre class="src"> tail = (tail + 1) % buffer.length;</pre></td></tr>
+<tr> <td class="numLineCover"> 53</td> <td class="nbHitsUncovered"><a title="Line 53: Conditional coverage 50% (1/2)."> 139</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 53: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (head == tail) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 54</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"> 55</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 56</td> <td class="nbHitsCovered"> 138</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 56</td> <td class="nbHitsCovered"> 139</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"> </pre></td></tr>
<tr> <td class="numLine"> 58</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.Config.html b/coverage/com.google.enterprise.adaptor.Config.html
index bdbbd0c..eb00496 100644
--- a/coverage/com.google.enterprise.adaptor.Config.html
+++ b/coverage/com.google.enterprise.adaptor.Config.html
@@ -282,17 +282,17 @@
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 131</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/** Configuration keys whose default value is {@code null}. */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 132</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> Set<String> noDefaultConfig = <span class="keyword">new</span> HashSet<String>();</pre></td></tr>
+<tr> <td class="numLineCover"> 132</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> Set<String> noDefaultConfig = <span class="keyword">new</span> HashSet<String>();</pre></td></tr>
<tr> <td class="numLine"> 133</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/** Default configuration values. */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 134</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> Properties defaultConfig = <span class="keyword">new</span> Properties();</pre></td></tr>
+<tr> <td class="numLineCover"> 134</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> Properties defaultConfig = <span class="keyword">new</span> Properties();</pre></td></tr>
<tr> <td class="numLine"> 135</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/** Overriding configuration values loaded from command line. */</span></pre></td></tr>
<tr> <td class="numLine"> 136</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Reads require no additional locks, but modifications require lock on 'this'</span></pre></td></tr>
<tr> <td class="numLine"> 137</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// to prevent lost updates.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 138</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">volatile</span> Properties config = <span class="keyword">new</span> Properties(defaultConfig);</pre></td></tr>
+<tr> <td class="numLineCover"> 138</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">volatile</span> Properties config = <span class="keyword">new</span> Properties(defaultConfig);</pre></td></tr>
<tr> <td class="numLine"> 139</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 140</td> <td class="nbHits"> </td>
@@ -303,7 +303,7 @@
<td class="src"><pre class="src"> <span class="keyword">private</span> File configFile;</pre></td></tr>
<tr> <td class="numLine"> 143</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">long</span> configFileLastModified;</pre></td></tr>
-<tr> <td class="numLineCover"> 144</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> <span class="keyword">private</span> List<ConfigModificationListener> modificationListeners</pre></td></tr>
+<tr> <td class="numLineCover"> 144</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> <span class="keyword">private</span> List<ConfigModificationListener> modificationListeners</pre></td></tr>
<tr> <td class="numLine"> 145</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> = <span class="keyword">new</span> CopyOnWriteArrayList<ConfigModificationListener>();</pre></td></tr>
<tr> <td class="numLine"> 146</td> <td class="nbHits"> </td>
@@ -316,24 +316,24 @@
<td class="src"><pre class="src"> <span class="comment"> * values by default.</span></pre></td></tr>
<tr> <td class="numLine"> 150</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 151</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> <span class="keyword">private</span> Map<String, ValueComputer> computeMap</pre></td></tr>
+<tr> <td class="numLineCover"> 151</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> <span class="keyword">private</span> Map<String, ValueComputer> computeMap</pre></td></tr>
<tr> <td class="numLine"> 152</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> = <span class="keyword">new</span> HashMap<String, ValueComputer>();</pre></td></tr>
<tr> <td class="numLine"> 153</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 154</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> <span class="keyword">public</span> Config() {</pre></td></tr>
-<tr> <td class="numLineCover"> 155</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> String hostname = <span class="keyword">null</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 154</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> <span class="keyword">public</span> Config() {</pre></td></tr>
+<tr> <td class="numLineCover"> 155</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> String hostname = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 156</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 157</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> hostname = InetAddress.getLocalHost().getCanonicalHostName();</pre></td></tr>
-<tr> <td class="numLineCover"> 158</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> hostname = hostname.toLowerCase(Locale.ENGLISH); <span class="comment">// work around GSA 7.0</span></pre></td></tr>
+<tr> <td class="numLineCover"> 157</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> hostname = InetAddress.getLocalHost().getCanonicalHostName();</pre></td></tr>
+<tr> <td class="numLineCover"> 158</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> hostname = hostname.toLowerCase(Locale.ENGLISH); <span class="comment">// work around GSA 7.0</span></pre></td></tr>
<tr> <td class="numLineCover"> 159</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (UnknownHostException ex) {</span></pre></td></tr>
<tr> <td class="numLine"> 160</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Ignore</span></pre></td></tr>
-<tr> <td class="numLineCover"> 161</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 162</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.hostname"</span>, hostname);</pre></td></tr>
-<tr> <td class="numLineCover"> 163</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.port"</span>, <span class="string">"5678"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 164</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.reverseProxyPort"</span>, <span class="string">"GENERATE"</span>, <span class="keyword">new</span> ValueComputer() {</pre></td></tr>
+<tr> <td class="numLineCover"> 161</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 162</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.hostname"</span>, hostname);</pre></td></tr>
+<tr> <td class="numLineCover"> 163</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.port"</span>, <span class="string">"5678"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 164</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.reverseProxyPort"</span>, <span class="string">"GENERATE"</span>, <span class="keyword">new</span> ValueComputer() {</pre></td></tr>
<tr> <td class="numLine"> 165</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> String compute(String rawValue) {</pre></td></tr>
<tr> <td class="numLineCover"> 166</td> <td class="nbHitsUncovered"><a title="Line 166: Conditional coverage 50% (1/2)."> 26</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 166: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="string">"GENERATE"</span>.equals(rawValue)) {</a></span></pre></td></tr>
@@ -345,7 +345,7 @@
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 171</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> });</pre></td></tr>
-<tr> <td class="numLineCover"> 172</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.reverseProxyProtocol"</span>, <span class="string">"GENERATE"</span>, <span class="keyword">new</span> ValueComputer() {</pre></td></tr>
+<tr> <td class="numLineCover"> 172</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.reverseProxyProtocol"</span>, <span class="string">"GENERATE"</span>, <span class="keyword">new</span> ValueComputer() {</pre></td></tr>
<tr> <td class="numLine"> 173</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> String compute(String rawValue) {</pre></td></tr>
<tr> <td class="numLineCover"> 174</td> <td class="nbHitsUncovered"><a title="Line 174: Conditional coverage 50% (1/2)."> 26</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 174: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="string">"GENERATE"</span>.equals(rawValue)) {</a></span></pre></td></tr>
@@ -357,30 +357,30 @@
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 179</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> });</pre></td></tr>
-<tr> <td class="numLineCover"> 180</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.dashboardPort"</span>, <span class="string">"5679"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 181</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.docIdPath"</span>, <span class="string">"/doc/"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 182</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.fullAccessHosts"</span>, <span class="string">""</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 183</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.secure"</span>, <span class="string">"false"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 184</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.keyAlias"</span>, <span class="string">"adaptor"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 185</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.maxWorkerThreads"</span>, <span class="string">"16"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 180</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.dashboardPort"</span>, <span class="string">"5679"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 181</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.docIdPath"</span>, <span class="string">"/doc/"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 182</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.fullAccessHosts"</span>, <span class="string">""</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 183</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.secure"</span>, <span class="string">"false"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 184</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.keyAlias"</span>, <span class="string">"adaptor"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 185</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.maxWorkerThreads"</span>, <span class="string">"16"</span>);</pre></td></tr>
<tr> <td class="numLine"> 186</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// A queue that takes one second to drain, assuming 16 threads and 100 ms</span></pre></td></tr>
<tr> <td class="numLine"> 187</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// for each request.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 188</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.queueCapacity"</span>, <span class="string">"160"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 189</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.useCompression"</span>, <span class="string">"true"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 190</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.samlEntityId"</span>, <span class="string">"http://google.com/enterprise/gsa/adaptor"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 191</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.hostname"</span>, <span class="keyword">null</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 192</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.characterEncoding"</span>, <span class="string">"UTF-8"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 193</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.version"</span>, <span class="string">"GENERATE"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 194</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.614FeedWorkaroundEnabled"</span>, <span class="string">"false"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 195</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.70AuthMethodWorkaroundEnabled"</span>, <span class="string">"false"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 196</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.samlEntityId"</span>,</pre></td></tr>
+<tr> <td class="numLineCover"> 188</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.queueCapacity"</span>, <span class="string">"160"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 189</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.useCompression"</span>, <span class="string">"true"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 190</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"server.samlEntityId"</span>, <span class="string">"http://google.com/enterprise/gsa/adaptor"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 191</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.hostname"</span>, <span class="keyword">null</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 192</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.characterEncoding"</span>, <span class="string">"UTF-8"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 193</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.version"</span>, <span class="string">"GENERATE"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 194</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.614FeedWorkaroundEnabled"</span>, <span class="string">"false"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 195</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.70AuthMethodWorkaroundEnabled"</span>, <span class="string">"false"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 196</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.samlEntityId"</span>,</pre></td></tr>
<tr> <td class="numLine"> 197</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="string">"http://google.com/enterprise/gsa/security-manager"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 198</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.scoringType"</span>, <span class="string">"content"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 199</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"docId.isUrl"</span>, <span class="string">"false"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 200</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"feed.name"</span>, <span class="string">"GENERATE"</span>, <span class="keyword">new</span> ValueComputer() {</pre></td></tr>
+<tr> <td class="numLineCover"> 198</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.scoringType"</span>, <span class="string">"content"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 199</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"docId.isUrl"</span>, <span class="string">"false"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 200</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"feed.name"</span>, <span class="string">"GENERATE"</span>, <span class="keyword">new</span> ValueComputer() {</pre></td></tr>
<tr> <td class="numLine"> 201</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> String compute(String rawValue) {</pre></td></tr>
<tr> <td class="numLineCover"> 202</td> <td class="nbHitsCovered"><a title="Line 202: Conditional coverage 100% (2/2)."> 25</a></td> <td class="src"><pre class="src"> <a title="Line 202: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (<span class="string">"GENERATE"</span>.equals(rawValue)) {</a></pre></td></tr>
@@ -394,23 +394,23 @@
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 208</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> });</pre></td></tr>
-<tr> <td class="numLineCover"> 209</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"feed.noRecrawlBitEnabled"</span>, <span class="string">"false"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 210</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"feed.crawlImmediatelyBitEnabled"</span>, <span class="string">"false"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 209</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"feed.noRecrawlBitEnabled"</span>, <span class="string">"false"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 210</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"feed.crawlImmediatelyBitEnabled"</span>, <span class="string">"false"</span>);</pre></td></tr>
<tr> <td class="numLine"> 211</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">//addKey("feed.noFollowBitEnabled", "false");</span></pre></td></tr>
-<tr> <td class="numLineCover"> 212</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"feed.maxUrls"</span>, <span class="string">"5000"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 213</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"adaptor.pushDocIdsOnStartup"</span>, <span class="string">"true"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 212</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"feed.maxUrls"</span>, <span class="string">"5000"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 213</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"adaptor.pushDocIdsOnStartup"</span>, <span class="string">"true"</span>);</pre></td></tr>
<tr> <td class="numLine"> 214</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// 3:00 AM every day.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 215</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"adaptor.fullListingSchedule"</span>, <span class="string">"0 3 * * *"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 215</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"adaptor.fullListingSchedule"</span>, <span class="string">"0 3 * * *"</span>);</pre></td></tr>
<tr> <td class="numLine"> 216</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// 15 minutes.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 217</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"adaptor.incrementalPollPeriodSecs"</span>, <span class="string">"900"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 218</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"adaptor.docContentTimeoutSecs"</span>, <span class="string">"180"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 219</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"adaptor.docHeaderTimeoutSecs"</span>, <span class="string">"30"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 220</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"transform.pipeline"</span>, <span class="string">""</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 221</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"journal.reducedMem"</span>, <span class="string">"true"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 222</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.acceptsDocControlsHeader"</span>, <span class="string">"GENERATE"</span>, <span class="keyword">new</span> ValueComputer() {</pre></td></tr>
+<tr> <td class="numLineCover"> 217</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"adaptor.incrementalPollPeriodSecs"</span>, <span class="string">"900"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 218</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"adaptor.docContentTimeoutSecs"</span>, <span class="string">"180"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 219</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"adaptor.docHeaderTimeoutSecs"</span>, <span class="string">"30"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 220</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"transform.pipeline"</span>, <span class="string">""</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 221</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"journal.reducedMem"</span>, <span class="string">"true"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 222</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> addKey(<span class="string">"gsa.acceptsDocControlsHeader"</span>, <span class="string">"GENERATE"</span>, <span class="keyword">new</span> ValueComputer() {</pre></td></tr>
<tr> <td class="numLine"> 223</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> String compute(String rawValue) {</pre></td></tr>
<tr> <td class="numLineCover"> 224</td> <td class="nbHitsUncovered"><a title="Line 224: Conditional coverage 50% (1/2)."> 13</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 224: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!<span class="string">"GENERATE"</span>.equals(rawValue)) {</a></span></pre></td></tr>
@@ -436,7 +436,7 @@
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 239</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> });</pre></td></tr>
-<tr> <td class="numLineCover"> 240</td> <td class="nbHitsCovered"> 58</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 240</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 241</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 242</td> <td class="nbHits"> </td>
@@ -1301,27 +1301,27 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 734</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> addKey(String key, String defaultValue) {</pre></td></tr>
-<tr> <td class="numLineCover"> 735</td> <td class="nbHitsCovered"><a title="Line 735: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 1889</a></td> <td class="src"><pre class="src"> <a title="Line 735: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (defaultConfig.containsKey(key) || noDefaultConfig.contains(key)) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 735</td> <td class="nbHitsCovered"><a title="Line 735: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 1922</a></td> <td class="src"><pre class="src"> <a title="Line 735: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (defaultConfig.containsKey(key) || noDefaultConfig.contains(key)) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 736</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalStateException(<span class="string">"Key already added: "</span> + key);</pre></td></tr>
<tr> <td class="numLine"> 737</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 738</td> <td class="nbHitsCovered"><a title="Line 738: Conditional coverage 100% (2/2)."> 1887</a></td> <td class="src"><pre class="src"> <a title="Line 738: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (defaultValue == <span class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 739</td> <td class="nbHitsCovered"> 60</td> <td class="src"><pre class="src"> noDefaultConfig.add(key);</pre></td></tr>
+<tr> <td class="numLineCover"> 738</td> <td class="nbHitsCovered"><a title="Line 738: Conditional coverage 100% (2/2)."> 1920</a></td> <td class="src"><pre class="src"> <a title="Line 738: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (defaultValue == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 739</td> <td class="nbHitsCovered"> 61</td> <td class="src"><pre class="src"> noDefaultConfig.add(key);</pre></td></tr>
<tr> <td class="numLine"> 740</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 741</td> <td class="nbHitsCovered"> 1827</td> <td class="src"><pre class="src"> defaultConfig.setProperty(key, defaultValue);</pre></td></tr>
+<tr> <td class="numLineCover"> 741</td> <td class="nbHitsCovered"> 1859</td> <td class="src"><pre class="src"> defaultConfig.setProperty(key, defaultValue);</pre></td></tr>
<tr> <td class="numLine"> 742</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 743</td> <td class="nbHitsCovered"> 1887</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 743</td> <td class="nbHitsCovered"> 1920</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 744</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 745</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">synchronized</span> <span class="keyword">void</span> addKey(String key, String defaultValue,</pre></td></tr>
<tr> <td class="numLine"> 746</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> ValueComputer computer) {</pre></td></tr>
-<tr> <td class="numLineCover"> 747</td> <td class="nbHitsCovered"> 233</td> <td class="src"><pre class="src"> addKey(key, defaultValue);</pre></td></tr>
-<tr> <td class="numLineCover"> 748</td> <td class="nbHitsCovered"> 233</td> <td class="src"><pre class="src"> computeMap.put(key, computer);</pre></td></tr>
-<tr> <td class="numLineCover"> 749</td> <td class="nbHitsCovered"> 233</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 747</td> <td class="nbHitsCovered"> 237</td> <td class="src"><pre class="src"> addKey(key, defaultValue);</pre></td></tr>
+<tr> <td class="numLineCover"> 748</td> <td class="nbHitsCovered"> 237</td> <td class="src"><pre class="src"> computeMap.put(key, computer);</pre></td></tr>
+<tr> <td class="numLineCover"> 749</td> <td class="nbHitsCovered"> 237</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 750</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 751</td> <td class="nbHits"> </td>
@@ -1362,8 +1362,8 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 773</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">synchronized</span> <span class="keyword">void</span> setValue(String key, String value) {</pre></td></tr>
-<tr> <td class="numLineCover"> 774</td> <td class="nbHitsCovered"> 198</td> <td class="src"><pre class="src"> config.setProperty(key, value);</pre></td></tr>
-<tr> <td class="numLineCover"> 775</td> <td class="nbHitsCovered"> 198</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 774</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> config.setProperty(key, value);</pre></td></tr>
+<tr> <td class="numLineCover"> 775</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 776</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 777</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.DocId.html b/coverage/com.google.enterprise.adaptor.DocId.html
index b069072..e9ac0fc 100644
--- a/coverage/com.google.enterprise.adaptor.DocId.html
+++ b/coverage/com.google.enterprise.adaptor.DocId.html
@@ -90,13 +90,13 @@
<td class="src"><pre class="src"> <span class="comment"> * @param id non-{@code null} document identifier</span></pre></td></tr>
<tr> <td class="numLine"> 37</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 38</td> <td class="nbHitsCovered"> 60438</td> <td class="src"><pre class="src"> <span class="keyword">public</span> DocId(String id) {</pre></td></tr>
-<tr> <td class="numLineCover"> 39</td> <td class="nbHitsCovered"><a title="Line 39: Conditional coverage 100% (2/2)."> 60438</a></td> <td class="src"><pre class="src"> <a title="Line 39: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (id == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 38</td> <td class="nbHitsCovered"> 60439</td> <td class="src"><pre class="src"> <span class="keyword">public</span> DocId(String id) {</pre></td></tr>
+<tr> <td class="numLineCover"> 39</td> <td class="nbHitsCovered"><a title="Line 39: Conditional coverage 100% (2/2)."> 60439</a></td> <td class="src"><pre class="src"> <a title="Line 39: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (id == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 40</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> NullPointerException();</pre></td></tr>
<tr> <td class="numLine"> 41</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 42</td> <td class="nbHitsCovered"> 60437</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.uniqId = id;</pre></td></tr>
-<tr> <td class="numLineCover"> 43</td> <td class="nbHitsCovered"> 60437</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 42</td> <td class="nbHitsCovered"> 60438</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.uniqId = id;</pre></td></tr>
+<tr> <td class="numLineCover"> 43</td> <td class="nbHitsCovered"> 60438</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 44</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 45</td> <td class="nbHits"> </td>
@@ -118,7 +118,7 @@
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 54</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> String toString() {</pre></td></tr>
-<tr> <td class="numLineCover"> 55</td> <td class="nbHitsCovered"> 30</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="string">"DocId("</span> + uniqId + <span class="string">")"</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 55</td> <td class="nbHitsCovered"> 34</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="string">"DocId("</span> + uniqId + <span class="string">")"</span>;</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>
diff --git a/coverage/com.google.enterprise.adaptor.DocIdSender.html b/coverage/com.google.enterprise.adaptor.DocIdSender.html
index b7cad1d..670b45f 100644
--- a/coverage/com.google.enterprise.adaptor.DocIdSender.html
+++ b/coverage/com.google.enterprise.adaptor.DocIdSender.html
@@ -12,9 +12,9 @@
<div class="separator"> </div>
<table class="report">
<thead><tr> <td class="heading">Classes in this File</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>
- <tr><td><a href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">31</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:81px"><span class="text">136/167</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">12</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:77px"><span class="text">42/54</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.6;</span>4.6</td></tr>
- <tr><td><a href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender$AclItem</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">12/12</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">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">4/4</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.6;</span>4.6</td></tr>
- <tr><td><a href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender$Item</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">4.6;</span>4.6</td></tr>
+ <tr><td><a href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">31</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:81px"><span class="text">139/170</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">12</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:77px"><span class="text">42/54</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.375;</span>4.375</td></tr>
+ <tr><td><a href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender$AclItem</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">13/13</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">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">4/4</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.375;</span>4.375</td></tr>
+ <tr><td><a href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender$Item</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">4.375;</span>4.375</td></tr>
</table>
<div class="separator"> </div>
@@ -84,20 +84,20 @@
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> Config config;</pre></td></tr>
<tr> <td class="numLine"> 33</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> Adaptor adaptor;</pre></td></tr>
-<tr> <td class="numLineCover"> 34</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> ExceptionHandler defaultErrorHandler</pre></td></tr>
+<tr> <td class="numLineCover"> 34</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> ExceptionHandler defaultErrorHandler</pre></td></tr>
<tr> <td class="numLine"> 35</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> = ExceptionHandlers.defaultHandler();</pre></td></tr>
<tr> <td class="numLine"> 36</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 37</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> DocIdSender(GsaFeedFileMaker fileMaker, GsaFeedFileSender fileSender,</pre></td></tr>
-<tr> <td class="numLineCover"> 38</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> Journal journal, Config config, Adaptor adaptor) {</pre></td></tr>
-<tr> <td class="numLineCover"> 39</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.fileMaker = fileMaker;</pre></td></tr>
-<tr> <td class="numLineCover"> 40</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.fileSender = fileSender;</pre></td></tr>
-<tr> <td class="numLineCover"> 41</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.journal = journal;</pre></td></tr>
-<tr> <td class="numLineCover"> 42</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.config = config;</pre></td></tr>
-<tr> <td class="numLineCover"> 43</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.adaptor = adaptor;</pre></td></tr>
-<tr> <td class="numLineCover"> 44</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 38</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> Journal journal, Config config, Adaptor adaptor) {</pre></td></tr>
+<tr> <td class="numLineCover"> 39</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.fileMaker = fileMaker;</pre></td></tr>
+<tr> <td class="numLineCover"> 40</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.fileSender = fileSender;</pre></td></tr>
+<tr> <td class="numLineCover"> 41</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.journal = journal;</pre></td></tr>
+<tr> <td class="numLineCover"> 42</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.config = config;</pre></td></tr>
+<tr> <td class="numLineCover"> 43</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.adaptor = adaptor;</pre></td></tr>
+<tr> <td class="numLineCover"> 44</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 45</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 46</td> <td class="nbHits"> </td>
@@ -112,17 +112,17 @@
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> pushFullDocIdsFromAdaptor(ExceptionHandler handler)</pre></td></tr>
<tr> <td class="numLine"> 51</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">throws</span> InterruptedException {</pre></td></tr>
-<tr> <td class="numLineCover"> 52</td> <td class="nbHitsCovered"><a title="Line 52: Conditional coverage 100% (2/2)."> 13</a></td> <td class="src"><pre class="src"> <a title="Line 52: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (handler == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 52</td> <td class="nbHitsCovered"><a title="Line 52: Conditional coverage 100% (2/2)."> 14</a></td> <td class="src"><pre class="src"> <a title="Line 52: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (handler == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 53</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> NullPointerException();</pre></td></tr>
<tr> <td class="numLine"> 54</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 55</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> log.info(<span class="string">"Beginning getDocIds"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 56</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> journal.recordFullPushStarted();</pre></td></tr>
-<tr> <td class="numLineCover"> 57</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> <span class="keyword">for</span> (<span class="keyword">int</span> ntries = 1;; ntries++) {</pre></td></tr>
-<tr> <td class="numLineCover"> 58</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> keepGoing = <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 55</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> log.info(<span class="string">"Beginning getDocIds"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 56</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> journal.recordFullPushStarted();</pre></td></tr>
+<tr> <td class="numLineCover"> 57</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> <span class="keyword">for</span> (<span class="keyword">int</span> ntries = 1;; ntries++) {</pre></td></tr>
+<tr> <td class="numLineCover"> 58</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> keepGoing = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine"> 59</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 60</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> adaptor.getDocIds(<span class="keyword">this</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 60</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> adaptor.getDocIds(<span class="keyword">this</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 61</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">break</span>; <span class="comment">// Success</span></pre></td></tr>
<tr> <td class="numLineCover"> 62</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (InterruptedException ex) {</pre></td></tr>
<tr> <td class="numLine"> 63</td> <td class="nbHits"> </td>
@@ -130,9 +130,9 @@
<tr> <td class="numLineCover"> 64</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> journal.recordFullPushInterrupted();</pre></td></tr>
<tr> <td class="numLineCover"> 65</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> log.info(<span class="string">"Interrupted. Aborted getDocIds"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 66</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> ex;</pre></td></tr>
-<tr> <td class="numLineCover"> 67</td> <td class="nbHitsCovered"> 11</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (Exception ex) {</pre></td></tr>
-<tr> <td class="numLineCover"> 68</td> <td class="nbHitsCovered"> 11</td> <td class="src"><pre class="src"> log.log(Level.WARNING, <span class="string">"Exception during getDocIds"</span>, ex);</pre></td></tr>
-<tr> <td class="numLineCover"> 69</td> <td class="nbHitsCovered"> 11</td> <td class="src"><pre class="src"> keepGoing = handler.handleException(ex, ntries);</pre></td></tr>
+<tr> <td class="numLineCover"> 67</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (Exception ex) {</pre></td></tr>
+<tr> <td class="numLineCover"> 68</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> log.log(Level.WARNING, <span class="string">"Exception during getDocIds"</span>, ex);</pre></td></tr>
+<tr> <td class="numLineCover"> 69</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> keepGoing = handler.handleException(ex, ntries);</pre></td></tr>
<tr> <td class="numLine"> 70</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 71</td> <td class="nbHitsCovered"><a title="Line 71: Conditional coverage 100% (2/2)."> 2</a></td> <td class="src"><pre class="src"> <a title="Line 71: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (keepGoing) {</a></pre></td></tr>
@@ -238,397 +238,409 @@
<tr> <td class="numLineCover"> 138</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> acls.add(<span class="keyword">new</span> AclItem(me.getKey(), me.getValue()));</pre></td></tr>
<tr> <td class="numLine"> 139</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 140</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> AclItem acl = pushItems(acls.iterator(), handler);</pre></td></tr>
-<tr> <td class="numLineCover"> 141</td> <td class="nbHitsCovered"><a title="Line 141: Conditional coverage 100% (2/2)."> 2</a></td> <td class="src"><pre class="src"> <a title="Line 141: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> acl == <span class="keyword">null</span> ? <span class="keyword">null</span> : acl.getDocId();</a></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>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 144</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> @Override</pre></td></tr>
+<tr> <td class="numLineCover"> 140</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.log(Level.FINE, <span class="string">"about to push named resources: {0}"</span>, acls);</pre></td></tr>
+<tr> <td class="numLineCover"> 141</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> AclItem acl = pushItems(acls.iterator(), handler);</pre></td></tr>
+<tr> <td class="numLineCover"> 142</td> <td class="nbHitsCovered"><a title="Line 142: Conditional coverage 100% (2/2)."> 2</a></td> <td class="src"><pre class="src"> <a title="Line 142: Conditional coverage 100% (2/2)."> DocId result = (acl == <span class="keyword">null</span>) ? <span class="keyword">null</span> : acl.getDocId();</a></pre></td></tr>
+<tr> <td class="numLineCover"> 143</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.log(Level.FINE, <span class="string">"return value: {0}"</span>, result);</pre></td></tr>
+<tr> <td class="numLineCover"> 144</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> result;</pre></td></tr>
<tr> <td class="numLine"> 145</td> <td class="nbHits"> </td>
- <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>
+ <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 146</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> </pre></td></tr>
+<tr> <td class="numLine"> 147</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> @Override</pre></td></tr>
+<tr> <td class="numLine"> 148</td> <td class="nbHits"> </td>
+ <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"> 149</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"> 147</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"> 148</td> <td class="nbHitsCovered"><a title="Line 148: Conditional coverage 100% (2/2)."> 20</a></td> <td class="src"><pre class="src"> <a title="Line 148: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (handler == <span class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 149</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> handler = defaultErrorHandler;</pre></td></tr>
-<tr> <td class="numLine"> 150</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 150</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"> 151</td> <td class="nbHitsCovered"><a title="Line 151: Conditional coverage 100% (2/2)."> 20</a></td> <td class="src"><pre class="src"> <a title="Line 151: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (handler == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 152</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> handler = defaultErrorHandler;</pre></td></tr>
+<tr> <td class="numLine"> 153</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 151</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"> 152</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"> 153</td> <td class="nbHitsCovered"><a title="Line 153: Conditional coverage 100% (2/2)."> 26</a></td> <td class="src"><pre class="src"> <a title="Line 153: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (items.hasNext()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 154</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"> 155</td> <td class="nbHitsCovered"><a title="Line 155: Conditional coverage 100% (2/2)."> 24</a></td> <td class="src"><pre class="src"> <a title="Line 155: 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"> 156</td> <td class="nbHitsCovered"><a title="Line 156: Conditional coverage 100% (2/2)."> 20</a></td> <td class="src"><pre class="src"> <a title="Line 156: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!items.hasNext()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 157</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">break</span>;</pre></td></tr>
-<tr> <td class="numLine"> 158</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 154</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"> 155</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"> 156</td> <td class="nbHitsCovered"><a title="Line 156: Conditional coverage 100% (2/2)."> 26</a></td> <td class="src"><pre class="src"> <a title="Line 156: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (items.hasNext()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 157</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"> 158</td> <td class="nbHitsCovered"><a title="Line 158: Conditional coverage 100% (2/2)."> 24</a></td> <td class="src"><pre class="src"> <a title="Line 158: 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"> 159</td> <td class="nbHitsCovered"><a title="Line 159: Conditional coverage 100% (2/2)."> 20</a></td> <td class="src"><pre class="src"> <a title="Line 159: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!items.hasNext()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 160</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">break</span>;</pre></td></tr>
+<tr> <td class="numLine"> 161</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 159</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> batch.add(items.next());</pre></td></tr>
-<tr> <td class="numLine"> 160</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 161</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"Pushing group of {0} items"</span>, batch.size());</pre></td></tr>
-<tr> <td class="numLine"> 162</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> T failedId;</pre></td></tr>
+<tr> <td class="numLineCover"> 162</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> batch.add(items.next());</pre></td></tr>
<tr> <td class="numLine"> 163</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 164</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> failedId = pushSizedBatchOfRecords(batch, handler);</pre></td></tr>
-<tr> <td class="numLineCover"> 165</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (InterruptedException ex) {</pre></td></tr>
-<tr> <td class="numLineCover"> 166</td> <td class="nbHitsCovered"><a title="Line 166: Conditional coverage 100% (2/2)."> 2</a></td> <td class="src"><pre class="src"> <a title="Line 166: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (firstBatch) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 167</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> ex;</pre></td></tr>
-<tr> <td class="numLine"> 168</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLine"> 169</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">// If this is not the first batch, then some items have already been</span></pre></td></tr>
-<tr> <td class="numLine"> 170</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">// sent. Thus, return gracefully instead of throwing an exception so</span></pre></td></tr>
-<tr> <td class="numLine"> 171</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">// that the caller can discover what was sent.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 172</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"Pushing items interrupted"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 173</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> Thread.currentThread().interrupt();</pre></td></tr>
-<tr> <td class="numLineCover"> 174</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> batch.get(0);</pre></td></tr>
-<tr> <td class="numLine"> 175</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 176</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 177</td> <td class="nbHitsCovered"><a title="Line 177: Conditional coverage 100% (2/2)."> 8</a></td> <td class="src"><pre class="src"> <a title="Line 177: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (failedId != <span class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 178</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"Failed to push all items. Failed on: {0}"</span>,</pre></td></tr>
-<tr> <td class="numLine"> 179</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> failedId);</pre></td></tr>
-<tr> <td class="numLineCover"> 180</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> failedId;</pre></td></tr>
-<tr> <td class="numLine"> 181</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 182</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"> 183</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> journal.recordDocIdPush(batch);</pre></td></tr>
-<tr> <td class="numLineCover"> 184</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 185</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"> 186</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="numLine"> 187</td> <td class="nbHits"> </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>
- <td class="src"><pre class="src"> <span class="keyword">public</span> GroupPrincipal pushGroupDefinitions(</pre></td></tr>
+<tr> <td class="numLineCover"> 164</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"Pushing group of {0} items"</span>, batch.size());</pre></td></tr>
+<tr> <td class="numLine"> 165</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> T failedId;</pre></td></tr>
+<tr> <td class="numLine"> 166</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
+<tr> <td class="numLineCover"> 167</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> failedId = pushSizedBatchOfItems(batch, handler);</pre></td></tr>
+<tr> <td class="numLineCover"> 168</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (InterruptedException ex) {</pre></td></tr>
+<tr> <td class="numLineCover"> 169</td> <td class="nbHitsCovered"><a title="Line 169: Conditional coverage 100% (2/2)."> 2</a></td> <td class="src"><pre class="src"> <a title="Line 169: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (firstBatch) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 170</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> ex;</pre></td></tr>
+<tr> <td class="numLine"> 171</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
+<tr> <td class="numLine"> 172</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment">// If this is not the first batch, then some items have already been</span></pre></td></tr>
+<tr> <td class="numLine"> 173</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment">// sent. Thus, return gracefully instead of throwing an exception so</span></pre></td></tr>
+<tr> <td class="numLine"> 174</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment">// that the caller can discover what was sent.</span></pre></td></tr>
+<tr> <td class="numLineCover"> 175</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"Pushing items interrupted"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 176</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> Thread.currentThread().interrupt();</pre></td></tr>
+<tr> <td class="numLineCover"> 177</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> batch.get(0);</pre></td></tr>
+<tr> <td class="numLine"> 178</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 179</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 180</td> <td class="nbHitsCovered"><a title="Line 180: Conditional coverage 100% (2/2)."> 8</a></td> <td class="src"><pre class="src"> <a title="Line 180: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (failedId != <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 181</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"Failed to push all items. Failed on: {0}"</span>,</pre></td></tr>
+<tr> <td class="numLine"> 182</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> failedId);</pre></td></tr>
+<tr> <td class="numLineCover"> 183</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> failedId;</pre></td></tr>
+<tr> <td class="numLine"> 184</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 185</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"> 186</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> journal.recordDocIdPush(batch);</pre></td></tr>
+<tr> <td class="numLineCover"> 187</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 188</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"> 189</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="numLine"> 190</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> Map<GroupPrincipal, ? <span class="keyword">extends</span> Collection<Principal>> defs,</pre></td></tr>
-<tr> <td class="numLine"> 191</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">boolean</span> caseSensitive, ExceptionHandler handler) </pre></td></tr>
-<tr> <td class="numLine"> 192</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">throws</span> InterruptedException {</pre></td></tr>
-<tr> <td class="numLineCover"> 193</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> pushGroupDefinitionsInternal(defs, caseSensitive, handler);</pre></td></tr>
-<tr> <td class="numLine"> 194</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 195</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 191</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 196</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">/*</span></pre></td></tr>
+<tr> <td class="numLine"> 192</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">public</span> GroupPrincipal pushGroupDefinitions(</pre></td></tr>
+<tr> <td class="numLine"> 193</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> Map<GroupPrincipal, ? <span class="keyword">extends</span> Collection<Principal>> defs,</pre></td></tr>
+<tr> <td class="numLine"> 194</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">boolean</span> caseSensitive, ExceptionHandler handler) </pre></td></tr>
+<tr> <td class="numLine"> 195</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">throws</span> InterruptedException {</pre></td></tr>
+<tr> <td class="numLineCover"> 196</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> pushGroupDefinitionsInternal(defs, caseSensitive, handler);</pre></td></tr>
<tr> <td class="numLine"> 197</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * Internal version of pushGroupDefinitions() to add the parameterized generic</span></pre></td></tr>
+ <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 198</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * T. We need the parameter to be able to create a List and add Map.Entries to</span></pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 199</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * that list.</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">/*</span></pre></td></tr>
<tr> <td class="numLine"> 200</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Internal version of pushGroupDefinitions() to add the parameterized generic</span></pre></td></tr>
<tr> <td class="numLine"> 201</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * Unfortunately, due to a limitation in Java (which is still present in</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * T. We need the parameter to be able to create a List and add Map.Entries to</span></pre></td></tr>
<tr> <td class="numLine"> 202</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * Java 7), the generics in the methods this one calls are forced to be</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * that list.</span></pre></td></tr>
<tr> <td class="numLine"> 203</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * parameterized even though it should be unnecessary. Fortunately, our API</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine"> 204</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * does not trigger this issue; it is only internal code that suffers.</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Unfortunately, due to a limitation in Java (which is still present in</span></pre></td></tr>
<tr> <td class="numLine"> 205</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Java 7), the generics in the methods this one calls are forced to be</span></pre></td></tr>
<tr> <td class="numLine"> 206</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * As an example test, these generics work fine:</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * parameterized even though it should be unnecessary. Fortunately, our API</span></pre></td></tr>
<tr> <td class="numLine"> 207</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * private void method1(List<?> args) {</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * does not trigger this issue; it is only internal code that suffers.</span></pre></td></tr>
<tr> <td class="numLine"> 208</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * method2(args);</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine"> 209</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * }</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * As an example test, these generics work fine:</span></pre></td></tr>
<tr> <td class="numLine"> 210</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * private void method1(List<?> args) {</span></pre></td></tr>
<tr> <td class="numLine"> 211</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * private <T> void method2(List<T> args) {</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * method2(args);</span></pre></td></tr>
<tr> <td class="numLine"> 212</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * method1(args);</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * }</span></pre></td></tr>
<tr> <td class="numLine"> 213</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * }</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine"> 214</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * private <T> void method2(List<T> args) {</span></pre></td></tr>
<tr> <td class="numLine"> 215</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * Whereas these both fail to find the other method:</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * method1(args);</span></pre></td></tr>
<tr> <td class="numLine"> 216</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * private void method3(List<List<?>> args) {</span></pre></td></tr>
-<tr> <td class="numLine"> 217</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * method4(args);</span></pre></td></tr>
-<tr> <td class="numLine"> 218</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * }</span></pre></td></tr>
+<tr> <td class="numLine"> 217</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
+<tr> <td class="numLine"> 218</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment"> * Whereas these both fail to find the other method:</span></pre></td></tr>
<tr> <td class="numLine"> 219</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * private void method3(List<List<?>> args) {</span></pre></td></tr>
<tr> <td class="numLine"> 220</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * private <T> void method4(List<List<T>> args) {</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * method4(args);</span></pre></td></tr>
<tr> <td class="numLine"> 221</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * method3(args);</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * }</span></pre></td></tr>
<tr> <td class="numLine"> 222</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * }</span></pre></td></tr>
-<tr> <td class="numLine"> 223</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
+<tr> <td class="numLine"> 223</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment"> * private <T> void method4(List<List<T>> args) {</span></pre></td></tr>
<tr> <td class="numLine"> 224</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * And so having any container of Map.Entry breaks mixing of parameterized</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * method3(args);</span></pre></td></tr>
<tr> <td class="numLine"> 225</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * and wildcard generic types.</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * }</span></pre></td></tr>
<tr> <td class="numLine"> 226</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine"> 227</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * Luckily when mixed with concrete types it is only half broken:</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * And so having any container of Map.Entry breaks mixing of parameterized</span></pre></td></tr>
<tr> <td class="numLine"> 228</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * List<List<Object>> l = null;</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * and wildcard generic types.</span></pre></td></tr>
<tr> <td class="numLine"> 229</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * method3(l); // Fails</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine"> 230</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * method4(l); // Compiles</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Luckily when mixed with concrete types it is only half broken:</span></pre></td></tr>
<tr> <td class="numLine"> 231</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * List<List<Object>> l = null;</span></pre></td></tr>
<tr> <td class="numLine"> 232</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">private</span> <T <span class="keyword">extends</span> Collection<Principal>> GroupPrincipal</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * method3(l); // Fails</span></pre></td></tr>
<tr> <td class="numLine"> 233</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> pushGroupDefinitionsInternal(</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * method4(l); // Compiles</span></pre></td></tr>
<tr> <td class="numLine"> 234</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> Map<GroupPrincipal, T> defs,</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 235</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">boolean</span> caseSensitive, ExceptionHandler handler)</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="keyword">private</span> <T <span class="keyword">extends</span> Collection<Principal>> GroupPrincipal</pre></td></tr>
<tr> <td class="numLine"> 236</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">throws</span> InterruptedException {</pre></td></tr>
-<tr> <td class="numLineCover"> 237</td> <td class="nbHitsUncovered"><a title="Line 237: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 237: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (defs.isEmpty()) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 238</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">null</span>;</span></pre></td></tr>
+ <td class="src"><pre class="src"> pushGroupDefinitionsInternal(</pre></td></tr>
+<tr> <td class="numLine"> 237</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> Map<GroupPrincipal, T> defs,</pre></td></tr>
+<tr> <td class="numLine"> 238</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">boolean</span> caseSensitive, ExceptionHandler handler)</pre></td></tr>
<tr> <td class="numLine"> 239</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">throws</span> InterruptedException {</pre></td></tr>
+<tr> <td class="numLineCover"> 240</td> <td class="nbHitsUncovered"><a title="Line 240: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 240: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (defs.isEmpty()) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 241</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">null</span>;</span></pre></td></tr>
+<tr> <td class="numLine"> 242</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 240</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> String gsaVerString = config.getGsaVersion();</pre></td></tr>
-<tr> <td class="numLineCover"> 241</td> <td class="nbHitsUncovered"><a title="Line 241: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 241: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!<span class="keyword">new</span> GsaVersion(gsaVerString).isAtLeast(<span class="string">"7.2.0-0"</span>)) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 242</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.WARNING,</span></pre></td></tr>
-<tr> <td class="numLine"> 243</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 243</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> String gsaVerString = config.getGsaVersion();</pre></td></tr>
+<tr> <td class="numLineCover"> 244</td> <td class="nbHitsUncovered"><a title="Line 244: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 244: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!<span class="keyword">new</span> GsaVersion(gsaVerString).isAtLeast(<span class="string">"7.2.0-0"</span>)) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 245</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.WARNING,</span></pre></td></tr>
+<tr> <td class="numLine"> 246</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="string">"GSA ver {0} doesn't accept group definitions"</span>, gsaVerString);</pre></td></tr>
-<tr> <td class="numLineCover"> 244</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> defs.entrySet().iterator().next().getKey();</span></pre></td></tr>
-<tr> <td class="numLine"> 245</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 246</td> <td class="nbHitsUncovered"><a title="Line 246: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 246: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="keyword">null</span> == handler) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 247</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> handler = defaultErrorHandler;</pre></td></tr>
+<tr> <td class="numLineCover"> 247</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> defs.entrySet().iterator().next().getKey();</span></pre></td></tr>
<tr> <td class="numLine"> 248</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 249</td> <td class="nbHitsCovered"> 1</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"> 250</td> <td class="nbHitsCovered"> 1</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"> 251</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> Iterator<Map.Entry<GroupPrincipal, T>> defsIterator</pre></td></tr>
-<tr> <td class="numLine"> 252</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 249</td> <td class="nbHitsUncovered"><a title="Line 249: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 249: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="keyword">null</span> == handler) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 250</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> handler = defaultErrorHandler;</pre></td></tr>
+<tr> <td class="numLine"> 251</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 252</td> <td class="nbHitsCovered"> 1</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"> 253</td> <td class="nbHitsCovered"> 1</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"> 254</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> Iterator<Map.Entry<GroupPrincipal, T>> defsIterator</pre></td></tr>
+<tr> <td class="numLine"> 255</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> = defs.entrySet().iterator();</pre></td></tr>
-<tr> <td class="numLineCover"> 253</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> List<Map.Entry<GroupPrincipal, T>> batch</pre></td></tr>
-<tr> <td class="numLine"> 254</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 256</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> List<Map.Entry<GroupPrincipal, T>> batch</pre></td></tr>
+<tr> <td class="numLine"> 257</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> = <span class="keyword">new</span> ArrayList<Map.Entry<GroupPrincipal, T>>();</pre></td></tr>
-<tr> <td class="numLineCover"> 255</td> <td class="nbHitsCovered"><a title="Line 255: Conditional coverage 100% (2/2)."> 3</a></td> <td class="src"><pre class="src"> <a title="Line 255: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (defsIterator.hasNext()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 256</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> batch.clear();</pre></td></tr>
-<tr> <td class="numLineCover"> 257</td> <td class="nbHitsCovered"><a title="Line 257: Conditional coverage 100% (2/2)."> 5</a></td> <td class="src"><pre class="src"> <a title="Line 257: 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"> 258</td> <td class="nbHitsCovered"><a title="Line 258: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 258: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!defsIterator.hasNext()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 259</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">break</span>;</pre></td></tr>
-<tr> <td class="numLine"> 260</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 258</td> <td class="nbHitsCovered"><a title="Line 258: Conditional coverage 100% (2/2)."> 3</a></td> <td class="src"><pre class="src"> <a title="Line 258: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (defsIterator.hasNext()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 259</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> batch.clear();</pre></td></tr>
+<tr> <td class="numLineCover"> 260</td> <td class="nbHitsCovered"><a title="Line 260: Conditional coverage 100% (2/2)."> 5</a></td> <td class="src"><pre class="src"> <a title="Line 260: 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"> 261</td> <td class="nbHitsCovered"><a title="Line 261: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 261: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!defsIterator.hasNext()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 262</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">break</span>;</pre></td></tr>
+<tr> <td class="numLine"> 263</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 261</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> batch.add(defsIterator.next());</pre></td></tr>
-<tr> <td class="numLine"> 262</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 263</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"Pushing batch of {0} groups"</span>, batch.size());</pre></td></tr>
-<tr> <td class="numLine"> 264</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> GroupPrincipal failedId;</pre></td></tr>
+<tr> <td class="numLineCover"> 264</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> batch.add(defsIterator.next());</pre></td></tr>
<tr> <td class="numLine"> 265</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 266</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"Pushing batch of {0} groups"</span>, batch.size());</pre></td></tr>
+<tr> <td class="numLine"> 267</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> GroupPrincipal failedId;</pre></td></tr>
+<tr> <td class="numLine"> 268</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 266</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> failedId = pushSizedBatchOfGroups(batch, caseSensitive, handler);</pre></td></tr>
-<tr> <td class="numLineCover"> 267</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (InterruptedException ex) {</span></pre></td></tr>
-<tr> <td class="numLineCover"> 268</td> <td class="nbHitsUncovered"><a title="Line 268: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 268: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (firstBatch) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 269</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> ex;</span></pre></td></tr>
-<tr> <td class="numLine"> 270</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLine"> 271</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">// If this is not the first batch, then some items have already been</span></pre></td></tr>
-<tr> <td class="numLine"> 272</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">// sent. Thus, return gracefully instead of throwing an exception so</span></pre></td></tr>
+<tr> <td class="numLineCover"> 269</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> failedId = pushSizedBatchOfGroups(batch, caseSensitive, handler);</pre></td></tr>
+<tr> <td class="numLineCover"> 270</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (InterruptedException ex) {</span></pre></td></tr>
+<tr> <td class="numLineCover"> 271</td> <td class="nbHitsUncovered"><a title="Line 271: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 271: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (firstBatch) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 272</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> ex;</span></pre></td></tr>
<tr> <td class="numLine"> 273</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
+<tr> <td class="numLine"> 274</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment">// If this is not the first batch, then some items have already been</span></pre></td></tr>
+<tr> <td class="numLine"> 275</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment">// sent. Thus, return gracefully instead of throwing an exception so</span></pre></td></tr>
+<tr> <td class="numLine"> 276</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// that the caller can discover what was sent.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 274</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.INFO, <span class="string">"Pushing items interrupted"</span>);</span></pre></td></tr>
-<tr> <td class="numLineCover"> 275</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Thread.currentThread().interrupt();</span></pre></td></tr>
-<tr> <td class="numLineCover"> 276</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> batch.get(0).getKey();</span></pre></td></tr>
-<tr> <td class="numLine"> 277</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 277</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.INFO, <span class="string">"Pushing items interrupted"</span>);</span></pre></td></tr>
+<tr> <td class="numLineCover"> 278</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Thread.currentThread().interrupt();</span></pre></td></tr>
+<tr> <td class="numLineCover"> 279</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> batch.get(0).getKey();</span></pre></td></tr>
+<tr> <td class="numLine"> 280</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 278</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 279</td> <td class="nbHitsUncovered"><a title="Line 279: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 279: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (failedId != <span class="keyword">null</span>) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 280</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.INFO, <span class="string">"Failed to push all groups. Failed on: {0}"</span>,</span></pre></td></tr>
-<tr> <td class="numLine"> 281</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 281</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 282</td> <td class="nbHitsUncovered"><a title="Line 282: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 282: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (failedId != <span class="keyword">null</span>) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 283</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.INFO, <span class="string">"Failed to push all groups. Failed on: {0}"</span>,</span></pre></td></tr>
+<tr> <td class="numLine"> 284</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> failedId);</pre></td></tr>
-<tr> <td class="numLineCover"> 282</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> failedId;</span></pre></td></tr>
-<tr> <td class="numLine"> 283</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 285</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> failedId;</span></pre></td></tr>
+<tr> <td class="numLine"> 286</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 284</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> firstBatch = <span class="keyword">false</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 285</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 286</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> log.info(<span class="string">"Pushed groups"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 287</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
-<tr> <td class="numLine"> 288</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 289</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 290</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">private</span> <T <span class="keyword">extends</span> Collection<Principal>> GroupPrincipal</pre></td></tr>
+<tr> <td class="numLineCover"> 287</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> firstBatch = <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 288</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 289</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> log.info(<span class="string">"Pushed groups"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 290</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 291</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> pushSizedBatchOfGroups(</pre></td></tr>
+ <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 292</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> List<Map.Entry<GroupPrincipal, T>> defs,</pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 293</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">boolean</span> caseSensitive, ExceptionHandler handler)</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="keyword">private</span> <T <span class="keyword">extends</span> Collection<Principal>> GroupPrincipal</pre></td></tr>
<tr> <td class="numLine"> 294</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">throws</span> InterruptedException {</pre></td></tr>
-<tr> <td class="numLineCover"> 295</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> String groupsDefXml</pre></td></tr>
+ <td class="src"><pre class="src"> pushSizedBatchOfGroups(</pre></td></tr>
+<tr> <td class="numLine"> 295</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> List<Map.Entry<GroupPrincipal, T>> defs,</pre></td></tr>
<tr> <td class="numLine"> 296</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> = fileMaker.makeGroupsDefinitionsXml(defs, caseSensitive);</pre></td></tr>
-<tr> <td class="numLineCover"> 297</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> keepGoing = <span class="keyword">true</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 298</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> success = <span class="keyword">false</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 299</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"pushing groups"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 300</td> <td class="nbHitsCovered"><a title="Line 300: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 300: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> ntries = 1; keepGoing; ntries++) {</a></pre></td></tr>
-<tr> <td class="numLine"> 301</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 302</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.info(<span class="string">"sending groups to GSA host name: "</span> + config.getGsaHostname());</pre></td></tr>
-<tr> <td class="numLineCover"> 303</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> fileSender.sendGroups(config.getFeedName(),</pre></td></tr>
-<tr> <td class="numLine"> 304</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> groupsDefXml, config.isServerToUseCompression());</pre></td></tr>
-<tr> <td class="numLineCover"> 305</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> keepGoing = <span class="keyword">false</span>; <span class="comment">// Sent.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 306</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> success = <span class="keyword">true</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 307</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"> 308</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.WARNING, <span class="string">"failed to send groups"</span>, ex);</span></pre></td></tr>
-<tr> <td class="numLineCover"> 309</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> keepGoing = handler.handleException(ex, ntries);</span></pre></td></tr>
-<tr> <td class="numLineCover"> 310</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 311</td> <td class="nbHitsUncovered"><a title="Line 311: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 311: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (keepGoing) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 312</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.INFO, <span class="string">"trying again... number of attemps: {0}"</span>, ntries);</span></pre></td></tr>
-<tr> <td class="numLine"> 313</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 314</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 315</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> GroupPrincipal last = <span class="keyword">null</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 316</td> <td class="nbHitsUncovered"><a title="Line 316: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 316: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (success) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 317</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.info(<span class="string">"pushing groups batch succeeded"</span>);</pre></td></tr>
-<tr> <td class="numLine"> 318</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 319</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> last = defs.get(0).getKey(); <span class="comment">// checked in pushGroupDefinitionsInternal()</span></span></pre></td></tr>
-<tr> <td class="numLineCover"> 320</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.WARNING, <span class="string">"gave up pushing groups. First item: {0}"</span>, last);</span></pre></td></tr>
-<tr> <td class="numLine"> 321</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 322</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.info(<span class="string">"finished pushing batch of groups"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 323</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> last;</pre></td></tr>
-<tr> <td class="numLine"> 324</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 325</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 326</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 327</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">private</span> <T <span class="keyword">extends</span> Item> T pushSizedBatchOfRecords(List<T> items,</pre></td></tr>
-<tr> <td class="numLine"> 328</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> ExceptionHandler handler)</pre></td></tr>
-<tr> <td class="numLine"> 329</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">boolean</span> caseSensitive, ExceptionHandler handler)</pre></td></tr>
+<tr> <td class="numLine"> 297</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">throws</span> InterruptedException {</pre></td></tr>
-<tr> <td class="numLineCover"> 330</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> String feedSourceName = config.getFeedName();</pre></td></tr>
-<tr> <td class="numLineCover"> 331</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> String xmlFeedFile = fileMaker.makeMetadataAndUrlXml(feedSourceName, items);</pre></td></tr>
-<tr> <td class="numLineCover"> 332</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> keepGoing = <span class="keyword">true</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 333</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> success = <span class="keyword">false</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 334</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"Pushing batch of {0} items to GSA"</span>, items.size());</pre></td></tr>
-<tr> <td class="numLineCover"> 335</td> <td class="nbHitsCovered"><a title="Line 335: Conditional coverage 100% (2/2)."> 18</a></td> <td class="src"><pre class="src"> <a title="Line 335: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> ntries = 1; keepGoing; ntries++) {</a></pre></td></tr>
-<tr> <td class="numLine"> 336</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 298</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> String groupsDefXml</pre></td></tr>
+<tr> <td class="numLine"> 299</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> = fileMaker.makeGroupsDefinitionsXml(defs, caseSensitive);</pre></td></tr>
+<tr> <td class="numLineCover"> 300</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> keepGoing = <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 301</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> success = <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 302</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"pushing groups"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 303</td> <td class="nbHitsCovered"><a title="Line 303: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 303: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> ntries = 1; keepGoing; ntries++) {</a></pre></td></tr>
+<tr> <td class="numLine"> 304</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 337</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> log.info(<span class="string">"Sending items to GSA host: "</span> + config.getGsaHostname());</pre></td></tr>
-<tr> <td class="numLineCover"> 338</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> fileSender.sendMetadataAndUrl(feedSourceName, xmlFeedFile,</pre></td></tr>
-<tr> <td class="numLine"> 339</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> config.isServerToUseCompression());</pre></td></tr>
-<tr> <td class="numLineCover"> 340</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> keepGoing = <span class="keyword">false</span>; <span class="comment">// Sent.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 341</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> success = <span class="keyword">true</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 342</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (IOException ex) {</pre></td></tr>
-<tr> <td class="numLineCover"> 343</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> log.log(Level.WARNING, <span class="string">"Failed to send items"</span>, ex);</pre></td></tr>
-<tr> <td class="numLineCover"> 344</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> keepGoing = handler.handleException(ex, ntries);</pre></td></tr>
-<tr> <td class="numLineCover"> 345</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 346</td> <td class="nbHitsUncovered"><a title="Line 346: Conditional coverage 50% (1/2)."> 8</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 346: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (keepGoing) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 347</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.INFO, <span class="string">"Trying again... Number of attemps: {0}"</span>, ntries);</span></pre></td></tr>
-<tr> <td class="numLine"> 348</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 305</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.info(<span class="string">"sending groups to GSA host name: "</span> + config.getGsaHostname());</pre></td></tr>
+<tr> <td class="numLineCover"> 306</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> fileSender.sendGroups(config.getFeedName(),</pre></td></tr>
+<tr> <td class="numLine"> 307</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> groupsDefXml, config.isServerToUseCompression());</pre></td></tr>
+<tr> <td class="numLineCover"> 308</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> keepGoing = <span class="keyword">false</span>; <span class="comment">// Sent.</span></pre></td></tr>
+<tr> <td class="numLineCover"> 309</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> success = <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 310</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"> 311</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.WARNING, <span class="string">"failed to send groups"</span>, ex);</span></pre></td></tr>
+<tr> <td class="numLineCover"> 312</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> keepGoing = handler.handleException(ex, ntries);</span></pre></td></tr>
+<tr> <td class="numLineCover"> 313</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 314</td> <td class="nbHitsUncovered"><a title="Line 314: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 314: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (keepGoing) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 315</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.INFO, <span class="string">"trying again... number of attemps: {0}"</span>, ntries);</span></pre></td></tr>
+<tr> <td class="numLine"> 316</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 349</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 317</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 350</td> <td class="nbHitsCovered"><a title="Line 350: Conditional coverage 100% (2/2)."> 8</a></td> <td class="src"><pre class="src"> <a title="Line 350: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (success) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 351</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> log.info(<span class="string">"Pushing batch succeeded"</span>);</pre></td></tr>
-<tr> <td class="numLine"> 352</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 318</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> GroupPrincipal last = <span class="keyword">null</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 319</td> <td class="nbHitsUncovered"><a title="Line 319: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 319: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (success) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 320</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.info(<span class="string">"pushing groups batch succeeded"</span>);</pre></td></tr>
+<tr> <td class="numLine"> 321</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 353</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.log(Level.WARNING, <span class="string">"Gave up. First item in list: {0}"</span>, items.get(0));</pre></td></tr>
-<tr> <td class="numLine"> 354</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 322</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> last = defs.get(0).getKey(); <span class="comment">// checked in pushGroupDefinitionsInternal()</span></span></pre></td></tr>
+<tr> <td class="numLineCover"> 323</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.WARNING, <span class="string">"gave up pushing groups. First item: {0}"</span>, last);</span></pre></td></tr>
+<tr> <td class="numLine"> 324</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 355</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> log.info(<span class="string">"Finished pushing batch of items"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 356</td> <td class="nbHitsCovered"><a title="Line 356: Conditional coverage 100% (2/2)."> 8</a></td> <td class="src"><pre class="src"> <a title="Line 356: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> success ? <span class="keyword">null</span> : items.get(0);</a></pre></td></tr>
-<tr> <td class="numLine"> 357</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 325</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.info(<span class="string">"finished pushing batch of groups"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 326</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> last;</pre></td></tr>
+<tr> <td class="numLine"> 327</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 358</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 328</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 359</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">/** Marker interface for an item that can exist in a feed. */</span></pre></td></tr>
+<tr> <td class="numLine"> 329</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> </pre></td></tr>
+<tr> <td class="numLine"> 330</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">private</span> <T <span class="keyword">extends</span> Item> T pushSizedBatchOfItems(List<T> items,</pre></td></tr>
+<tr> <td class="numLine"> 331</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> ExceptionHandler handler)</pre></td></tr>
+<tr> <td class="numLine"> 332</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">throws</span> InterruptedException {</pre></td></tr>
+<tr> <td class="numLineCover"> 333</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> String feedSourceName = config.getFeedName();</pre></td></tr>
+<tr> <td class="numLineCover"> 334</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> String xmlFeedFile = fileMaker.makeMetadataAndUrlXml(feedSourceName, items);</pre></td></tr>
+<tr> <td class="numLineCover"> 335</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> keepGoing = <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 336</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> success = <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 337</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> log.log(Level.INFO, <span class="string">"Pushing batch of {0} items to GSA"</span>, items.size());</pre></td></tr>
+<tr> <td class="numLineCover"> 338</td> <td class="nbHitsCovered"><a title="Line 338: Conditional coverage 100% (2/2)."> 18</a></td> <td class="src"><pre class="src"> <a title="Line 338: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> ntries = 1; keepGoing; ntries++) {</a></pre></td></tr>
+<tr> <td class="numLine"> 339</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
+<tr> <td class="numLineCover"> 340</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> log.info(<span class="string">"Sending items to GSA host: "</span> + config.getGsaHostname());</pre></td></tr>
+<tr> <td class="numLineCover"> 341</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> fileSender.sendMetadataAndUrl(feedSourceName, xmlFeedFile,</pre></td></tr>
+<tr> <td class="numLine"> 342</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> config.isServerToUseCompression());</pre></td></tr>
+<tr> <td class="numLineCover"> 343</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> keepGoing = <span class="keyword">false</span>; <span class="comment">// Sent.</span></pre></td></tr>
+<tr> <td class="numLineCover"> 344</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> success = <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 345</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (IOException ex) {</pre></td></tr>
+<tr> <td class="numLineCover"> 346</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> log.log(Level.WARNING, <span class="string">"Failed to send items"</span>, ex);</pre></td></tr>
+<tr> <td class="numLineCover"> 347</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> keepGoing = handler.handleException(ex, ntries);</pre></td></tr>
+<tr> <td class="numLineCover"> 348</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 349</td> <td class="nbHitsUncovered"><a title="Line 349: Conditional coverage 50% (1/2)."> 8</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 349: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (keepGoing) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 350</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> log.log(Level.INFO, <span class="string">"Trying again... Number of attemps: {0}"</span>, ntries);</span></pre></td></tr>
+<tr> <td class="numLine"> 351</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLine"> 352</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 353</td> <td class="nbHitsCovered"><a title="Line 353: Conditional coverage 100% (2/2)."> 8</a></td> <td class="src"><pre class="src"> <a title="Line 353: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (success) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 354</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> log.info(<span class="string">"Pushing batch succeeded"</span>);</pre></td></tr>
+<tr> <td class="numLine"> 355</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
+<tr> <td class="numLineCover"> 356</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.log(Level.WARNING, <span class="string">"Gave up. First item in list: {0}"</span>, items.get(0));</pre></td></tr>
+<tr> <td class="numLine"> 357</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 358</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> log.info(<span class="string">"Finished pushing batch of items"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 359</td> <td class="nbHitsCovered"><a title="Line 359: Conditional coverage 100% (2/2)."> 8</a></td> <td class="src"><pre class="src"> <a title="Line 359: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> success ? <span class="keyword">null</span> : items.get(0);</a></pre></td></tr>
<tr> <td class="numLine"> 360</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">interface</span> Item {}</pre></td></tr>
+ <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 361</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 362</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">/** Marker interface for an item that can exist in a feed. */</span></pre></td></tr>
<tr> <td class="numLine"> 363</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * Represents the ACL tag sent in feeds.</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="keyword">interface</span> Item {}</pre></td></tr>
<tr> <td class="numLine"> 364</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 365</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">class</span> AclItem <span class="keyword">implements</span> Item {</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 366</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">private</span> DocId id;</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Represents the ACL tag sent in feeds.</span></pre></td></tr>
<tr> <td class="numLine"> 367</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> String docIdFragment;</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 368</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">private</span> Acl acl;</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">class</span> AclItem <span class="keyword">implements</span> Item {</pre></td></tr>
<tr> <td class="numLine"> 369</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
+ <td class="src"><pre class="src"> <span class="keyword">private</span> DocId id;</pre></td></tr>
<tr> <td class="numLine"> 370</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">public</span> AclItem(DocId id, Acl acl) {</pre></td></tr>
-<tr> <td class="numLineCover"> 371</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(id, <span class="keyword">null</span>, acl);</pre></td></tr>
-<tr> <td class="numLineCover"> 372</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> }</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> String docIdFragment;</pre></td></tr>
+<tr> <td class="numLine"> 371</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">private</span> Acl acl;</pre></td></tr>
+<tr> <td class="numLine"> 372</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 373</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">public</span> AclItem(DocId id, Acl acl) {</pre></td></tr>
+<tr> <td class="numLineCover"> 374</td> <td class="nbHitsCovered"> 11</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(id, <span class="keyword">null</span>, acl);</pre></td></tr>
+<tr> <td class="numLineCover"> 375</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLine"> 376</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 374</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> <span class="keyword">public</span> AclItem(DocId id, String docIdFragment, Acl acl) {</pre></td></tr>
-<tr> <td class="numLineCover"> 375</td> <td class="nbHitsCovered"><a title="Line 375: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 15</a></td> <td class="src"><pre class="src"> <a title="Line 375: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (id == <span class="keyword">null</span> || acl == <span class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 376</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> NullPointerException(<span class="string">"DocId and Acl must not be null"</span>);</pre></td></tr>
-<tr> <td class="numLine"> 377</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 377</td> <td class="nbHitsCovered"> 16</td> <td class="src"><pre class="src"> <span class="keyword">public</span> AclItem(DocId id, String docIdFragment, Acl acl) {</pre></td></tr>
+<tr> <td class="numLineCover"> 378</td> <td class="nbHitsCovered"><a title="Line 378: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 16</a></td> <td class="src"><pre class="src"> <a title="Line 378: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (id == <span class="keyword">null</span> || acl == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 379</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> NullPointerException(<span class="string">"DocId and Acl must not be null"</span>);</pre></td></tr>
+<tr> <td class="numLine"> 380</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 378</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.id = id;</pre></td></tr>
-<tr> <td class="numLineCover"> 379</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.docIdFragment = docIdFragment;</pre></td></tr>
-<tr> <td class="numLineCover"> 380</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.acl = acl;</pre></td></tr>
-<tr> <td class="numLineCover"> 381</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 382</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 383</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">public</span> DocId getDocId() {</pre></td></tr>
-<tr> <td class="numLineCover"> 384</td> <td class="nbHitsCovered"> 11</td> <td class="src"><pre class="src"> <span class="keyword">return</span> id;</pre></td></tr>
+<tr> <td class="numLineCover"> 381</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.id = id;</pre></td></tr>
+<tr> <td class="numLineCover"> 382</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.docIdFragment = docIdFragment;</pre></td></tr>
+<tr> <td class="numLineCover"> 383</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.acl = acl;</pre></td></tr>
+<tr> <td class="numLineCover"> 384</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 385</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 386</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 387</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">public</span> String getDocIdFragment() {</pre></td></tr>
-<tr> <td class="numLineCover"> 388</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> docIdFragment;</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="keyword">public</span> DocId getDocId() {</pre></td></tr>
+<tr> <td class="numLineCover"> 387</td> <td class="nbHitsCovered"> 11</td> <td class="src"><pre class="src"> <span class="keyword">return</span> id;</pre></td></tr>
+<tr> <td class="numLine"> 388</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 389</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 390</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 391</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">public</span> Acl getAcl() {</pre></td></tr>
-<tr> <td class="numLineCover"> 392</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> acl;</pre></td></tr>
-<tr> <td class="numLine"> 393</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 390</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">public</span> String getDocIdFragment() {</pre></td></tr>
+<tr> <td class="numLineCover"> 391</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> docIdFragment;</pre></td></tr>
+<tr> <td class="numLine"> 392</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLine"> 393</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 394</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">public</span> Acl getAcl() {</pre></td></tr>
+<tr> <td class="numLineCover"> 395</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> acl;</pre></td></tr>
+<tr> <td class="numLine"> 396</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLine"> 397</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> </pre></td></tr>
+<tr> <td class="numLine"> 398</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> @Override </pre></td></tr>
+<tr> <td class="numLine"> 399</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">public</span> String toString() {</pre></td></tr>
+<tr> <td class="numLineCover"> 400</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="string">"AclItem("</span> + id + <span class="string">","</span> + docIdFragment + <span class="string">","</span> + acl + <span class="string">")"</span>;</pre></td></tr>
+<tr> <td class="numLine"> 401</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLine"> 402</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 395</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 403</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
</table>
diff --git a/coverage/com.google.enterprise.adaptor.DownloadDumpHandler.html b/coverage/com.google.enterprise.adaptor.DownloadDumpHandler.html
index 78b3b5b..b5d0933 100644
--- a/coverage/com.google.enterprise.adaptor.DownloadDumpHandler.html
+++ b/coverage/com.google.enterprise.adaptor.DownloadDumpHandler.html
@@ -286,20 +286,20 @@
<tr> <td class="numLine"> 164</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">new</span> TreeMap<String, StackTraceElement[]>();</pre></td></tr>
<tr> <td class="numLineCover"> 165</td> <td class="nbHitsCovered"><a title="Line 165: Conditional coverage 100% (2/2)."> 2</a></td> <td class="src"><pre class="src"> <a title="Line 165: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Map.Entry<Thread, StackTraceElement[]> me : allThreads.entrySet()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 166</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> sortedThreads.put(me.getKey().toString(), me.getValue());</pre></td></tr>
+<tr> <td class="numLineCover"> 166</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> sortedThreads.put(me.getKey().toString(), me.getValue());</pre></td></tr>
<tr> <td class="numLine"> 167</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 168</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> zos.putNextEntry(<span class="keyword">new</span> ZipEntry(<span class="string">"threaddump.txt"</span>));</pre></td></tr>
<tr> <td class="numLineCover"> 169</td> <td class="nbHitsCovered"><a title="Line 169: Conditional coverage 100% (2/2)."> 2</a></td> <td class="src"><pre class="src"> <a title="Line 169: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Map.Entry<String, StackTraceElement[]> me : sortedThreads.entrySet()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 170</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> writer.write(me.getKey());</pre></td></tr>
-<tr> <td class="numLineCover"> 171</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> writer.write(newline);</pre></td></tr>
-<tr> <td class="numLineCover"> 172</td> <td class="nbHitsCovered"><a title="Line 172: Conditional coverage 100% (2/2)."> 114</a></td> <td class="src"><pre class="src"> <a title="Line 172: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (StackTraceElement element : me.getValue()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 173</td> <td class="nbHitsCovered"> 100</td> <td class="src"><pre class="src"> writer.write(<span class="string">" "</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 174</td> <td class="nbHitsCovered"> 100</td> <td class="src"><pre class="src"> writer.write(<span class="string">""</span> + element);</pre></td></tr>
-<tr> <td class="numLineCover"> 175</td> <td class="nbHitsCovered"> 100</td> <td class="src"><pre class="src"> writer.write(newline);</pre></td></tr>
+<tr> <td class="numLineCover"> 170</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> writer.write(me.getKey());</pre></td></tr>
+<tr> <td class="numLineCover"> 171</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> writer.write(newline);</pre></td></tr>
+<tr> <td class="numLineCover"> 172</td> <td class="nbHitsCovered"><a title="Line 172: Conditional coverage 100% (2/2)."> 92</a></td> <td class="src"><pre class="src"> <a title="Line 172: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (StackTraceElement element : me.getValue()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 173</td> <td class="nbHitsCovered"> 80</td> <td class="src"><pre class="src"> writer.write(<span class="string">" "</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 174</td> <td class="nbHitsCovered"> 80</td> <td class="src"><pre class="src"> writer.write(<span class="string">""</span> + element);</pre></td></tr>
+<tr> <td class="numLineCover"> 175</td> <td class="nbHitsCovered"> 80</td> <td class="src"><pre class="src"> writer.write(newline);</pre></td></tr>
<tr> <td class="numLine"> 176</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 177</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> writer.write(newline);</pre></td></tr>
+<tr> <td class="numLineCover"> 177</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> writer.write(newline);</pre></td></tr>
<tr> <td class="numLine"> 178</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 179</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> writer.flush();</pre></td></tr>
diff --git a/coverage/com.google.enterprise.adaptor.ExceptionHandlers.html b/coverage/com.google.enterprise.adaptor.ExceptionHandlers.html
index 10e87f7..e554e45 100644
--- a/coverage/com.google.enterprise.adaptor.ExceptionHandlers.html
+++ b/coverage/com.google.enterprise.adaptor.ExceptionHandlers.html
@@ -87,7 +87,7 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 36</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> ExceptionHandler defaultHandler() {</pre></td></tr>
-<tr> <td class="numLineCover"> 37</td> <td class="nbHitsCovered"> 68</td> <td class="src"><pre class="src"> <span class="keyword">return</span> defaultHandler;</pre></td></tr>
+<tr> <td class="numLineCover"> 37</td> <td class="nbHitsCovered"> 69</td> <td class="src"><pre class="src"> <span class="keyword">return</span> defaultHandler;</pre></td></tr>
<tr> <td class="numLine"> 38</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 39</td> <td class="nbHits"> </td>
@@ -153,11 +153,11 @@
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">boolean</span> handleException(Exception ex, <span class="keyword">int</span> ntries)</pre></td></tr>
<tr> <td class="numLine"> 74</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">throws</span> InterruptedException {</pre></td></tr>
-<tr> <td class="numLineCover"> 75</td> <td class="nbHitsCovered"><a title="Line 75: Conditional coverage 100% (2/2)."> 12</a></td> <td class="src"><pre class="src"> <a title="Line 75: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ntries > maximumTries) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 75</td> <td class="nbHitsCovered"><a title="Line 75: Conditional coverage 100% (2/2)."> 13</a></td> <td class="src"><pre class="src"> <a title="Line 75: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ntries > maximumTries) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 76</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 77</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 78</td> <td class="nbHitsCovered"> 11</td> <td class="src"><pre class="src"> sleepUnit.sleep(sleepDuration * ntries);</pre></td></tr>
+<tr> <td class="numLineCover"> 78</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> sleepUnit.sleep(sleepDuration * ntries);</pre></td></tr>
<tr> <td class="numLineCover"> 79</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">true</span>;</span></pre></td></tr>
<tr> <td class="numLine"> 80</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
diff --git a/coverage/com.google.enterprise.adaptor.GsaCommunicationHandler.html b/coverage/com.google.enterprise.adaptor.GsaCommunicationHandler.html
index 1a47570..0660553 100644
--- a/coverage/com.google.enterprise.adaptor.GsaCommunicationHandler.html
+++ b/coverage/com.google.enterprise.adaptor.GsaCommunicationHandler.html
@@ -106,7 +106,7 @@
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 41</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/** This class handles the communications with GSA. */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 42</td> <td class="nbHitsCovered"> 23</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">final</span> <span class="keyword">class</span> GsaCommunicationHandler {</pre></td></tr>
+<tr> <td class="numLineCover"> 42</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">final</span> <span class="keyword">class</span> GsaCommunicationHandler {</pre></td></tr>
<tr> <td class="numLineCover"> 43</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>
<tr> <td class="numLine"> 44</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> = Logger.getLogger(GsaCommunicationHandler.<span class="keyword">class</span>.getName());</pre></td></tr>
@@ -1163,11 +1163,11 @@
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> run() {</pre></td></tr>
<tr> <td class="numLine"> 722</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 723</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> docIdSender.pushFullDocIdsFromAdaptor(handler);</pre></td></tr>
-<tr> <td class="numLineCover"> 724</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (InterruptedException ex) {</pre></td></tr>
-<tr> <td class="numLineCover"> 725</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> Thread.currentThread().interrupt();</pre></td></tr>
+<tr> <td class="numLineCover"> 723</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> docIdSender.pushFullDocIdsFromAdaptor(handler);</pre></td></tr>
+<tr> <td class="numLineCover"> 724</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (InterruptedException ex) {</pre></td></tr>
+<tr> <td class="numLineCover"> 725</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> Thread.currentThread().interrupt();</pre></td></tr>
<tr> <td class="numLineCover"> 726</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
-<tr> <td class="numLineCover"> 727</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 727</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 728</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 729</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.GsaFeedFileMaker.html b/coverage/com.google.enterprise.adaptor.GsaFeedFileMaker.html
index 91d094d..aabe641 100644
--- a/coverage/com.google.enterprise.adaptor.GsaFeedFileMaker.html
+++ b/coverage/com.google.enterprise.adaptor.GsaFeedFileMaker.html
@@ -121,22 +121,22 @@
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 54</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> GsaFeedFileMaker(DocIdEncoder encoder, AclTransform aclTransform) {</pre></td></tr>
-<tr> <td class="numLineCover"> 55</td> <td class="nbHitsCovered"> 28</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(encoder, aclTransform, <span class="keyword">false</span>, <span class="keyword">false</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 56</td> <td class="nbHitsCovered"> 28</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 55</td> <td class="nbHitsCovered"> 29</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(encoder, aclTransform, <span class="keyword">false</span>, <span class="keyword">false</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 56</td> <td class="nbHitsCovered"> 29</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"> </pre></td></tr>
<tr> <td class="numLine"> 58</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> GsaFeedFileMaker(DocIdEncoder encoder, AclTransform aclTransform,</pre></td></tr>
<tr> <td class="numLine"> 59</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">boolean</span> separateClosingRecordTagWorkaround,</pre></td></tr>
-<tr> <td class="numLineCover"> 60</td> <td class="nbHitsCovered"> 43</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> useAuthMethodWorkaround) {</pre></td></tr>
-<tr> <td class="numLineCover"> 61</td> <td class="nbHitsCovered"> 43</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.idEncoder = encoder;</pre></td></tr>
-<tr> <td class="numLineCover"> 62</td> <td class="nbHitsCovered"> 43</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.aclTransform = aclTransform;</pre></td></tr>
-<tr> <td class="numLineCover"> 63</td> <td class="nbHitsCovered"> 43</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.separateClosingRecordTagWorkaround</pre></td></tr>
+<tr> <td class="numLineCover"> 60</td> <td class="nbHitsCovered"> 44</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> useAuthMethodWorkaround) {</pre></td></tr>
+<tr> <td class="numLineCover"> 61</td> <td class="nbHitsCovered"> 44</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.idEncoder = encoder;</pre></td></tr>
+<tr> <td class="numLineCover"> 62</td> <td class="nbHitsCovered"> 44</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.aclTransform = aclTransform;</pre></td></tr>
+<tr> <td class="numLineCover"> 63</td> <td class="nbHitsCovered"> 44</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.separateClosingRecordTagWorkaround</pre></td></tr>
<tr> <td class="numLine"> 64</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> = separateClosingRecordTagWorkaround;</pre></td></tr>
-<tr> <td class="numLineCover"> 65</td> <td class="nbHitsCovered"> 43</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.useAuthMethodWorkaround = useAuthMethodWorkaround;</pre></td></tr>
-<tr> <td class="numLineCover"> 66</td> <td class="nbHitsCovered"> 43</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 65</td> <td class="nbHitsCovered"> 44</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.useAuthMethodWorkaround = useAuthMethodWorkaround;</pre></td></tr>
+<tr> <td class="numLineCover"> 66</td> <td class="nbHitsCovered"> 44</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 67</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 68</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.GsaFeedFileSender.html b/coverage/com.google.enterprise.adaptor.GsaFeedFileSender.html
index 574b5ef..f8a6e43 100644
--- a/coverage/com.google.enterprise.adaptor.GsaFeedFileSender.html
+++ b/coverage/com.google.enterprise.adaptor.GsaFeedFileSender.html
@@ -110,17 +110,17 @@
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 48</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> URL makeHandlerUrl(String host, <span class="keyword">boolean</span> secure, String path) {</pre></td></tr>
-<tr> <td class="numLineCover"> 49</td> <td class="nbHitsUncovered"><a title="Line 49: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 59</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 49: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (<span class="keyword">null</span> == host || <span class="keyword">null</span> == path) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 49</td> <td class="nbHitsUncovered"><a title="Line 49: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 61</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 49: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (<span class="keyword">null</span> == host || <span class="keyword">null</span> == path) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 50</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> NullPointerException();</span></pre></td></tr>
<tr> <td class="numLine"> 51</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 52</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 53</td> <td class="nbHitsCovered"><a title="Line 53: Conditional coverage 100% (2/2)."> 59</a></td> <td class="src"><pre class="src"> <a title="Line 53: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (secure) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 53</td> <td class="nbHitsCovered"><a title="Line 53: Conditional coverage 100% (2/2)."> 61</a></td> <td class="src"><pre class="src"> <a title="Line 53: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (secure) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 54</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> URL(<span class="string">"https://"</span> + host + <span class="string">":19902/"</span> + path);</pre></td></tr>
<tr> <td class="numLine"> 55</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 56</td> <td class="nbHitsCovered"> 57</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> URL(<span class="string">"http://"</span> + host + <span class="string">":19900/"</span> + path);</pre></td></tr>
+<tr> <td class="numLineCover"> 56</td> <td class="nbHitsCovered"> 59</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> URL(<span class="string">"http://"</span> + host + <span class="string">":19900/"</span> + path);</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"> 1</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (MalformedURLException mue) {</pre></td></tr>
@@ -133,23 +133,23 @@
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 63</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> GsaFeedFileSender(String host, <span class="keyword">boolean</span> secure, Charset gsaCharSet) {</pre></td></tr>
-<tr> <td class="numLineCover"> 64</td> <td class="nbHitsCovered"> 30</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(makeHandlerUrl(host, secure, <span class="string">"xmlfeed"</span>),</pre></td></tr>
+<tr> <td class="numLineCover"> 64</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(makeHandlerUrl(host, secure, <span class="string">"xmlfeed"</span>),</pre></td></tr>
<tr> <td class="numLine"> 65</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> makeHandlerUrl(host, secure, <span class="string">"xmlgroups"</span>), gsaCharSet);</pre></td></tr>
-<tr> <td class="numLineCover"> 66</td> <td class="nbHitsCovered"> 29</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 66</td> <td class="nbHitsCovered"> 30</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 67</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 68</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @VisibleForTesting</pre></td></tr>
-<tr> <td class="numLineCover"> 69</td> <td class="nbHitsCovered"> 41</td> <td class="src"><pre class="src"> GsaFeedFileSender(URL feedUrl, URL groupsUrl, Charset gsaCharSet) {</pre></td></tr>
-<tr> <td class="numLineCover"> 70</td> <td class="nbHitsUncovered"><a title="Line 70: Conditional coverage 50% (1/2)."> 41</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 70: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="keyword">null</span> == gsaCharSet) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 69</td> <td class="nbHitsCovered"> 42</td> <td class="src"><pre class="src"> GsaFeedFileSender(URL feedUrl, URL groupsUrl, Charset gsaCharSet) {</pre></td></tr>
+<tr> <td class="numLineCover"> 70</td> <td class="nbHitsUncovered"><a title="Line 70: Conditional coverage 50% (1/2)."> 42</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 70: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="keyword">null</span> == gsaCharSet) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 71</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> NullPointerException();</span></pre></td></tr>
<tr> <td class="numLine"> 72</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 73</td> <td class="nbHitsCovered"> 41</td> <td class="src"><pre class="src"> feedDest = feedUrl;</pre></td></tr>
-<tr> <td class="numLineCover"> 74</td> <td class="nbHitsCovered"> 41</td> <td class="src"><pre class="src"> groupsDest = groupsUrl;</pre></td></tr>
-<tr> <td class="numLineCover"> 75</td> <td class="nbHitsCovered"> 41</td> <td class="src"><pre class="src"> gsaCharEncoding = gsaCharSet;</pre></td></tr>
-<tr> <td class="numLineCover"> 76</td> <td class="nbHitsCovered"> 41</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 73</td> <td class="nbHitsCovered"> 42</td> <td class="src"><pre class="src"> feedDest = feedUrl;</pre></td></tr>
+<tr> <td class="numLineCover"> 74</td> <td class="nbHitsCovered"> 42</td> <td class="src"><pre class="src"> groupsDest = groupsUrl;</pre></td></tr>
+<tr> <td class="numLineCover"> 75</td> <td class="nbHitsCovered"> 42</td> <td class="src"><pre class="src"> gsaCharEncoding = gsaCharSet;</pre></td></tr>
+<tr> <td class="numLineCover"> 76</td> <td class="nbHitsCovered"> 42</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 77</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 78</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.IOHelper.html b/coverage/com.google.enterprise.adaptor.IOHelper.html
index 95626f2..99a45a1 100644
--- a/coverage/com.google.enterprise.adaptor.IOHelper.html
+++ b/coverage/com.google.enterprise.adaptor.IOHelper.html
@@ -83,8 +83,8 @@
<tr> <td class="numLineCover"> 33</td> <td class="nbHitsCovered"> 80</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] buffer = <span class="keyword">new</span> <span class="keyword">byte</span>[1024];</pre></td></tr>
<tr> <td class="numLine"> 34</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">int</span> read;</pre></td></tr>
-<tr> <td class="numLineCover"> 35</td> <td class="nbHitsCovered"><a title="Line 35: Conditional coverage 100% (2/2)."> 229</a></td> <td class="src"><pre class="src"> <a title="Line 35: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> ((read = in.read(buffer)) != -1) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 36</td> <td class="nbHitsCovered"> 150</td> <td class="src"><pre class="src"> out.write(buffer, 0, read);</pre></td></tr>
+<tr> <td class="numLineCover"> 35</td> <td class="nbHitsCovered"><a title="Line 35: Conditional coverage 100% (2/2)."> 223</a></td> <td class="src"><pre class="src"> <a title="Line 35: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> ((read = in.read(buffer)) != -1) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 36</td> <td class="nbHitsCovered"> 144</td> <td class="src"><pre class="src"> out.write(buffer, 0, read);</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="numLineCover"> 38</td> <td class="nbHitsCovered"> 78</td> <td class="src"><pre class="src"> out.flush();</pre></td></tr>
diff --git a/coverage/com.google.enterprise.adaptor.Journal.html b/coverage/com.google.enterprise.adaptor.Journal.html
index bd06f2c..bada73d 100644
--- a/coverage/com.google.enterprise.adaptor.Journal.html
+++ b/coverage/com.google.enterprise.adaptor.Journal.html
@@ -114,7 +114,7 @@
<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"> <span class="comment">/** Request processing start time storage until processing completion. */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 47</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> <span class="keyword">private</span> ThreadLocal<Long> requestProcessingStart = <span class="keyword">new</span> ThreadLocal<Long>();</pre></td></tr>
+<tr> <td class="numLineCover"> 47</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> <span class="keyword">private</span> ThreadLocal<Long> requestProcessingStart = <span class="keyword">new</span> ThreadLocal<Long>();</pre></td></tr>
<tr> <td class="numLine"> 48</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 49</td> <td class="nbHits"> </td>
@@ -135,7 +135,7 @@
<td class="src"><pre class="src"> <span class="comment">/** Date in milliseconds. */</span></pre></td></tr>
<tr> <td class="numLine"> 57</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">long</span> lastSuccessfulFullPushEnd;</pre></td></tr>
-<tr> <td class="numLineCover"> 58</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> <span class="keyword">private</span> CompletionStatus lastFullPushStatus = CompletionStatus.SUCCESS;</pre></td></tr>
+<tr> <td class="numLineCover"> 58</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> <span class="keyword">private</span> CompletionStatus lastFullPushStatus = CompletionStatus.SUCCESS;</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>
@@ -144,7 +144,7 @@
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">long</span> lastSuccessfulIncrementalPushStart;</pre></td></tr>
<tr> <td class="numLine"> 62</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">long</span> lastSuccessfulIncrementalPushEnd;</pre></td></tr>
-<tr> <td class="numLineCover"> 63</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> <span class="keyword">private</span> CompletionStatus lastIncrementalPushStatus = CompletionStatus.SUCCESS;</pre></td></tr>
+<tr> <td class="numLineCover"> 63</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> <span class="keyword">private</span> CompletionStatus lastIncrementalPushStatus = CompletionStatus.SUCCESS;</pre></td></tr>
<tr> <td class="numLine"> 64</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLineCover"> 65</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> enum CompletionStatus {</pre></td></tr>
@@ -177,20 +177,20 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 82</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">protected</span> Journal(TimeProvider timeProvider) {</pre></td></tr>
-<tr> <td class="numLineCover"> 83</td> <td class="nbHitsCovered"> 161</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(<span class="keyword">false</span>, timeProvider);</pre></td></tr>
-<tr> <td class="numLineCover"> 84</td> <td class="nbHitsCovered"> 161</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 83</td> <td class="nbHitsCovered"> 162</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(<span class="keyword">false</span>, timeProvider);</pre></td></tr>
+<tr> <td class="numLineCover"> 84</td> <td class="nbHitsCovered"> 162</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 85</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 86</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> <span class="keyword">protected</span> Journal(<span class="keyword">boolean</span> reducedMem, TimeProvider timeProvider) {</pre></td></tr>
-<tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.timeProvider = timeProvider;</pre></td></tr>
-<tr> <td class="numLineCover"> 88</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.startedAt = timeProvider.currentTimeMillis();</pre></td></tr>
-<tr> <td class="numLineCover"> 89</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.timeResolution = determineTimeResolution();</pre></td></tr>
+<tr> <td class="numLineCover"> 86</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> <span class="keyword">protected</span> Journal(<span class="keyword">boolean</span> reducedMem, TimeProvider timeProvider) {</pre></td></tr>
+<tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.timeProvider = timeProvider;</pre></td></tr>
+<tr> <td class="numLineCover"> 88</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.startedAt = timeProvider.currentTimeMillis();</pre></td></tr>
+<tr> <td class="numLineCover"> 89</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.timeResolution = determineTimeResolution();</pre></td></tr>
<tr> <td class="numLine"> 90</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// We want data within the Stats to agree with each other, so we provide the</span></pre></td></tr>
<tr> <td class="numLine"> 91</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// same time to each of them.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 92</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> <span class="keyword">long</span> time = startedAt;</pre></td></tr>
-<tr> <td class="numLineCover"> 93</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.timeStats = <span class="keyword">new</span> Stats[] {</pre></td></tr>
+<tr> <td class="numLineCover"> 92</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> <span class="keyword">long</span> time = startedAt;</pre></td></tr>
+<tr> <td class="numLineCover"> 93</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.timeStats = <span class="keyword">new</span> Stats[] {</pre></td></tr>
<tr> <td class="numLine"> 94</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">new</span> Stats(60, 1000, time), <span class="comment">/* one minute, second granularity */</span></pre></td></tr>
<tr> <td class="numLine"> 95</td> <td class="nbHits"> </td>
@@ -199,19 +199,19 @@
<td class="src"><pre class="src"> <span class="keyword">new</span> Stats(48, 1000 * 60 * 30, time), <span class="comment">/* one day, half-hour granularity */</span></pre></td></tr>
<tr> <td class="numLine"> 97</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> };</pre></td></tr>
-<tr> <td class="numLineCover"> 98</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.dayStatsByHalfHour = <span class="keyword">this</span>.timeStats[<span class="keyword">this</span>.timeStats.length - 1];</pre></td></tr>
-<tr> <td class="numLineCover"> 99</td> <td class="nbHitsCovered"><a title="Line 99: Conditional coverage 100% (2/2)."> 200</a></td> <td class="src"><pre class="src"> <a title="Line 99: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (reducedMem) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 98</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.dayStatsByHalfHour = <span class="keyword">this</span>.timeStats[<span class="keyword">this</span>.timeStats.length - 1];</pre></td></tr>
+<tr> <td class="numLineCover"> 99</td> <td class="nbHitsCovered"><a title="Line 99: Conditional coverage 100% (2/2)."> 201</a></td> <td class="src"><pre class="src"> <a title="Line 99: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (reducedMem) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 100</td> <td class="nbHitsCovered"> 38</td> <td class="src"><pre class="src"> timesPushed = <span class="keyword">new</span> NegSizeFakeMap<DocId, Integer>();</pre></td></tr>
<tr> <td class="numLineCover"> 101</td> <td class="nbHitsCovered"> 38</td> <td class="src"><pre class="src"> timesGsaRequested = <span class="keyword">new</span> NegSizeFakeMap<DocId, Integer>();</pre></td></tr>
<tr> <td class="numLineCover"> 102</td> <td class="nbHitsCovered"> 38</td> <td class="src"><pre class="src"> timesNonGsaRequested = <span class="keyword">new</span> NegSizeFakeMap<DocId, Integer>();</pre></td></tr>
<tr> <td class="numLine"> 103</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 104</td> <td class="nbHitsCovered"> 162</td> <td class="src"><pre class="src"> timesPushed = <span class="keyword">new</span> HashMap<DocId, Integer>();</pre></td></tr>
-<tr> <td class="numLineCover"> 105</td> <td class="nbHitsCovered"> 162</td> <td class="src"><pre class="src"> timesGsaRequested = <span class="keyword">new</span> HashMap<DocId, Integer>();</pre></td></tr>
-<tr> <td class="numLineCover"> 106</td> <td class="nbHitsCovered"> 162</td> <td class="src"><pre class="src"> timesNonGsaRequested = <span class="keyword">new</span> HashMap<DocId, Integer>();</pre></td></tr>
+<tr> <td class="numLineCover"> 104</td> <td class="nbHitsCovered"> 163</td> <td class="src"><pre class="src"> timesPushed = <span class="keyword">new</span> HashMap<DocId, Integer>();</pre></td></tr>
+<tr> <td class="numLineCover"> 105</td> <td class="nbHitsCovered"> 163</td> <td class="src"><pre class="src"> timesGsaRequested = <span class="keyword">new</span> HashMap<DocId, Integer>();</pre></td></tr>
+<tr> <td class="numLineCover"> 106</td> <td class="nbHitsCovered"> 163</td> <td class="src"><pre class="src"> timesNonGsaRequested = <span class="keyword">new</span> HashMap<DocId, Integer>();</pre></td></tr>
<tr> <td class="numLine"> 107</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 108</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 108</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 109</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 110</td> <td class="nbHits"> </td>
@@ -351,12 +351,12 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 201</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">long</span> determineTimeResolution() {</pre></td></tr>
-<tr> <td class="numLineCover"> 202</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> <span class="keyword">long</span> resolution = Long.MAX_VALUE;</pre></td></tr>
-<tr> <td class="numLineCover"> 203</td> <td class="nbHitsCovered"><a title="Line 203: Conditional coverage 100% (2/2)."> 1200</a></td> <td class="src"><pre class="src"> <a title="Line 203: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < 5; i++) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 204</td> <td class="nbHitsCovered"> 1000</td> <td class="src"><pre class="src"> resolution = Math.min(resolution, determineTimeResolutionOnce());</pre></td></tr>
+<tr> <td class="numLineCover"> 202</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> <span class="keyword">long</span> resolution = Long.MAX_VALUE;</pre></td></tr>
+<tr> <td class="numLineCover"> 203</td> <td class="nbHitsCovered"><a title="Line 203: Conditional coverage 100% (2/2)."> 1206</a></td> <td class="src"><pre class="src"> <a title="Line 203: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < 5; i++) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 204</td> <td class="nbHitsCovered"> 1005</td> <td class="src"><pre class="src"> resolution = Math.min(resolution, determineTimeResolutionOnce());</pre></td></tr>
<tr> <td class="numLine"> 205</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 206</td> <td class="nbHitsCovered"> 200</td> <td class="src"><pre class="src"> <span class="keyword">return</span> resolution;</pre></td></tr>
+<tr> <td class="numLineCover"> 206</td> <td class="nbHitsCovered"> 201</td> <td class="src"><pre class="src"> <span class="keyword">return</span> resolution;</pre></td></tr>
<tr> <td class="numLine"> 207</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 208</td> <td class="nbHits"> </td>
@@ -371,13 +371,13 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 213</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">long</span> determineTimeResolutionOnce() {</pre></td></tr>
-<tr> <td class="numLineCover"> 214</td> <td class="nbHitsCovered"> 1000</td> <td class="src"><pre class="src"> <span class="keyword">long</span> time = timeProvider.currentTimeMillis();</pre></td></tr>
-<tr> <td class="numLineCover"> 215</td> <td class="nbHitsCovered"> 1000</td> <td class="src"><pre class="src"> <span class="keyword">long</span> startTime = time;</pre></td></tr>
-<tr> <td class="numLineCover"> 216</td> <td class="nbHitsCovered"><a title="Line 216: Conditional coverage 100% (2/2)."> 457725</a></td> <td class="src"><pre class="src"> <a title="Line 216: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (startTime == time) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 217</td> <td class="nbHitsCovered"> 456725</td> <td class="src"><pre class="src"> time = timeProvider.currentTimeMillis();</pre></td></tr>
+<tr> <td class="numLineCover"> 214</td> <td class="nbHitsCovered"> 1005</td> <td class="src"><pre class="src"> <span class="keyword">long</span> time = timeProvider.currentTimeMillis();</pre></td></tr>
+<tr> <td class="numLineCover"> 215</td> <td class="nbHitsCovered"> 1005</td> <td class="src"><pre class="src"> <span class="keyword">long</span> startTime = time;</pre></td></tr>
+<tr> <td class="numLineCover"> 216</td> <td class="nbHitsCovered"><a title="Line 216: Conditional coverage 100% (2/2)."> 494755</a></td> <td class="src"><pre class="src"> <a title="Line 216: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (startTime == time) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 217</td> <td class="nbHitsCovered"> 493750</td> <td class="src"><pre class="src"> time = timeProvider.currentTimeMillis();</pre></td></tr>
<tr> <td class="numLine"> 218</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 219</td> <td class="nbHitsCovered"> 1000</td> <td class="src"><pre class="src"> <span class="keyword">return</span> time - startTime;</pre></td></tr>
+<tr> <td class="numLineCover"> 219</td> <td class="nbHitsCovered"> 1005</td> <td class="src"><pre class="src"> <span class="keyword">return</span> time - startTime;</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="numLine"> 221</td> <td class="nbHits"> </td>
@@ -402,12 +402,12 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 233</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">synchronized</span> <span class="keyword">void</span> recordFullPushStarted() {</pre></td></tr>
-<tr> <td class="numLineCover"> 234</td> <td class="nbHitsCovered"><a title="Line 234: Conditional coverage 100% (2/2)."> 21</a></td> <td class="src"><pre class="src"> <a title="Line 234: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (currentFullPushStart != 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 234</td> <td class="nbHitsCovered"><a title="Line 234: Conditional coverage 100% (2/2)."> 22</a></td> <td class="src"><pre class="src"> <a title="Line 234: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (currentFullPushStart != 0) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 235</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalStateException(<span class="string">"Full push already started"</span>);</pre></td></tr>
<tr> <td class="numLine"> 236</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 237</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> currentFullPushStart = timeProvider.currentTimeMillis();</pre></td></tr>
-<tr> <td class="numLineCover"> 238</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 237</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> currentFullPushStart = timeProvider.currentTimeMillis();</pre></td></tr>
+<tr> <td class="numLineCover"> 238</td> <td class="nbHitsCovered"> 21</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 239</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 240</td> <td class="nbHits"> </td>
@@ -738,26 +738,26 @@
<td class="src"><pre class="src"> <span class="keyword">long</span> pendingStatPeriodEnd;</pre></td></tr>
<tr> <td class="numLine"> 450</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 451</td> <td class="nbHitsCovered"> 601</td> <td class="src"><pre class="src"> <span class="keyword">public</span> Stats(<span class="keyword">int</span> statCount, <span class="keyword">long</span> snapshotDuration, <span class="keyword">long</span> currentTime) {</pre></td></tr>
-<tr> <td class="numLineCover"> 452</td> <td class="nbHitsCovered"> 601</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.snapshotDurationMs = snapshotDuration;</pre></td></tr>
+<tr> <td class="numLineCover"> 451</td> <td class="nbHitsCovered"> 604</td> <td class="src"><pre class="src"> <span class="keyword">public</span> Stats(<span class="keyword">int</span> statCount, <span class="keyword">long</span> snapshotDuration, <span class="keyword">long</span> currentTime) {</pre></td></tr>
+<tr> <td class="numLineCover"> 452</td> <td class="nbHitsCovered"> 604</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.snapshotDurationMs = snapshotDuration;</pre></td></tr>
<tr> <td class="numLine"> 453</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 454</td> <td class="nbHitsCovered"> 601</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.stats = <span class="keyword">new</span> Stat[statCount];</pre></td></tr>
+<tr> <td class="numLineCover"> 454</td> <td class="nbHitsCovered"> 604</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.stats = <span class="keyword">new</span> Stat[statCount];</pre></td></tr>
<tr> <td class="numLine"> 455</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Pre-allocate all Stat objects</span></pre></td></tr>
-<tr> <td class="numLineCover"> 456</td> <td class="nbHitsCovered"><a title="Line 456: Conditional coverage 100% (2/2)."> 34203</a></td> <td class="src"><pre class="src"> <a title="Line 456: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < <span class="keyword">this</span>.stats.length; i++) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 457</td> <td class="nbHitsCovered"> 33602</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.stats[i] = <span class="keyword">new</span> Stat();</pre></td></tr>
+<tr> <td class="numLineCover"> 456</td> <td class="nbHitsCovered"><a title="Line 456: Conditional coverage 100% (2/2)."> 34374</a></td> <td class="src"><pre class="src"> <a title="Line 456: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < <span class="keyword">this</span>.stats.length; i++) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 457</td> <td class="nbHitsCovered"> 33770</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.stats[i] = <span class="keyword">new</span> Stat();</pre></td></tr>
<tr> <td class="numLine"> 458</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 459</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 460</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Initialize expiration times for pendingStat objects</span></pre></td></tr>
-<tr> <td class="numLineCover"> 461</td> <td class="nbHitsCovered"> 601</td> <td class="src"><pre class="src"> <span class="keyword">long</span> duration = <span class="keyword">this</span>.snapshotDurationMs;</pre></td></tr>
-<tr> <td class="numLineCover"> 462</td> <td class="nbHitsCovered"> 601</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.pendingStatPeriodEnd = ((currentTime / duration) * duration)</pre></td></tr>
+<tr> <td class="numLineCover"> 461</td> <td class="nbHitsCovered"> 604</td> <td class="src"><pre class="src"> <span class="keyword">long</span> duration = <span class="keyword">this</span>.snapshotDurationMs;</pre></td></tr>
+<tr> <td class="numLineCover"> 462</td> <td class="nbHitsCovered"> 604</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.pendingStatPeriodEnd = ((currentTime / duration) * duration)</pre></td></tr>
<tr> <td class="numLine"> 463</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> + duration;</pre></td></tr>
-<tr> <td class="numLineCover"> 464</td> <td class="nbHitsCovered"> 601</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 464</td> <td class="nbHitsCovered"> 604</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 465</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 466</td> <td class="nbHits"> </td>
@@ -890,9 +890,9 @@
<td class="src"><pre class="src"> <span class="keyword">boolean</span> gsaRetrievedDocument;</pre></td></tr>
<tr> <td class="numLine"> 541</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 542</td> <td class="nbHitsCovered"> 33602</td> <td class="src"><pre class="src"> <span class="keyword">public</span> Stat() {</pre></td></tr>
-<tr> <td class="numLineCover"> 543</td> <td class="nbHitsCovered"> 33602</td> <td class="src"><pre class="src"> reset();</pre></td></tr>
-<tr> <td class="numLineCover"> 544</td> <td class="nbHitsCovered"> 33602</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 542</td> <td class="nbHitsCovered"> 33770</td> <td class="src"><pre class="src"> <span class="keyword">public</span> Stat() {</pre></td></tr>
+<tr> <td class="numLineCover"> 543</td> <td class="nbHitsCovered"> 33770</td> <td class="src"><pre class="src"> reset();</pre></td></tr>
+<tr> <td class="numLineCover"> 544</td> <td class="nbHitsCovered"> 33770</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 545</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 546</td> <td class="nbHits"> </td>
@@ -903,13 +903,13 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 549</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> reset() {</pre></td></tr>
-<tr> <td class="numLineCover"> 550</td> <td class="nbHitsCovered"> 34187</td> <td class="src"><pre class="src"> requestProcessingsCount = 0;</pre></td></tr>
-<tr> <td class="numLineCover"> 551</td> <td class="nbHitsCovered"> 34187</td> <td class="src"><pre class="src"> requestProcessingsFailureCount = 0;</pre></td></tr>
-<tr> <td class="numLineCover"> 552</td> <td class="nbHitsCovered"> 34187</td> <td class="src"><pre class="src"> requestProcessingsDurationSum = 0;</pre></td></tr>
-<tr> <td class="numLineCover"> 553</td> <td class="nbHitsCovered"> 34187</td> <td class="src"><pre class="src"> requestProcessingsMaxDuration = 0;</pre></td></tr>
-<tr> <td class="numLineCover"> 554</td> <td class="nbHitsCovered"> 34187</td> <td class="src"><pre class="src"> requestProcessingsThroughput = 0;</pre></td></tr>
-<tr> <td class="numLineCover"> 555</td> <td class="nbHitsCovered"> 34187</td> <td class="src"><pre class="src"> gsaRetrievedDocument = <span class="keyword">false</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 556</td> <td class="nbHitsCovered"> 34187</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 550</td> <td class="nbHitsCovered"> 34355</td> <td class="src"><pre class="src"> requestProcessingsCount = 0;</pre></td></tr>
+<tr> <td class="numLineCover"> 551</td> <td class="nbHitsCovered"> 34355</td> <td class="src"><pre class="src"> requestProcessingsFailureCount = 0;</pre></td></tr>
+<tr> <td class="numLineCover"> 552</td> <td class="nbHitsCovered"> 34355</td> <td class="src"><pre class="src"> requestProcessingsDurationSum = 0;</pre></td></tr>
+<tr> <td class="numLineCover"> 553</td> <td class="nbHitsCovered"> 34355</td> <td class="src"><pre class="src"> requestProcessingsMaxDuration = 0;</pre></td></tr>
+<tr> <td class="numLineCover"> 554</td> <td class="nbHitsCovered"> 34355</td> <td class="src"><pre class="src"> requestProcessingsThroughput = 0;</pre></td></tr>
+<tr> <td class="numLineCover"> 555</td> <td class="nbHitsCovered"> 34355</td> <td class="src"><pre class="src"> gsaRetrievedDocument = <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 556</td> <td class="nbHitsCovered"> 34355</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 557</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 558</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.OneAtATimeRunnable.html b/coverage/com.google.enterprise.adaptor.OneAtATimeRunnable.html
index 5e74554..dfcaf7a 100644
--- a/coverage/com.google.enterprise.adaptor.OneAtATimeRunnable.html
+++ b/coverage/com.google.enterprise.adaptor.OneAtATimeRunnable.html
@@ -132,21 +132,21 @@
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 61</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"> 62</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> Thread thisThread = Thread.currentThread();</pre></td></tr>
-<tr> <td class="numLineCover"> 63</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> success = runningThread.compareAndSet(<span class="keyword">null</span>, thisThread);</pre></td></tr>
-<tr> <td class="numLineCover"> 64</td> <td class="nbHitsCovered"><a title="Line 64: Conditional coverage 100% (2/2)."> 14</a></td> <td class="src"><pre class="src"> <a title="Line 64: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!success) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 62</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> Thread thisThread = Thread.currentThread();</pre></td></tr>
+<tr> <td class="numLineCover"> 63</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> success = runningThread.compareAndSet(<span class="keyword">null</span>, thisThread);</pre></td></tr>
+<tr> <td class="numLineCover"> 64</td> <td class="nbHitsCovered"><a title="Line 64: Conditional coverage 100% (2/2)."> 15</a></td> <td class="src"><pre class="src"> <a title="Line 64: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!success) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 65</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> alreadyRunningRunnable.run();</pre></td></tr>
<tr> <td class="numLineCover"> 66</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span>;</pre></td></tr>
<tr> <td class="numLine"> 67</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 68</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 69</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> runnable.run();</pre></td></tr>
+<tr> <td class="numLineCover"> 69</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> runnable.run();</pre></td></tr>
<tr> <td class="numLine"> 70</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 71</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> runningThread.compareAndSet(thisThread, <span class="keyword">null</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 72</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 73</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 71</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> runningThread.compareAndSet(thisThread, <span class="keyword">null</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 72</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 73</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 74</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 75</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.Principal.html b/coverage/com.google.enterprise.adaptor.Principal.html
index d7aa105..9e6d1bf 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"> 660</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"> 665</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>
@@ -165,24 +165,24 @@
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 84</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"> 85</td> <td class="nbHitsCovered"> 660</td> <td class="src"><pre class="src"> <span class="keyword">int</span> spacecmp = namespace.compareTo(other.namespace);</pre></td></tr>
-<tr> <td class="numLineCover"> 86</td> <td class="nbHitsCovered"><a title="Line 86: Conditional coverage 100% (2/2)."> 660</a></td> <td class="src"><pre class="src"> <a title="Line 86: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (0 != spacecmp) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"> 146</td> <td class="src"><pre class="src"> <span class="keyword">return</span> spacecmp;</pre></td></tr>
+<tr> <td class="numLineCover"> 85</td> <td class="nbHitsCovered"> 665</td> <td class="src"><pre class="src"> <span class="keyword">int</span> spacecmp = namespace.compareTo(other.namespace);</pre></td></tr>
+<tr> <td class="numLineCover"> 86</td> <td class="nbHitsCovered"><a title="Line 86: Conditional coverage 100% (2/2)."> 665</a></td> <td class="src"><pre class="src"> <a title="Line 86: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (0 != spacecmp) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"> 144</td> <td class="src"><pre class="src"> <span class="keyword">return</span> spacecmp;</pre></td></tr>
<tr> <td class="numLine"> 88</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 89</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"> 90</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 91</td> <td class="nbHitsCovered"><a title="Line 91: Conditional coverage 100% (2/2)."> 514</a></td> <td class="src"><pre class="src"> <a title="Line 91: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (isUser() != other.isUser()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 92</td> <td class="nbHitsCovered"><a title="Line 92: Conditional coverage 100% (2/2)."> 49</a></td> <td class="src"><pre class="src"> <a title="Line 92: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> isUser() ? -1 : 1;</a></pre></td></tr>
+<tr> <td class="numLineCover"> 91</td> <td class="nbHitsCovered"><a title="Line 91: Conditional coverage 100% (2/2)."> 521</a></td> <td class="src"><pre class="src"> <a title="Line 91: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (isUser() != other.isUser()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 92</td> <td class="nbHitsCovered"><a title="Line 92: Conditional coverage 100% (2/2)."> 57</a></td> <td class="src"><pre class="src"> <a title="Line 92: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> isUser() ? -1 : 1;</a></pre></td></tr>
<tr> <td class="numLine"> 93</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 94</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"> 95</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 96</td> <td class="nbHitsCovered"> 465</td> <td class="src"><pre class="src"> <span class="keyword">return</span> name.compareTo(other.name);</pre></td></tr>
+<tr> <td class="numLineCover"> 96</td> <td class="nbHitsCovered"> 464</td> <td class="src"><pre class="src"> <span class="keyword">return</span> name.compareTo(other.name);</pre></td></tr>
<tr> <td class="numLine"> 97</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 98</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.ShutdownWaiter.html b/coverage/com.google.enterprise.adaptor.ShutdownWaiter.html
index 5317f1d..fb612b3 100644
--- a/coverage/com.google.enterprise.adaptor.ShutdownWaiter.html
+++ b/coverage/com.google.enterprise.adaptor.ShutdownWaiter.html
@@ -15,7 +15,7 @@
<tr><td><a href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">6</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:82px"><span class="text">29/35</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">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">10/10</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.7;</span>2.7</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter$1</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">2.7;</span>2.7</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter$NotificationFilter</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">3</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:72px"><span class="text">8/11</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">2.7;</span>2.7</td></tr>
- <tr><td><a href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter$NotificationRunnable</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">12/12</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">2.7;</span>2.7</td></tr>
+ <tr><td><a href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter$NotificationRunnable</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">2</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:83px"><span class="text">10/12</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">2.7;</span>2.7</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter$ShutdownException</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">4/4</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">2.7;</span>2.7</td></tr>
</table>
@@ -196,11 +196,11 @@
<tr> <td class="numLineCover"> 98</td> <td class="nbHitsCovered"><a title="Line 98: Conditional coverage 100% (2/2)."> 33</a></td> <td class="src"><pre class="src"> <a title="Line 98: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (stopped) {</a></pre></td></tr>
<tr> <td class="numLine"> 99</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Cleanup.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 100</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> processingCompleted(thread);</pre></td></tr>
-<tr> <td class="numLineCover"> 101</td> <td class="nbHitsCovered"> 2</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"> 100</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> processingCompleted(thread);</pre></td></tr>
+<tr> <td class="numLineCover"> 101</td> <td class="nbHitsCovered"> 1</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"> 102</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 103</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 103</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> }</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="numLine"> 105</td> <td class="nbHits"> </td>
@@ -257,10 +257,10 @@
<td class="src"><pre class="src"> <span class="comment"> * Denotes that processing has been shutdown.</span></pre></td></tr>
<tr> <td class="numLine"> 135</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 136</td> <td class="nbHitsCovered"> 2</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"> 137</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">private</span> ShutdownException() {</pre></td></tr>
-<tr> <td class="numLineCover"> 138</td> <td class="nbHitsCovered"> 2</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"> 139</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 136</td> <td class="nbHitsCovered"> 1</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"> 137</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">private</span> ShutdownException() {</pre></td></tr>
+<tr> <td class="numLineCover"> 138</td> <td class="nbHitsCovered"> 1</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"> 139</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 140</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 141</td> <td class="nbHits"> </td>
@@ -318,17 +318,17 @@
<tr> <td class="numLine"> 175</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 176</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> processingStarting(thread);</pre></td></tr>
-<tr> <td class="numLineCover"> 177</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> } <span class="keyword">catch</span> (ShutdownException ex) {</pre></td></tr>
-<tr> <td class="numLineCover"> 178</td> <td class="nbHitsCovered"> 1</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"> 179</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 177</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (ShutdownException ex) {</span></pre></td></tr>
+<tr> <td class="numLineCover"> 178</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> RuntimeException(ex);</span></pre></td></tr>
+<tr> <td class="numLineCover"> 179</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 180</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 181</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> delegate.run();</pre></td></tr>
+<tr> <td class="numLineCover"> 181</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> delegate.run();</pre></td></tr>
<tr> <td class="numLine"> 182</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 183</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> processingCompleted(thread);</pre></td></tr>
-<tr> <td class="numLineCover"> 184</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 185</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 183</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> processingCompleted(thread);</pre></td></tr>
+<tr> <td class="numLineCover"> 184</td> <td class="nbHitsCovered"> 25</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"> }</pre></td></tr>
<tr> <td class="numLine"> 186</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 187</td> <td class="nbHits"> </td>
diff --git a/coverage/com.google.enterprise.adaptor.SystemTimeProvider.html b/coverage/com.google.enterprise.adaptor.SystemTimeProvider.html
index 856bf7f..5124244 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"> 94</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"> 456173</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"> 493194</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 8e27b14..fbf3e1f 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"> 1169</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"> 1191</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/frame-sourcefiles-com.google.enterprise.adaptor.html b/coverage/frame-sourcefiles-com.google.enterprise.adaptor.html
index db1b353..1902e4d 100644
--- a/coverage/frame-sourcefiles-com.google.enterprise.adaptor.html
+++ b/coverage/frame-sourcefiles-com.google.enterprise.adaptor.html
@@ -111,7 +111,7 @@
<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.DocIdPusher.html">DocIdPusher</a> <i>(100%)</i></td>
</tr>
<tr>
-<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender</a> <i>(82%)</i></td>
+<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender</a> <i>(83%)</i></td>
</tr>
<tr>
<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.DocumentHandler.html">DocumentHandler</a> <i>(90%)</i></td>
@@ -237,7 +237,7 @@
<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.SessionManager.html">SessionManager</a> <i>(98%)</i></td>
</tr>
<tr>
-<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter</a> <i>(85%)</i></td>
+<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter</a> <i>(82%)</i></td>
</tr>
<tr>
<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.SleepHandler.html">SleepHandler</a> <i>(100%)</i></td>
diff --git a/coverage/frame-sourcefiles.html b/coverage/frame-sourcefiles.html
index 47e0ae1..c2febee 100644
--- a/coverage/frame-sourcefiles.html
+++ b/coverage/frame-sourcefiles.html
@@ -129,7 +129,7 @@
<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.DocIdPusher.html">DocIdPusher</a> <i>(100%)</i></td>
</tr>
<tr>
-<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender</a> <i>(82%)</i></td>
+<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender</a> <i>(83%)</i></td>
</tr>
<tr>
<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.DocumentHandler.html">DocumentHandler</a> <i>(90%)</i></td>
@@ -273,7 +273,7 @@
<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.SessionManager.html">SessionManager</a> <i>(98%)</i></td>
</tr>
<tr>
-<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter</a> <i>(85%)</i></td>
+<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter</a> <i>(82%)</i></td>
</tr>
<tr>
<td nowrap="nowrap"><a target="summary" href="com.google.enterprise.adaptor.experimental.Sim.html">Sim</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 5b12bc3..e319d13 100644
--- a/coverage/frame-summary-com.google.enterprise.adaptor.html
+++ b/coverage/frame-summary-com.google.enterprise.adaptor.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.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-com.google.enterprise.adaptor.html"'>com.google.enterprise.adaptor</a></td><td class="value">211</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">759</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:85px"><span class="text">4375/5134</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">273</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:84px"><span class="text">1499/1772</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.4954954954954953;</span>2.495</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">211</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">761</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:85px"><span class="text">4377/5138</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">273</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:84px"><span class="text">1499/1772</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.494;</span>2.494</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">8</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">288</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:7px"><span class="text">22/310</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">61</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:10px"><span class="text">7/68</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.5238095238095237;</span>2.524</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>
@@ -152,9 +152,9 @@
<tr><td><a href="com.google.enterprise.adaptor.DocIdPusher.html">DocIdPusher$Record</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">31/31</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">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">26/26</span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5333333333333334;</span>1.533</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.DocIdPusher.html">DocIdPusher$Record$Builder</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">38/38</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">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">4/4</span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5333333333333334;</span>1.533</td></tr>
- <tr><td><a href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">31</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:81px"><span class="text">136/167</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">12</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:77px"><span class="text">42/54</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.6;</span>4.6</td></tr>
- <tr><td><a href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender$AclItem</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">12/12</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">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">4/4</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.6;</span>4.6</td></tr>
- <tr><td><a href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender$Item</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">4.6;</span>4.6</td></tr>
+ <tr><td><a href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">31</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:81px"><span class="text">139/170</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">12</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:77px"><span class="text">42/54</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.375;</span>4.375</td></tr>
+ <tr><td><a href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender$AclItem</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">13/13</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">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">4/4</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.375;</span>4.375</td></tr>
+ <tr><td><a href="com.google.enterprise.adaptor.DocIdSender.html">DocIdSender$Item</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">4.375;</span>4.375</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.DocumentHandler.html">DocumentHandler</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">8</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:96px"><span class="text">220/228</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">6</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:95px"><span class="text">134/140</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.454545454545454;</span>4.455</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.DocumentHandler.html">DocumentHandler$1</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">1/1</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">4.454545454545454;</span>4.455</td></tr>
@@ -291,7 +291,7 @@
<tr><td><a href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">6</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:82px"><span class="text">29/35</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">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">10/10</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.7;</span>2.7</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter$1</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">2.7;</span>2.7</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter$NotificationFilter</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">3</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:72px"><span class="text">8/11</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">2.7;</span>2.7</td></tr>
- <tr><td><a href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter$NotificationRunnable</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">12/12</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">2.7;</span>2.7</td></tr>
+ <tr><td><a href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter$NotificationRunnable</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">2</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:83px"><span class="text">10/12</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">2.7;</span>2.7</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.ShutdownWaiter.html">ShutdownWaiter$ShutdownException</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">4/4</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">2.7;</span>2.7</td></tr>
<tr><td><a href="com.google.enterprise.adaptor.SleepHandler.html">SleepHandler</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">19/19</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">0</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">4/4</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.0;</span>4</td></tr>
diff --git a/coverage/frame-summary.html b/coverage/frame-summary.html
index 3de2fe3..cb7a223 100644
--- a/coverage/frame-summary.html
+++ b/coverage/frame-summary.html
@@ -16,8 +16,8 @@
<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">252</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">1412</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:77px"><span class="text">4793/6205</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">468</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:77px"><span class="text">1627/2095</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.532411408815903;</span>2.532</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">211</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">759</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:85px"><span class="text">4375/5134</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">273</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:84px"><span class="text">1499/1772</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.4954954954954953;</span>2.495</td></tr>
+ <tr><td><b>All Packages</b></td><td class="value">252</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">1414</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:77px"><span class="text">4795/6209</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">468</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:77px"><span class="text">1627/2095</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.5310880829015545;</span>2.531</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">211</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">761</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:85px"><span class="text">4377/5138</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">273</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:84px"><span class="text">1499/1772</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.494;</span>2.494</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">8</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">288</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:7px"><span class="text">22/310</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">61</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:10px"><span class="text">7/68</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.5238095238095237;</span>2.524</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>