<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#Fri Nov 28 00:09:45 PST 2008
+#Tue Jan 13 14:27:58 PST 2009
 cleanup.add_default_serial_version_id=true
 cleanup.add_generated_serial_version_id=false
 cleanup.add_missing_annotations=true
@@ -64,7 +64,7 @@ org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.overrideannotation=true
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=&lt;?xml version\=&quot;1.0&quot; encoding\=&quot;UTF-8&quot;?&gt;&lt;templates&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;gettercomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for getter method&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.gettercomment&quot; name\=&quot;gettercomment&quot;&gt;&lt;/template&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;settercomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for setter method&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.settercomment&quot; name\=&quot;settercomment&quot;&gt;&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;constructorcomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for created constructors&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.constructorcomment&quot; name\=&quot;constructorcomment&quot;&gt;/**\n * ${tags}\n */&lt;/template&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;filecomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for created Java files&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.filecomment&quot; name\=&quot;filecomment&quot;&gt;&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;typecomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for created types&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.typecomment&quot; name\=&quot;typecomment&quot;&gt;/**\n * @author ${user}\n *\n * ${tags}\n */&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;fieldcomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for fields&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.fieldcomment&quot; name\=&quot;fieldcomment&quot;&gt;/**\n * \n */&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;methodcomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for non-overriding methods&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.methodcomment&quot; name\=&quot;methodcomment&quot;&gt;/**\n * ${tags}\n */&lt;/template&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;overridecomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for overriding methods&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.overridecomment&quot; name\=&quot;overridecomment&quot;&gt;&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;delegatecomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for delegate methods&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.delegatecomment&quot; name\=&quot;delegatecomment&quot;&gt;/**\n * ${tags}\n * ${see_to_target}\n */&lt;/template&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;newtype_context&quot; deleted\=&quot;false&quot; description\=&quot;Newly created files&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.newtype&quot; name\=&quot;newtype&quot;&gt;${package_declaration}\n\n${typecomment}\n${type_declaration}&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;classbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in new class type bodies&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.classbody&quot; name\=&quot;classbody&quot;&gt;\n&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;interfacebody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in new interface type bodies&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.interfacebody&quot; name\=&quot;interfacebody&quot;&gt;\n&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;enumbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in new enum type bodies&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.enumbody&quot; name\=&quot;enumbody&quot;&gt;\n&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;annotationbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in new annotation type bodies&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.annotationbody&quot; name\=&quot;annotationbody&quot;&gt;\n&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;catchblock_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in new catch blocks&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.catchblock&quot; name\=&quot;catchblock&quot;&gt;// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();&lt;/template&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;methodbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in created method stubs&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.methodbody&quot; name\=&quot;methodbody&quot;&gt;${body_statement}&lt;/template&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;constructorbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in created constructor stubs&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.constructorbody&quot; name\=&quot;constructorbody&quot;&gt;${body_statement}&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;getterbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in created getters&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.getterbody&quot; name\=&quot;getterbody&quot;&gt;return ${field};&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;setterbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in created setters&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.setterbody&quot; name\=&quot;setterbody&quot;&gt;${field} \= ${param};&lt;/template&gt;&lt;/templates&gt;
+org.eclipse.jdt.ui.text.custom_code_templates=&lt;?xml version\=&quot;1.0&quot; encoding\=&quot;UTF-8&quot;?&gt;&lt;templates&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;gettercomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for getter method&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.gettercomment&quot; name\=&quot;gettercomment&quot;&gt;&lt;/template&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;settercomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for setter method&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.settercomment&quot; name\=&quot;settercomment&quot;&gt;&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;constructorcomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for created constructors&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.constructorcomment&quot; name\=&quot;constructorcomment&quot;&gt;/**\n * ${tags}\n */&lt;/template&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;filecomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for created Java files&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.filecomment&quot; name\=&quot;filecomment&quot;&gt;/*\n *   Copyright 2008-2009 LinkedIn, Inc\n *\n *  Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);\n *   you may not use this file except in compliance with the License.\n *   You may obtain a copy of the License at\n *\n *      http\://www.apache.org/licenses/LICENSE-2.0\n *\n *  Unless required by applicable law or agreed to in writing, software\n *  distributed under the License is distributed on an &quot;AS IS&quot; BASIS,\n *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *  See the License for the specific language governing permissions and\n *  limitations under the License.\n */&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;typecomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for created types&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.typecomment&quot; name\=&quot;typecomment&quot;&gt;/**\n * @author ${user}\n *\n * ${tags}\n */&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;fieldcomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for fields&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.fieldcomment&quot; name\=&quot;fieldcomment&quot;&gt;/**\n * \n */&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;methodcomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for non-overriding methods&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.methodcomment&quot; name\=&quot;methodcomment&quot;&gt;/**\n * ${tags}\n */&lt;/template&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;overridecomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for overriding methods&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.overridecomment&quot; name\=&quot;overridecomment&quot;&gt;&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;delegatecomment_context&quot; deleted\=&quot;false&quot; description\=&quot;Comment for delegate methods&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.delegatecomment&quot; name\=&quot;delegatecomment&quot;&gt;/**\n * ${tags}\n * ${see_to_target}\n */&lt;/template&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;newtype_context&quot; deleted\=&quot;false&quot; description\=&quot;Newly created files&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.newtype&quot; name\=&quot;newtype&quot;&gt;${package_declaration}\n\n${typecomment}\n${type_declaration}&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;classbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in new class type bodies&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.classbody&quot; name\=&quot;classbody&quot;&gt;\n&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;interfacebody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in new interface type bodies&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.interfacebody&quot; name\=&quot;interfacebody&quot;&gt;\n&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;enumbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in new enum type bodies&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.enumbody&quot; name\=&quot;enumbody&quot;&gt;\n&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;annotationbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in new annotation type bodies&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.annotationbody&quot; name\=&quot;annotationbody&quot;&gt;\n&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;catchblock_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in new catch blocks&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.catchblock&quot; name\=&quot;catchblock&quot;&gt;// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();&lt;/template&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;methodbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in created method stubs&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.methodbody&quot; name\=&quot;methodbody&quot;&gt;${body_statement}&lt;/template&gt;&lt;template autoinsert\=&quot;false&quot; context\=&quot;constructorbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in created constructor stubs&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.constructorbody&quot; name\=&quot;constructorbody&quot;&gt;${body_statement}&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;getterbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in created getters&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.getterbody&quot; name\=&quot;getterbody&quot;&gt;return ${field};&lt;/template&gt;&lt;template autoinsert\=&quot;true&quot; context\=&quot;setterbody_context&quot; deleted\=&quot;false&quot; description\=&quot;Code in created setters&quot; enabled\=&quot;true&quot; id\=&quot;org.eclipse.jdt.ui.text.codetemplates.setterbody&quot; name\=&quot;setterbody&quot;&gt;${field} \= ${param};&lt;/template&gt;&lt;/templates&gt;
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true</diff>
      <filename>.settings/org.eclipse.jdt.ui.prefs</filename>
    </modified>
    <modified>
      <diff>@@ -175,7 +175,18 @@
 
    END OF TERMS AND CONDITIONS
 
-   Copyright 2009 LinkedIn, Inc.
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets &quot;[]&quot;
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same &quot;printed page&quot; as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
 
    Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
    you may not use this file except in compliance with the License.
@@ -188,3 +199,4 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
+</diff>
      <filename>LICENSE</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 #Build Number for ANT. Do not edit!
-#Tue Jan 13 13:36:23 PST 2009
-build.number=142
+#Tue Jan 13 14:19:40 PST 2009
+build.number=143
 &gt;&gt;&gt;&gt;&gt;&gt;&gt;=1.8
-&lt;&lt;&lt;&lt;&lt;&lt;&lt;=build_number.txt
 =\=\=\=\=\=\=
+&lt;&lt;&lt;&lt;&lt;&lt;&lt;=build_number.txt</diff>
      <filename>build_number.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.examples;
 
 import voldemort.client.SocketStoreClientFactory;
@@ -8,31 +24,30 @@ import voldemort.versioning.Versioned;
 public class ClientExample {
 
     public static void main(String[] args) {
-	
-	// In real life this stuff would get wired in
-	int numThreads = 10;
+
+        // In real life this stuff would get wired in
+        int numThreads = 10;
         int maxQueuedRequests = 10;
-        int maxConnectionsPerNode = 10; 
+        int maxConnectionsPerNode = 10;
         int maxTotalConnections = 100;
         String bootstrapUrl = &quot;tcp://localhost:6666&quot;;
-        StoreClientFactory factory = 
-            new SocketStoreClientFactory(numThreads,
-        	    			 numThreads, 
-        	    			 maxQueuedRequests, 
-        	    			 maxConnectionsPerNode, 
-        	    			 maxTotalConnections, 
-        	    			 bootstrapUrl);
-        
-        StoreClient&lt;String,String&gt; client = factory.getStoreClient(&quot;my_store_name&quot;);
-        
+        StoreClientFactory factory = new SocketStoreClientFactory(numThreads,
+                                                                  numThreads,
+                                                                  maxQueuedRequests,
+                                                                  maxConnectionsPerNode,
+                                                                  maxTotalConnections,
+                                                                  bootstrapUrl);
+
+        StoreClient&lt;String, String&gt; client = factory.getStoreClient(&quot;my_store_name&quot;);
+
         // get the value
         Versioned&lt;String&gt; version = client.get(&quot;some_key&quot;);
-        
+
         // modify the value
         version.setObject(&quot;new_value&quot;);
-        
+
         // update the value
         client.put(&quot;some_key&quot;, version);
     }
-	
+
 }</diff>
      <filename>example/java/voldemort/examples/ClientExample.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 import java.io.BufferedReader;</diff>
      <filename>src/java/voldemort/VoldemortClientShell.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,33 +1,49 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 /**
  * Base exception
- *
+ * 
  * @author jay
- *
+ * 
  */
 public class VoldemortException extends RuntimeException {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
+
+    public VoldemortException() {
+        super();
+    }
 
-	public VoldemortException() {
-		super();
-	}
-	
-	public short getId() {
-	    return 1;
-	}
+    public short getId() {
+        return 1;
+    }
 
-	public VoldemortException(String s, Throwable t) {
-		super(s, t);
-	}
+    public VoldemortException(String s, Throwable t) {
+        super(s, t);
+    }
 
-	public VoldemortException(String s) {
-		super(s);
-	}
+    public VoldemortException(String s) {
+        super(s);
+    }
 
-	public VoldemortException(Throwable t) {
-		super(t);
-	}
+    public VoldemortException(Throwable t) {
+        super(t);
+    }
 
 }</diff>
      <filename>src/java/voldemort/VoldemortException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.annotations.concurrency;
 
 /**</diff>
      <filename>src/java/voldemort/annotations/concurrency/Immutable.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,29 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.annotations.concurrency;
 
 /**
  * Indicates the lock that protects a given variable
  * 
  * @author jay
- *
+ * 
  */
 public @interface LockedBy {
-	
-	String value();
+
+    String value();
 
 }</diff>
      <filename>src/java/voldemort/annotations/concurrency/LockedBy.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,27 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.annotations.concurrency;
 
 /**
- * Indicates that a class is not threadsafe, or tells implementors of an interface that their class 
- * need not be threadsafe
+ * Indicates that a class is not threadsafe, or tells implementors of an
+ * interface that their class need not be threadsafe
  * 
  * @author jay
- *
+ * 
  */
 public @interface NotThreadsafe {
 </diff>
      <filename>src/java/voldemort/annotations/concurrency/NotThreadsafe.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,27 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.annotations.concurrency;
 
 /**
- * Claims that a class is threadsafe or admonishes implementors of an interface to ensure that 
- * their implementation is threadsafe.
+ * Claims that a class is threadsafe or admonishes implementors of an interface
+ * to ensure that their implementation is threadsafe.
  * 
  * @author jay
- *
+ * 
  */
 public @interface Threadsafe {
 </diff>
      <filename>src/java/voldemort/annotations/concurrency/Threadsafe.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.annotations.jmx;
 
 import java.lang.annotation.ElementType;</diff>
      <filename>src/java/voldemort/annotations/jmx/JmxGetter.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.annotations.jmx;
 
 import java.lang.annotation.ElementType;</diff>
      <filename>src/java/voldemort/annotations/jmx/JmxManaged.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.annotations.jmx;
 
 import java.lang.annotation.ElementType;</diff>
      <filename>src/java/voldemort/annotations/jmx/JmxOperation.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.annotations.jmx;
 
 import java.lang.annotation.ElementType;</diff>
      <filename>src/java/voldemort/annotations/jmx/JmxParam.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.annotations.jmx;
 
 import java.lang.annotation.ElementType;</diff>
      <filename>src/java/voldemort/annotations/jmx/JmxSetter.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 import java.io.StringReader;</diff>
      <filename>src/java/voldemort/client/AbstractStoreClientFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 import voldemort.VoldemortException;</diff>
      <filename>src/java/voldemort/client/BootstrapFailureException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 import java.util.List;
@@ -35,7 +51,7 @@ public class DefaultStoreClient&lt;K, V&gt; implements StoreClient&lt;K, V&gt; {
 
     public boolean delete(K key) {
         Versioned&lt;V&gt; versioned = get(key);
-        if (versioned == null)
+        if(versioned == null)
             return false;
         return store.delete(key, versioned.getVersion());
     }
@@ -50,7 +66,7 @@ public class DefaultStoreClient&lt;K, V&gt; implements StoreClient&lt;K, V&gt; {
 
     public V getValue(K key) {
         Versioned&lt;V&gt; returned = get(key, null);
-        if (returned == null)
+        if(returned == null)
             return null;
         else
             return returned.getValue();
@@ -58,13 +74,13 @@ public class DefaultStoreClient&lt;K, V&gt; implements StoreClient&lt;K, V&gt; {
 
     public Versioned&lt;V&gt; get(K key, Versioned&lt;V&gt; defaultValue) {
         List&lt;Versioned&lt;V&gt;&gt; items = store.get(key);
-        if (items.size() == 0)
+        if(items.size() == 0)
             return defaultValue;
-        else if (items.size() == 1)
+        else if(items.size() == 1)
             return items.get(0);
         else
             throw new InconsistentDataException(&quot;Unresolved versions returned from get(&quot; + key
-                    + &quot;) = &quot; + items, items);
+                                                + &quot;) = &quot; + items, items);
     }
 
     public Versioned&lt;V&gt; get(K key) {
@@ -73,7 +89,7 @@ public class DefaultStoreClient&lt;K, V&gt; implements StoreClient&lt;K, V&gt; {
 
     public void put(K key, V value) {
         Versioned&lt;V&gt; versioned = get(key, NOT_FOUND);
-        if (versioned == NOT_FOUND)
+        if(versioned == NOT_FOUND)
             versioned = new Versioned&lt;V&gt;(value, new VectorClock());
         versioned.setObject(value);
         store.put(key, versioned);
@@ -83,7 +99,7 @@ public class DefaultStoreClient&lt;K, V&gt; implements StoreClient&lt;K, V&gt; {
         try {
             store.put(key, versioned);
             return true;
-        } catch (ObsoleteVersionException e) {
+        } catch(ObsoleteVersionException e) {
             return false;
         }
     }
@@ -99,17 +115,17 @@ public class DefaultStoreClient&lt;K, V&gt; implements StoreClient&lt;K, V&gt; {
     public boolean applyUpdate(UpdateAction&lt;K, V&gt; action, int maxTries) {
         boolean success = false;
         try {
-            for (int i = 0; i &lt; maxTries; i++) {
+            for(int i = 0; i &lt; maxTries; i++) {
                 try {
                     action.update(this);
                     success = true;
                     return success;
-                } catch (ObsoleteVersionException e) {
+                } catch(ObsoleteVersionException e) {
                     // ignore for now
                 }
             }
         } finally {
-            if (!success)
+            if(!success)
                 action.rollback();
         }
 
@@ -127,7 +143,7 @@ public class DefaultStoreClient&lt;K, V&gt; implements StoreClient&lt;K, V&gt; {
     }
 
     public List&lt;Node&gt; getResponsibleNodes(K key) {
-        if (this.routingStragy == null)
+        if(this.routingStragy == null)
             throw new UnsupportedOperationException(&quot;This store client has no routing strategy.&quot;);
         return this.routingStragy.routeRequest(keySerializer.toBytes(key));
     }</diff>
      <filename>src/java/voldemort/client/DefaultStoreClient.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 import java.net.URI;
@@ -123,9 +139,12 @@ public class HttpStoreClientFactory extends AbstractStoreClientFactory {
 
     @Override
     protected void validateUrl(URI url) {
-        if (!URL_SCHEME.equals(url.getScheme()))
+        if(!URL_SCHEME.equals(url.getScheme()))
             throw new IllegalArgumentException(&quot;Illegal scheme in bootstrap URL for HttpStoreClientFactory:&quot;
-                    + &quot; expected '&quot; + URL_SCHEME + &quot;' but found '&quot; + url.getScheme() + &quot;'.&quot;);
+                                               + &quot; expected '&quot;
+                                               + URL_SCHEME
+                                               + &quot;' but found '&quot;
+                                               + url.getScheme() + &quot;'.&quot;);
     }
 
 }</diff>
      <filename>src/java/voldemort/client/HttpStoreClientFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 import voldemort.serialization.Serializer;</diff>
      <filename>src/java/voldemort/client/MockStoreClientFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 public enum RoutingTier {
@@ -11,8 +27,8 @@ public enum RoutingTier {
     }
 
     public static RoutingTier fromDisplay(String type) {
-        for (RoutingTier t : RoutingTier.values())
-            if (t.toDisplay().equals(type))
+        for(RoutingTier t: RoutingTier.values())
+            if(t.toDisplay().equals(type))
                 return t;
         throw new IllegalArgumentException(&quot;No RoutingPolicy &quot; + type + &quot; exists.&quot;);
     }</diff>
      <filename>src/java/voldemort/client/RoutingTier.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 import java.net.URI;
@@ -123,9 +139,12 @@ public class SocketStoreClientFactory extends AbstractStoreClientFactory {
 
     @Override
     protected void validateUrl(URI url) {
-        if (!URL_SCHEME.equals(url.getScheme()))
+        if(!URL_SCHEME.equals(url.getScheme()))
             throw new IllegalArgumentException(&quot;Illegal scheme in bootstrap URL for SocketStoreClientFactory:&quot;
-                    + &quot; expected '&quot; + URL_SCHEME + &quot;' but found '&quot; + url.getScheme() + &quot;'.&quot;);
+                                               + &quot; expected '&quot;
+                                               + URL_SCHEME
+                                               + &quot;' but found '&quot;
+                                               + url.getScheme() + &quot;'.&quot;);
     }
 
 }</diff>
      <filename>src/java/voldemort/client/SocketStoreClientFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 import voldemort.store.ObsoleteVersionException;</diff>
      <filename>src/java/voldemort/client/StoreClient.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 import voldemort.versioning.InconsistencyResolver;</diff>
      <filename>src/java/voldemort/client/StoreClientFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 /**</diff>
      <filename>src/java/voldemort/client/UpdateAction.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 public enum VoldemortProtocol {</diff>
      <filename>src/java/voldemort/client/VoldemortProtocol.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.cluster;
 
 import java.io.Serializable;
@@ -34,8 +50,8 @@ public class Cluster implements Serializable {
     public Cluster(String name, List&lt;Node&gt; nodes) {
         this.name = Objects.nonNull(name);
         this.nodesById = new LinkedHashMap&lt;Integer, Node&gt;(nodes.size());
-        for (Node node : nodes) {
-            if (nodesById.containsKey(node.getId()))
+        for(Node node: nodes) {
+            if(nodesById.containsKey(node.getId()))
                 throw new IllegalArgumentException(&quot;Node id &quot; + node.getId()
                                                    + &quot; appears twice in the node list.&quot;);
             nodesById.put(node.getId(), node);
@@ -45,11 +61,11 @@ public class Cluster implements Serializable {
 
     private int getNumberOfTags(List&lt;Node&gt; nodes) {
         List&lt;Integer&gt; tags = new ArrayList&lt;Integer&gt;();
-        for (Node node : nodes)
+        for(Node node: nodes)
             tags.addAll(node.getPartitionIds());
         Collections.sort(tags);
-        for (int i = 0; i &lt; numberOfTags; i++) {
-            if (tags.get(i).longValue() != i)
+        for(int i = 0; i &lt; numberOfTags; i++) {
+            if(tags.get(i).longValue() != i)
                 throw new IllegalArgumentException(&quot;Invalid tag assignment.&quot;);
         }
         return tags.size();
@@ -66,7 +82,7 @@ public class Cluster implements Serializable {
 
     public Node getNodeById(int id) {
         Node node = nodesById.get(id);
-        if (node == null)
+        if(node == null)
             throw new VoldemortException(&quot;No such node in cluster: &quot; + id);
         return node;
     }
@@ -86,7 +102,7 @@ public class Cluster implements Serializable {
         builder.append(&quot;Cluster('&quot;);
         builder.append(getName());
         builder.append(&quot;', [&quot;);
-        for (Node n : getNodes()) {
+        for(Node n: getNodes()) {
             builder.append(n.toString());
             builder.append(&quot;, &quot;);
         }</diff>
      <filename>src/java/voldemort/cluster/Cluster.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.cluster;
 
 import java.io.Serializable;
@@ -77,7 +93,7 @@ public class Node implements Serializable {
     public URI getHttpUrl() {
         try {
             return new URI(&quot;http://&quot; + getHost() + &quot;:&quot; + getHttpPort());
-        } catch (URISyntaxException e) {
+        } catch(URISyntaxException e) {
             throw new IllegalStateException(&quot;Invalid host format for node &quot; + id + &quot;.&quot;);
         }
     }
@@ -85,7 +101,7 @@ public class Node implements Serializable {
     public URI getSocketUrl() {
         try {
             return new URI(&quot;tcp://&quot; + getHost() + &quot;:&quot; + getSocketPort());
-        } catch (URISyntaxException e) {
+        } catch(URISyntaxException e) {
             throw new IllegalStateException(&quot;Invalid host format for node &quot; + id + &quot;.&quot;);
         }
     }
@@ -97,9 +113,9 @@ public class Node implements Serializable {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o)
+        if(this == o)
             return true;
-        if (!(o instanceof Node))
+        if(!(o instanceof Node))
             return false;
 
         Node n = (Node) o;</diff>
      <filename>src/java/voldemort/cluster/Node.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.cluster;
 
 import java.io.Serializable;</diff>
      <filename>src/java/voldemort/cluster/NodeStatus.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.routing;
 
 import java.util.ArrayList;
@@ -40,9 +56,9 @@ public class ConsistentRoutingStrategy implements RoutingStrategy {
         this.numResults = numReplicas;
         this.hash = hash;
         SortedMap&lt;Integer, Node&gt; m = new TreeMap&lt;Integer, Node&gt;();
-        for (Node n : nodes) {
-            for (Integer partition : n.getPartitionIds()) {
-                if (m.containsKey(partition))
+        for(Node n: nodes) {
+            for(Integer partition: n.getPartitionIds()) {
+                if(m.containsKey(partition))
                     throw new IllegalArgumentException(&quot;Duplicate partition id &quot; + partition
                                                        + &quot; in cluster configuration.&quot;);
                 m.put(partition, n);
@@ -50,8 +66,8 @@ public class ConsistentRoutingStrategy implements RoutingStrategy {
         }
 
         this.partitionToNode = new Node[m.size()];
-        for (int i = 0; i &lt; m.size(); i++) {
-            if (!m.containsKey(i))
+        for(int i = 0; i &lt; m.size(); i++) {
+            if(!m.containsKey(i))
                 throw new IllegalArgumentException(&quot;Missing tag &quot; + i);
             this.partitionToNode[i] = m.get(i);
         }
@@ -60,13 +76,13 @@ public class ConsistentRoutingStrategy implements RoutingStrategy {
     public List&lt;Node&gt; routeRequest(byte[] key) {
         List&lt;Node&gt; preferenceList = new ArrayList&lt;Node&gt;(numResults);
         int index = Math.abs(hash.hash(key)) % this.partitionToNode.length;
-        for (int i = 0; i &lt; partitionToNode.length; i++) {
+        for(int i = 0; i &lt; partitionToNode.length; i++) {
             // add this one if we haven't already
-            if (!preferenceList.contains(partitionToNode[index]))
+            if(!preferenceList.contains(partitionToNode[index]))
                 preferenceList.add(partitionToNode[index]);
 
             // if we have enough, go home
-            if (preferenceList.size() &gt;= numResults)
+            if(preferenceList.size() &gt;= numResults)
                 return preferenceList;
             // move to next clockwise slot on the ring
             index = (index + 1) % partitionToNode.length;
@@ -78,7 +94,7 @@ public class ConsistentRoutingStrategy implements RoutingStrategy {
 
     public Set&lt;Node&gt; getNodes() {
         Set&lt;Node&gt; s = new HashSet&lt;Node&gt;();
-        for (Node n : this.partitionToNode)
+        for(Node n: this.partitionToNode)
             s.add(n);
         return s;
     }
@@ -89,8 +105,8 @@ public class ConsistentRoutingStrategy implements RoutingStrategy {
 
     Set&lt;Integer&gt; getPartitionsByNode(Node n) {
         Set&lt;Integer&gt; tags = new HashSet&lt;Integer&gt;();
-        for (int i = 0; i &lt; partitionToNode.length; i++)
-            if (partitionToNode[i].equals(n))
+        for(int i = 0; i &lt; partitionToNode.length; i++)
+            if(partitionToNode[i].equals(n))
                 tags.add(i);
         return tags;
     }</diff>
      <filename>src/java/voldemort/routing/ConsistentRoutingStrategy.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.routing;
 
 import java.util.ArrayList;</diff>
      <filename>src/java/voldemort/routing/RouteToAllStrategy.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.routing;
 
 import java.util.List;</diff>
      <filename>src/java/voldemort/routing/RoutingStrategy.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 import java.util.HashMap;</diff>
      <filename>src/java/voldemort/serialization/DefaultSerializerFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 /**</diff>
      <filename>src/java/voldemort/serialization/IdentitySerializer.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 import java.io.ByteArrayInputStream;
@@ -28,7 +44,7 @@ public class ObjectSerializer&lt;T&gt; implements Serializer&lt;T&gt; {
             ObjectOutputStream out = new ObjectOutputStream(stream);
             out.writeObject(object);
             return stream.toByteArray();
-        } catch (IOException e) {
+        } catch(IOException e) {
             throw new SerializationException(e);
         }
     }
@@ -43,9 +59,9 @@ public class ObjectSerializer&lt;T&gt; implements Serializer&lt;T&gt; {
     public T toObject(byte[] bytes) {
         try {
             return (T) new ObjectInputStream(new ByteArrayInputStream(bytes)).readObject();
-        } catch (IOException e) {
+        } catch(IOException e) {
             throw new SerializationException(e);
-        } catch (ClassNotFoundException c) {
+        } catch(ClassNotFoundException c) {
             throw new SerializationException(c);
         }
     }</diff>
      <filename>src/java/voldemort/serialization/ObjectSerializer.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 import voldemort.VoldemortException;</diff>
      <filename>src/java/voldemort/serialization/SerializationException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 /**</diff>
      <filename>src/java/voldemort/serialization/Serializer.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 import java.util.Arrays;</diff>
      <filename>src/java/voldemort/serialization/SerializerDefinition.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 /**</diff>
      <filename>src/java/voldemort/serialization/SerializerFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 import java.io.ByteArrayInputStream;
@@ -26,7 +42,7 @@ public class SlopSerializer implements Serializer&lt;Slop&gt; {
             data.writeUTF(slop.getOperation().toString());
             data.writeInt(slop.getKey().length);
             data.write(slop.getKey());
-            if (slop.getValue() == null) {
+            if(slop.getValue() == null) {
                 data.writeInt(-1);
             } else {
                 data.writeInt(slop.getValue().length);
@@ -35,7 +51,7 @@ public class SlopSerializer implements Serializer&lt;Slop&gt; {
             data.writeInt(slop.getNodeId());
             data.writeLong(slop.getArrived().getTime());
             return byteOutput.toByteArray();
-        } catch (IOException e) {
+        } catch(IOException e) {
             throw new SerializationException(e);
         }
     }
@@ -50,14 +66,14 @@ public class SlopSerializer implements Serializer&lt;Slop&gt; {
             ByteUtils.read(input, key);
             int size = input.readInt();
             byte[] value = null;
-            if (size &gt;= 0) {
+            if(size &gt;= 0) {
                 value = new byte[size];
                 ByteUtils.read(input, value);
             }
             int nodeId = input.readInt();
             Date arrived = new Date(input.readLong());
             return new Slop(storeName, op, key, value, nodeId, arrived);
-        } catch (IOException e) {
+        } catch(IOException e) {
             throw new SerializationException(e);
         }
     }</diff>
      <filename>src/java/voldemort/serialization/SlopSerializer.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 import voldemort.utils.ByteUtils;</diff>
      <filename>src/java/voldemort/serialization/StringSerializer.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,45 +1,60 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 import voldemort.utils.ByteUtils;
-import voldemort.utils.Utils;
 import voldemort.versioning.VectorClock;
 import voldemort.versioning.Versioned;
 
 /**
- * A Serializer that removes the Versioned wrapper and delegates to a user-supplied
- * serializer to deal with the remaining bytes
+ * A Serializer that removes the Versioned wrapper and delegates to a
+ * user-supplied serializer to deal with the remaining bytes
  * 
  * @author jay
- *
+ * 
  * @param &lt;T&gt; The Versioned type
  */
 public class VersionedSerializer&lt;T&gt; implements Serializer&lt;Versioned&lt;T&gt;&gt; {
-	
-	private final Serializer&lt;T&gt; innerSerializer;
-
-	public VersionedSerializer(Serializer&lt;T&gt; innerSerializer) {
-		this.innerSerializer = innerSerializer;
-	}
-
-	public byte[] toBytes(Versioned&lt;T&gt; versioned) {
-		byte[] versionBytes = null;
-		if(versioned.getVersion() == null)
-			versionBytes = new byte[]{-1};
-		else
-			versionBytes = ((VectorClock) versioned.getVersion()).toBytes();
-		byte[] objectBytes = innerSerializer.toBytes(versioned.getValue());
-		return ByteUtils.cat(versionBytes, objectBytes);
-	}
-
-	public Versioned&lt;T&gt; toObject(byte[] bytes) {
-		VectorClock clock = null;
-		int size = 1;
-		if(bytes[0] &gt;= 0) {
-			clock = new VectorClock(bytes);
-			size = clock.sizeInBytes();
-		}
-		T t = innerSerializer.toObject(ByteUtils.copy(bytes, size, bytes.length));
-		return new Versioned&lt;T&gt;(t, clock);
-	}
+
+    private final Serializer&lt;T&gt; innerSerializer;
+
+    public VersionedSerializer(Serializer&lt;T&gt; innerSerializer) {
+        this.innerSerializer = innerSerializer;
+    }
+
+    public byte[] toBytes(Versioned&lt;T&gt; versioned) {
+        byte[] versionBytes = null;
+        if(versioned.getVersion() == null)
+            versionBytes = new byte[] { -1 };
+        else
+            versionBytes = ((VectorClock) versioned.getVersion()).toBytes();
+        byte[] objectBytes = innerSerializer.toBytes(versioned.getValue());
+        return ByteUtils.cat(versionBytes, objectBytes);
+    }
+
+    public Versioned&lt;T&gt; toObject(byte[] bytes) {
+        VectorClock clock = null;
+        int size = 1;
+        if(bytes[0] &gt;= 0) {
+            clock = new VectorClock(bytes);
+            size = clock.sizeInBytes();
+        }
+        T t = innerSerializer.toObject(ByteUtils.copy(bytes, size, bytes.length));
+        return new Versioned&lt;T&gt;(t, clock);
+    }
 
 }</diff>
      <filename>src/java/voldemort/serialization/VersionedSerializer.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,23 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 public class VoldemortOpCode {
+
     public static final byte GET_OP_CODE = 1;
     public static final byte PUT_OP_CODE = 2;
     public static final byte DELETE_OP_CODE = 3;</diff>
      <filename>src/java/voldemort/serialization/VoldemortOpCode.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,30 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
 
-import voldemort.versioning.*;
+import voldemort.versioning.VectorClock;
+import voldemort.versioning.Version;
+import voldemort.versioning.Versioned;
 
 public final class VoldemortOperation {
 
@@ -10,14 +32,14 @@ public final class VoldemortOperation {
     private final String key;
     private final byte[] value;
     private final VectorClock version;
-    
+
     private VoldemortOperation(byte opCode, String key, byte[] value, VectorClock version) {
         this.opCode = opCode;
         this.key = key;
         this.value = value;
         this.version = version;
     }
-    
+
     public VoldemortOperation(byte[] bytes) {
         if(bytes == null || bytes.length &lt;= 1)
             throw new SerializationException(&quot;Not enough bytes to serialize&quot;);
@@ -49,13 +71,13 @@ public final class VoldemortOperation {
             throw new SerializationException(e);
         }
     }
-    
+
     public byte[] getBytes() {
         try {
             ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
             DataOutputStream output = new DataOutputStream(byteOutput);
             output.writeByte(opCode);
-            if(opCode != VoldemortOpCode.GET_OP_CODE) 
+            if(opCode != VoldemortOpCode.GET_OP_CODE)
                 output.write(version.toBytes());
             output.writeUTF(key);
             if(opCode == VoldemortOpCode.PUT_OP_CODE) {
@@ -67,17 +89,23 @@ public final class VoldemortOperation {
             throw new SerializationException(e);
         }
     }
-    
+
     public VoldemortOperation makeGetOperation(String key) {
         return new VoldemortOperation(VoldemortOpCode.GET_OP_CODE, key, null, null);
     }
-    
+
     public VoldemortOperation makePutOperation(String key, Versioned&lt;byte[]&gt; versioned) {
-        return new VoldemortOperation(VoldemortOpCode.PUT_OP_CODE, key, versioned.getValue(), (VectorClock) versioned.getVersion());
+        return new VoldemortOperation(VoldemortOpCode.PUT_OP_CODE,
+                                      key,
+                                      versioned.getValue(),
+                                      (VectorClock) versioned.getVersion());
     }
-    
+
     public VoldemortOperation makeDeleteOperation(String key, Version version) {
-        return new VoldemortOperation(VoldemortOpCode.DELETE_OP_CODE, key, null, (VectorClock) version);
+        return new VoldemortOperation(VoldemortOpCode.DELETE_OP_CODE,
+                                      key,
+                                      null,
+                                      (VectorClock) version);
     }
-    
+
 }</diff>
      <filename>src/java/voldemort/serialization/VoldemortOperation.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization.json;
 
 import voldemort.serialization.SerializationException;</diff>
      <filename>src/java/voldemort/serialization/json/EndOfFileException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization.json;
 
 import java.io.IOException;</diff>
      <filename>src/java/voldemort/serialization/json/JsonReader.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization.json;
 
 import java.io.Serializable;</diff>
      <filename>src/java/voldemort/serialization/json/JsonTypeDefinition.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization.json;
 
 import java.io.ByteArrayInputStream;</diff>
      <filename>src/java/voldemort/serialization/json/JsonTypeSerializer.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization.json;
 
 import voldemort.serialization.SerializationException;
@@ -31,8 +47,8 @@ public enum JsonTypes {
     }
 
     public static JsonTypes fromDisplay(String name) {
-        for (JsonTypes t : JsonTypes.values())
-            if (t.toDisplay().equals(name))
+        for(JsonTypes t: JsonTypes.values())
+            if(t.toDisplay().equals(name))
                 return t;
         throw new SerializationException(name + &quot; is not a valid display for any SimpleType.&quot;);
     }</diff>
      <filename>src/java/voldemort/serialization/json/JsonTypes.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server;
 
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -39,7 +55,7 @@ public abstract class AbstractService implements VoldemortService {
     @JmxOperation(description = &quot;Start the service.&quot;, impact = MBeanOperationInfo.ACTION)
     public void start() {
         boolean isntStarted = isStarted.compareAndSet(false, true);
-        if (!isntStarted)
+        if(!isntStarted)
             throw new IllegalStateException(&quot;Server is already started!&quot;);
 
         logger.info(&quot;Starting &quot; + getName());
@@ -49,8 +65,8 @@ public abstract class AbstractService implements VoldemortService {
     @JmxOperation(description = &quot;Stop the service.&quot;, impact = MBeanOperationInfo.ACTION)
     public void stop() {
         logger.info(&quot;Stopping &quot; + getName());
-        synchronized (this) {
-            if (!isStarted()) {
+        synchronized(this) {
+            if(!isStarted()) {
                 logger.info(&quot;The service is already stopped, ignoring duplicate attempt.&quot;);
             }
 </diff>
      <filename>src/java/voldemort/server/AbstractService.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server;
 
 import java.io.File;
@@ -553,7 +569,7 @@ public class VoldemortConfig implements Serializable {
     public boolean isCacheEngineEnabled() {
         return enableCacheEngine;
     }
-    
+
     public void setEnableCacheEngine(boolean enableCacheEngine) {
         this.enableCacheEngine = enableCacheEngine;
     }</diff>
      <filename>src/java/voldemort/server/VoldemortConfig.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server;
 
 import static voldemort.utils.Utils.croak;</diff>
      <filename>src/java/voldemort/server/VoldemortServer.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server;
 
 /**</diff>
      <filename>src/java/voldemort/server/VoldemortService.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.http;
 
 import org.mortbay.jetty.Connector;
@@ -61,7 +77,7 @@ public class HttpService extends AbstractService {
             this.context = context;
             this.httpServer = httpServer;
             this.httpServer.start();
-        } catch (Exception e) {
+        } catch(Exception e) {
             throw new VoldemortException(e);
         }
     }
@@ -71,7 +87,7 @@ public class HttpService extends AbstractService {
         try {
             httpServer.stop();
             context.destroy();
-        } catch (Exception e) {
+        } catch(Exception e) {
             throw new VoldemortException(e);
         }
         this.httpServer = null;</diff>
      <filename>src/java/voldemort/server/http/HttpService.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.http;
 
 import java.io.DataOutputStream;
@@ -57,7 +73,7 @@ public class StoreServlet extends HttpServlet {
         super.init();
         // if we don't already have a stores map, attempt to initialize from the
         // servlet context
-        if (this.stores == null) {
+        if(this.stores == null) {
             ServletContext context = this.getServletContext();
             VoldemortServer server = (VoldemortServer) Objects.nonNull(context.getAttribute(VoldemortServletContextListener.SERVER_CONFIG_KEY));
             this.stores = server.getStoreMap();
@@ -66,7 +82,7 @@ public class StoreServlet extends HttpServlet {
 
     private Store&lt;byte[], byte[]&gt; getStore(String name) {
         Store&lt;byte[], byte[]&gt; store = stores.get(name);
-        if (store == null)
+        if(store == null)
             throw new VoldemortException(&quot;No store named '&quot; + name + &quot;'.&quot;);
         return store;
     }
@@ -81,14 +97,14 @@ public class StoreServlet extends HttpServlet {
         DataOutputStream stream = new DataOutputStream(response.getOutputStream());
         try {
             List&lt;Versioned&lt;byte[]&gt;&gt; values = store.get(key);
-            for (Versioned&lt;byte[]&gt; versioned : values) {
+            for(Versioned&lt;byte[]&gt; versioned: values) {
                 byte[] clock = ((VectorClock) versioned.getVersion()).toBytes();
                 byte[] value = versioned.getValue();
                 stream.writeInt(clock.length + value.length);
                 stream.write(clock);
                 stream.write(value);
             }
-        } catch (VoldemortException v) {
+        } catch(VoldemortException v) {
             HttpResponseCodeErrorMapper.ResponseCode code = httpResponseCodeErrorMapper.mapErrorToResponseCode(v);
             response.setContentType(&quot;text/xml&quot;);
             response.sendError(code.getCode(), errorXml(v, code.getText()));
@@ -109,7 +125,7 @@ public class StoreServlet extends HttpServlet {
             VectorClock clock = new VectorClock(Base64.decodeBase64(request.getHeader(VERSION_EXTENSION)
                                                                            .getBytes()));
             store.put(key, new Versioned&lt;byte[]&gt;(contents, clock));
-        } catch (VoldemortException v) {
+        } catch(VoldemortException v) {
             HttpResponseCodeErrorMapper.ResponseCode code = httpResponseCodeErrorMapper.mapErrorToResponseCode(v);
             response.setContentType(&quot;text/xml&quot;);
             response.sendError(code.getCode(), errorXml(v, code.getText()));
@@ -127,9 +143,9 @@ public class StoreServlet extends HttpServlet {
             byte[] versionBytes = ByteUtils.getBytes(request.getHeader(VERSION_EXTENSION), &quot;UTF-8&quot;);
             VectorClock clock = new VectorClock(Base64.decodeBase64(versionBytes));
             boolean succeeded = store.delete(key, clock);
-            if (!succeeded)
+            if(!succeeded)
                 response.sendError(HttpURLConnection.HTTP_NOT_FOUND);
-        } catch (VoldemortException v) {
+        } catch(VoldemortException v) {
             HttpResponseCodeErrorMapper.ResponseCode code = httpResponseCodeErrorMapper.mapErrorToResponseCode(v);
             response.setContentType(&quot;text/xml&quot;);
             response.sendError(code.getCode(), errorXml(v, code.getText()));
@@ -148,7 +164,7 @@ public class StoreServlet extends HttpServlet {
     }
 
     private byte[] getKey(String[] urlPieces) {
-        if (urlPieces.length &lt; 2)
+        if(urlPieces.length &lt; 2)
             throw new VoldemortException(&quot;Invalid request for &quot; + Join.join(&quot;.&quot;, urlPieces)
                                          + &quot;: must specify both a store and key.&quot;);
 
@@ -156,13 +172,13 @@ public class StoreServlet extends HttpServlet {
         try {
             byte[] key = ByteUtils.getBytes(keyStr, &quot;UTF-8&quot;);
             return urlCodec.decode(key);
-        } catch (DecoderException e) {
+        } catch(DecoderException e) {
             throw new VoldemortException(&quot;Corrupt key format.&quot;);
         }
     }
 
     private String getStoreName(String[] urlPieces) {
-        if (urlPieces.length &lt; 2)
+        if(urlPieces.length &lt; 2)
             throw new VoldemortException(&quot;Invalid request for &quot; + Join.join(&quot;/&quot;, urlPieces)
                                          + &quot;: must specify both a store and key.&quot;);
         return urlPieces[urlPieces.length - 2];</diff>
      <filename>src/java/voldemort/server/http/StoreServlet.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.http;
 
 import javax.servlet.ServletContextEvent;
@@ -30,7 +46,7 @@ public class VoldemortServletContextListener implements ServletContextListener {
         logger.info(&quot;Calling application shutdown...&quot;);
         VoldemortServer server = (VoldemortServer) event.getServletContext()
                                                         .getAttribute(SERVER_CONFIG_KEY);
-        if (server != null)
+        if(server != null)
             server.stop();
         logger.info(&quot;Destroying application...&quot;);
         event.getServletContext().removeAttribute(SERVER_KEY);
@@ -48,10 +64,10 @@ public class VoldemortServletContextListener implements ServletContextListener {
                                                    new VelocityEngine(VOLDEMORT_TEMPLATE_DIR));
             server.start();
             logger.info(&quot;Application created.&quot;);
-        } catch (ConfigurationException e) {
+        } catch(ConfigurationException e) {
             logger.info(&quot;Error loading voldemort server:&quot;, e);
             throw e;
-        } catch (Exception e) {
+        } catch(Exception e) {
             logger.error(&quot;Error loading voldemort server:&quot;, e);
             throw new ConfigurationException(e);
         }</diff>
      <filename>src/java/voldemort/server/http/VoldemortServletContextListener.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.http.gui;
 
 import java.io.IOException;</diff>
      <filename>src/java/voldemort/server/http/gui/AdminServlet.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.http.gui;
 
 import java.io.IOException;
@@ -72,15 +88,15 @@ public class QueryServlet extends HttpServlet {
     }
 
     private Object parseKey(String keyType, String key) {
-        if (&quot;int8&quot;.equals(keyType))
+        if(&quot;int8&quot;.equals(keyType))
             return Byte.valueOf(key);
-        else if (&quot;int16&quot;.equals(keyType))
+        else if(&quot;int16&quot;.equals(keyType))
             return Short.valueOf(key);
-        else if (&quot;int32&quot;.equals(keyType))
+        else if(&quot;int32&quot;.equals(keyType))
             return Integer.valueOf(key);
-        else if (&quot;int64&quot;.equals(keyType))
+        else if(&quot;int64&quot;.equals(keyType))
             return Long.valueOf(key);
-        else if (&quot;string&quot;.equals(keyType))
+        else if(&quot;string&quot;.equals(keyType))
             return key;
         else
             throw new IllegalArgumentException(&quot;Unsupported key type: &quot; + keyType);</diff>
      <filename>src/java/voldemort/server/http/gui/QueryServlet.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.http.gui;
 
 import java.io.OutputStream;
@@ -48,7 +64,7 @@ public class VelocityEngine {
         try {
             engine.mergeTemplate(baseTemplateDir + &quot;/&quot; + template, &quot;UTF-8&quot;, context, writer);
             writer.flush();
-        } catch (Exception e) {
+        } catch(Exception e) {
             throw new VoldemortException(e);
         }
     }</diff>
      <filename>src/java/voldemort/server/http/gui/VelocityEngine.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+##
+## Copyright 2008-2009 LinkedIn, Inc
+## 
+## Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+## use this file except in compliance with the License. You may obtain a copy of
+## the License at
+## 
+## http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+## WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+## License for the specific language governing permissions and limitations under
+## the License.
+##
+
 &lt;html&gt;
   &lt;head&gt;
     &lt;title&gt;Voldemort Administration&lt;/title&gt;</diff>
      <filename>src/java/voldemort/server/http/gui/templates/admin.vm</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+##
+## Copyright 2008-2009 LinkedIn, Inc
+## 
+## Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+## use this file except in compliance with the License. You may obtain a copy of
+## the License at
+## 
+## http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+## WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+## License for the specific language governing permissions and limitations under
+## the License.
+##
+
 &lt;html&gt;
   &lt;head&gt;
     &lt;title&gt;Voldemort Administration&lt;/title&gt;</diff>
      <filename>src/java/voldemort/server/http/gui/templates/query.vm</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.jmx;
 
 import java.lang.management.ManagementFactory;
@@ -55,11 +71,11 @@ public class JmxService extends AbstractService {
     protected void startInner() {
         registerBean(server, JmxUtils.createObjectName(VoldemortServer.class));
         registerBean(cluster, JmxUtils.createObjectName(Cluster.class));
-        for (VoldemortService service : services) {
+        for(VoldemortService service: services) {
             logger.debug(&quot;Registering mbean for service '&quot; + service.getName() + &quot;'.&quot;);
             registerBean(service, JmxUtils.createObjectName(service.getClass()));
         }
-        for (Store&lt;byte[], byte[]&gt; store : storeMap.values()) {
+        for(Store&lt;byte[], byte[]&gt; store: storeMap.values()) {
             logger.info(&quot;Registering mbean for store '&quot; + store.getName() + &quot;'.&quot;);
             registerBean(store,
                          JmxUtils.createObjectName(JmxUtils.getPackageName(store.getClass()),
@@ -69,14 +85,14 @@ public class JmxService extends AbstractService {
 
     @Override
     protected void stopInner() {
-        for (ObjectName name : registeredBeans)
+        for(ObjectName name: registeredBeans)
             JmxUtils.unregisterMbean(mbeanServer, name);
         registeredBeans.clear();
     }
 
     private void registerBean(Object o, ObjectName name) {
-        synchronized (registeredBeans) {
-            if (mbeanServer.isRegistered(name)) {
+        synchronized(registeredBeans) {
+            if(mbeanServer.isRegistered(name)) {
                 logger.warn(&quot;Overwriting mbean &quot; + name);
                 JmxUtils.unregisterMbean(mbeanServer, name);
             }</diff>
      <filename>src/java/voldemort/server/jmx/JmxService.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.scheduler;
 
 import java.util.concurrent.Semaphore;</diff>
      <filename>src/java/voldemort/server/scheduler/DataCleanupJob.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.scheduler;
 
 import java.util.List;</diff>
      <filename>src/java/voldemort/server/scheduler/RebalancingJob.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.scheduler;
 
 import java.lang.Thread.UncaughtExceptionHandler;</diff>
      <filename>src/java/voldemort/server/scheduler/SchedulerService.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.scheduler;
 
 import java.util.Map;
@@ -31,7 +47,7 @@ public class SlopPusherJob implements Runnable {
     private final ConcurrentMap&lt;Integer, Store&lt;byte[], byte[]&gt;&gt; stores;
 
     public SlopPusherJob(StorageEngine&lt;byte[], Slop&gt; slop,
-                      Map&lt;Integer, ? extends Store&lt;byte[], byte[]&gt;&gt; stores) {
+                         Map&lt;Integer, ? extends Store&lt;byte[], byte[]&gt;&gt; stores) {
         this.slopStore = slop;
         this.stores = new ConcurrentHashMap&lt;Integer, Store&lt;byte[], byte[]&gt;&gt;(stores);
     }</diff>
      <filename>src/java/voldemort/server/scheduler/SlopPusherJob.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.socket;
 
 import java.io.BufferedInputStream;</diff>
      <filename>src/java/voldemort/server/socket/SocketServer.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.socket;
 
 import java.util.concurrent.ConcurrentMap;</diff>
      <filename>src/java/voldemort/server/socket/SocketService.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.socket;
 
 import java.io.DataInputStream;</diff>
      <filename>src/java/voldemort/server/socket/StreamStoreRequestHandler.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.storage;
 
 import java.util.Calendar;
@@ -96,9 +112,10 @@ public class StorageService extends AbstractService {
             configs.put(StorageEngineType.MEMORY, new InMemoryStorageConfiguration());
         if(config.isCacheEngineEnabled())
             configs.put(StorageEngineType.CACHE, new CacheStorageConfiguration());
-        if(config.isReadOnlyEngineEnabled()) 
-          configs.put(StorageEngineType.READONLY, new RandomAccessFileStorageConfiguration(config));
-        
+        if(config.isReadOnlyEngineEnabled())
+            configs.put(StorageEngineType.READONLY,
+                        new RandomAccessFileStorageConfiguration(config));
+
         if(configs.size() == 0)
             throw new ConfigurationException(&quot;No storage engine has been enabled!&quot;);
 </diff>
      <filename>src/java/voldemort/server/storage/StorageService.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import java.util.List;</diff>
      <filename>src/java/voldemort/store/DelegatingStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import com.google.common.base.Objects;
@@ -30,11 +46,11 @@ public class Entry&lt;K, V&gt; {
 
     @Override
     public boolean equals(Object obj) {
-        if (this == obj)
+        if(this == obj)
             return true;
-        if (obj == null)
+        if(obj == null)
             return false;
-        if (!(obj instanceof Entry))
+        if(!(obj instanceof Entry))
             return false;
         Entry&lt;?, ?&gt; e = (Entry&lt;?, ?&gt;) obj;
         return Objects.equal(key, e.getKey()) &amp;&amp; Objects.equal(value, e.getValue());</diff>
      <filename>src/java/voldemort/store/Entry.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import voldemort.VoldemortException;
@@ -30,7 +46,7 @@ public class ErrorCodeMapper {
 
     public VoldemortException getError(short code, String message) {
         Class&lt;? extends VoldemortException&gt; klass = mapping.get(code);
-        if (klass == null)
+        if(klass == null)
             return new UnknownFailure(Integer.toString(code));
         else
             return ReflectUtils.construct(klass, new Object[] { message });
@@ -38,7 +54,7 @@ public class ErrorCodeMapper {
 
     public short getCode(VoldemortException e) {
         Short code = mapping.inverse().get(e.getClass());
-        if (code == null)
+        if(code == null)
             throw new IllegalArgumentException(&quot;No mapping code for &quot; + e.getClass());
         else
             return code;</diff>
      <filename>src/java/voldemort/store/ErrorCodeMapper.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import java.util.Collection;</diff>
      <filename>src/java/voldemort/store/InsufficientOperationalNodesException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import com.google.common.base.Objects;
@@ -22,9 +38,9 @@ public class KeyWrapper {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o)
+        if(this == o)
             return true;
-        if (!(o instanceof KeyWrapper))
+        if(!(o instanceof KeyWrapper))
             return false;
 
         KeyWrapper key = (KeyWrapper) o;</diff>
      <filename>src/java/voldemort/store/KeyWrapper.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 /**</diff>
      <filename>src/java/voldemort/store/ObsoleteVersionException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import voldemort.VoldemortException;</diff>
      <filename>src/java/voldemort/store/PersistenceFailureException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,35 +1,52 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 /**
  * An abstraction that represents the shared resources of a persistence engine.
  * This could include file handles, db connection pools, caches, etc.
  * 
- * For example for BDB it holds the various environments,
- * for jdbc it holds a connection pool reference
+ * For example for BDB it holds the various environments, for jdbc it holds a
+ * connection pool reference
  * 
- * This should be called StorageEngineFactory but that would leave us with the indignity of
- * having a StorageEngineFactoryFactory to handle the mapping of store type =&gt; factory.  
- * And we can't have that.
+ * This should be called StorageEngineFactory but that would leave us with the
+ * indignity of having a StorageEngineFactoryFactory to handle the mapping of
+ * store type =&gt; factory. And we can't have that.
  * 
  * @author jay
- *
+ * 
  */
 public interface StorageConfiguration {
-	
-	/**
-	 * Get an initialized storage implementation
-	 * @param name The name of the storage
-	 * @return The storage engine
-	 */
-	public StorageEngine&lt;byte[], byte[]&gt; getStore(String name);
-	
-	/**
-	 * Get the type of stores returned by this configuration
-	 */
-	public StorageEngineType getType();
 
-	/**
-	 * Close the storage configuration
-	 */
-	public void close();
+    /**
+     * Get an initialized storage implementation
+     * 
+     * @param name The name of the storage
+     * @return The storage engine
+     */
+    public StorageEngine&lt;byte[], byte[]&gt; getStore(String name);
+
+    /**
+     * Get the type of stores returned by this configuration
+     */
+    public StorageEngineType getType();
+
+    /**
+     * Close the storage configuration
+     */
+    public void close();
 }</diff>
      <filename>src/java/voldemort/store/StorageConfiguration.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,29 +1,52 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import voldemort.utils.ClosableIterator;
 import voldemort.versioning.Versioned;
 
 /**
- * A base storage class which is actually responsible for data persistence.  This interface implies
- * all the usual responsibilities of a Store implementation, and in addition
- * 1. The implementation MUST throw an ObsoleteVersionException if the user attempts
- * to put a version which is strictly before an existing version (concurrent is okay)
- * 2. The implementation MUST increment this version number when the value is stored.
- * 3. The implementation MUST contain an ID identifying it as part of the cluster
+ * A base storage class which is actually responsible for data persistence. This
+ * interface implies all the usual responsibilities of a Store implementation,
+ * and in addition
+ * &lt;ol&gt;
+ * &lt;li&gt;The implementation MUST throw an ObsoleteVersionException if the user
+ * attempts to put a version which is strictly before an existing version
+ * (concurrent is okay)&lt;/li&gt;
+ * &lt;li&gt;The implementation MUST increment this version number when the value is
+ * stored.&lt;/li&gt;
+ * &lt;li&gt;The implementation MUST contain an ID identifying it as part of the
+ * cluster&lt;/li&gt;
+ * &lt;/ol&gt;
  * 
  * A hash value can be produced for known subtrees of a StorageEngine
  * 
  * @author jay
- *
+ * 
  * @param &lt;K&gt; The type of the key being stored
  * @param &lt;V&gt; The type of the value being stored
  * 
  */
-public interface StorageEngine&lt;K,V&gt; extends Store&lt;K,V&gt; {
-	
+public interface StorageEngine&lt;K, V&gt; extends Store&lt;K, V&gt; {
+
     /**
-     * @return An iterator over the entries in this StorageEngine.  Note that the iterator MUST be closed after use.
+     * @return An iterator over the entries in this StorageEngine. Note that the
+     *         iterator MUST be closed after use.
      */
-	public ClosableIterator&lt;Entry&lt;K,Versioned&lt;V&gt;&gt;&gt; entries();
+    public ClosableIterator&lt;Entry&lt;K, Versioned&lt;V&gt;&gt;&gt; entries();
 
 }</diff>
      <filename>src/java/voldemort/store/StorageEngine.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 /**</diff>
      <filename>src/java/voldemort/store/StorageEngineType.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import voldemort.VoldemortException;</diff>
      <filename>src/java/voldemort/store/StorageInitializationException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import java.util.List;</diff>
      <filename>src/java/voldemort/store/Store.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import java.io.Serializable;</diff>
      <filename>src/java/voldemort/store/StoreDefinition.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import voldemort.VoldemortException;</diff>
      <filename>src/java/voldemort/store/StoreOperationFailureException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 /**
@@ -9,7 +25,7 @@ package voldemort.store;
 public class StoreUtils {
 
     public static &lt;K&gt; void assertValidKey(K key) {
-        if (key == null)
+        if(key == null)
             throw new IllegalArgumentException(&quot;Key cannot be null.&quot;);
     }
 </diff>
      <filename>src/java/voldemort/store/StoreUtils.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import voldemort.VoldemortException;</diff>
      <filename>src/java/voldemort/store/UnknownFailure.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import voldemort.VoldemortException;</diff>
      <filename>src/java/voldemort/store/UnreachableStoreException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.bdb;
 
 import java.io.File;
@@ -52,20 +68,20 @@ public class BdbStorageConfiguration implements StorageConfiguration {
             databaseConfig.setNodeMaxEntries(config.getBdbBtreeFanout());
             databaseConfig.setTransactional(true);
             File bdbDir = new File(config.getBdbDataDirectory());
-            if (!bdbDir.exists())
+            if(!bdbDir.exists())
                 bdbDir.mkdir();
             environment = new Environment(bdbDir, environmentConfig);
             isInitialized = true;
-        } catch (DatabaseException e) {
+        } catch(DatabaseException e) {
             throw new StorageInitializationException(e);
         }
     }
 
     public synchronized StorageEngine&lt;byte[], byte[]&gt; getStore(String storeName) {
-        if (!isInitialized)
+        if(!isInitialized)
             throw new StorageInitializationException(&quot;Attempt to get store for uninitialized storage configuration!&quot;);
 
-        if (stores.containsKey(storeName)) {
+        if(stores.containsKey(storeName)) {
             return stores.get(storeName);
         } else {
             try {
@@ -73,7 +89,7 @@ public class BdbStorageConfiguration implements StorageConfiguration {
                 BdbStorageEngine engine = new BdbStorageEngine(storeName, environment, db);
                 stores.put(storeName, engine);
                 return engine;
-            } catch (DatabaseException d) {
+            } catch(DatabaseException d) {
                 throw new StorageInitializationException(d);
             }
         }
@@ -87,7 +103,7 @@ public class BdbStorageConfiguration implements StorageConfiguration {
         try {
             this.environment.sync();
             this.environment.close();
-        } catch (DatabaseException e) {
+        } catch(DatabaseException e) {
             throw new VoldemortException(e);
         }
     }</diff>
      <filename>src/java/voldemort/store/bdb/BdbStorageConfiguration.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.bdb;
 
 import static voldemort.utils.Utils.assertNotNull;
@@ -65,7 +81,7 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
         try {
             Cursor cursor = bdbDatabase.openCursor(null, null);
             return new BdbStoreIterator(cursor);
-        } catch (DatabaseException e) {
+        } catch(DatabaseException e) {
             throw new PersistenceFailureException(e);
         }
     }
@@ -76,7 +92,7 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
         byte[] keyBytes = new byte[2 + key.length + clockSize];
         ByteUtils.writeShort(keyBytes, (short) key.length, 0);
         System.arraycopy(key, 0, keyBytes, 2, key.length);
-        if (clock != null)
+        if(clock != null)
             System.arraycopy(clock.toBytes(), 0, keyBytes, key.length + 2, clockSize);
         return keyBytes;
     }
@@ -84,25 +100,25 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
     static byte[] getObjKey(byte[] bytes) {
         short size = ByteUtils.readShort(bytes, 0);
         byte[] dest = new byte[size];
-        if (size &gt; 0)
+        if(size &gt; 0)
             System.arraycopy(bytes, 2, dest, 0, size);
         return dest;
     }
 
     static VectorClock getVersion(byte[] bytes) {
         short size = ByteUtils.readShort(bytes, 0);
-        if (size &gt;= bytes.length - 2)
+        if(size &gt;= bytes.length - 2)
             return null;
         else
             return new VectorClock(ByteUtils.copy(bytes, size + 2, bytes.length));
     }
 
     static boolean isPrefix(byte[] prefix, byte[] complete) {
-        if (prefix.length &gt; complete.length)
+        if(prefix.length &gt; complete.length)
             return false;
 
-        for (int i = 0; i &lt; prefix.length; i++)
-            if (complete[i] != prefix[i])
+        for(int i = 0; i &lt; prefix.length; i++)
+            if(complete[i] != prefix[i])
                 return false;
 
         return true;
@@ -110,9 +126,9 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
 
     private static void attemptClose(Cursor cursor) {
         try {
-            if (cursor != null)
+            if(cursor != null)
                 cursor.close();
-        } catch (DatabaseException e) {
+        } catch(DatabaseException e) {
             logger.error(&quot;Error closing cursor.&quot;, e);
             throw new PersistenceFailureException(e.getMessage(), e);
         }
@@ -132,13 +148,13 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             DatabaseEntry valueEntry = new DatabaseEntry();
             List&lt;Versioned&lt;byte[]&gt;&gt; results = new ArrayList&lt;Versioned&lt;byte[]&gt;&gt;();
             cursor = bdbDatabase.openCursor(null, null);
-            for (OperationStatus status = cursor.getSearchKey(keyEntry, valueEntry, lockMode); status == OperationStatus.SUCCESS; status = cursor.getNextDup(keyEntry,
-                                                                                                                                                             valueEntry,
-                                                                                                                                                             lockMode)) {
+            for(OperationStatus status = cursor.getSearchKey(keyEntry, valueEntry, lockMode); status == OperationStatus.SUCCESS; status = cursor.getNextDup(keyEntry,
+                                                                                                                                                            valueEntry,
+                                                                                                                                                            lockMode)) {
                 results.add(serializer.toObject(valueEntry.getData()));
             }
             return results;
-        } catch (DatabaseException e) {
+        } catch(DatabaseException e) {
             throw new PersistenceFailureException(e);
         } finally {
             attemptClose(cursor);
@@ -160,17 +176,17 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             // if there is a version later than this one, throw an exception
             DatabaseEntry valueEntry = new DatabaseEntry();
             cursor = bdbDatabase.openCursor(transaction, null);
-            for (OperationStatus status = cursor.getSearchKey(keyEntry, valueEntry, LockMode.RMW); status == OperationStatus.SUCCESS; status = cursor.getNextDup(keyEntry,
-                                                                                                                                                                 valueEntry,
-                                                                                                                                                                 LockMode.RMW)) {
+            for(OperationStatus status = cursor.getSearchKey(keyEntry, valueEntry, LockMode.RMW); status == OperationStatus.SUCCESS; status = cursor.getNextDup(keyEntry,
+                                                                                                                                                                valueEntry,
+                                                                                                                                                                LockMode.RMW)) {
                 VectorClock clock = new VectorClock(valueEntry.getData());
                 Occured occured = value.getVersion().compare(clock);
-                if (occured == Occured.BEFORE)
+                if(occured == Occured.BEFORE)
                     throw new ObsoleteVersionException(&quot;Key '&quot; + new String(hexCodec.encode(key))
                                                        + &quot;' &quot; + value.getVersion().toString()
                                                        + &quot; is obsolete,&quot; + &quot; current version is &quot;
                                                        + clock + &quot;.&quot;);
-                else if (occured == Occured.AFTER)
+                else if(occured == Occured.AFTER)
                     // best effort delete of obsolete previous value!
                     cursor.delete();
             }
@@ -179,15 +195,15 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             // in
             valueEntry = new DatabaseEntry(serializer.toBytes(value));
             OperationStatus status = cursor.put(keyEntry, valueEntry);
-            if (status != OperationStatus.SUCCESS)
+            if(status != OperationStatus.SUCCESS)
                 throw new PersistenceFailureException(&quot;Put operation failed with status: &quot; + status);
             succeeded = true;
 
-        } catch (DatabaseException e) {
+        } catch(DatabaseException e) {
             throw new PersistenceFailureException(e);
         } finally {
             attemptClose(cursor);
-            if (succeeded)
+            if(succeeded)
                 attemptCommit(transaction);
             else
                 attemptAbort(transaction);
@@ -204,17 +220,17 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             DatabaseEntry keyEntry = new DatabaseEntry(key);
             DatabaseEntry valueEntry = new DatabaseEntry();
             cursor = bdbDatabase.openCursor(transaction, null);
-            for (OperationStatus status = cursor.getSearchKey(keyEntry, valueEntry, null); status == OperationStatus.SUCCESS; status = cursor.getNextDup(keyEntry,
-                                                                                                                                                         valueEntry,
-                                                                                                                                                         null)) {
+            for(OperationStatus status = cursor.getSearchKey(keyEntry, valueEntry, null); status == OperationStatus.SUCCESS; status = cursor.getNextDup(keyEntry,
+                                                                                                                                                        valueEntry,
+                                                                                                                                                        null)) {
                 // if version is null no comparison is necessary
-                if (new VectorClock(valueEntry.getData()).compare(version) == Occured.BEFORE) {
+                if(new VectorClock(valueEntry.getData()).compare(version) == Occured.BEFORE) {
                     cursor.delete();
                     deletedSomething = true;
                 }
             }
             return deletedSomething;
-        } catch (DatabaseException e) {
+        } catch(DatabaseException e) {
             throw new PersistenceFailureException(e);
         } finally {
             try {
@@ -232,7 +248,7 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
 
     @SuppressWarnings(&quot;unchecked&quot;)
     public boolean equals(Object o) {
-        if (o == null || !Store.class.equals(o.getClass()))
+        if(o == null || !Store.class.equals(o.getClass()))
             return false;
         Store s = (Store) o;
         return s.getName().equals(o);
@@ -241,7 +257,7 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
     public void close() throws PersistenceFailureException {
         try {
             this.bdbDatabase.close();
-        } catch (DatabaseException e) {
+        } catch(DatabaseException e) {
             throw new PersistenceFailureException(&quot;Shutdown failed.&quot;, e);
         }
     }
@@ -249,7 +265,7 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
     private void attemptAbort(Transaction transaction) {
         try {
             transaction.abort();
-        } catch (Exception e) {
+        } catch(Exception e) {
             logger.error(&quot;Abort failed!&quot;, e);
         }
     }
@@ -257,7 +273,7 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
     private void attemptCommit(Transaction transaction) {
         try {
             transaction.commit();
-        } catch (DatabaseException e) {
+        } catch(DatabaseException e) {
             logger.error(&quot;Transaction commit failed!&quot;, e);
             attemptAbort(transaction);
             throw new PersistenceFailureException(e);
@@ -277,14 +293,14 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             DatabaseEntry valueEntry = new DatabaseEntry();
             try {
                 cursor.getFirst(keyEntry, valueEntry, null);
-            } catch (DatabaseException e) {
+            } catch(DatabaseException e) {
                 throw new PersistenceFailureException(e);
             }
             current = getEntry(keyEntry, valueEntry);
         }
 
         private Entry&lt;byte[], Versioned&lt;byte[]&gt;&gt; getEntry(DatabaseEntry key, DatabaseEntry value) {
-            if (key == null || key.getData() == null) {
+            if(key == null || key.getData() == null) {
                 return null;
             } else {
                 VectorClock clock = new VectorClock(value.getData());
@@ -301,18 +317,18 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
         }
 
         public Entry&lt;byte[], Versioned&lt;byte[]&gt;&gt; next() {
-            if (!isOpen)
+            if(!isOpen)
                 throw new PersistenceFailureException(&quot;Call to next() on a closed iterator.&quot;);
 
             DatabaseEntry keyEntry = new DatabaseEntry();
             DatabaseEntry valueEntry = new DatabaseEntry();
             try {
                 cursor.getNext(keyEntry, valueEntry, null);
-            } catch (DatabaseException e) {
+            } catch(DatabaseException e) {
                 throw new PersistenceFailureException(e);
             }
             Entry&lt;byte[], Versioned&lt;byte[]&gt;&gt; previous = current;
-            if (keyEntry.getData() == null)
+            if(keyEntry.getData() == null)
                 current = null;
             else
                 current = getEntry(keyEntry, valueEntry);
@@ -328,14 +344,14 @@ public class BdbStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             try {
                 cursor.close();
                 isOpen = false;
-            } catch (DatabaseException e) {
+            } catch(DatabaseException e) {
                 throw new PersistenceFailureException(e);
             }
         }
 
         @Override
         public void finalize() {
-            if (isOpen) {
+            if(isOpen) {
                 logger.error(&quot;Failure to close cursor, will be forcably closed.&quot;);
                 close();
             }</diff>
      <filename>src/java/voldemort/store/bdb/BdbStorageEngine.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.filesystem;
 
 import java.io.File;
@@ -29,10 +45,10 @@ public class FilesystemStorageEngine implements StorageEngine&lt;String, String&gt; {
     public FilesystemStorageEngine(String name, String directory) {
         this.name = name;
         this.directory = new File(directory);
-        if (this.directory.listFiles() == null)
+        if(this.directory.listFiles() == null)
             throw new IllegalArgumentException(&quot;No configuration found in &quot;
                                                + this.directory.getAbsolutePath() + &quot;.&quot;);
-        if (!this.directory.exists() &amp;&amp; this.directory.canRead())
+        if(!this.directory.exists() &amp;&amp; this.directory.canRead())
             throw new IllegalArgumentException(&quot;Directory &quot; + this.directory.getAbsolutePath()
                                                + &quot; does not exist or can not be read.&quot;);
     }
@@ -49,10 +65,10 @@ public class FilesystemStorageEngine implements StorageEngine&lt;String, String&gt; {
         StoreUtils.assertValidKey(key);
         File[] files = this.directory.listFiles();
         boolean deletedSomething = false;
-        for (File file : files) {
-            if (file.getName().startsWith(key)) {
+        for(File file: files) {
+            if(file.getName().startsWith(key)) {
                 VectorClock clock = getVersion(file);
-                if (clock.compare(version) == Occured.BEFORE)
+                if(clock.compare(version) == Occured.BEFORE)
                     deletedSomething |= file.delete();
             }
         }
@@ -64,15 +80,15 @@ public class FilesystemStorageEngine implements StorageEngine&lt;String, String&gt; {
         File[] files = this.directory.listFiles();
         List&lt;Versioned&lt;String&gt;&gt; found = new ArrayList&lt;Versioned&lt;String&gt;&gt;();
         try {
-            for (File file : files) {
-                if (file.getName().startsWith(key)) {
+            for(File file: files) {
+                if(file.getName().startsWith(key)) {
                     VectorClock clock = getVersion(file);
                     found.add(new Versioned&lt;String&gt;(FileUtils.readFileToString(file, &quot;UTF-8&quot;),
                                                     clock));
                 }
             }
             return found;
-        } catch (IOException e) {
+        } catch(IOException e) {
             throw new VoldemortException(e);
         }
     }
@@ -85,10 +101,10 @@ public class FilesystemStorageEngine implements StorageEngine&lt;String, String&gt; {
         StoreUtils.assertValidKey(key);
         // Check for obsolete version
         File[] files = this.directory.listFiles();
-        for (File file : files) {
-            if (file.getName().startsWith(key)) {
+        for(File file: files) {
+            if(file.getName().startsWith(key)) {
                 VectorClock clock = getVersion(file);
-                if (clock.compare(value.getVersion()) == Occured.AFTER)
+                if(clock.compare(value.getVersion()) == Occured.AFTER)
                     throw new ObsoleteVersionException(&quot;A successor version to this exists.&quot;);
             }
         }
@@ -98,10 +114,10 @@ public class FilesystemStorageEngine implements StorageEngine&lt;String, String&gt; {
                       + new String(Hex.encodeHex(clock.toBytes()));
         File newFile = new File(path);
         try {
-            if (!newFile.createNewFile())
+            if(!newFile.createNewFile())
                 throw new ObsoleteVersionException(&quot;File &quot; + path + &quot; already exists.&quot;);
             FileUtils.writeStringToFile(newFile, value.getValue(), &quot;UTF-8&quot;);
-        } catch (IOException e) {
+        } catch(IOException e) {
             throw new VoldemortException(e);
         }
     }
@@ -109,13 +125,13 @@ public class FilesystemStorageEngine implements StorageEngine&lt;String, String&gt; {
     private VectorClock getVersion(File file) {
         try {
             int index = file.getName().lastIndexOf('-');
-            if (index &lt;= 0)
+            if(index &lt;= 0)
                 return new VectorClock();
             else
                 return new VectorClock(Hex.decodeHex(file.getName()
                                                          .substring(index + 1)
                                                          .toCharArray()));
-        } catch (DecoderException e) {
+        } catch(DecoderException e) {
             throw new VoldemortException(e);
         }
     }
@@ -140,9 +156,9 @@ public class FilesystemStorageEngine implements StorageEngine&lt;String, String&gt; {
         }
 
         public Entry&lt;String, Versioned&lt;String&gt;&gt; next() {
-            synchronized (FilesystemStorageEngine.this) {
-                while (true) {
-                    if (!hasNext())
+            synchronized(FilesystemStorageEngine.this) {
+                while(true) {
+                    if(!hasNext())
                         throw new NoSuchElementException(&quot;No more elements in iterator!&quot;);
 
                     try {
@@ -155,7 +171,7 @@ public class FilesystemStorageEngine implements StorageEngine&lt;String, String&gt; {
                         return new Entry&lt;String, Versioned&lt;String&gt;&gt;(key,
                                                                     new Versioned&lt;String&gt;(value,
                                                                                           clock));
-                    } catch (IOException e) {
+                    } catch(IOException e) {
                         // probably the file has been removed or something, skip
                         // it
                     }</diff>
      <filename>src/java/voldemort/store/filesystem/FilesystemStorageEngine.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.gzip;
 
 import java.io.ByteArrayInputStream;
@@ -30,10 +46,10 @@ public class GzipStore&lt;K&gt; extends DelegatingStore&lt;K, byte[]&gt; implements Store&lt;K,
         List&lt;Versioned&lt;byte[]&gt;&gt; found = getInnerStore().get(key);
         List&lt;Versioned&lt;byte[]&gt;&gt; results = new ArrayList&lt;Versioned&lt;byte[]&gt;&gt;(found.size());
         try {
-            for (Versioned&lt;byte[]&gt; item : found)
+            for(Versioned&lt;byte[]&gt; item: found)
                 results.add(new Versioned&lt;byte[]&gt;(IOUtils.toByteArray(new GZIPInputStream(new ByteArrayInputStream(item.getValue()))),
                                                   (VectorClock) item.getVersion()));
-        } catch (IOException e) {
+        } catch(IOException e) {
             throw new VoldemortException(e);
         }
 
@@ -45,7 +61,7 @@ public class GzipStore&lt;K&gt; extends DelegatingStore&lt;K, byte[]&gt; implements Store&lt;K,
             getInnerStore().put(key,
                                 new Versioned&lt;byte[]&gt;(IOUtils.toByteArray(new GZIPInputStream(new ByteArrayInputStream(value.getValue()))),
                                                       (VectorClock) value.getVersion()));
-        } catch (IOException e) {
+        } catch(IOException e) {
             throw new VoldemortException(e);
         }
     }</diff>
      <filename>src/java/voldemort/store/gzip/GzipStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.http;
 
 import java.net.HttpURLConnection;
@@ -19,9 +35,9 @@ public class HttpResponseCodeErrorMapper {
 
     public VoldemortException mapResponseCodeToError(int responseCode, String message) {
         // 200 range response code is okay!
-        if (responseCode &gt;= 200 &amp;&amp; responseCode &lt; 300)
+        if(responseCode &gt;= 200 &amp;&amp; responseCode &lt; 300)
             return null;
-        else if (responseCode == HttpURLConnection.HTTP_CONFLICT)
+        else if(responseCode == HttpURLConnection.HTTP_CONFLICT)
             throw new ObsoleteVersionException(message);
         else
             throw new UnknownFailure(&quot;Unknown failure occured in HTTP operation: &quot; + responseCode
@@ -29,7 +45,7 @@ public class HttpResponseCodeErrorMapper {
     }
 
     public ResponseCode mapErrorToResponseCode(VoldemortException v) {
-        if (v instanceof ObsoleteVersionException)
+        if(v instanceof ObsoleteVersionException)
             return new ResponseCode(HttpURLConnection.HTTP_CONFLICT, v.getMessage());
         else
             return new ResponseCode(HttpURLConnection.HTTP_BAD_GATEWAY, v.getMessage());
@@ -37,7 +53,7 @@ public class HttpResponseCodeErrorMapper {
 
     public void throwError(int responseCode, String message) {
         // 200 range response code is okay!
-        if (responseCode &gt;= 200 &amp;&amp; responseCode &lt; 300)
+        if(responseCode &gt;= 200 &amp;&amp; responseCode &lt; 300)
             return;
         else
             throw mapResponseCodeToError(responseCode, message);</diff>
      <filename>src/java/voldemort/store/http/HttpResponseCodeErrorMapper.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.http;
 
 import java.io.ByteArrayInputStream;
@@ -60,18 +76,18 @@ public class HttpStore implements Store&lt;byte[], byte[]&gt; {
             method.setRequestHeader(VERSION_EXTENSION,
                                     new String(Base64.encodeBase64(clock.toBytes())));
             int response = httpClient.executeMethod(method);
-            if (response == HttpURLConnection.HTTP_NOT_FOUND)
+            if(response == HttpURLConnection.HTTP_NOT_FOUND)
                 return false;
-            if (response != HttpURLConnection.HTTP_OK)
+            if(response != HttpURLConnection.HTTP_OK)
                 httpResponseCodeErrorMapper.throwError(response, method.getStatusText());
             return true;
-        } catch (HttpException e) {
+        } catch(HttpException e) {
             throw new VoldemortException(e);
-        } catch (IOException e) {
+        } catch(IOException e) {
             throw new UnreachableStoreException(&quot;Could not connect to &quot; + url + &quot; for &quot; + storeName,
                                                 e);
         } finally {
-            if (method != null)
+            if(method != null)
                 method.releaseConnection();
         }
     }
@@ -83,12 +99,12 @@ public class HttpStore implements Store&lt;byte[], byte[]&gt; {
         try {
             method = new GetMethod(url);
             int response = httpClient.executeMethod(method);
-            if (response != HttpURLConnection.HTTP_OK)
+            if(response != HttpURLConnection.HTTP_OK)
                 httpResponseCodeErrorMapper.throwError(response, method.getStatusText());
             DataInputStream input = new DataInputStream(new ByteArrayInputStream(method.getResponseBody()));
             List&lt;Versioned&lt;byte[]&gt;&gt; items = new ArrayList&lt;Versioned&lt;byte[]&gt;&gt;();
             try {
-                while (true) {
+                while(true) {
                     int size = input.readInt();
                     byte[] bytes = new byte[size];
                     input.read(bytes);
@@ -96,17 +112,17 @@ public class HttpStore implements Store&lt;byte[], byte[]&gt; {
                     byte[] data = ByteUtils.copy(bytes, clock.sizeInBytes(), bytes.length);
                     items.add(new Versioned&lt;byte[]&gt;(data, clock));
                 }
-            } catch (EOFException e) {
+            } catch(EOFException e) {
                 input.close();
             }
             return items;
-        } catch (HttpException e) {
+        } catch(HttpException e) {
             throw new VoldemortException(e);
-        } catch (IOException e) {
+        } catch(IOException e) {
             throw new UnreachableStoreException(&quot;Could not connect to &quot; + url + &quot; for &quot; + storeName,
                                                 e);
         } finally {
-            if (method != null)
+            if(method != null)
                 method.releaseConnection();
         }
     }
@@ -122,15 +138,15 @@ public class HttpStore implements Store&lt;byte[], byte[]&gt; {
                                     new String(Base64.encodeBase64(clock.toBytes()), &quot;UTF-8&quot;));
             method.setRequestEntity(new ByteArrayRequestEntity(versioned.getValue()));
             int response = httpClient.executeMethod(method);
-            if (response != HttpURLConnection.HTTP_OK)
+            if(response != HttpURLConnection.HTTP_OK)
                 httpResponseCodeErrorMapper.throwError(response, method.getStatusText());
-        } catch (HttpException e) {
+        } catch(HttpException e) {
             throw new VoldemortException(e);
-        } catch (IOException e) {
+        } catch(IOException e) {
             throw new UnreachableStoreException(&quot;Could not connect to &quot; + url + &quot; for &quot; + storeName,
                                                 e);
         } finally {
-            if (method != null)
+            if(method != null)
                 method.releaseConnection();
         }
     }</diff>
      <filename>src/java/voldemort/store/http/HttpStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.logging;
 
 import java.util.List;
@@ -38,7 +54,7 @@ public class LoggingStore&lt;K, V&gt; extends DelegatingStore&lt;K, V&gt; {
 
     @Override
     public void close() throws VoldemortException {
-        if (logger.isDebugEnabled())
+        if(logger.isDebugEnabled())
             logger.debug(&quot;Closing &quot; + getName() + &quot;.&quot;);
         super.close();
     }
@@ -47,14 +63,14 @@ public class LoggingStore&lt;K, V&gt; extends DelegatingStore&lt;K, V&gt; {
     public boolean delete(K key, Version version) throws VoldemortException {
         long startTimeNs = 0;
         boolean succeeded = false;
-        if (logger.isDebugEnabled())
+        if(logger.isDebugEnabled())
             startTimeNs = time.getNanoseconds();
         try {
             boolean deletedSomething = getInnerStore().delete(key, version);
             succeeded = true;
             return deletedSomething;
         } finally {
-            if (logger.isDebugEnabled()) {
+            if(logger.isDebugEnabled()) {
                 double elapsedMs = (time.getNanoseconds() - startTimeNs) / (double) Time.NS_PER_MS;
                 logger.debug(&quot;DELETE from store '&quot; + getName() + &quot;' completed &quot;
                              + (succeeded ? &quot;successfully&quot; : &quot;unsuccessfully&quot;) + &quot; in &quot; + elapsedMs
@@ -67,14 +83,14 @@ public class LoggingStore&lt;K, V&gt; extends DelegatingStore&lt;K, V&gt; {
     public List&lt;Versioned&lt;V&gt;&gt; get(K key) throws VoldemortException {
         long startTimeNs = 0;
         boolean succeeded = false;
-        if (logger.isDebugEnabled())
+        if(logger.isDebugEnabled())
             startTimeNs = time.getNanoseconds();
         try {
             List&lt;Versioned&lt;V&gt;&gt; l = getInnerStore().get(key);
             succeeded = true;
             return l;
         } finally {
-            if (logger.isDebugEnabled()) {
+            if(logger.isDebugEnabled()) {
                 double elapsedMs = (time.getNanoseconds() - startTimeNs) / (double) Time.NS_PER_MS;
                 logger.debug(&quot;GET from store '&quot; + getName() + &quot;' completed &quot;
                              + (succeeded ? &quot;successfully&quot; : &quot;unsuccessfully&quot;) + &quot; in &quot; + elapsedMs
@@ -87,14 +103,14 @@ public class LoggingStore&lt;K, V&gt; extends DelegatingStore&lt;K, V&gt; {
     public void put(K key, Versioned&lt;V&gt; value) throws VoldemortException {
         long startTimeNs = 0;
         boolean succeeded = false;
-        if (logger.isDebugEnabled()) {
+        if(logger.isDebugEnabled()) {
             startTimeNs = time.getNanoseconds();
         }
         try {
             getInnerStore().put(key, value);
             succeeded = true;
         } finally {
-            if (logger.isDebugEnabled()) {
+            if(logger.isDebugEnabled()) {
                 double elapsedMs = (time.getNanoseconds() - startTimeNs) / (double) Time.NS_PER_MS;
                 logger.debug(&quot;PUT from store '&quot; + getName() + &quot;' completed &quot;
                              + (succeeded ? &quot;successfully&quot; : &quot;unsuccessfully&quot;) + &quot; in &quot; + elapsedMs</diff>
      <filename>src/java/voldemort/store/logging/LoggingStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,20 @@
-package voldemort.store.memory;
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
 
+package voldemort.store.memory;
 import java.util.List;
 
 import voldemort.store.KeyWrapper;
@@ -11,6 +26,7 @@ import voldemort.versioning.Versioned;
 import com.google.common.base.ReferenceType;
 import com.google.common.collect.ReferenceMap;
 
+
 /**
  * Identical to the InMemoryStorageConfiguration except that it creates google
  * collections ReferenceMap with Soft references on both keys and values. This</diff>
      <filename>src/java/voldemort/store/memory/CacheStorageConfiguration.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.memory;
 
 import java.util.List;</diff>
      <filename>src/java/voldemort/store/memory/InMemoryStorageConfiguration.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.memory;
 
 import java.util.ArrayList;</diff>
      <filename>src/java/voldemort/store/memory/InMemoryStorageEngine.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.metadata;
 
 import java.io.StringReader;
@@ -87,7 +103,7 @@ public class MetadataStore implements StorageEngine&lt;byte[], byte[]&gt; {
 
     public List&lt;Versioned&lt;byte[]&gt;&gt; get(byte[] key) throws VoldemortException {
         List&lt;Versioned&lt;byte[]&gt;&gt; values = Lists.newArrayList();
-        for(Versioned&lt;String&gt; versioned : innerStore.get(ByteUtils.getString(key, &quot;UTF-8&quot;)))
+        for(Versioned&lt;String&gt; versioned: innerStore.get(ByteUtils.getString(key, &quot;UTF-8&quot;)))
             values.add(new Versioned&lt;byte[]&gt;(ByteUtils.getBytes(versioned.getValue(), &quot;UTF-8&quot;),
                                              versioned.getVersion()));
         return values;</diff>
      <filename>src/java/voldemort/store/metadata/MetadataStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.mysql;
 
 import javax.sql.DataSource;</diff>
      <filename>src/java/voldemort/store/mysql/MysqlStorageConfiguration.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.mysql;
 
 import java.sql.Connection;
@@ -60,7 +76,7 @@ public class MysqlStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             conn = datasource.getConnection();
             stmt = conn.prepareStatement(query);
             stmt.executeUpdate();
-        } catch (SQLException e) {
+        } catch(SQLException e) {
             throw new PersistenceFailureException(&quot;Fix me!&quot;, e);
         } finally {
             tryClose(stmt);
@@ -78,7 +94,7 @@ public class MysqlStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             stmt = conn.prepareStatement(select);
             rs = stmt.executeQuery();
             return new MysqlClosableIterator(conn, stmt, rs);
-        } catch (SQLException e) {
+        } catch(SQLException e) {
             throw new PersistenceFailureException(&quot;Fix me!&quot;, e);
         }
     }
@@ -100,17 +116,17 @@ public class MysqlStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             selectStmt.setBytes(1, key);
             rs = selectStmt.executeQuery();
             boolean deletedSomething = false;
-            while (rs.next()) {
+            while(rs.next()) {
                 byte[] theKey = rs.getBytes(&quot;key_&quot;);
                 byte[] version = rs.getBytes(&quot;version_&quot;);
-                if (new VectorClock(version).compare(maxVersion) == Occured.BEFORE) {
+                if(new VectorClock(version).compare(maxVersion) == Occured.BEFORE) {
                     delete(conn, theKey, version);
                     deletedSomething = true;
                 }
             }
 
             return deletedSomething;
-        } catch (SQLException e) {
+        } catch(SQLException e) {
             throw new PersistenceFailureException(&quot;Fix me!&quot;, e);
         } finally {
             tryClose(rs);
@@ -145,14 +161,14 @@ public class MysqlStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             stmt.setBytes(1, key);
             rs = stmt.executeQuery();
             List&lt;Versioned&lt;byte[]&gt;&gt; found = Lists.newArrayList();
-            while (rs.next()) {
+            while(rs.next()) {
                 byte[] version = rs.getBytes(&quot;version_&quot;);
                 byte[] value = rs.getBytes(&quot;value_&quot;);
                 found.add(new Versioned&lt;byte[]&gt;(value, new VectorClock(version)));
             }
 
             return found;
-        } catch (SQLException e) {
+        } catch(SQLException e) {
             throw new PersistenceFailureException(&quot;Fix me!&quot;, e);
         } finally {
             tryClose(rs);
@@ -182,16 +198,16 @@ public class MysqlStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             select = conn.prepareStatement(selectSql);
             select.setBytes(1, key);
             results = select.executeQuery();
-            while (results.next()) {
+            while(results.next()) {
                 byte[] thisKey = results.getBytes(&quot;key_&quot;);
                 VectorClock version = new VectorClock(results.getBytes(&quot;version_&quot;));
                 Occured occured = value.getVersion().compare(version);
-                if (occured == Occured.BEFORE)
+                if(occured == Occured.BEFORE)
                     throw new ObsoleteVersionException(&quot;Attempt to put version &quot;
                                                        + value.getVersion()
                                                        + &quot; which is superceeded by &quot; + version
                                                        + &quot;.&quot;);
-                else if (occured == Occured.AFTER)
+                else if(occured == Occured.AFTER)
                     delete(conn, thisKey, version.toBytes());
             }
 
@@ -202,21 +218,21 @@ public class MysqlStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             insert.setBytes(2, clock.toBytes());
             insert.setBytes(3, value.getValue());
             insert.executeUpdate();
-        } catch (SQLException e) {
-            if (e.getErrorCode() == MYSQL_ERR_DUP_KEY || e.getErrorCode() == MYSQL_ERR_DUP_ENTRY) {
+        } catch(SQLException e) {
+            if(e.getErrorCode() == MYSQL_ERR_DUP_KEY || e.getErrorCode() == MYSQL_ERR_DUP_ENTRY) {
                 e.printStackTrace();
                 throw new ObsoleteVersionException(&quot;Key or value already used.&quot;);
             } else {
                 throw new PersistenceFailureException(&quot;Fix me!&quot;, e);
             }
         } finally {
-            if (conn != null) {
+            if(conn != null) {
                 try {
-                    if (doCommit)
+                    if(doCommit)
                         conn.commit();
                     else
                         conn.rollback();
-                } catch (SQLException e) {}
+                } catch(SQLException e) {}
             }
             tryClose(results);
             tryClose(insert);
@@ -227,27 +243,27 @@ public class MysqlStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
 
     private void tryClose(ResultSet rs) {
         try {
-            if (rs != null)
+            if(rs != null)
                 rs.close();
-        } catch (Exception e) {
+        } catch(Exception e) {
             logger.error(&quot;Failed to close resultset.&quot;, e);
         }
     }
 
     private void tryClose(Connection c) {
         try {
-            if (c != null)
+            if(c != null)
                 c.close();
-        } catch (Exception e) {
+        } catch(Exception e) {
             logger.error(&quot;Failed to close connection.&quot;, e);
         }
     }
 
     private void tryClose(PreparedStatement s) {
         try {
-            if (s != null)
+            if(s != null)
                 s.close();
-        } catch (Exception e) {
+        } catch(Exception e) {
             logger.error(&quot;Failed to close prepared statement.&quot;, e);
         }
     }
@@ -266,7 +282,7 @@ public class MysqlStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
             try {
                 // Move to the first item
                 this.hasMore = resultSet.next();
-            } catch (SQLException e) {
+            } catch(SQLException e) {
                 throw new PersistenceFailureException(e);
             }
             this.rs = resultSet;
@@ -286,7 +302,7 @@ public class MysqlStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
 
         public Entry&lt;byte[], Versioned&lt;byte[]&gt;&gt; next() {
             try {
-                if (!this.hasMore)
+                if(!this.hasMore)
                     throw new PersistenceFailureException(&quot;Next called on iterator, but no more items available!&quot;);
                 byte[] key = rs.getBytes(&quot;key_&quot;);
                 byte[] value = rs.getBytes(&quot;value_&quot;);
@@ -294,7 +310,7 @@ public class MysqlStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
                 this.hasMore = rs.next();
                 return new Entry&lt;byte[], Versioned&lt;byte[]&gt;&gt;(key,
                                                             new Versioned&lt;byte[]&gt;(value, clock));
-            } catch (SQLException e) {
+            } catch(SQLException e) {
                 throw new PersistenceFailureException(e);
             }
         }
@@ -302,7 +318,7 @@ public class MysqlStorageEngine implements StorageEngine&lt;byte[], byte[]&gt; {
         public void remove() {
             try {
                 rs.deleteRow();
-            } catch (SQLException e) {
+            } catch(SQLException e) {
                 throw new PersistenceFailureException(e);
             }
         }</diff>
      <filename>src/java/voldemort/store/mysql/MysqlStorageEngine.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.readonly;
 
 import java.io.BufferedInputStream;</diff>
      <filename>src/java/voldemort/store/readonly/ExternalSorter.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.readonly;
 
 import java.io.BufferedOutputStream;</diff>
      <filename>src/java/voldemort/store/readonly/JsonStoreBuilder.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.readonly;
 
 import java.io.File;</diff>
      <filename>src/java/voldemort/store/readonly/RandomAccessFileStorageConfiguration.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.readonly;
 
 import java.io.File;</diff>
      <filename>src/java/voldemort/store/readonly/RandomAccessFileStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.readonly;
 
 import java.io.BufferedReader;</diff>
      <filename>src/java/voldemort/store/readonly/StringSorter.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.routed;
 
 import java.io.Serializable;
@@ -63,11 +79,11 @@ final class NodeValue&lt;K, V&gt; implements Serializable, Cloneable {
 
     @Override
     public boolean equals(Object o) {
-        if (o == this)
+        if(o == this)
             return true;
-        if (!(o instanceof NodeValue))
+        if(!(o instanceof NodeValue))
             return false;
-        if (o == null)
+        if(o == null)
             return false;
 
         NodeValue&lt;?, ?&gt; v = (NodeValue&lt;?, ?&gt;) o;</diff>
      <filename>src/java/voldemort/store/routed/NodeValue.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.routed;
 
 import java.util.ArrayList;
@@ -33,7 +49,7 @@ public class ReadRepairer&lt;K, V&gt; {
      */
     public List&lt;NodeValue&lt;K, V&gt;&gt; getRepairs(List&lt;NodeValue&lt;K, V&gt;&gt; nodeValues) {
         int size = nodeValues.size();
-        if (size &lt;= 1)
+        if(size &lt;= 1)
             return Collections.emptyList();
 
         // A list of obsolete nodes that need to be repaired
@@ -46,31 +62,31 @@ public class ReadRepairer&lt;K, V&gt; {
         concurrents.put(nodeValues.get(0).getVersion(), nodeValues.get(0));
 
         // check each value against the current set of most current versions
-        for (int i = 1; i &lt; nodeValues.size(); i++) {
+        for(int i = 1; i &lt; nodeValues.size(); i++) {
             NodeValue&lt;K, V&gt; curr = nodeValues.get(i);
             boolean concurrentToAll = true;
             Set&lt;Version&gt; versions = new HashSet&lt;Version&gt;(concurrents.keySet());
-            for (Version concurrentVersion : versions) {
+            for(Version concurrentVersion: versions) {
 
                 // if we already have the version, just add the nodevalue for
                 // future updating and move on
-                if (curr.getVersion().equals(concurrentVersion)) {
+                if(curr.getVersion().equals(concurrentVersion)) {
                     concurrents.put(curr.getVersion(), curr);
                     break;
                 }
 
                 // Check the ordering of the current value
                 Occured occured = curr.getVersion().compare(concurrentVersion);
-                if (occured == Occured.BEFORE) {
+                if(occured == Occured.BEFORE) {
                     // This value is obsolete! Stop checking against other
                     // values...
                     obsolete.add(curr.getNodeId());
                     concurrentToAll = false;
                     break;
-                } else if (occured == Occured.AFTER) {
+                } else if(occured == Occured.AFTER) {
                     // This concurrent value is obsolete and the current value
                     // should replace it
-                    for (NodeValue&lt;K, V&gt; v : concurrents.get(concurrentVersion))
+                    for(NodeValue&lt;K, V&gt; v: concurrents.get(concurrentVersion))
                         obsolete.add(v.getNodeId());
                     concurrents.removeAll(concurrentVersion);
                     concurrentToAll = false;
@@ -79,15 +95,15 @@ public class ReadRepairer&lt;K, V&gt; {
             }
             // if the value is concurrent to all existing versions then add it
             // to the concurrent set
-            if (concurrentToAll)
+            if(concurrentToAll)
                 concurrents.put(curr.getVersion(), curr);
         }
 
         // Construct the list of repairs
         List&lt;NodeValue&lt;K, V&gt;&gt; repairs = new ArrayList&lt;NodeValue&lt;K, V&gt;&gt;(3);
-        for (Integer id : obsolete) {
+        for(Integer id: obsolete) {
             // repair all obsolete nodes
-            for (Version v : concurrents.keys()) {
+            for(Version v: concurrents.keys()) {
                 Iterator&lt;NodeValue&lt;K, V&gt;&gt; it = concurrents.get(v).iterator();
                 NodeValue&lt;K, V&gt; concurrent = it.next();
                 NodeValue&lt;K, V&gt; repair = new NodeValue&lt;K, V&gt;(id,
@@ -97,20 +113,20 @@ public class ReadRepairer&lt;K, V&gt; {
             }
         }
 
-        if (concurrents.size() &gt; 1) {
+        if(concurrents.size() &gt; 1) {
             // if there are more then one concurrent versions on different
             // nodes,
             // we should repair so all have the same set of values
             HashSet&lt;NodeValue&lt;K, V&gt;&gt; existing = new HashSet&lt;NodeValue&lt;K, V&gt;&gt;();
-            for (NodeValue&lt;K, V&gt; value : repairs)
+            for(NodeValue&lt;K, V&gt; value: repairs)
                 existing.add(value);
-            for (NodeValue&lt;K, V&gt; entry1 : concurrents.values()) {
-                for (NodeValue&lt;K, V&gt; entry2 : concurrents.values()) {
-                    if (!entry1.getVersion().equals(entry2.getVersion())) {
+            for(NodeValue&lt;K, V&gt; entry1: concurrents.values()) {
+                for(NodeValue&lt;K, V&gt; entry2: concurrents.values()) {
+                    if(!entry1.getVersion().equals(entry2.getVersion())) {
                         NodeValue&lt;K, V&gt; repair = new NodeValue&lt;K, V&gt;(entry1.getNodeId(),
                                                                      entry2.getKey(),
                                                                      entry2.getVersioned());
-                        if (!existing.contains(repair))
+                        if(!existing.contains(repair))
                             repairs.add(repair);
                     }
                 }</diff>
      <filename>src/java/voldemort/store/routed/ReadRepairer.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.routed;
 
 import java.util.ArrayList;
@@ -172,7 +188,7 @@ public class RoutedStore implements Store&lt;byte[], byte[]&gt; {
         // semaphore.acquire(n) waits for n operations to complete
         final Semaphore semaphore = new Semaphore(0, false);
         // Add the operations to the pool
-        for(final Node node : nodes) {
+        for(final Node node: nodes) {
             this.executor.execute(new Runnable() {
 
                 public void run() {
@@ -261,20 +277,20 @@ public class RoutedStore implements Store&lt;byte[], byte[]&gt; {
             final Node node = nodes.get(nodeIndex);
             System.out.println(&quot;Querying node:&quot; + node.getId() + &quot; key:&quot; + key);
             if(isAvailable(node)) {
-              System.out.println(&quot;Available node:&quot; + node.getId() + &quot; key:&quot; + key);
+                System.out.println(&quot;Available node:&quot; + node.getId() + &quot; key:&quot; + key);
                 this.executor.execute(new Runnable() {
 
                     public void run() {
                         try {
-                           for (Store store: innerStores.values())
-                           {
-                            logger.info(&quot;storeID: &quot; + store.getName() + &quot; Class:&quot; + store.getClass().toString());
-                           }
+                            for(Store store: innerStores.values()) {
+                                logger.info(&quot;storeID: &quot; + store.getName() + &quot; Class:&quot;
+                                            + store.getClass().toString());
+                            }
                             List&lt;Versioned&lt;byte[]&gt;&gt; fetched = innerStores.get(node.getId())
                                                                          .get(key);
                             retrieved.addAll(fetched);
                             if(repairReads) {
-                                for(Versioned&lt;byte[]&gt; f : fetched)
+                                for(Versioned&lt;byte[]&gt; f: fetched)
                                     nodeValues.add(new NodeValue&lt;byte[], byte[]&gt;(node.getId(),
                                                                                  key,
                                                                                  f));
@@ -328,7 +344,7 @@ public class RoutedStore implements Store&lt;byte[], byte[]&gt; {
             this.executor.execute(new Runnable() {
 
                 public void run() {
-                    for(NodeValue&lt;byte[], byte[]&gt; v : readRepairer.getRepairs(nodeValues)) {
+                    for(NodeValue&lt;byte[], byte[]&gt; v: readRepairer.getRepairs(nodeValues)) {
                         try {
                             logger.debug(&quot;Doing read repair on node &quot; + v.getNodeId()
                                          + &quot; for key '&quot; + v.getKey() + &quot;' with version &quot;
@@ -503,7 +519,7 @@ public class RoutedStore implements Store&lt;byte[], byte[]&gt; {
             this.executor.shutdownNow();
         }
         VoldemortException exception = null;
-        for(Store&lt;byte[], byte[]&gt; client : innerStores.values()) {
+        for(Store&lt;byte[], byte[]&gt; client: innerStores.values()) {
             try {
                 client.close();
             } catch(VoldemortException v) {</diff>
      <filename>src/java/voldemort/store/routed/RoutedStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.serialized;
 
 import voldemort.serialization.Serializer;</diff>
      <filename>src/java/voldemort/store/serialized/SerializingStorageEngine.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.serialized;
 
 import java.util.ArrayList;
@@ -41,7 +57,7 @@ public class SerializingStore&lt;K, V&gt; implements Store&lt;K, V&gt; {
     public List&lt;Versioned&lt;V&gt;&gt; get(K key) throws VoldemortException {
         List&lt;Versioned&lt;byte[]&gt;&gt; found = store.get(keySerializer.toBytes(key));
         List&lt;Versioned&lt;V&gt;&gt; results = new ArrayList&lt;Versioned&lt;V&gt;&gt;(found.size());
-        for (Versioned&lt;byte[]&gt; versioned : found)
+        for(Versioned&lt;byte[]&gt; versioned: found)
             results.add(new Versioned&lt;V&gt;(valueSerializer.toObject(versioned.getValue()),
                                          (VectorClock) versioned.getVersion()));
         return results;</diff>
      <filename>src/java/voldemort/store/serialized/SerializingStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.slop;
 
 import java.util.Arrays;
@@ -86,9 +102,9 @@ public class Slop {
 
     @Override
     public boolean equals(Object obj) {
-        if (obj == null)
+        if(obj == null)
             return false;
-        else if (!obj.getClass().equals(Slop.class))
+        else if(!obj.getClass().equals(Slop.class))
             return false;
 
         Slop slop = (Slop) obj;</diff>
      <filename>src/java/voldemort/store/slop/Slop.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.slop;
 
 import java.util.Date;</diff>
      <filename>src/java/voldemort/store/slop/SlopDetectingStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.slop;
 
 import java.util.ArrayList;
@@ -14,6 +30,8 @@ import voldemort.store.UnreachableStoreException;
 import voldemort.versioning.Version;
 import voldemort.versioning.Versioned;
 
+;
+
 /**
  * A Sloppy store is a store wrapper that delegates to an inner store, and if
  * that store fails, instead stores some slop in the first of a list of backup
@@ -68,15 +86,15 @@ public class SloppyStore extends DelegatingStore&lt;byte[], byte[]&gt; {
         StoreUtils.assertValidKey(key);
         try {
             return getInnerStore().delete(key, version);
-        } catch (UnreachableStoreException e) {
+        } catch(UnreachableStoreException e) {
             List&lt;Exception&gt; failures = new ArrayList&lt;Exception&gt;();
             failures.add(e);
             Slop slop = new Slop(getName(), Slop.Operation.DELETE, key, null, node, new Date());
-            for (Store&lt;byte[], Slop&gt; slopStore : backupStores) {
+            for(Store&lt;byte[], Slop&gt; slopStore: backupStores) {
                 try {
                     slopStore.put(slop.makeKey(), new Versioned&lt;Slop&gt;(slop, version));
                     return false;
-                } catch (UnreachableStoreException u) {
+                } catch(UnreachableStoreException u) {
                     failures.add(u);
                 }
             }
@@ -96,7 +114,7 @@ public class SloppyStore extends DelegatingStore&lt;byte[], byte[]&gt; {
         StoreUtils.assertValidKey(key);
         try {
             getInnerStore().put(key, value);
-        } catch (UnreachableStoreException e) {
+        } catch(UnreachableStoreException e) {
             List&lt;Exception&gt; failures = new ArrayList&lt;Exception&gt;();
             failures.add(e);
             boolean persisted = false;
@@ -106,16 +124,16 @@ public class SloppyStore extends DelegatingStore&lt;byte[], byte[]&gt; {
                                  value.getValue(),
                                  node,
                                  new Date());
-            for (Store&lt;byte[], Slop&gt; slopStore : backupStores) {
+            for(Store&lt;byte[], Slop&gt; slopStore: backupStores) {
                 try {
                     slopStore.put(slop.makeKey(), new Versioned&lt;Slop&gt;(slop, value.getVersion()));
                     persisted = true;
                     break;
-                } catch (UnreachableStoreException u) {
+                } catch(UnreachableStoreException u) {
                     failures.add(u);
                 }
             }
-            if (persisted)
+            if(persisted)
                 throw new UnreachableStoreException(&quot;Put operation failed on node &quot;
                                                             + node
                                                             + &quot;, but has been persisted to slop storage for eventual replication.&quot;,</diff>
      <filename>src/java/voldemort/store/slop/SloppyStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.socket;
 
 import java.io.BufferedInputStream;</diff>
      <filename>src/java/voldemort/store/socket/SocketAndStreams.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.socket;
 
 import com.google.common.base.Objects;
@@ -28,10 +44,10 @@ public class SocketDestination {
 
     @Override
     public boolean equals(Object obj) {
-        if (obj == this)
+        if(obj == this)
             return true;
 
-        if (obj == null || !obj.getClass().equals(SocketDestination.class))
+        if(obj == null || !obj.getClass().equals(SocketDestination.class))
             return false;
 
         SocketDestination d = (SocketDestination) obj;</diff>
      <filename>src/java/voldemort/store/socket/SocketDestination.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.socket;
 
 import org.apache.commons.pool.KeyedObjectPool;
@@ -38,7 +54,7 @@ public class SocketPool {
     public SocketAndStreams checkout(SocketDestination destination) {
         try {
             return (SocketAndStreams) pool.borrowObject(destination);
-        } catch (Exception e) {
+        } catch(Exception e) {
             throw new UnreachableStoreException(&quot;Failure while checking out socket for &quot;
                                                 + destination + &quot;: &quot;, e);
         }
@@ -47,10 +63,10 @@ public class SocketPool {
     public void checkin(SocketDestination destination, SocketAndStreams socket) {
         try {
             pool.returnObject(destination, socket);
-        } catch (Exception e) {
+        } catch(Exception e) {
             try {
                 pool.invalidateObject(destination, socket);
-            } catch (Exception e2) {
+            } catch(Exception e2) {
                 logger.error(&quot;Error while destroying socket:&quot;, e2);
             }
             throw new UnreachableStoreException(&quot;Failure while checking out socket for &quot;
@@ -62,7 +78,7 @@ public class SocketPool {
         try {
             pool.clear();
             pool.close();
-        } catch (Exception e) {
+        } catch(Exception e) {
             throw new VoldemortException(e);
         }
     }</diff>
      <filename>src/java/voldemort/store/socket/SocketPool.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.socket;
 
 import java.net.InetSocketAddress;
@@ -40,7 +56,7 @@ public class SocketPoolableObjectFactory implements KeyedPoolableObjectFactory {
         SocketAndStreams sands = (SocketAndStreams) value;
         sands.getSocket().close();
         int numDestroyed = destroyed.incrementAndGet();
-        if (logger.isDebugEnabled())
+        if(logger.isDebugEnabled())
             logger.debug(&quot;Destroyed socket &quot; + numDestroyed + &quot; connection to &quot; + dest.getHost()
                          + &quot;:&quot; + dest.getPort());
     }
@@ -54,7 +70,7 @@ public class SocketPoolableObjectFactory implements KeyedPoolableObjectFactory {
         s.setSoTimeout(timeoutMs);
         s.connect(new InetSocketAddress(dest.getHost(), dest.getPort()));
         int numCreated = created.incrementAndGet();
-        if (logger.isDebugEnabled())
+        if(logger.isDebugEnabled())
             logger.debug(&quot;Created socket &quot; + numCreated + &quot; for &quot; + dest.getHost() + &quot;:&quot;
                          + dest.getPort());
         return new SocketAndStreams(s);</diff>
      <filename>src/java/voldemort/store/socket/SocketPoolableObjectFactory.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.socket;
 
 import java.io.DataInputStream;
@@ -63,7 +79,7 @@ public class SocketStore implements Store&lt;byte[], byte[]&gt; {
             DataInputStream inputStream = sands.getInputStream();
             checkException(inputStream);
             return inputStream.readBoolean();
-        } catch (IOException e) {
+        } catch(IOException e) {
             close(sands.getSocket());
             throw new VoldemortException(e);
         } finally {
@@ -85,7 +101,7 @@ public class SocketStore implements Store&lt;byte[], byte[]&gt; {
             checkException(inputStream);
             int resultSize = inputStream.readInt();
             List&lt;Versioned&lt;byte[]&gt;&gt; results = new ArrayList&lt;Versioned&lt;byte[]&gt;&gt;(resultSize);
-            for (int i = 0; i &lt; resultSize; i++) {
+            for(int i = 0; i &lt; resultSize; i++) {
                 int valueSize = inputStream.readInt();
                 byte[] bytes = new byte[valueSize];
                 ByteUtils.read(inputStream, bytes);
@@ -95,7 +111,7 @@ public class SocketStore implements Store&lt;byte[], byte[]&gt; {
                                                                  bytes.length), clock));
             }
             return results;
-        } catch (IOException e) {
+        } catch(IOException e) {
             close(sands.getSocket());
             throw new VoldemortException(e);
         } finally {
@@ -119,7 +135,7 @@ public class SocketStore implements Store&lt;byte[], byte[]&gt; {
             outputStream.flush();
             DataInputStream inputStream = sands.getInputStream();
             checkException(inputStream);
-        } catch (IOException e) {
+        } catch(IOException e) {
             close(sands.getSocket());
             throw new VoldemortException(e);
         } finally {
@@ -133,7 +149,7 @@ public class SocketStore implements Store&lt;byte[], byte[]&gt; {
 
     private void checkException(DataInputStream inputStream) throws IOException {
         short retCode = inputStream.readShort();
-        if (retCode != 0) {
+        if(retCode != 0) {
             String error = inputStream.readUTF();
             throw errorCodeMapper.getError(retCode, error);
         }
@@ -142,7 +158,7 @@ public class SocketStore implements Store&lt;byte[], byte[]&gt; {
     private void close(Socket socket) {
         try {
             socket.close();
-        } catch (IOException e) {
+        } catch(IOException e) {
             logger.warn(&quot;Failed to close socket&quot;);
         }
     }</diff>
      <filename>src/java/voldemort/store/socket/SocketStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.stats;
 
 import java.util.List;
@@ -42,7 +58,7 @@ public class StatTrackingStore&lt;K, V&gt; extends DelegatingStore&lt;K, V&gt; {
         long start = System.nanoTime();
         try {
             return super.delete(key, version);
-        } catch (VoldemortException e) {
+        } catch(VoldemortException e) {
             exceptionsThrown++;
             throw e;
         } finally {
@@ -57,7 +73,7 @@ public class StatTrackingStore&lt;K, V&gt; extends DelegatingStore&lt;K, V&gt; {
         long start = System.nanoTime();
         try {
             return super.get(key);
-        } catch (VoldemortException e) {
+        } catch(VoldemortException e) {
             exceptionsThrown++;
             throw e;
         } finally {
@@ -72,7 +88,7 @@ public class StatTrackingStore&lt;K, V&gt; extends DelegatingStore&lt;K, V&gt; {
         long start = System.nanoTime();
         try {
             super.put(key, value);
-        } catch (VoldemortException e) {
+        } catch(VoldemortException e) {
             exceptionsThrown++;
             throw e;
         } finally {</diff>
      <filename>src/java/voldemort/store/stats/StatTrackingStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.versioned;
 
 import java.util.List;</diff>
      <filename>src/java/voldemort/store/versioned/InconsistencyResolvingStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.versioned;
 
 import voldemort.VoldemortException;</diff>
      <filename>src/java/voldemort/store/versioned/VersionIncrementingStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 import java.io.DataInputStream;
@@ -45,7 +61,7 @@ public class ByteUtils {
         try {
             MD5_PROTOTYPE = MessageDigest.getInstance(&quot;MD5&quot;);
             SHA1_PROTOTYPE = MessageDigest.getInstance(&quot;SHA-1&quot;);
-        } catch (NoSuchAlgorithmException e) {
+        } catch(NoSuchAlgorithmException e) {
             throw new IllegalStateException(&quot;Could not initialize digest prototypes.&quot;, e);
         }
     }
@@ -58,8 +74,8 @@ public class ByteUtils {
      */
     public static String toHexString(byte[] bytes) {
         StringBuffer buffer = new StringBuffer();
-        for (byte b : bytes) {
-            if (Math.abs(b) &lt; 16)
+        for(byte b: bytes) {
+            if(Math.abs(b) &lt; 16)
                 buffer.append('0');
             String hex = Integer.toHexString(b);
             buffer.append(hex.substring(Math.max(0, hex.length() - 2)));
@@ -75,9 +91,9 @@ public class ByteUtils {
      */
     public static String toBinaryString(byte[] bytes) {
         StringBuffer buffer = new StringBuffer();
-        for (byte b : bytes) {
+        for(byte b: bytes) {
             String bin = Integer.toBinaryString(b);
-            for (int i = 0; i &lt; 8 - bin.length(); i++)
+            for(int i = 0; i &lt; 8 - bin.length(); i++)
                 buffer.append('0');
             buffer.append(bin.substring(Math.max(0, bin.length() - 8)));
         }
@@ -93,13 +109,13 @@ public class ByteUtils {
      */
     public static byte[] cat(byte[]... arrays) {
         int size = 0;
-        for (byte[] a : arrays)
-            if (a != null)
+        for(byte[] a: arrays)
+            if(a != null)
                 size += a.length;
         byte[] cated = new byte[size];
         int pos = 0;
-        for (byte[] a : arrays) {
-            if (a != null) {
+        for(byte[] a: arrays) {
+            if(a != null) {
                 System.arraycopy(a, 0, cated, pos, a.length);
                 pos += a.length;
             }
@@ -117,7 +133,7 @@ public class ByteUtils {
      * @return A new byte[] containing the copied bytes
      */
     public static byte[] copy(byte[] array, int from, int to) {
-        if (to - from &lt; 0) {
+        if(to - from &lt; 0) {
             return new byte[0];
         } else {
             byte[] a = new byte[to - from];
@@ -177,7 +193,7 @@ public class ByteUtils {
     public static long readBytes(byte[] bytes, int offset, int numBytes) {
         int shift = 0;
         long value = 0;
-        for (int i = offset + numBytes - 1; i &gt;= offset; i--) {
+        for(int i = offset + numBytes - 1; i &gt;= offset; i--) {
             value |= (bytes[i] &amp; 0xFFL) &lt;&lt; shift;
             shift += 8;
         }
@@ -238,7 +254,7 @@ public class ByteUtils {
      */
     public static void writeBytes(byte[] bytes, long value, int offset, int numBytes) {
         int shift = 0;
-        for (int i = offset + numBytes - 1; i &gt;= offset; i--) {
+        for(int i = offset + numBytes - 1; i &gt;= offset; i--) {
             bytes[i] = (byte) (0xFF &amp; (value &gt;&gt; shift));
             shift += 8;
         }
@@ -251,36 +267,36 @@ public class ByteUtils {
      * @return The required number of bytes (must be 8 or less)
      */
     public static byte numberOfBytesRequired(long number) {
-        if (number &lt; 0)
+        if(number &lt; 0)
             number = -number;
-        for (byte i = 1; i &lt;= SIZE_OF_LONG; i++)
-            if (number &lt; (1L &lt;&lt; (8 * i)))
+        for(byte i = 1; i &lt;= SIZE_OF_LONG; i++)
+            if(number &lt; (1L &lt;&lt; (8 * i)))
                 return i;
         throw new IllegalStateException(&quot;Should never happen.&quot;);
     }
 
     public static long readVarNumber(DataInputStream input) throws IOException {
         int b = 0xFF &amp; input.readByte();
-        if ((b &amp; MASK_10000000) == 0) {
+        if((b &amp; MASK_10000000) == 0) {
             // one byte value, mask off the size bit and return
             return MASK_01111111 &amp; b;
-        } else if ((b &amp; MASK_11000000) == MASK_10000000) {
+        } else if((b &amp; MASK_11000000) == MASK_10000000) {
             // two byte value, mask off first two bits
             long val = (b &amp; MASK_00111111) &lt;&lt; Byte.SIZE;
             val |= 0xFF &amp; input.readByte();
             return val;
-        } else if ((b &amp; MASK_11100000) == MASK_11000000) {
+        } else if((b &amp; MASK_11100000) == MASK_11000000) {
             // four byte value, mask off three bits
             long val = (b &amp; MASK_00011111);
-            for (int i = 0; i &lt; 3; i++) {
+            for(int i = 0; i &lt; 3; i++) {
                 val &lt;&lt;= Byte.SIZE;
                 val |= 0xFF &amp; input.readByte();
             }
             return val;
-        } else if ((b &amp; MASK_11100000) == MASK_11100000) {
+        } else if((b &amp; MASK_11100000) == MASK_11100000) {
             // eight byte value, mask off three bits
             long val = (b &amp; MASK_00011111);
-            for (int i = 0; i &lt; 7; i++) {
+            for(int i = 0; i &lt; 7; i++) {
                 val &lt;&lt;= Byte.SIZE;
                 val |= 0xFF &amp; input.readByte();
             }
@@ -299,23 +315,23 @@ public class ByteUtils {
     public static void writeVarNumber(long value, DataOutputStream output) throws IOException {
         int size;
         int signMask = Long.signum(value) &lt;&lt; 8;
-        if (value &lt; 1 &lt;&lt; 6) {
+        if(value &lt; 1 &lt;&lt; 6) {
             size = 1;
             output.write(signMask | (byte) value);
-        } else if (value &lt; 1 &lt;&lt; 13) {
+        } else if(value &lt; 1 &lt;&lt; 13) {
             size = 2;
             output.write(signMask | MASK_10000000 | readNthByte(value, 1));
-        } else if (value &lt; 1 &lt;&lt; 28) {
+        } else if(value &lt; 1 &lt;&lt; 28) {
             size = 4;
             output.write(signMask | MASK_11000000 | readNthByte(value, 3));
-        } else if (value &lt; 1L &lt;&lt; 60) {
+        } else if(value &lt; 1L &lt;&lt; 60) {
             size = 8;
             output.write(signMask | MASK_11100000 | readNthByte(value, 7));
         } else {
             throw new IllegalArgumentException(value + &quot; is larger than maximum allowable&quot;);
         }
         // write all but first byte
-        for (int i = size - 2; i &gt;= 0; i--)
+        for(int i = size - 2; i &gt;= 0; i--)
             output.write(readNthByte(value, i));
     }
 
@@ -338,9 +354,9 @@ public class ByteUtils {
      */
     public static void read(InputStream stream, byte[] buffer) throws IOException {
         int read = 0;
-        while (read &lt; buffer.length) {
+        while(read &lt; buffer.length) {
             int newlyRead = stream.read(buffer, read, buffer.length - read);
-            if (newlyRead == -1)
+            if(newlyRead == -1)
                 throw new EOFException(&quot;Attempt to read &quot; + buffer.length
                                        + &quot; bytes failed due to EOF.&quot;);
             read += newlyRead;
@@ -357,7 +373,7 @@ public class ByteUtils {
     public static byte[] getBytes(String string, String encoding) {
         try {
             return string.getBytes(encoding);
-        } catch (UnsupportedEncodingException e) {
+        } catch(UnsupportedEncodingException e) {
             throw new IllegalArgumentException(encoding + &quot; is not a known encoding name.&quot;);
         }
     }
@@ -372,7 +388,7 @@ public class ByteUtils {
     public static String getString(byte[] bytes, String encoding) {
         try {
             return new String(bytes, encoding);
-        } catch (UnsupportedEncodingException e) {
+        } catch(UnsupportedEncodingException e) {
             throw new IllegalArgumentException(encoding + &quot; is not a known encoding name.&quot;);
         }
     }
@@ -388,7 +404,7 @@ public class ByteUtils {
         try {
             MessageDigest digest = (MessageDigest) MD5_PROTOTYPE.clone();
             return digest.digest(input);
-        } catch (CloneNotSupportedException e) {
+        } catch(CloneNotSupportedException e) {
             throw new IllegalStateException(e);
         }
     }
@@ -404,7 +420,7 @@ public class ByteUtils {
         try {
             MessageDigest digest = (MessageDigest) SHA1_PROTOTYPE.clone();
             return digest.digest(input);
-        } catch (CloneNotSupportedException e) {
+        } catch(CloneNotSupportedException e) {
             throw new IllegalStateException(e);
         }
     }
@@ -420,14 +436,14 @@ public class ByteUtils {
      */
     public static int compare(byte[] b1, byte[] b2) {
         int larger = Math.max(b1.length, b2.length);
-        for (int i = 0; i &lt; larger; i++) {
-            if (i &gt;= b1.length)
+        for(int i = 0; i &lt; larger; i++) {
+            if(i &gt;= b1.length)
                 return -1;
-            else if (i &gt;= b2.length)
+            else if(i &gt;= b2.length)
                 return 1;
-            else if (b1[i] &lt; b2[i])
+            else if(b1[i] &lt; b2[i])
                 return -1;
-            else if (b1[i] &gt; b2[i])
+            else if(b1[i] &gt; b2[i])
                 return 1;
         }
 </diff>
      <filename>src/java/voldemort/utils/ByteUtils.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,19 +1,35 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 import java.util.Iterator;
 
-/** 
+/**
  * An iterator that must be closed after use
  * 
  * @author jay
- *
+ * 
  * @param &lt;T&gt; The type being iterated over
  */
 public interface ClosableIterator&lt;T&gt; extends Iterator&lt;T&gt; {
-	
-	/**
-	 * Close the iterator
-	 */
-	public void close();
+
+    /**
+     * Close the iterator
+     */
+    public void close();
 
 }</diff>
      <filename>src/java/voldemort/utils/ClosableIterator.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,16 +1,31 @@
-package voldemort.utils;
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
 
+package voldemort.utils;
 
 public class ConfigurationException extends RuntimeException {
 
-	final static long serialVersionUID = 1;
+    final static long serialVersionUID = 1;
 
-	public ConfigurationException(String message){
-		super(message);
-	}
+    public ConfigurationException(String message) {
+        super(message);
+    }
 
-	public ConfigurationException(Exception cause){
-		super(cause);
-	}
+    public ConfigurationException(Exception cause) {
+        super(cause);
+    }
 
 }</diff>
      <filename>src/java/voldemort/utils/ConfigurationException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 /**</diff>
      <filename>src/java/voldemort/utils/ConstantHashFunction.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 import java.util.Iterator;</diff>
      <filename>src/java/voldemort/utils/DefaultIterable.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 /**
@@ -16,7 +32,7 @@ public class FnvHashFunction implements HashFunction {
 
     public int hash(byte[] key) {
         long hash = FNV_BASIS;
-        for (int i = 0; i &lt; key.length; i++) {
+        for(int i = 0; i &lt; key.length; i++) {
             hash ^= 0xFF &amp; key[i];
             hash *= FNV_PRIME;
         }
@@ -25,19 +41,19 @@ public class FnvHashFunction implements HashFunction {
     }
 
     public static void main(String[] args) {
-        if (args.length != 2)
+        if(args.length != 2)
             Utils.croak(&quot;USAGE: java FnvHashFunction iterations buckets&quot;);
         int numIterations = Integer.parseInt(args[0]);
         int numBuckets = Integer.parseInt(args[1]);
         int[] buckets = new int[numBuckets];
         HashFunction hash = new FnvHashFunction();
-        for (int i = 0; i &lt; numIterations; i++) {
+        for(int i = 0; i &lt; numIterations; i++) {
             int val = hash.hash(Integer.toString(i).getBytes());
             buckets[Math.abs(val) % numBuckets] += 1;
         }
 
         double expected = numIterations / (double) numBuckets;
-        for (int i = 0; i &lt; numBuckets; i++)
+        for(int i = 0; i &lt; numBuckets; i++)
             System.out.println(i + &quot; &quot; + buckets[i] + &quot; &quot; + (buckets[i] / expected));
     }
 </diff>
      <filename>src/java/voldemort/utils/FnvHashFunction.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 /**</diff>
      <filename>src/java/voldemort/utils/HashFunction.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 import java.lang.annotation.Annotation;
@@ -72,11 +88,11 @@ public class JmxUtils {
             mbean.setManagedResource(o, &quot;ObjectReference&quot;);
 
             return mbean;
-        } catch (MBeanException e) {
+        } catch(MBeanException e) {
             throw new VoldemortException(e);
-        } catch (InvalidTargetObjectTypeException e) {
+        } catch(InvalidTargetObjectTypeException e) {
             throw new VoldemortException(e);
-        } catch (InstanceNotFoundException e) {
+        } catch(InstanceNotFoundException e) {
             throw new VoldemortException(e);
         }
     }
@@ -91,22 +107,22 @@ public class JmxUtils {
      */
     public static ModelMBeanOperationInfo[] extractOperationInfo(Object object) {
         ArrayList&lt;ModelMBeanOperationInfo&gt; infos = new ArrayList&lt;ModelMBeanOperationInfo&gt;();
-        for (Method m : object.getClass().getMethods()) {
+        for(Method m: object.getClass().getMethods()) {
             JmxOperation jmxOperation = m.getAnnotation(JmxOperation.class);
             JmxGetter jmxGetter = m.getAnnotation(JmxGetter.class);
             JmxSetter jmxSetter = m.getAnnotation(JmxSetter.class);
-            if (jmxOperation != null || jmxGetter != null || jmxSetter != null) {
+            if(jmxOperation != null || jmxGetter != null || jmxSetter != null) {
                 String description = &quot;&quot;;
                 int visibility = 1;
                 int impact = ModelMBeanOperationInfo.UNKNOWN;
-                if (jmxOperation != null) {
+                if(jmxOperation != null) {
                     description = jmxOperation.description();
                     impact = jmxOperation.impact();
-                } else if (jmxGetter != null) {
+                } else if(jmxGetter != null) {
                     description = jmxGetter.description();
                     impact = ModelMBeanOperationInfo.INFO;
                     visibility = 4;
-                } else if (jmxSetter != null) {
+                } else if(jmxSetter != null) {
                     description = jmxSetter.description();
                     impact = ModelMBeanOperationInfo.ACTION;
                     visibility = 4;
@@ -138,14 +154,14 @@ public class JmxUtils {
         Map&lt;String, Method&gt; getters = new HashMap&lt;String, Method&gt;();
         Map&lt;String, Method&gt; setters = new HashMap&lt;String, Method&gt;();
         Map&lt;String, String&gt; descriptions = new HashMap&lt;String, String&gt;();
-        for (Method m : object.getClass().getMethods()) {
+        for(Method m: object.getClass().getMethods()) {
             JmxGetter getter = m.getAnnotation(JmxGetter.class);
-            if (getter != null) {
+            if(getter != null) {
                 getters.put(getter.name(), m);
                 descriptions.put(getter.name(), getter.description());
             }
             JmxSetter setter = m.getAnnotation(JmxSetter.class);
-            if (setter != null) {
+            if(setter != null) {
                 setters.put(setter.name(), m);
                 descriptions.put(setter.name(), setter.description());
             }
@@ -154,7 +170,7 @@ public class JmxUtils {
         Set&lt;String&gt; attributes = new HashSet&lt;String&gt;(getters.keySet());
         attributes.addAll(setters.keySet());
         List&lt;ModelMBeanAttributeInfo&gt; infos = new ArrayList&lt;ModelMBeanAttributeInfo&gt;();
-        for (String name : attributes) {
+        for(String name: attributes) {
             try {
                 Method getter = getters.get(name);
                 Method setter = setters.get(name);
@@ -163,13 +179,13 @@ public class JmxUtils {
                                                                            getter,
                                                                            setter);
                 Descriptor descriptor = info.getDescriptor();
-                if (getter != null)
+                if(getter != null)
                     descriptor.setField(&quot;getMethod&quot;, getter.getName());
-                if (setter != null)
+                if(setter != null)
                     descriptor.setField(&quot;setMethod&quot;, setter.getName());
                 info.setDescriptor(descriptor);
                 infos.add(info);
-            } catch (IntrospectionException e) {
+            } catch(IntrospectionException e) {
                 throw new VoldemortException(e);
             }
         }
@@ -188,10 +204,10 @@ public class JmxUtils {
         Class&lt;?&gt;[] types = m.getParameterTypes();
         Annotation[][] annotations = m.getParameterAnnotations();
         MBeanParameterInfo[] params = new MBeanParameterInfo[types.length];
-        for (int i = 0; i &lt; params.length; i++) {
+        for(int i = 0; i &lt; params.length; i++) {
             boolean hasAnnotation = false;
-            for (int j = 0; j &lt; annotations[i].length; j++) {
-                if (annotations[i][j] instanceof JmxParam) {
+            for(int j = 0; j &lt; annotations[i].length; j++) {
+                if(annotations[i][j] instanceof JmxParam) {
                     JmxParam param = (JmxParam) annotations[i][j];
                     params[i] = new MBeanParameterInfo(param.name(),
                                                        types[i].getName(),
@@ -200,7 +216,7 @@ public class JmxUtils {
                     break;
                 }
             }
-            if (!hasAnnotation) {
+            if(!hasAnnotation) {
                 params[i] = new MBeanParameterInfo(&quot;&quot;, types[i].getName(), &quot;&quot;);
             }
         }
@@ -218,7 +234,7 @@ public class JmxUtils {
     public static ObjectName createObjectName(String domain, String type) {
         try {
             return new ObjectName(domain + &quot;:type=&quot; + type);
-        } catch (MalformedObjectNameException e) {
+        } catch(MalformedObjectNameException e) {
             throw new VoldemortException(e);
         }
     }
@@ -265,11 +281,11 @@ public class JmxUtils {
     public static void registerMbean(MBeanServer server, ModelMBean mbean, ObjectName name) {
         try {
             server.registerMBean(mbean, name);
-        } catch (InstanceAlreadyExistsException e) {
+        } catch(InstanceAlreadyExistsException e) {
             throw new VoldemortException(e);
-        } catch (MBeanRegistrationException e) {
+        } catch(MBeanRegistrationException e) {
             throw new VoldemortException(e);
-        } catch (NotCompliantMBeanException e) {
+        } catch(NotCompliantMBeanException e) {
             throw new VoldemortException(e);
         }
     }
@@ -283,9 +299,9 @@ public class JmxUtils {
     public static void unregisterMbean(MBeanServer server, ObjectName name) {
         try {
             server.unregisterMBean(name);
-        } catch (InstanceNotFoundException e) {
+        } catch(InstanceNotFoundException e) {
             throw new VoldemortException(e);
-        } catch (MBeanRegistrationException e) {
+        } catch(MBeanRegistrationException e) {
             throw new VoldemortException(e);
         }
     }</diff>
      <filename>src/java/voldemort/utils/JmxUtils.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 import java.io.BufferedInputStream;
@@ -32,11 +48,11 @@ public class Props implements Map&lt;String, String&gt; {
 
     public Props(File... files) throws FileNotFoundException, IOException {
         this.props = new HashMap&lt;String, String&gt;();
-        for (int i = files.length - 1; i &gt;= 0; i--) {
+        for(int i = files.length - 1; i &gt;= 0; i--) {
             Properties properties = new Properties();
             InputStream input = new BufferedInputStream(new FileInputStream(files[i].getAbsolutePath()));
             properties.load(input);
-            for (Entry&lt;Object, Object&gt; e : properties.entrySet())
+            for(Entry&lt;Object, Object&gt; e: properties.entrySet())
                 this.props.put((String) e.getKey(), (String) e.getValue());
             input.close();
         }
@@ -44,14 +60,14 @@ public class Props implements Map&lt;String, String&gt; {
 
     public Props(Map&lt;String, String&gt;... props) {
         this.props = new HashMap&lt;String, String&gt;();
-        for (int i = props.length - 1; i &gt;= 0; i--)
+        for(int i = props.length - 1; i &gt;= 0; i--)
             this.props.putAll(props[i]);
     }
 
     public Props(Properties... properties) {
         this.props = new HashMap&lt;String, String&gt;();
-        for (int i = properties.length - 1; i &gt;= 0; i--)
-            for (Entry&lt;Object, Object&gt; e : properties[i].entrySet())
+        for(int i = properties.length - 1; i &gt;= 0; i--)
+            for(Entry&lt;Object, Object&gt; e: properties[i].entrySet())
                 this.props.put((String) e.getKey(), (String) e.getValue());
     }
 
@@ -116,77 +132,77 @@ public class Props implements Map&lt;String, String&gt; {
     }
 
     public String getString(String key, String defaultValue) {
-        if (containsKey(key))
+        if(containsKey(key))
             return get(key);
         else
             return defaultValue;
     }
 
     public String getString(String key) {
-        if (containsKey(key))
+        if(containsKey(key))
             return get(key);
         else
             throw new UndefinedPropertyException(key);
     }
 
     public boolean getBoolean(String key, boolean defaultValue) {
-        if (containsKey(key))
+        if(containsKey(key))
             return &quot;true&quot;.equalsIgnoreCase(get(key));
         else
             return defaultValue;
     }
 
     public boolean getBoolean(String key) {
-        if (containsKey(key))
+        if(containsKey(key))
             return &quot;true&quot;.equalsIgnoreCase(get(key));
         else
             throw new UndefinedPropertyException(key);
     }
 
     public long getLong(String name, long defaultValue) {
-        if (containsKey(name))
+        if(containsKey(name))
             return Long.parseLong(get(name));
         else
             return defaultValue;
     }
 
     public long getLong(String name) {
-        if (containsKey(name))
+        if(containsKey(name))
             return Long.parseLong(get(name));
         else
             throw new UndefinedPropertyException(name);
     }
 
     public int getInt(String name, int defaultValue) {
-        if (containsKey(name))
+        if(containsKey(name))
             return Integer.parseInt(get(name));
         else
             return defaultValue;
     }
 
     public int getInt(String name) {
-        if (containsKey(name))
+        if(containsKey(name))
             return Integer.parseInt(get(name));
         else
             throw new UndefinedPropertyException(name);
     }
 
     public double getDouble(String name, double defaultValue) {
-        if (containsKey(name))
+        if(containsKey(name))
             return Double.parseDouble(get(name));
         else
             return defaultValue;
     }
 
     public double getDouble(String name) {
-        if (containsKey(name))
+        if(containsKey(name))
             return Double.parseDouble(get(name));
         else
             throw new UndefinedPropertyException(name);
     }
 
     public long getBytes(String name, long defaultValue) {
-        if (containsKey(name))
+        if(containsKey(name))
             return getBytes(name);
         else
             return defaultValue;
@@ -205,7 +221,7 @@ public class Props implements Map&lt;String, String&gt; {
     @Override
     public String toString() {
         StringBuilder builder = new StringBuilder(&quot;{&quot;);
-        for (Entry&lt;String, String&gt; entry : this.props.entrySet()) {
+        for(Entry&lt;String, String&gt; entry: this.props.entrySet()) {
             builder.append(entry.getKey());
             builder.append(&quot;: &quot;);
             builder.append(entry.getValue());
@@ -216,22 +232,22 @@ public class Props implements Map&lt;String, String&gt; {
     }
 
     public long getBytes(String name) {
-        if (!containsKey(name))
+        if(!containsKey(name))
             throw new UndefinedPropertyException(name);
 
         String bytes = get(name);
         String bytesLc = bytes.toLowerCase().trim();
-        if (bytesLc.endsWith(&quot;kb&quot;))
+        if(bytesLc.endsWith(&quot;kb&quot;))
             return Long.parseLong(bytes.substring(0, bytes.length() - 2)) * 1024;
-        else if (bytesLc.endsWith(&quot;k&quot;))
+        else if(bytesLc.endsWith(&quot;k&quot;))
             return Long.parseLong(bytes.substring(0, bytes.length() - 1)) * 1024;
-        else if (bytesLc.endsWith(&quot;mb&quot;))
+        else if(bytesLc.endsWith(&quot;mb&quot;))
             return Long.parseLong(bytes.substring(0, bytes.length() - 2)) * 1024 * 1024;
-        else if (bytesLc.endsWith(&quot;m&quot;))
+        else if(bytesLc.endsWith(&quot;m&quot;))
             return Long.parseLong(bytes.substring(0, bytes.length() - 1)) * 1024 * 1024;
-        else if (bytesLc.endsWith(&quot;gb&quot;))
+        else if(bytesLc.endsWith(&quot;gb&quot;))
             return Long.parseLong(bytes.substring(0, bytes.length() - 2)) * 1024 * 1024 * 1024;
-        else if (bytesLc.endsWith(&quot;g&quot;))
+        else if(bytesLc.endsWith(&quot;g&quot;))
             return Long.parseLong(bytes.substring(0, bytes.length() - 1)) * 1024 * 1024 * 1024;
         else
             return Long.parseLong(bytes);</diff>
      <filename>src/java/voldemort/utils/Props.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 import java.lang.reflect.Constructor;
@@ -13,25 +29,25 @@ public class ReflectUtils {
 
     public static &lt;T&gt; T construct(Class&lt;T&gt; klass, Object[] args) {
         Class&lt;?&gt;[] klasses = new Class[args.length];
-        for (int i = 0; i &lt; args.length; i++)
+        for(int i = 0; i &lt; args.length; i++)
             klasses[i] = args[i].getClass();
         try {
             Constructor&lt;T&gt; cons = klass.getConstructor(klasses);
             T t = cons.newInstance(args);
             return t;
-        } catch (NoSuchMethodException e) {
+        } catch(NoSuchMethodException e) {
             throw new RuntimeException(&quot;Could not construct &quot; + klass + &quot; with arguments &quot; + args);
-        } catch (InvocationTargetException e) {
+        } catch(InvocationTargetException e) {
             throw new RuntimeException(&quot;Could not construct &quot; + klass + &quot; with arguments &quot; + args);
-        } catch (InstantiationException e) {
+        } catch(InstantiationException e) {
             throw new RuntimeException(&quot;Could not construct &quot; + klass + &quot; with arguments &quot; + args);
-        } catch (IllegalAccessException e) {
+        } catch(IllegalAccessException e) {
             throw new RuntimeException(&quot;Could not construct &quot; + klass + &quot; with arguments &quot; + args);
         }
     }
 
     public static String getPropertyName(String name) {
-        if (name != null &amp;&amp; (name.startsWith(&quot;get&quot;) || name.startsWith(&quot;set&quot;))) {
+        if(name != null &amp;&amp; (name.startsWith(&quot;get&quot;) || name.startsWith(&quot;set&quot;))) {
             StringBuilder b = new StringBuilder(name);
             b.delete(0, 3);
             b.setCharAt(0, Character.toLowerCase(b.charAt(0)));</diff>
      <filename>src/java/voldemort/utils/ReflectUtils.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 import java.util.Date;</diff>
      <filename>src/java/voldemort/utils/SystemTime.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 import java.util.Date;</diff>
      <filename>src/java/voldemort/utils/Time.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 /**</diff>
      <filename>src/java/voldemort/utils/UndefinedPropertyException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.utils;
 
 import java.io.File;
@@ -75,8 +91,8 @@ public class Utils {
      * @param files A collection of files to delete
      */
     public static void rm(Collection&lt;File&gt; files) {
-        for (File f : files) {
-            if (f.isDirectory()) {
+        for(File f: files) {
+            if(f.isDirectory()) {
                 rm(Arrays.asList(f.listFiles()));
                 f.delete();
             } else {
@@ -105,14 +121,14 @@ public class Utils {
      * @return True iff they are equal
      */
     public static boolean areNEquals(Object o1, Object o2) {
-        if (o1 == o2)
+        if(o1 == o2)
             return true;
         // t1 != t2
-        else if (o1 == null || o2 == null)
+        else if(o1 == null || o2 == null)
             // only null equals null
             return false;
         // are they of the same class?
-        else if (!o1.getClass().equals(o2.getClass()))
+        else if(!o1.getClass().equals(o2.getClass()))
             return false;
         // t1 != null
         else
@@ -135,8 +151,8 @@ public class Utils {
      * @param objects The objects to test
      */
     public static void assertNotNull(String s, Object... objects) {
-        for (Object o : objects)
-            if (o == null)
+        for(Object o: objects)
+            if(o == null)
                 throw new IllegalArgumentException(s);
     }
 </diff>
      <filename>src/java/voldemort/utils/Utils.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import java.util.Collections;
@@ -20,7 +36,7 @@ public class ArbitraryInconsistencyResolver&lt;T&gt; implements InconsistencyResolver&lt;
      * @return A single value, if one exists, taken from the input list.
      */
     public List&lt;T&gt; resolveConflicts(List&lt;T&gt; values) {
-        if (values.size() &gt; 1)
+        if(values.size() &gt; 1)
             return values;
         else
             return Collections.singletonList(values.get(0));</diff>
      <filename>src/java/voldemort/versioning/ArbitraryInconsistencyResolver.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import java.util.ArrayList;
@@ -18,13 +34,13 @@ public class ChainedResolver&lt;T&gt; implements InconsistencyResolver&lt;T&gt; {
 
     public ChainedResolver(InconsistencyResolver&lt;T&gt;... resolvers) {
         this.resolvers = new ArrayList&lt;InconsistencyResolver&lt;T&gt;&gt;(resolvers.length);
-        for (InconsistencyResolver&lt;T&gt; resolver : resolvers)
+        for(InconsistencyResolver&lt;T&gt; resolver: resolvers)
             this.resolvers.add(Objects.nonNull(resolver));
     }
 
     public List&lt;T&gt; resolveConflicts(List&lt;T&gt; items) {
-        for (InconsistencyResolver&lt;T&gt; resolver : resolvers) {
-            if (items.size() &lt;= 1)
+        for(InconsistencyResolver&lt;T&gt; resolver: resolvers) {
+            if(items.size() &lt;= 1)
                 return items;
             else
                 items = resolver.resolveConflicts(items);</diff>
      <filename>src/java/voldemort/versioning/ChainedResolver.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import java.io.Serializable;
@@ -27,10 +43,10 @@ public final class ClockEntry implements Cloneable, Serializable {
      * @param version The current version
      */
     public ClockEntry(short nodeId, long version) {
-        if (nodeId &lt; 0)
+        if(nodeId &lt; 0)
             throw new IllegalArgumentException(&quot;Node id &quot; + nodeId + &quot; is not in the range (0, &quot;
                                                + Short.MAX_VALUE + &quot;).&quot;);
-        if (version &lt; 1)
+        if(version &lt; 1)
             throw new IllegalArgumentException(&quot;Version &quot; + version + &quot; is not in the range (1, &quot;
                                                + Short.MAX_VALUE + &quot;).&quot;);
         this.nodeId = nodeId;
@@ -41,7 +57,7 @@ public final class ClockEntry implements Cloneable, Serializable {
     public ClockEntry clone() {
         try {
             return (ClockEntry) super.clone();
-        } catch (CloneNotSupportedException e) {
+        } catch(CloneNotSupportedException e) {
             throw new RuntimeException(e);
         }
     }
@@ -65,13 +81,13 @@ public final class ClockEntry implements Cloneable, Serializable {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o)
+        if(this == o)
             return true;
 
-        if (o == null)
+        if(o == null)
             return false;
 
-        if (o.getClass().equals(ClockEntry.class)) {
+        if(o.getClass().equals(ClockEntry.class)) {
             ClockEntry v = (ClockEntry) o;
             return v.getNodeId() == getNodeId() &amp;&amp; v.getVersion() == getVersion();
         } else {</diff>
      <filename>src/java/voldemort/versioning/ClockEntry.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import java.util.List;
@@ -11,7 +27,7 @@ import java.util.List;
 public class FailingInconsistencyResolver&lt;T&gt; implements InconsistencyResolver&lt;T&gt; {
 
     public List&lt;T&gt; resolveConflicts(List&lt;T&gt; items) {
-        if (items.size() &gt; 1)
+        if(items.size() &gt; 1)
             throw new InconsistentDataException(&quot;Conflict resolution failed.&quot;, items);
         else
             return items;</diff>
      <filename>src/java/voldemort/versioning/FailingInconsistencyResolver.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import java.util.List;</diff>
      <filename>src/java/voldemort/versioning/InconsistencyResolver.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import java.util.List;</diff>
      <filename>src/java/voldemort/versioning/InconsistentDataException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import java.util.Collections;
@@ -19,14 +35,14 @@ public class MergingInconsitencyResolver&lt;T&gt; implements InconsistencyResolver&lt;Ver
     }
 
     public List&lt;Versioned&lt;T&gt;&gt; resolveConflicts(List&lt;Versioned&lt;T&gt;&gt; items) {
-        if (items.size() &lt;= 1) {
+        if(items.size() &lt;= 1) {
             return items;
         } else {
             Iterator&lt;Versioned&lt;T&gt;&gt; iter = items.iterator();
             Versioned&lt;T&gt; current = iter.next();
             T merged = current.getValue();
             VectorClock clock = (VectorClock) current.getVersion();
-            while (iter.hasNext()) {
+            while(iter.hasNext()) {
                 Versioned&lt;T&gt; versioned = iter.next();
                 merged = merger.merge(merged, versioned.getValue());
                 clock = clock.merge((VectorClock) versioned.getVersion());</diff>
      <filename>src/java/voldemort/versioning/MergingInconsitencyResolver.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 /**</diff>
      <filename>src/java/voldemort/versioning/ObjectMerger.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 /**</diff>
      <filename>src/java/voldemort/versioning/Occured.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import java.util.Collections;
@@ -18,7 +34,7 @@ public class TimeBasedInconsistencyResolver&lt;T&gt; implements InconsistencyResolver&lt;
         } else {
             Versioned&lt;T&gt; max = items.get(0);
             long maxTime = ((VectorClock) items.get(0).getVersion()).getTimestamp();
-            for(Versioned&lt;T&gt; versioned : items) {
+            for(Versioned&lt;T&gt; versioned: items) {
                 VectorClock clock = (VectorClock) versioned.getVersion();
                 if(clock.getTimestamp() &gt; maxTime) {
                     max = versioned;</diff>
      <filename>src/java/voldemort/versioning/TimeBasedInconsistencyResolver.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import java.io.Serializable;
@@ -105,7 +121,7 @@ public class VectorClock implements Version, Serializable {
 
         int clockEntrySize = ByteUtils.SIZE_OF_SHORT + versionSize;
         int start = 3;
-        for(ClockEntry v : versions) {
+        for(ClockEntry v: versions) {
             ByteUtils.writeShort(serialized, v.getNodeId(), start);
             ByteUtils.writeBytes(serialized,
                                  v.getVersion(),
@@ -214,7 +230,7 @@ public class VectorClock implements Version, Serializable {
 
     public long getMaxVersion() {
         long max = -1;
-        for(ClockEntry entry : versions)
+        for(ClockEntry entry: versions)
             if(entry.getVersion() &gt; max)
                 max = entry.getVersion();
         return max;</diff>
      <filename>src/java/voldemort/versioning/VectorClock.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import java.util.Collections;</diff>
      <filename>src/java/voldemort/versioning/VectorClockInconsistencyResolver.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,22 +1,40 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 /**
- * An interface that allows us to determine if a given version happened before or
- * after another version.
+ * An interface that allows us to determine if a given version happened before
+ * or after another version.
  * 
- * This could have been done using the comparable interface but that is confusing,
- * because the numeric codes are easily confused, and because concurrent versions are 
- * not necessarily &quot;equal&quot; in the normal sense.
+ * This could have been done using the comparable interface but that is
+ * confusing, because the numeric codes are easily confused, and because
+ * concurrent versions are not necessarily &quot;equal&quot; in the normal sense.
  * 
  * @author jay
- *
+ * 
  */
 public interface Version {
-	
-	/**
-	 * Return whether or not the given version preceeded this one, succeeded it, or is concurrant with it
-	 * @param v The other version
-	 */
-	public Occured compare(Version v);
-	
+
+    /**
+     * Return whether or not the given version preceeded this one, succeeded it,
+     * or is concurrant with it
+     * 
+     * @param v The other version
+     */
+    public Occured compare(Version v);
+
 }</diff>
      <filename>src/java/voldemort/versioning/Version.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import java.io.Serializable;
@@ -42,11 +58,11 @@ public final class Versioned&lt;T&gt; implements Serializable {
     @Override
     @SuppressWarnings(&quot;unchecked&quot;)
     public boolean equals(Object object) {
-        if (this == null)
+        if(this == null)
             return true;
-        else if (object == null)
+        else if(object == null)
             return false;
-        else if (!object.getClass().equals(Versioned.class))
+        else if(!object.getClass().equals(Versioned.class))
             return false;
 
         Versioned versioned = (Versioned) object;
@@ -76,9 +92,9 @@ public final class Versioned&lt;T&gt; implements Serializable {
 
         public int compare(Versioned&lt;S&gt; v1, Versioned&lt;S&gt; v2) {
             Occured occured = v1.getVersion().compare(v2.getVersion());
-            if (occured == Occured.BEFORE)
+            if(occured == Occured.BEFORE)
                 return -1;
-            else if (occured == Occured.AFTER)
+            else if(occured == Occured.AFTER)
                 return 1;
             else
                 return 0;</diff>
      <filename>src/java/voldemort/versioning/Versioned.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.xml;
 
 import java.io.IOException;
@@ -71,7 +87,7 @@ public class ClusterMapper {
                                            + doc.getRootElement().getName());
             String name = root.getChildText(CLUSTER_NAME_ELMT);
             List&lt;Node&gt; nodes = new ArrayList&lt;Node&gt;();
-            for(Element node : (List&lt;Element&gt;) root.getChildren(SERVER_ELMT))
+            for(Element node: (List&lt;Element&gt;) root.getChildren(SERVER_ELMT))
                 nodes.add(readServer(node));
             return new Cluster(name, nodes);
         } catch(JDOMException e) {
@@ -91,7 +107,7 @@ public class ClusterMapper {
         int socketPort = Integer.parseInt(server.getChildText(SOCKET_PORT_ELMT));
         String partitionsText = server.getChildText(SERVER_PARTITIONS_ELMT).trim();
         List&lt;Integer&gt; partitions = new ArrayList&lt;Integer&gt;();
-        for(String aPartition : COMMA_SEP.split(partitionsText))
+        for(String aPartition: COMMA_SEP.split(partitionsText))
             partitions.add(Integer.parseInt(aPartition.trim()));
         return new Node(id, host, httpPort, socketPort, partitions);
     }
@@ -99,7 +115,7 @@ public class ClusterMapper {
     public String writeCluster(Cluster cluster) {
         Document doc = new Document(new Element(CLUSTER_ELMT));
         doc.getRootElement().addContent(new Element(CLUSTER_NAME_ELMT).setText(cluster.getName()));
-        for(Node n : cluster.getNodes())
+        for(Node n: cluster.getNodes())
             doc.getRootElement().addContent(mapServer(n));
         XMLOutputter serializer = new XMLOutputter(Format.getPrettyFormat());
         return serializer.outputString(doc.getRootElement());</diff>
      <filename>src/java/voldemort/xml/ClusterMapper.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.xml;
 
 import voldemort.VoldemortException;</diff>
      <filename>src/java/voldemort/xml/MappingException.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.xml;
 
 import java.io.IOException;
@@ -78,7 +94,7 @@ public class StoreDefinitionsMapper {
                 throw new MappingException(&quot;Invalid root element: &quot;
                                            + doc.getRootElement().getName());
             List&lt;StoreDefinition&gt; stores = new ArrayList&lt;StoreDefinition&gt;();
-            for(Element store : (List&lt;Element&gt;) root.getChildren(STORE_ELMT))
+            for(Element store: (List&lt;Element&gt;) root.getChildren(STORE_ELMT))
                 stores.add(readStore(store));
             return stores;
         } catch(JDOMException e) {
@@ -141,7 +157,7 @@ public class StoreDefinitionsMapper {
     private SerializerDefinition readSerializer(Element elmt) {
         String name = elmt.getChild(STORE_SERIALIZATION_TYPE_ELMT).getText();
         Map&lt;Integer, String&gt; schemaInfosByVersion = new HashMap&lt;Integer, String&gt;();
-        for(Object schemaInfo : elmt.getChildren(STORE_SERIALIZATION_META_ELMT)) {
+        for(Object schemaInfo: elmt.getChildren(STORE_SERIALIZATION_META_ELMT)) {
             Element schemaInfoElmt = (Element) schemaInfo;
             String versionStr = schemaInfoElmt.getAttributeValue(STORE_VERSION_ATTR);
             int version = 0;
@@ -158,7 +174,7 @@ public class StoreDefinitionsMapper {
 
     public String writeStoreList(List&lt;StoreDefinition&gt; stores) {
         Element root = new Element(STORES_ELMT);
-        for(StoreDefinition def : stores)
+        for(StoreDefinition def: stores)
             root.addContent(toElement(def));
         XMLOutputter serializer = new XMLOutputter(Format.getPrettyFormat());
         return serializer.outputString(root);
@@ -201,7 +217,7 @@ public class StoreDefinitionsMapper {
     private void addSerializer(Element parent, SerializerDefinition def) {
         parent.addContent(new Element(STORE_SERIALIZATION_TYPE_ELMT).setText(def.getName()));
         if(def.hasSchemaInfo()) {
-            for(Map.Entry&lt;Integer, String&gt; entry : def.getAllSchemaInfoVersions().entrySet()) {
+            for(Map.Entry&lt;Integer, String&gt; entry: def.getAllSchemaInfoVersions().entrySet()) {
                 Element schemaElmt = new Element(STORE_SERIALIZATION_META_ELMT);
                 schemaElmt.setAttribute(STORE_VERSION_ATTR, Integer.toString(entry.getKey()));
                 schemaElmt.setText(entry.getValue());</diff>
      <filename>src/java/voldemort/xml/StoreDefinitionsMapper.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,16 +1,34 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
-import java.io.*;
-import java.util.concurrent.*;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
 
 public class BlockingInputStream extends InputStream {
-    
+
     private BlockingQueue&lt;Byte&gt; queue;
-    
+
     public BlockingInputStream() {
         this(new ArrayBlockingQueue&lt;Byte&gt;(1000));
     }
-    
+
     public BlockingInputStream(BlockingQueue&lt;Byte&gt; queue) {
         this.queue = queue;
     }
@@ -23,5 +41,5 @@ public class BlockingInputStream extends InputStream {
             throw new IOException(e.getMessage());
         }
     }
-    
+
 }</diff>
      <filename>test/common/voldemort/BlockingInputStream.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,30 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
-import java.io.*;
-import java.util.concurrent.*;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
 
 public class BlockingOutputStream extends OutputStream {
-    
+
     private BlockingQueue&lt;Byte&gt; queue;
-    
+
     public BlockingOutputStream() {
         this(new ArrayBlockingQueue&lt;Byte&gt;(1000));
     }
@@ -24,5 +42,5 @@ public class BlockingOutputStream extends OutputStream {
             throw new IOException(e.getMessage());
         }
     }
-    
+
 }</diff>
      <filename>test/common/voldemort/BlockingOutputStream.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 import java.util.Date;
@@ -5,13 +21,13 @@ import java.util.Date;
 import voldemort.utils.Time;
 
 public class MockTime implements Time {
-    
+
     private long currentTime;
-    
+
     public MockTime() {
         this.currentTime = System.currentTimeMillis();
     }
-    
+
     public MockTime(long time) {
         this.currentTime = time;
     }
@@ -35,13 +51,13 @@ public class MockTime implements Time {
     public void setTime(long time) {
         this.currentTime = time;
     }
-    
+
     public void setCurrentDate(Date date) {
         this.currentTime = date.getTime();
     }
-    
+
     public void addMilliseconds(long ms) {
         this.currentTime += ms;
     }
-    
+
 }</diff>
      <filename>test/common/voldemort/MockTime.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 import java.util.concurrent.ConcurrentHashMap;
@@ -22,57 +38,60 @@ import voldemort.versioning.Versioned;
  * Helper functions for testing with real server implementations
  * 
  * @author jay
- *
+ * 
  */
 public class ServerTestUtils {
-    
-    public static ConcurrentMap&lt;String, Store&lt;byte[],byte[]&gt;&gt; getStores(String storeName, 
-                                                                        String clusterXml, 
-                                                                        String storesXml) {
-        ConcurrentMap&lt;String, Store&lt;byte[],byte[]&gt;&gt; stores = 
-            new ConcurrentHashMap&lt;String,Store&lt;byte[],byte[]&gt;&gt;(1);
-        stores.put(storeName, new InMemoryStorageEngine&lt;byte[],byte[]&gt;(storeName));
-        Store&lt;String,String&gt; metadataInner = new InMemoryStorageEngine&lt;String,String&gt;(&quot;metadata&quot;);
+
+    public static ConcurrentMap&lt;String, Store&lt;byte[], byte[]&gt;&gt; getStores(String storeName,
+                                                                         String clusterXml,
+                                                                         String storesXml) {
+        ConcurrentMap&lt;String, Store&lt;byte[], byte[]&gt;&gt; stores = new ConcurrentHashMap&lt;String, Store&lt;byte[], byte[]&gt;&gt;(1);
+        stores.put(storeName, new InMemoryStorageEngine&lt;byte[], byte[]&gt;(storeName));
+        Store&lt;String, String&gt; metadataInner = new InMemoryStorageEngine&lt;String, String&gt;(&quot;metadata&quot;);
         metadataInner.put(&quot;cluster.xml&quot;, new Versioned&lt;String&gt;(clusterXml));
         metadataInner.put(&quot;stores.xml&quot;, new Versioned&lt;String&gt;(storesXml));
-        MetadataStore metadata = new MetadataStore(metadataInner, 
-                                                   stores);
+        MetadataStore metadata = new MetadataStore(metadataInner, stores);
         stores.put(MetadataStore.METADATA_STORE_NAME, metadata);
         return stores;
     }
 
-    public static SocketServer getSocketServer(String clusterXml, 
-                                               String storesXml, 
-                                               String storeName, 
+    public static SocketServer getSocketServer(String clusterXml,
+                                               String storesXml,
+                                               String storeName,
                                                int port) {
 
-        SocketServer socketServer = new SocketServer(getStores(storeName, clusterXml, storesXml), port, 5, 10);
+        SocketServer socketServer = new SocketServer(getStores(storeName, clusterXml, storesXml),
+                                                     port,
+                                                     5,
+                                                     10);
         socketServer.start();
         socketServer.awaitStartupCompletion();
         return socketServer;
     }
-    
+
     public static SocketStore getSocketStore(String storeName, int port) {
         SocketPool socketPool = new SocketPool(1, 2, 1000);
         return new SocketStore(storeName, &quot;localhost&quot;, port, socketPool);
     }
-    
-    public static Context getJettyServer(String clusterXml, 
+
+    public static Context getJettyServer(String clusterXml,
                                          String storesXml,
-                                         String storeName, 
+                                         String storeName,
                                          int port) throws Exception {
-        ConcurrentMap&lt;String, Store&lt;byte[],byte[]&gt;&gt; stores = getStores(storeName, clusterXml, storesXml);
-        
+        ConcurrentMap&lt;String, Store&lt;byte[], byte[]&gt;&gt; stores = getStores(storeName,
+                                                                        clusterXml,
+                                                                        storesXml);
+
         // initialize servlet
         Server server = new Server(port);
         server.setSendServerVersion(false);
         Context context = new Context(server, &quot;/&quot;, Context.NO_SESSIONS);
-        
+
         context.addServlet(new ServletHolder(new StoreServlet(stores)), &quot;/*&quot;);
         server.start();
         return context;
     }
-    
+
     public static HttpStore getHttpStore(String storeName, int port) {
         return new HttpStore(storeName, &quot;localhost&quot;, port, new HttpClient());
     }</diff>
      <filename>test/common/voldemort/ServerTestUtils.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 import java.io.File;</diff>
      <filename>test/common/voldemort/TestUtils.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 import java.io.IOException;</diff>
      <filename>test/common/voldemort/VoldemortTestConstants.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import java.util.List;</diff>
      <filename>test/common/voldemort/store/FailingStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import java.util.List;</diff>
      <filename>test/common/voldemort/store/SleepyStore.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 import static voldemort.VoldemortTestConstants.getOneNodeClusterXml;
@@ -38,7 +54,7 @@ public class ClientServerTest extends TestCase {
     public void setUp() {
         Props serverProps = new Props();
         this.tempDir = System.getProperty(&quot;java.io.tmpdir&quot;) + File.separator
-                + new Random().nextInt(Integer.MAX_VALUE);
+                       + new Random().nextInt(Integer.MAX_VALUE);
         assertTrue(new File(tempDir).mkdir());
         String dataDir = tempDir + File.separator + &quot;data&quot;;
         assertTrue(new File(dataDir).mkdir());</diff>
      <filename>test/integration/voldemort/ClientServerTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 import voldemort.store.Store;</diff>
      <filename>test/integration/voldemort/InMemoryMultiThreadedTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 import java.util.List;
@@ -14,34 +30,38 @@ import voldemort.versioning.Versioned;
  * Big honkin multithreaded stress test
  * 
  * @author jay
- *
+ * 
  */
 public class MultithreadedStressTest {
-    
+
     private final ExecutorService service;
-    private final Store&lt;byte[],byte[]&gt; store;
+    private final Store&lt;byte[], byte[]&gt; store;
     private final AtomicInteger value;
     private final int numberOfValues;
     private final int numberOfRequests;
-    
+
     @SuppressWarnings(&quot;unchecked&quot;)
-    public MultithreadedStressTest(Store&lt;byte[],byte[]&gt; store, int numberOfValues, int numberOfRequests, int numberOfThreads) {
+    public MultithreadedStressTest(Store&lt;byte[], byte[]&gt; store,
+                                   int numberOfValues,
+                                   int numberOfRequests,
+                                   int numberOfThreads) {
         this.numberOfValues = numberOfValues;
         this.numberOfRequests = numberOfRequests;
         this.service = Executors.newFixedThreadPool(numberOfThreads);
         this.store = store;
         this.value = new AtomicInteger(0);
         for(int i = 0; i &lt; numberOfValues; i++)
-            this.store.put(Integer.toString(i).getBytes(), new Versioned&lt;byte[]&gt;(Integer.toString(i).getBytes()));
+            this.store.put(Integer.toString(i).getBytes(),
+                           new Versioned&lt;byte[]&gt;(Integer.toString(i).getBytes()));
     }
-    
+
     public void testGetAndPut() throws Exception {
         final AtomicInteger obsoletes = new AtomicInteger(0);
         final CountDownLatch isDone = new CountDownLatch(numberOfRequests);
         for(int i = 0; i &lt; numberOfRequests; i++) {
             final int index = i % numberOfValues;
-            service.execute(
-            new Runnable() {
+            service.execute(new Runnable() {
+
                 public void run() {
                     boolean done = false;
                     while(!done) {
@@ -52,7 +72,8 @@ public class MultithreadedStressTest {
                                 throw new RuntimeException(&quot;Found multiple versions: &quot; + found);
                             } else if(found.size() == 1) {
                                 Versioned&lt;byte[]&gt; versioned = found.get(0);
-                                byte[] valueBytes = Integer.toString(MultithreadedStressTest.this.value.getAndIncrement()).getBytes();
+                                byte[] valueBytes = Integer.toString(MultithreadedStressTest.this.value.getAndIncrement())
+                                                           .getBytes();
                                 versioned.setObject(valueBytes);
                                 store.put(key, versioned);
                                 done = true;
@@ -72,5 +93,5 @@ public class MultithreadedStressTest {
         System.err.println(&quot;Number of obsoletes: &quot; + obsoletes.get());
         System.exit(0);
     }
-    
+
 }</diff>
      <filename>test/integration/voldemort/MultithreadedStressTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 import java.io.RandomAccessFile;
@@ -29,7 +45,7 @@ public class RandomAccessFileStoreTest {
 
         RandomAccessFileStore store = null; // new RandomAccessFileStore(&quot;test&quot;,
         // 10000L, index, data);
-        for(int i : ImmutableList.of(964, 2, 15, 78, 192, 984)) {
+        for(int i: ImmutableList.of(964, 2, 15, 78, 192, 984)) {
             byte[] key = Integer.toString(i).getBytes();
             List&lt;Versioned&lt;byte[]&gt;&gt; values = store.get(key);
             System.out.print(new String(key));</diff>
      <filename>test/integration/voldemort/RandomAccessFileStoreTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 import java.io.BufferedReader;
@@ -8,7 +24,7 @@ import voldemort.utils.Utils;
 
 /**
  * @author jay
- *
+ * 
  */
 public class ReadJson {
 
@@ -26,5 +42,5 @@ public class ReadJson {
         }
         System.out.println((System.currentTimeMillis() - start) / (double) count + &quot; ms/object&quot;);
     }
-    
+
 }</diff>
      <filename>test/integration/voldemort/ReadJson.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 import java.io.BufferedReader;
@@ -14,25 +30,25 @@ import voldemort.utils.Utils;
 
 /**
  * @author jay
- *
+ * 
  */
 public class ReadOnlyStoreBuilder {
-    
+
     public static void main(String[] args) throws Exception {
         if(args.length != 6)
             Utils.croak(&quot;USAGE: java MmapStoreBuilder store_name input_file output_dir cluster.xml stores.xml sort_buffer_size&quot;);
-        
+
         String storeName = args[0];
         String inputFile = args[1];
         String outputDir = args[2];
         String clusterFile = args[3];
         String storesFile = args[4];
         int sortBufferSize = Integer.parseInt(args[5]);
-        
+
         BufferedReader reader = new BufferedReader(new FileReader(inputFile), 5000000);
         // needs type def
         JsonReader jsonReader = new JsonReader(reader);
-        
+
         Pattern tab = Pattern.compile(&quot;\t&quot;);
         SortedMap&lt;ByteKey, String&gt; lines = new TreeMap&lt;ByteKey, String&gt;();
         for(String line = reader.readLine(); line != null; line = reader.readLine()) {
@@ -42,16 +58,23 @@ public class ReadOnlyStoreBuilder {
             lines.put(new ByteKey(ByteUtils.md5(pieces[0].getBytes())), line);
         }
         reader.close();
-        
-        DataOutputStream index = null;//new DataOutputStream(new BufferedOutputStream(new FileOutputStream(outputFileBase + &quot;.index&quot;), 1000000));
-        DataOutputStream data = null;//new DataOutputStream(new BufferedOutputStream(new FileOutputStream(outputFileBase + &quot;.data&quot;), 1000000));
+
+        DataOutputStream index = null;// new DataOutputStream(new
+                                      // BufferedOutputStream(new
+                                      // FileOutputStream(outputFileBase +
+                                      // &quot;.index&quot;), 1000000));
+        DataOutputStream data = null;// new DataOutputStream(new
+                                     // BufferedOutputStream(new
+                                     // FileOutputStream(outputFileBase +
+                                     // &quot;.data&quot;), 1000000));
         long position = 0;
         for(ByteKey key: lines.keySet()) {
             String line = lines.get(key);
             String[] pieces = tab.split(line);
             index.write(ByteUtils.md5(pieces[0].getBytes()));
             index.writeLong(position);
-            System.out.println(&quot;Wrote &quot; + pieces[0] + &quot; &quot; + pieces[0].getBytes() + &quot; to &quot; + position);
+            System.out.println(&quot;Wrote &quot; + pieces[0] + &quot; &quot; + pieces[0].getBytes() + &quot; to &quot;
+                               + position);
             byte[] theValue = pieces[1].getBytes();
             data.writeInt(theValue.length);
             data.write(theValue);
@@ -63,18 +86,19 @@ public class ReadOnlyStoreBuilder {
         index.close();
         data.close();
     }
-    
+
     private final static class ByteKey implements Comparable&lt;ByteKey&gt; {
+
         private final byte[] bytes;
-        
+
         public ByteKey(byte[] bytes) {
             this.bytes = bytes;
         }
-        
+
         public byte[] getBytes() {
             return this.bytes;
         }
-        
+
         public boolean equals(Object o) {
             if(o == null)
                 return false;
@@ -82,11 +106,11 @@ public class ReadOnlyStoreBuilder {
                 return false;
             return Arrays.equals(this.getBytes(), ((ByteKey) o).getBytes());
         }
-        
+
         public int hashCode() {
             return Arrays.hashCode(getBytes());
         }
-        
+
         public int compareTo(ByteKey k) {
             return ByteUtils.compare(this.getBytes(), k.getBytes());
         }</diff>
      <filename>test/integration/voldemort/ReadOnlyStoreBuilder.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 public class TestArrayCopy {</diff>
      <filename>test/integration/voldemort/TestArrayCopy.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,28 +1,45 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.partition;
 
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.FileReader;
 
 import voldemort.utils.FnvHashFunction;
 
 public class FnvHashFunctionTester {
 
-	public static void main(String[] argv) throws Exception {
-		if(argv.length  != 1) {
-			System.err.println(&quot;USAGE: java voldemort.partition.FnvHashFunctionTester filename&quot;);
-			System.exit(1);
-		}
+    public static void main(String[] argv) throws Exception {
+        if(argv.length != 1) {
+            System.err.println(&quot;USAGE: java voldemort.partition.FnvHashFunctionTester filename&quot;);
+            System.exit(1);
+        }
 
-		FnvHashFunction hash = new FnvHashFunction();
-		BufferedReader reader = new BufferedReader(new FileReader(argv[0]));
-		while(true) {
-			String line = reader.readLine();
-			if(line == null)
-				break;
-			System.out.println(hash.hash(line.trim().getBytes()));
-		}
+        FnvHashFunction hash = new FnvHashFunction();
+        BufferedReader reader = new BufferedReader(new FileReader(argv[0]));
+        while(true) {
+            String line = reader.readLine();
+            if(line == null)
+                break;
+            System.out.println(hash.hash(line.trim().getBytes()));
+        }
 
-		reader.close();
+        reader.close();
 
-	}
+    }
 
 }</diff>
      <filename>test/integration/voldemort/partition/FnvHashFunctionTester.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.performance;
 
 import static voldemort.utils.Utils.croak;
@@ -10,48 +26,51 @@ import voldemort.versioning.Versioned;
 
 public abstract class AbstractLoadTestHarness {
 
-	public abstract StoreClient&lt;String,String&gt; getStore(Props propsA, Props propsB) throws Exception;
-	
-	public void run(String[] args) throws Exception {
-		if(args.length != 4)
-			croak(&quot;USAGE: java &quot; + RemoteTest.class.getName() +
-					&quot; numRequests numThreads properties_file1 properties_file2&quot;);
-
-		int numRequests = Integer.parseInt(args[0]);
-		int numThreads = Integer.parseInt(args[1]);
-		Props propertiesA = new Props(new File(args[2]));
-		Props propertiesB = new Props(new File(args[3]));
-		
-		System.out.println(&quot;Creating client: &quot;);
-		final StoreClient&lt;String,String&gt; client = getStore(propertiesA, propertiesB);
-		
-		PerformanceTest writeTest = new PerformanceTest() {
+    public abstract StoreClient&lt;String, String&gt; getStore(Props propsA, Props propsB)
+            throws Exception;
+
+    public void run(String[] args) throws Exception {
+        if(args.length != 4)
+            croak(&quot;USAGE: java &quot; + RemoteTest.class.getName()
+                  + &quot; numRequests numThreads properties_file1 properties_file2&quot;);
+
+        int numRequests = Integer.parseInt(args[0]);
+        int numThreads = Integer.parseInt(args[1]);
+        Props propertiesA = new Props(new File(args[2]));
+        Props propertiesB = new Props(new File(args[3]));
+
+        System.out.println(&quot;Creating client: &quot;);
+        final StoreClient&lt;String, String&gt; client = getStore(propertiesA, propertiesB);
+
+        PerformanceTest writeTest = new PerformanceTest() {
+
             public void doOperation(int index) throws Exception {
                 String iStr = Integer.toString(index);
                 client.put(iStr, new Versioned&lt;String&gt;(iStr));
             }
-		};
-		System.out.println();
-		System.out.println(&quot;WRITE TEST&quot;);
-		writeTest.run(numRequests, numThreads);
-		writeTest.printStats();
-
-		System.out.println();
-		
+        };
+        System.out.println();
+        System.out.println(&quot;WRITE TEST&quot;);
+        writeTest.run(numRequests, numThreads);
+        writeTest.printStats();
+
+        System.out.println();
+
         PerformanceTest readTest = new PerformanceTest() {
+
             public void doOperation(int index) throws Exception {
                 String iStr = Integer.toString(index);
                 String found = client.getValue(iStr);
                 if(!iStr.equals(found))
                     System.err.println(&quot;Not equal: &quot; + iStr + &quot;, &quot; + found);
-             }
+            }
         };
-    
+
         System.out.println(&quot;READ TEST&quot;);
         readTest.run(numRequests, numThreads);
         readTest.printStats();
 
-		System.exit(0);
-	}
-	
+        System.exit(0);
+    }
+
 }</diff>
      <filename>test/integration/voldemort/performance/AbstractLoadTestHarness.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.performance;
 
 import java.io.File;
@@ -15,29 +31,28 @@ import com.sleepycat.je.DatabaseEntry;
 import com.sleepycat.je.Environment;
 import com.sleepycat.je.EnvironmentConfig;
 
-
 /**
  * @author jay
- *
+ * 
  */
 public class BdbGrowth {
- 
-  public static void main(String[] args) throws Exception {
+
+    public static void main(String[] args) throws Exception {
         if(args.length != 5) {
             System.err.println(&quot;USAGE: java BdbGrowth directory cache_size total_size increment threads&quot;);
             System.exit(1);
         }
-       
+
         final String dir = args[0];
         final long cacheSize = Long.parseLong(args[1]);
         final int totalSize = Integer.parseInt(args[2]);
         final int increment = Integer.parseInt(args[3]);
         final int threads = Integer.parseInt(args[4]);
-       
+
         Environment environment;
         EnvironmentConfig environmentConfig;
         DatabaseConfig databaseConfig;
-       
+
         environmentConfig = new EnvironmentConfig();
         environmentConfig.setCacheSize(cacheSize);
         environmentConfig.setTxnNoSync(true);
@@ -48,7 +63,7 @@ public class BdbGrowth {
         environmentConfig.setTransactional(true);
         databaseConfig = new DatabaseConfig();
         databaseConfig.setAllowCreate(true);
-        //databaseConfig.setDeferredWrite(true);
+        // databaseConfig.setDeferredWrite(true);
         databaseConfig.setTransactional(true);
         databaseConfig.setNodeMaxEntries(1024);
         File bdbDir = new File(dir);
@@ -60,12 +75,12 @@ public class BdbGrowth {
         }
         environment = new Environment(bdbDir, environmentConfig);
         final Database db = environment.openDatabase(null, &quot;test&quot;, databaseConfig);
-       
+
         final Random rand = new Random();
         int iterations = totalSize / increment;
         long[] readTimes = new long[iterations];
         long[] writeTimes = new long[iterations];
-        
+
         ExecutorService service = Executors.newFixedThreadPool(threads);
         for(int i = 0; i &lt; iterations; i++) {
             System.out.println(&quot;Starting iteration &quot; + i);
@@ -75,8 +90,11 @@ public class BdbGrowth {
             for(int j = 0; j &lt; increment; j++) {
                 final int fj = j;
                 results.add(service.submit(new Callable&lt;Object&gt;() {
+
                     public Object call() throws Exception {
-                        db.put(null, new DatabaseEntry(Integer.toString(fi*increment + fj).getBytes()), new DatabaseEntry(Integer.toString(fi*increment + fj).getBytes()));
+                        db.put(null,
+                               new DatabaseEntry(Integer.toString(fi * increment + fj).getBytes()),
+                               new DatabaseEntry(Integer.toString(fi * increment + fj).getBytes()));
                         return null;
                     }
                 }));
@@ -86,14 +104,18 @@ public class BdbGrowth {
             writeTimes[i] = System.currentTimeMillis() - startTime;
             System.out.println(&quot;write: &quot; + (writeTimes[i] / (double) increment));
             results.clear();
-            
+
             startTime = System.currentTimeMillis();
             for(int j = 0; j &lt; increment; j++) {
                 final int fj = j;
                 results.add(service.submit(new Callable&lt;Object&gt;() {
+
                     public Object call() throws Exception {
                         int value = rand.nextInt((fi + 1) * increment);
-                        return db.get(null, new DatabaseEntry(Integer.toString(value).getBytes()), new DatabaseEntry(Integer.toString(value).getBytes()), null);
+                        return db.get(null,
+                                      new DatabaseEntry(Integer.toString(value).getBytes()),
+                                      new DatabaseEntry(Integer.toString(value).getBytes()),
+                                      null);
                     }
                 }));
             }
@@ -101,21 +123,21 @@ public class BdbGrowth {
                 results.get(j).get();
             readTimes[i] = (System.currentTimeMillis() - startTime);
             System.out.println(&quot;read: &quot; + (readTimes[i] / (double) increment));
-            
-//            int cleaned = 0;
-//            do {
-//                cleaned += environment.cleanLog();
-//            } while(cleaned &gt; 0);
-//            if(cleaned &gt; 0)
-//                System.out.println(&quot;Cleaned &quot; + cleaned + &quot; files.&quot;);
-//            CheckpointConfig cp = new CheckpointConfig();
-//            cp.setForce(true);
-//            environment.checkpoint(null);
-//            environment.compress();
-//            environment.sync();
+
+            // int cleaned = 0;
+            // do {
+            // cleaned += environment.cleanLog();
+            // } while(cleaned &gt; 0);
+            // if(cleaned &gt; 0)
+            // System.out.println(&quot;Cleaned &quot; + cleaned + &quot; files.&quot;);
+            // CheckpointConfig cp = new CheckpointConfig();
+            // cp.setForce(true);
+            // environment.checkpoint(null);
+            // environment.compress();
+            // environment.sync();
             System.out.println(&quot;Cleaning, Checkpointing and compression completed.&quot;);
         }
-   
+
         System.out.println();
         System.out.println(&quot;iteration read write:&quot;);
         for(int i = 0; i &lt; iterations; i++) {
@@ -123,10 +145,10 @@ public class BdbGrowth {
             System.out.print(&quot; &quot; + readTimes[i] / (double) increment);
             System.out.println(&quot; &quot; + writeTimes[i] / (double) increment);
         }
-        
+
         System.out.println(environment.getStats(null));
-        
+
         System.exit(0);
-  }
+    }
 
 }
\ No newline at end of file</diff>
      <filename>test/integration/voldemort/performance/BdbGrowth.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.performance;
 
 import java.util.concurrent.atomic.AtomicInteger;</diff>
      <filename>test/integration/voldemort/performance/CacheStorageEnginePerformanceTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,33 +1,54 @@
-package voldemort.performance;
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
 
-import java.util.concurrent.*;
+package voldemort.performance;
 
-import org.apache.commons.httpclient.*;
+import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
+import org.apache.commons.httpclient.HostConfiguration;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpConnectionManager;
+import org.apache.commons.httpclient.HttpVersion;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
 import org.apache.commons.httpclient.cookie.CookiePolicy;
 import org.apache.commons.httpclient.methods.GetMethod;
-import org.apache.commons.httpclient.params.*;
+import org.apache.commons.httpclient.params.HttpClientParams;
+import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
 
 public class HttpClientBench {
-    
+
     private static final int DEFAULT_CONNECTION_MANAGER_TIMEOUT = 100000;
     private static final int DEFAULT_MAX_CONNECTIONS = 10;
     private static final int DEFAULT_MAX_HOST_CONNECTIONS = 10;
     private static final String VOLDEMORT_USER_AGENT = &quot;vldmrt/0.01&quot;;
-    
+
     public static void main(String[] args) throws Exception {
         if(args.length &lt; 3) {
             System.err.println(&quot;USAGE: java HttpClientBench url numThreads numRequests&quot;);
             System.exit(1);
         }
-        
+
         final String url = args[0];
         final int numThreads = Integer.parseInt(args[1]);
         final int numRequests = Integer.parseInt(args[2]);
-        
+
         System.out.println(&quot;Benchmarking against &quot; + url);
-        
+
         final HttpClient client = createClient();
         PerformanceTest perfTest = new PerformanceTest() {
+
             public void doOperation(int index) {
                 GetMethod get = new GetMethod(url);
                 try {
@@ -45,14 +66,15 @@ public class HttpClientBench {
 
         System.exit(1);
     }
-    
+
     private static HttpClient createClient() {
         HttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
         HttpClient httpClient = new HttpClient(connectionManager);
         HttpClientParams clientParams = httpClient.getParams();
         clientParams.setConnectionManagerTimeout(DEFAULT_CONNECTION_MANAGER_TIMEOUT);
         clientParams.setSoTimeout(500);
-        clientParams.setParameter(HttpClientParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0, false));
+        clientParams.setParameter(HttpClientParams.RETRY_HANDLER,
+                                  new DefaultHttpMethodRetryHandler(0, false));
         clientParams.setCookiePolicy(CookiePolicy.IGNORE_COOKIES);
         clientParams.setBooleanParameter(&quot;http.tcp.nodelay&quot;, false);
         clientParams.setIntParameter(&quot;http.socket.receivebuffer&quot;, 60000);
@@ -61,12 +83,14 @@ public class HttpClientBench {
         hostConfig.setHost(&quot;localhost&quot;);
         hostConfig.getParams().setParameter(&quot;http.protocol.version&quot;, HttpVersion.HTTP_1_1);
         httpClient.setHostConfiguration(hostConfig);
-        HttpConnectionManagerParams managerParams = httpClient.getHttpConnectionManager().getParams();
+        HttpConnectionManagerParams managerParams = httpClient.getHttpConnectionManager()
+                                                              .getParams();
         managerParams.setConnectionTimeout(DEFAULT_CONNECTION_MANAGER_TIMEOUT);
         managerParams.setMaxTotalConnections(DEFAULT_MAX_CONNECTIONS);
-        managerParams.setMaxConnectionsPerHost(httpClient.getHostConfiguration(), DEFAULT_MAX_HOST_CONNECTIONS);
+        managerParams.setMaxConnectionsPerHost(httpClient.getHostConfiguration(),
+                                               DEFAULT_MAX_HOST_CONNECTIONS);
         managerParams.setStaleCheckingEnabled(false);
-        
+
         return httpClient;
     }
 </diff>
      <filename>test/integration/voldemort/performance/HttpClientBench.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.performance;
 
 import voldemort.client.DefaultStoreClient;
@@ -15,24 +31,24 @@ import voldemort.versioning.VectorClockInconsistencyResolver;
 import voldemort.versioning.Versioned;
 
 public class LocalDirectLoadTest extends AbstractLoadTestHarness {
-	
-	@Override
-	public StoreClient&lt;String,String&gt; getStore(Props propsA, Props propsB) throws Exception {
-		StorageConfiguration conf = new BdbStorageConfiguration(new VoldemortConfig(propsA));
-		Store&lt;String,String&gt; store = 
-		    new SerializingStore&lt;String,String&gt;(conf.getStore(&quot;test&quot; + 0), 
-		                                        new StringSerializer(), 
-		                                        new StringSerializer());
-		InconsistencyResolver&lt;Versioned&lt;String&gt;&gt; resolver = new VectorClockInconsistencyResolver&lt;String&gt;();
-		
-		return new DefaultStoreClient&lt;String,String&gt;(new InconsistencyResolvingStore&lt;String,String&gt;(store, resolver),
-                                    		         new StringSerializer(),
-                                    		         new StringSerializer(),
-                                    		         null);
-	}
 
-	public static void main(String[] args) throws Exception {
-		new LocalDirectLoadTest().run(args);
-	}
+    @Override
+    public StoreClient&lt;String, String&gt; getStore(Props propsA, Props propsB) throws Exception {
+        StorageConfiguration conf = new BdbStorageConfiguration(new VoldemortConfig(propsA));
+        Store&lt;String, String&gt; store = new SerializingStore&lt;String, String&gt;(conf.getStore(&quot;test&quot; + 0),
+                                                                           new StringSerializer(),
+                                                                           new StringSerializer());
+        InconsistencyResolver&lt;Versioned&lt;String&gt;&gt; resolver = new VectorClockInconsistencyResolver&lt;String&gt;();
+
+        return new DefaultStoreClient&lt;String, String&gt;(new InconsistencyResolvingStore&lt;String, String&gt;(store,
+                                                                                                      resolver),
+                                                      new StringSerializer(),
+                                                      new StringSerializer(),
+                                                      null);
+    }
+
+    public static void main(String[] args) throws Exception {
+        new LocalDirectLoadTest().run(args);
+    }
 
 }</diff>
      <filename>test/integration/voldemort/performance/LocalDirectLoadTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.performance;
 
 import java.io.File;
@@ -30,35 +46,39 @@ import com.google.common.collect.Maps;
 
 public class LocalRoutedStoreLoadTest extends AbstractLoadTestHarness {
 
-	@Override
-	public StoreClient&lt;String,String&gt; getStore(Props propsA, Props propsB) throws Exception {
-		Cluster cluster = new ClusterMapper().readCluster(new FileReader(propsA.getString(&quot;metadata.directory&quot;) +
-				File.separator + &quot;/cluster.xml&quot;));
-		HashFunction hasher = new FnvHashFunction();
-		RoutingStrategy routingStrategy = new ConsistentRoutingStrategy(cluster.getNodes(), 1);
-		Map&lt;Integer,Store&lt;byte[],byte[]&gt;&gt; clientMapping = Maps.newHashMap();
-		StorageConfiguration conf = new BdbStorageConfiguration(new VoldemortConfig(propsA));
-		for(Node node: cluster.getNodes())
-			clientMapping.put(node.getId(), conf.getStore(&quot;test&quot; + node.getId()));
-		
-		InconsistencyResolver&lt;Versioned&lt;String&gt;&gt; resolver = new VectorClockInconsistencyResolver&lt;String&gt;();
-		Store&lt;byte[],byte[]&gt; store = new RoutedStore(&quot;test&quot;, 
-        											  clientMapping,
-        											  routingStrategy,  
-        											  1,
-        											  1,
-        											  10,
+    @Override
+    public StoreClient&lt;String, String&gt; getStore(Props propsA, Props propsB) throws Exception {
+        Cluster cluster = new ClusterMapper().readCluster(new FileReader(propsA.getString(&quot;metadata.directory&quot;)
+                                                                         + File.separator
+                                                                         + &quot;/cluster.xml&quot;));
+        HashFunction hasher = new FnvHashFunction();
+        RoutingStrategy routingStrategy = new ConsistentRoutingStrategy(cluster.getNodes(), 1);
+        Map&lt;Integer, Store&lt;byte[], byte[]&gt;&gt; clientMapping = Maps.newHashMap();
+        StorageConfiguration conf = new BdbStorageConfiguration(new VoldemortConfig(propsA));
+        for(Node node: cluster.getNodes())
+            clientMapping.put(node.getId(), conf.getStore(&quot;test&quot; + node.getId()));
+
+        InconsistencyResolver&lt;Versioned&lt;String&gt;&gt; resolver = new VectorClockInconsistencyResolver&lt;String&gt;();
+        Store&lt;byte[], byte[]&gt; store = new RoutedStore(&quot;test&quot;,
+                                                      clientMapping,
+                                                      routingStrategy,
+                                                      1,
+                                                      1,
+                                                      10,
                                                       true,
                                                       10000L);
-		Store&lt;String,String&gt; serializingStore = new SerializingStore&lt;String,String&gt;(store, new StringSerializer(), new StringSerializer());
-		return new DefaultStoreClient&lt;String, String&gt;(new InconsistencyResolvingStore&lt;String, String&gt;(serializingStore, resolver),
-                                        		        new StringSerializer(),
-                                        		        new StringSerializer(),
-                                        		        null);
-	}
+        Store&lt;String, String&gt; serializingStore = new SerializingStore&lt;String, String&gt;(store,
+                                                                                      new StringSerializer(),
+                                                                                      new StringSerializer());
+        return new DefaultStoreClient&lt;String, String&gt;(new InconsistencyResolvingStore&lt;String, String&gt;(serializingStore,
+                                                                                                      resolver),
+                                                      new StringSerializer(),
+                                                      new StringSerializer(),
+                                                      null);
+    }
+
+    public static void main(String[] args) throws Exception {
+        new LocalRoutedStoreLoadTest().run(args);
+    }
 
-	public static void main(String[] args) throws Exception {
-		new LocalRoutedStoreLoadTest().run(args);
-	}
-	
 }</diff>
      <filename>test/integration/voldemort/performance/LocalRoutedStoreLoadTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,26 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.performance;
 
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
-import java.util.concurrent.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 import javax.sql.DataSource;
 
@@ -13,10 +30,10 @@ import org.apache.commons.dbcp.BasicDataSource;
  * A simple MySQL benchmark
  * 
  * @author jay
- *
+ * 
  */
 public class MysqlBench {
-    
+
     private final ExecutorService threadPool;
     private final DataSource dataSource;
     private final int numRequests;
@@ -27,10 +44,11 @@ public class MysqlBench {
         System.err.println(&quot;USAGE: java MysqlBench jdbc-url db-user db-password num-requests num-threads&quot;);
         System.exit(1);
     }
-    
+
     public static void main(String[] args) throws Exception {
         if(args.length != 5)
-            croak(&quot;Invalid number of command line arguments: expected 5 but got &quot; + args.length +&quot;.&quot;);
+            croak(&quot;Invalid number of command line arguments: expected 5 but got &quot; + args.length
+                  + &quot;.&quot;);
         String jdbcUrl = args[0];
         String user = args[1];
         String password = args[2];
@@ -39,8 +57,12 @@ public class MysqlBench {
         MysqlBench bench = new MysqlBench(numThreads, numRequests, jdbcUrl, user, password);
         bench.benchmark();
     }
-    
-    public MysqlBench(int numThreads, int numRequests, String connectionString, String username, String password) {
+
+    public MysqlBench(int numThreads,
+                      int numRequests,
+                      String connectionString,
+                      String username,
+                      String password) {
         this.numThreads = numThreads;
         this.threadPool = Executors.newFixedThreadPool(numThreads);
         this.numRequests = numRequests;
@@ -51,7 +73,7 @@ public class MysqlBench {
         ds.setUrl(connectionString);
         this.dataSource = ds;
     }
-    
+
     private void upsert(String key, String value) throws Exception {
         Connection conn = dataSource.getConnection();
         String upsert = &quot;insert into test_table (key_, value_) values (?, ?) on duplicate key update value_ = ?&quot;;
@@ -62,11 +84,15 @@ public class MysqlBench {
             stmt.setString(3, value);
             stmt.executeUpdate();
         } finally {
-            try { stmt.close(); } catch(Exception e) { }
-            try { conn.close(); } catch(Exception e) { }
+            try {
+                stmt.close();
+            } catch(Exception e) {}
+            try {
+                conn.close();
+            } catch(Exception e) {}
         }
     }
-    
+
     private void deleteAll() throws Exception {
         Connection conn = dataSource.getConnection();
         String delete = &quot;delete from test_table&quot;;
@@ -74,11 +100,15 @@ public class MysqlBench {
         try {
             stmt.executeUpdate();
         } finally {
-            try { stmt.close(); } catch(Exception e) { }
-            try { conn.close(); } catch(Exception e) { }
+            try {
+                stmt.close();
+            } catch(Exception e) {}
+            try {
+                conn.close();
+            } catch(Exception e) {}
         }
     }
-    
+
     private String select(String key) throws Exception {
         Connection conn = dataSource.getConnection();
         String upsert = &quot;select value_ from test_table where key_ = ?&quot;;
@@ -92,33 +122,39 @@ public class MysqlBench {
             else
                 return null;
         } finally {
-            try { stmt.close(); } catch(Exception e) { }
-            try { conn.close(); } catch(Exception e) { }
+            try {
+                stmt.close();
+            } catch(Exception e) {}
+            try {
+                conn.close();
+            } catch(Exception e) {}
         }
     }
-    
+
     public void benchmark() throws Exception {
         System.out.println(&quot;WRITE TEST&quot;);
         PerformanceTest writeTest = new PerformanceTest() {
-          public void doOperation(int index) throws Exception {
-              upsert(Integer.toString(index), Integer.toString(index));
-          }
+
+            public void doOperation(int index) throws Exception {
+                upsert(Integer.toString(index), Integer.toString(index));
+            }
         };
         writeTest.run(numRequests, numThreads);
         writeTest.printStats();
-        
+
         System.out.println();
-        
+
         System.out.println(&quot;READ TEST&quot;);
         PerformanceTest readTest = new PerformanceTest() {
-          public void doOperation(int index) throws Exception {
-              select(Integer.toString(index));
-          }
+
+            public void doOperation(int index) throws Exception {
+                select(Integer.toString(index));
+            }
         };
         readTest.run(numRequests, numThreads);
         readTest.printStats();
-        
+
         deleteAll();
     }
-    
+
 }
\ No newline at end of file</diff>
      <filename>test/integration/voldemort/performance/MysqlBench.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.performance;
 
 import java.sql.Connection;
@@ -14,10 +30,11 @@ import java.util.concurrent.Future;
 import org.apache.commons.dbcp.BasicDataSource;
 
 /**
- * create table test_table (key_ varchar(200) primary key, value_ varchar(200)) engine=InnoDB;
+ * create table test_table (key_ varchar(200) primary key, value_ varchar(200))
+ * engine=InnoDB;
  * 
  * @author jay
- *
+ * 
  */
 public class MysqlGrowth {
 
@@ -29,7 +46,7 @@ public class MysqlGrowth {
         final int totalSize = Integer.parseInt(args[0]);
         final int increment = Integer.parseInt(args[1]);
         final int threads = Integer.parseInt(args[2]);
-        
+
         BasicDataSource ds = new BasicDataSource();
         ds.setDriverClassName(&quot;com.mysql.jdbc.Driver&quot;);
         ds.setUsername(&quot;root&quot;);
@@ -37,7 +54,7 @@ public class MysqlGrowth {
         ds.setUrl(&quot;jdbc:mysql://127.0.0.1:3306/test&quot;);
         final Connection conn = ds.getConnection();
         conn.createStatement().execute(&quot;truncate table test_table&quot;);
-        
+
         final Random rand = new Random();
         int iterations = totalSize / increment;
         long[] readTimes = new long[iterations];
@@ -51,8 +68,11 @@ public class MysqlGrowth {
             for(int j = 0; j &lt; increment; j++) {
                 final int fj = j;
                 results.add(service.submit(new Callable&lt;Object&gt;() {
+
                     public Object call() throws Exception {
-                        upsert(conn, Integer.toString(fi*increment + fj), Integer.toString(fi*increment + fj));
+                        upsert(conn,
+                               Integer.toString(fi * increment + fj),
+                               Integer.toString(fi * increment + fj));
                         return null;
                     }
                 }));
@@ -62,11 +82,12 @@ public class MysqlGrowth {
             writeTimes[i] = System.currentTimeMillis() - startTime;
             System.out.println(&quot;write: &quot; + (writeTimes[i] / (double) increment));
             results.clear();
-            
+
             startTime = System.currentTimeMillis();
             for(int j = 0; j &lt; increment; j++) {
                 final int fj = j;
                 results.add(service.submit(new Callable&lt;Object&gt;() {
+
                     public Object call() throws Exception {
                         return select(conn, Integer.toString(rand.nextInt((fi + 1) * increment)));
                     }
@@ -78,7 +99,7 @@ public class MysqlGrowth {
             System.out.println(&quot;read: &quot; + (readTimes[i] / (double) increment));
         }
         conn.close();
-        
+
         System.out.println();
         System.out.println(&quot;iteration read write:&quot;);
         for(int i = 0; i &lt; iterations; i++) {
@@ -86,10 +107,10 @@ public class MysqlGrowth {
             System.out.print(&quot; &quot; + readTimes[i] / (double) increment);
             System.out.println(&quot; &quot; + writeTimes[i] / (double) increment);
         }
-        
+
         System.exit(0);
     }
-    
+
     private static void upsert(Connection conn, String key, String value) throws Exception {
         String upsert = &quot;insert into test_table (key_, value_) values (?, ?) on duplicate key update value_ = ?&quot;;
         PreparedStatement stmt = conn.prepareStatement(upsert);
@@ -99,10 +120,12 @@ public class MysqlGrowth {
             stmt.setString(3, value);
             stmt.executeUpdate();
         } finally {
-            try { stmt.close(); } catch(Exception e) { }
+            try {
+                stmt.close();
+            } catch(Exception e) {}
         }
     }
-    
+
     private static String select(Connection conn, String key) throws Exception {
         String upsert = &quot;select value_ from test_table where key_ = ?&quot;;
         PreparedStatement stmt = conn.prepareStatement(upsert);
@@ -115,8 +138,10 @@ public class MysqlGrowth {
             else
                 return null;
         } finally {
-            try { stmt.close(); } catch(Exception e) { }
+            try {
+                stmt.close();
+            } catch(Exception e) {}
         }
     }
-    
+
 }</diff>
      <filename>test/integration/voldemort/performance/MysqlGrowth.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.performance;
 
 import java.util.concurrent.CountDownLatch;
@@ -10,23 +26,23 @@ import voldemort.TestUtils;
 import voldemort.utils.Time;
 
 public abstract class PerformanceTest {
-    
+
     private final AtomicInteger numberOfFailures = new AtomicInteger(0);
     private long elapsedTimeNs;
     private long[] operationTimes;
     private volatile boolean hasCompleted;
     private int numberOfThreads;
-    
+
     public abstract void doOperation(int index) throws Exception;
-    
+
     public void setUp() {
-        // override me to do stuff
+    // override me to do stuff
     }
-    
+
     public void tearDown() {
-        // override me to do stuff
+    // override me to do stuff
     }
-    
+
     public void run(int numRequests, int numThreads) {
         setUp();
         try {
@@ -37,33 +53,33 @@ public abstract class PerformanceTest {
             ExecutorService executor = Executors.newFixedThreadPool(numThreads);
             final CountDownLatch latch = new CountDownLatch(numRequests);
             final AtomicInteger index = new AtomicInteger(0);
-            
+
             long start = System.nanoTime();
             for(int i = 0; i &lt; numRequests; i++) {
-                executor.execute(
-                        new Runnable() {
-                            public void run() {
-                                int current = index.getAndIncrement();
-                                long begin = System.nanoTime();
-                                try {
-                                    doOperation(current);
-                                } catch(Exception e) {
-                                    numberOfFailures.getAndIncrement();
-                                    e.printStackTrace();
-                                } finally {
-                                    operationTimes[current] = System.nanoTime() - begin;
-                                    latch.countDown();
-                                }
-                            }
-                        });
+                executor.execute(new Runnable() {
+
+                    public void run() {
+                        int current = index.getAndIncrement();
+                        long begin = System.nanoTime();
+                        try {
+                            doOperation(current);
+                        } catch(Exception e) {
+                            numberOfFailures.getAndIncrement();
+                            e.printStackTrace();
+                        } finally {
+                            operationTimes[current] = System.nanoTime() - begin;
+                            latch.countDown();
+                        }
+                    }
+                });
             }
-            
+
             try {
                 latch.await();
             } catch(InterruptedException e) {
                 e.printStackTrace();
             }
-            
+
             this.hasCompleted = true;
             this.elapsedTimeNs = System.nanoTime() - start;
             executor.shutdownNow();
@@ -74,43 +90,44 @@ public abstract class PerformanceTest {
             tearDown();
         }
     }
-    
+
     public void printStats() {
         if(!hasCompleted)
             throw new RuntimeException(&quot;Hasn't finished running yet!&quot;);
         System.out.println(&quot;Total number of operations: &quot; + this.operationTimes.length);
-        System.out.println(&quot;Total elapsed seconds: &quot; + this.elapsedTimeNs / (double) Time.NS_PER_SECOND);
+        System.out.println(&quot;Total elapsed seconds: &quot; + this.elapsedTimeNs
+                           / (double) Time.NS_PER_SECOND);
         System.out.println(&quot;Number of failures: &quot; + this.numberOfFailures.get());
         System.out.println(&quot;Number of threads: &quot; + this.numberOfThreads);
         System.out.println(&quot;Avg. operations/second: &quot; + getOperationsPerSecond());
         System.out.println(&quot;Average time: &quot; + getAverageOperationTimeMs() + &quot; ms&quot;);
         System.out.println(&quot;Median time: &quot; + getOperationTimeMsQuantile(0.5d) + &quot; ms&quot;);
-        System.out.println(&quot;1st percentile: &quot; + getOperationTimeMsQuantile(0.01d) + &quot; ms&quot;);      
-        System.out.println(&quot;99th percentile: &quot; + getOperationTimeMsQuantile(0.99d) + &quot; ms&quot;);       
+        System.out.println(&quot;1st percentile: &quot; + getOperationTimeMsQuantile(0.01d) + &quot; ms&quot;);
+        System.out.println(&quot;99th percentile: &quot; + getOperationTimeMsQuantile(0.99d) + &quot; ms&quot;);
     }
-    
+
     public double getOperationsPerSecond() {
         if(!hasCompleted)
             throw new RuntimeException(&quot;Hasn't finished running yet!&quot;);
         double elapsedSeconds = this.elapsedTimeNs / (double) Time.NS_PER_SECOND;
         return this.operationTimes.length / elapsedSeconds;
     }
-    
+
     public double getOperationTimeMsQuantile(double quantile) {
         if(!hasCompleted)
             throw new RuntimeException(&quot;Hasn't finished running yet!&quot;);
         return TestUtils.quantile(this.operationTimes, quantile) / (double) Time.NS_PER_MS;
     }
-    
+
     public double getAverageOperationTimeMs() {
         if(!hasCompleted)
             throw new RuntimeException(&quot;Hasn't finished running yet!&quot;);
-        
+
         double sum = 0.0;
         for(int i = 0; i &lt; this.operationTimes.length; i++)
             sum += this.operationTimes[i];
         sum /= Time.NS_PER_MS;
         return sum / this.operationTimes.length;
     }
-    
+
 }</diff>
      <filename>test/integration/voldemort/performance/PerformanceTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.performance;
 
 import voldemort.client.HttpStoreClientFactory;
@@ -8,22 +24,34 @@ import voldemort.utils.Props;
 
 public class RemoteHttpStoreLoadTest extends AbstractLoadTestHarness {
 
-	@Override
-	public StoreClient&lt;String,String&gt; getStore(Props propsA, Props propsB) throws java.lang.Exception {
-		System.out.println(&quot;Initializing master server.&quot;);
-		VoldemortServer serverA = new VoldemortServer(new VoldemortConfig(propsA));
-		System.out.println(&quot;Initializing slave server.&quot;);
-		VoldemortServer serverB = new VoldemortServer(new VoldemortConfig(propsB));
-	    
-		serverA.start();
-	    serverB.start();
-	    
-	    HttpStoreClientFactory factory = new HttpStoreClientFactory(5, 2000, 2000, 0, 2000, 2000, 10000, 10, 5, serverA.getIdentityNode().getHttpUrl().toString());
-		return factory.getStoreClient(&quot;users&quot;);
-	}
-	
-	public static void main(String[] args) throws Exception {
-		new RemoteHttpStoreLoadTest().run(args);
-	}
+    @Override
+    public StoreClient&lt;String, String&gt; getStore(Props propsA, Props propsB)
+            throws java.lang.Exception {
+        System.out.println(&quot;Initializing master server.&quot;);
+        VoldemortServer serverA = new VoldemortServer(new VoldemortConfig(propsA));
+        System.out.println(&quot;Initializing slave server.&quot;);
+        VoldemortServer serverB = new VoldemortServer(new VoldemortConfig(propsB));
+
+        serverA.start();
+        serverB.start();
+
+        HttpStoreClientFactory factory = new HttpStoreClientFactory(5,
+                                                                    2000,
+                                                                    2000,
+                                                                    0,
+                                                                    2000,
+                                                                    2000,
+                                                                    10000,
+                                                                    10,
+                                                                    5,
+                                                                    serverA.getIdentityNode()
+                                                                           .getHttpUrl()
+                                                                           .toString());
+        return factory.getStoreClient(&quot;users&quot;);
+    }
+
+    public static void main(String[] args) throws Exception {
+        new RemoteHttpStoreLoadTest().run(args);
+    }
 
 }</diff>
      <filename>test/integration/voldemort/performance/RemoteHttpStoreLoadTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.performance;
 
 import java.util.List;
@@ -24,17 +40,19 @@ import voldemort.utils.Utils;
 import voldemort.versioning.Versioned;
 
 public class RemoteStoreComparisonTest {
-    
+
     public static void main(String[] args) throws Exception {
         if(args.length != 2)
-            Utils.croak(&quot;USAGE: java &quot; + RemoteStoreComparisonTest.class.getName() + &quot; numRequests numThreads&quot;);
-        
+            Utils.croak(&quot;USAGE: java &quot; + RemoteStoreComparisonTest.class.getName()
+                        + &quot; numRequests numThreads&quot;);
+
         int numRequests = Integer.parseInt(args[0]);
         int numThreads = Integer.parseInt(args[1]);
-        
+
         /*** In memory test ***/
-        final Store&lt;byte[],byte[]&gt; memStore = new InMemoryStorageEngine&lt;byte[],byte[]&gt;(&quot;test&quot;);
+        final Store&lt;byte[], byte[]&gt; memStore = new InMemoryStorageEngine&lt;byte[], byte[]&gt;(&quot;test&quot;);
         PerformanceTest memWriteTest = new PerformanceTest() {
+
             public void doOperation(int i) {
                 byte[] key = String.valueOf(i).getBytes();
                 memStore.put(key, new Versioned&lt;byte[]&gt;(key));
@@ -45,8 +63,9 @@ public class RemoteStoreComparisonTest {
         memWriteTest.run(numRequests, numThreads);
         memWriteTest.printStats();
         System.out.println();
-        
+
         PerformanceTest memReadTest = new PerformanceTest() {
+
             public void doOperation(int i) {
                 try {
                     List&lt;Versioned&lt;byte[]&gt;&gt; s = memStore.get(String.valueOf(i).getBytes());
@@ -61,18 +80,19 @@ public class RemoteStoreComparisonTest {
         memReadTest.printStats();
         System.out.println();
         System.out.println();
-        
+
         /*** Do Socket tests ***/
         String storeName = &quot;test&quot;;
-        ConcurrentMap&lt;String, Store&lt;byte[],byte[]&gt;&gt; stores = new ConcurrentHashMap&lt;String,Store&lt;byte[],byte[]&gt;&gt;(1);
-        stores.put(storeName, new InMemoryStorageEngine&lt;byte[],byte[]&gt;(storeName)); 
+        ConcurrentMap&lt;String, Store&lt;byte[], byte[]&gt;&gt; stores = new ConcurrentHashMap&lt;String, Store&lt;byte[], byte[]&gt;&gt;(1);
+        stores.put(storeName, new InMemoryStorageEngine&lt;byte[], byte[]&gt;(storeName));
         SocketPool socketPool = new SocketPool(10, 10, 1000);
         final SocketStore socketStore = new SocketStore(storeName, &quot;localhost&quot;, 6666, socketPool);
         SocketServer socketServer = new SocketServer(stores, 6666, 50, 50);
         socketServer.start();
         socketServer.awaitStartupCompletion();
-        
+
         PerformanceTest socketWriteTest = new PerformanceTest() {
+
             public void doOperation(int i) {
                 byte[] key = String.valueOf(i).getBytes();
                 socketStore.put(key, new Versioned&lt;byte[]&gt;(key));
@@ -83,8 +103,9 @@ public class RemoteStoreComparisonTest {
         socketWriteTest.run(numRequests, numThreads);
         socketWriteTest.printStats();
         System.out.println();
-        
+
         PerformanceTest socketReadTest = new PerformanceTest() {
+
             public void doOperation(int i) {
                 try {
                     List&lt;Versioned&lt;byte[]&gt;&gt; s = socketStore.get(String.valueOf(i).getBytes());
@@ -99,32 +120,35 @@ public class RemoteStoreComparisonTest {
         socketReadTest.printStats();
         System.out.println();
         System.out.println();
-        
+
         socketStore.close();
         socketPool.close();
         socketServer.shutdown();
-        
+
         /*** Do HTTP tests ***/
-        stores.put(storeName, new InMemoryStorageEngine&lt;byte[],byte[]&gt;(storeName)); 
+        stores.put(storeName, new InMemoryStorageEngine&lt;byte[], byte[]&gt;(storeName));
         HttpService httpService = new HttpService(storeName, null, numThreads, 8080);
         httpService.start();
         HttpClient httpClient = new HttpClient(new MultiThreadedHttpConnectionManager());
         HttpClientParams clientParams = httpClient.getParams();
-        clientParams.setParameter(HttpClientParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0, false));
+        clientParams.setParameter(HttpClientParams.RETRY_HANDLER,
+                                  new DefaultHttpMethodRetryHandler(0, false));
         clientParams.setCookiePolicy(CookiePolicy.IGNORE_COOKIES);
         clientParams.setParameter(&quot;http.useragent&quot;, &quot;test-agent&quot;);
         HostConfiguration hostConfig = new HostConfiguration();
         hostConfig.getParams().setParameter(&quot;http.protocol.version&quot;, HttpVersion.HTTP_1_1);
         httpClient.setHostConfiguration(hostConfig);
-        HttpConnectionManagerParams managerParams = httpClient.getHttpConnectionManager().getParams();
+        HttpConnectionManagerParams managerParams = httpClient.getHttpConnectionManager()
+                                                              .getParams();
         managerParams.setConnectionTimeout(10000);
         managerParams.setMaxTotalConnections(numThreads);
         managerParams.setStaleCheckingEnabled(false);
         managerParams.setMaxConnectionsPerHost(httpClient.getHostConfiguration(), numThreads);
         final HttpStore httpStore = new HttpStore(&quot;test&quot;, &quot;localhost&quot;, 8080, httpClient);
         Thread.sleep(400);
-        
+
         PerformanceTest httpWriteTest = new PerformanceTest() {
+
             public void doOperation(int i) {
                 byte[] key = String.valueOf(i).getBytes();
                 httpStore.put(key, new Versioned&lt;byte[]&gt;(key));
@@ -135,8 +159,9 @@ public class RemoteStoreComparisonTest {
         httpWriteTest.run(numRequests, numThreads);
         httpWriteTest.printStats();
         System.out.println();
-        
+
         PerformanceTest httpReadTest = new PerformanceTest() {
+
             public void doOperation(int i) {
                 List&lt;Versioned&lt;byte[]&gt;&gt; s = httpStore.get(String.valueOf(i).getBytes());
             }
@@ -144,7 +169,7 @@ public class RemoteStoreComparisonTest {
         System.out.println(&quot;Performing HTTP read test.&quot;);
         httpReadTest.run(numRequests, numThreads);
         httpReadTest.printStats();
-        
+
         httpService.stop();
     }
 </diff>
      <filename>test/integration/voldemort/performance/RemoteStoreComparisonTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.performance;
 
 import static voldemort.utils.Utils.croak;
@@ -14,18 +30,24 @@ import voldemort.versioning.Versioned;
 
 public class RemoteTest {
 
-	public static void main(String[] args) throws Exception {
-		if(args.length != 3)
-			croak(&quot;USAGE: java &quot; + RemoteTest.class.getName() + &quot; url size start_num&quot;);
+    public static void main(String[] args) throws Exception {
+        if(args.length != 3)
+            croak(&quot;USAGE: java &quot; + RemoteTest.class.getName() + &quot; url size start_num&quot;);
+
+        System.err.println(&quot;Bootstraping cluster data.&quot;);
+        String url = args[0];
+        int size = Integer.parseInt(args[1]);
+        int startNum = Integer.parseInt(args[2]);
+        StoreClientFactory factory = new SocketStoreClientFactory(Executors.newFixedThreadPool(8),
+                                                                  6,
+                                                                  12,
+                                                                  2000,
+                                                                  2000,
+                                                                  2000,
+                                                                  url);
+        final StoreClient&lt;String, String&gt; store = factory.getStoreClient(&quot;test&quot;);
 
-		System.err.println(&quot;Bootstraping cluster data.&quot;);
-		String url = args[0];
-		int size = Integer.parseInt(args[1]);
-		int startNum = Integer.parseInt(args[2]);
-		StoreClientFactory factory = new SocketStoreClientFactory(Executors.newFixedThreadPool(8), 6, 12, 2000, 2000, 2000, url);
-		final StoreClient&lt;String,String&gt; store = factory.getStoreClient(&quot;test&quot;);
-		
-	    System.err.println(&quot;Beginning delete test.&quot;);
+        System.err.println(&quot;Beginning delete test.&quot;);
         final AtomicInteger count0 = new AtomicInteger(startNum);
         final AtomicInteger successes = new AtomicInteger(0);
         ExecutorService service = Executors.newFixedThreadPool(8);
@@ -33,12 +55,13 @@ public class RemoteTest {
         final CountDownLatch latch0 = new CountDownLatch(size);
         for(int i = 0; i &lt; size; i++) {
             service.execute(new Runnable() {
+
                 public void run() {
                     try {
                         String str = Integer.toString(count0.getAndIncrement());
                         store.delete(str);
                         successes.getAndIncrement();
-                    } catch (Exception e) {
+                    } catch(Exception e) {
                         e.printStackTrace();
                     } finally {
                         latch0.countDown();
@@ -50,53 +73,54 @@ public class RemoteTest {
         long deleteTime = System.currentTimeMillis() - start;
         System.out.println(&quot;Throughput: &quot; + (size / (float) deleteTime * 1000) + &quot; deletes/sec.&quot;);
         System.out.println(successes.get() + &quot; things deleted.&quot;);
-        
-		
-		System.err.println(&quot;Beginning write test.&quot;);
-		final AtomicInteger count1 = new AtomicInteger(startNum);
-		start = System.currentTimeMillis();
-		final CountDownLatch latch1 = new CountDownLatch(size);
-		for(int i = 0; i &lt; size; i++) {
-    		service.execute(new Runnable() {
-    		    public void run() {
-    		        try {
-    		            String str = Integer.toString(count1.getAndIncrement());
-    		            store.put(str, new Versioned&lt;String&gt;(str));
-    		        } catch (Exception e) {
-    		            e.printStackTrace();
-    		        } finally {
-    		            latch1.countDown();
-    		        }
-    		    }
-    		});
-		}
-		latch1.await();
-		long writeTime = System.currentTimeMillis() - start;
+
+        System.err.println(&quot;Beginning write test.&quot;);
+        final AtomicInteger count1 = new AtomicInteger(startNum);
+        start = System.currentTimeMillis();
+        final CountDownLatch latch1 = new CountDownLatch(size);
+        for(int i = 0; i &lt; size; i++) {
+            service.execute(new Runnable() {
+
+                public void run() {
+                    try {
+                        String str = Integer.toString(count1.getAndIncrement());
+                        store.put(str, new Versioned&lt;String&gt;(str));
+                    } catch(Exception e) {
+                        e.printStackTrace();
+                    } finally {
+                        latch1.countDown();
+                    }
+                }
+            });
+        }
+        latch1.await();
+        long writeTime = System.currentTimeMillis() - start;
         System.out.println(&quot;Throughput: &quot; + (size / (float) writeTime * 1000) + &quot; writes/sec.&quot;);
-		
+
         System.err.println(&quot;Beginning read test.&quot;);
         final CountDownLatch latch2 = new CountDownLatch(size);
-		start = System.currentTimeMillis();
-		final AtomicInteger count2 = new AtomicInteger(startNum);
-		for(int i = 0; i &lt; size; i++) {
-    	    service.execute(new Runnable() {
-    	        public void run() {
-    	            try {
-        	            String str = Integer.toString(count2.getAndIncrement());
-        	            Versioned&lt;String&gt; found = store.get(str);
-    	            } catch(Exception e) {
-    	                e.printStackTrace();
-    	            } finally {
-    	                latch2.countDown();
-    	            }
-    	        }
-    	    });
-		}
-		latch2.await();
-	    long readTime = System.currentTimeMillis() - start;
-		System.out.println(&quot;Throughput: &quot; + (size / (float) readTime * 1000.0) + &quot; reads/sec.&quot;);
+        start = System.currentTimeMillis();
+        final AtomicInteger count2 = new AtomicInteger(startNum);
+        for(int i = 0; i &lt; size; i++) {
+            service.execute(new Runnable() {
+
+                public void run() {
+                    try {
+                        String str = Integer.toString(count2.getAndIncrement());
+                        Versioned&lt;String&gt; found = store.get(str);
+                    } catch(Exception e) {
+                        e.printStackTrace();
+                    } finally {
+                        latch2.countDown();
+                    }
+                }
+            });
+        }
+        latch2.await();
+        long readTime = System.currentTimeMillis() - start;
+        System.out.println(&quot;Throughput: &quot; + (size / (float) readTime * 1000.0) + &quot; reads/sec.&quot;);
 
-		System.exit(0);
-	}
+        System.exit(0);
+    }
 
 }</diff>
      <filename>test/integration/voldemort/performance/RemoteTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,31 +1,48 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.performance;
 
 import voldemort.client.StoreClient;
-import voldemort.server.VoldemortServer;
 import voldemort.server.VoldemortConfig;
+import voldemort.server.VoldemortServer;
 import voldemort.utils.Props;
 
 public class SemiLocalHttpStoreLoadTest extends AbstractLoadTestHarness {
 
     @Override
-    public StoreClient&lt;String,String&gt; getStore(Props propsA, Props propsB) throws java.lang.Exception {
+    public StoreClient&lt;String, String&gt; getStore(Props propsA, Props propsB)
+            throws java.lang.Exception {
         System.out.println(&quot;Initializing master server.&quot;);
         VoldemortServer serverA = new VoldemortServer(new VoldemortConfig(propsA));
         System.out.println(&quot;Initializing slave server.&quot;);
         VoldemortServer serverB = new VoldemortServer(new VoldemortConfig(propsB));
-        
+
         serverA.start();
         serverB.start();
-        
+
         return null;
-//        Clients.getSemiLocalRoutedHttpStoreClient(Collections.singletonList(serverA.getIdentityNode().getHttpUrl()),
-//                                                         serverA.getStoreConfiguration(),
-//                                                         &quot;users&quot;, 
-//                                                         new StringSerializer(&quot;UTF-8&quot;), 
-//                                                         serverA.getIdentityNode().getId(), 
-//                                                         20);
+        // Clients.getSemiLocalRoutedHttpStoreClient(Collections.singletonList(serverA.getIdentityNode().getHttpUrl()),
+        // serverA.getStoreConfiguration(),
+        // &quot;users&quot;,
+        // new StringSerializer(&quot;UTF-8&quot;),
+        // serverA.getIdentityNode().getId(),
+        // 20);
     }
-    
+
     public static void main(String[] args) throws Exception {
         new RemoteHttpStoreLoadTest().run(args);
     }</diff>
      <filename>test/integration/voldemort/performance/SemiLocalHttpStoreLoadTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort;
 
 import java.io.ByteArrayInputStream;
@@ -13,44 +29,50 @@ import voldemort.utils.ByteUtils;
 import voldemort.utils.ReflectUtils;
 
 public class UtilsTest extends TestCase {
-	
-	public void testCat() {
-		assertTrue(&quot;Concatenation of empty arrays is not empty&quot;,
-				   Arrays.equals(new byte[0], ByteUtils.cat(new byte[0], new byte[0])));
-		assertTrue(&quot;Concatenation of no arrays is not empty&quot;,
-				   Arrays.equals(new byte[0], ByteUtils.cat()));
-		assertTrue(&quot;Concatenation of arrays incorrect.&quot;,
-				   Arrays.equals(&quot;abcdefg&quot;.getBytes(), 
-						   ByteUtils.cat(&quot;ab&quot;.getBytes(), &quot;&quot;.getBytes(), &quot;cdef&quot;.getBytes(), &quot;g&quot;.getBytes())));
-	}
-	
-	public void testCopy() {
-		assertTrue(&quot;Copy of no bytes is not empty array.&quot;,
-				   Arrays.equals(new byte[0], ByteUtils.copy(&quot;hello&quot;.getBytes(), 0, 0)));
-		assertTrue(&quot;Copy of negetive bytes is not empty array.&quot;,
-				   Arrays.equals(new byte[0], ByteUtils.copy(&quot;hello&quot;.getBytes(), 2, 0)));
-		assertTrue(&quot;Bytes copy incorrectly&quot;,
-				   Arrays.equals(&quot;hell&quot;.getBytes(), ByteUtils.copy(&quot;hello&quot;.getBytes(), 0, 4)));
-	}
-	
-	public void testReadWriteShort() {
-		byte[] bytes = new byte[4];
-		ByteUtils.writeShort(bytes, (short) 5, 0);
-		assertEquals(&quot;Read value not equal to written value.&quot;, (short) 5, ByteUtils.readShort(bytes, 0));
-		ByteUtils.writeShort(bytes, (short) 500, 2);
-		assertEquals(&quot;Read value not equal to written value.&quot;, (short) 500, ByteUtils.readShort(bytes, 2));
-	}
-	
-	public void testReadWriteLong() {
-	    byte[] bytes = new byte[8];
-	    ByteUtils.writeLong(bytes, 5, 0);
-	    assertEquals(&quot;Read value not equal to written value.&quot;, 5, ByteUtils.readLong(bytes, 0));
-	    long value = System.currentTimeMillis();
-	    ByteUtils.writeLong(bytes, value, 0);
-	    assertEquals(&quot;Read value not equal to written value.&quot;, value, ByteUtils.readLong(bytes, 0));
-	}
-	
-   public void testReadWriteInt() {
+
+    public void testCat() {
+        assertTrue(&quot;Concatenation of empty arrays is not empty&quot;,
+                   Arrays.equals(new byte[0], ByteUtils.cat(new byte[0], new byte[0])));
+        assertTrue(&quot;Concatenation of no arrays is not empty&quot;, Arrays.equals(new byte[0],
+                                                                            ByteUtils.cat()));
+        assertTrue(&quot;Concatenation of arrays incorrect.&quot;,
+                   Arrays.equals(&quot;abcdefg&quot;.getBytes(), ByteUtils.cat(&quot;ab&quot;.getBytes(),
+                                                                     &quot;&quot;.getBytes(),
+                                                                     &quot;cdef&quot;.getBytes(),
+                                                                     &quot;g&quot;.getBytes())));
+    }
+
+    public void testCopy() {
+        assertTrue(&quot;Copy of no bytes is not empty array.&quot;,
+                   Arrays.equals(new byte[0], ByteUtils.copy(&quot;hello&quot;.getBytes(), 0, 0)));
+        assertTrue(&quot;Copy of negetive bytes is not empty array.&quot;,
+                   Arrays.equals(new byte[0], ByteUtils.copy(&quot;hello&quot;.getBytes(), 2, 0)));
+        assertTrue(&quot;Bytes copy incorrectly&quot;,
+                   Arrays.equals(&quot;hell&quot;.getBytes(), ByteUtils.copy(&quot;hello&quot;.getBytes(), 0, 4)));
+    }
+
+    public void testReadWriteShort() {
+        byte[] bytes = new byte[4];
+        ByteUtils.writeShort(bytes, (short) 5, 0);
+        assertEquals(&quot;Read value not equal to written value.&quot;,
+                     (short) 5,
+                     ByteUtils.readShort(bytes, 0));
+        ByteUtils.writeShort(bytes, (short) 500, 2);
+        assertEquals(&quot;Read value not equal to written value.&quot;,
+                     (short) 500,
+                     ByteUtils.readShort(bytes, 2));
+    }
+
+    public void testReadWriteLong() {
+        byte[] bytes = new byte[8];
+        ByteUtils.writeLong(bytes, 5, 0);
+        assertEquals(&quot;Read value not equal to written value.&quot;, 5, ByteUtils.readLong(bytes, 0));
+        long value = System.currentTimeMillis();
+        ByteUtils.writeLong(bytes, value, 0);
+        assertEquals(&quot;Read value not equal to written value.&quot;, value, ByteUtils.readLong(bytes, 0));
+    }
+
+    public void testReadWriteInt() {
         byte[] bytes = new byte[8];
         ByteUtils.writeInt(bytes, 5, 0);
         assertEquals(&quot;Read value not equal to written value.&quot;, 5, ByteUtils.readInt(bytes, 0));
@@ -58,99 +80,117 @@ public class UtilsTest extends TestCase {
         ByteUtils.writeInt(bytes, value, 0);
         assertEquals(&quot;Read value not equal to written value.&quot;, value, ByteUtils.readInt(bytes, 0));
     }
-   
-   public void testConstruct() {
-       String str = &quot;hello&quot;;
-       String str2 = ReflectUtils.construct(String.class, new Object[]{str});
-       assertEquals(str, str2);
-   }
-   
-   public void testReadWriteBytes() {
-       byte[] bytes = new byte[8];
-       ByteUtils.writeBytes(bytes, 5, 0, 8);
-       assertEquals(&quot;Read value not equal to written value.&quot;, 5, ByteUtils.readBytes(bytes, 0, 8));
-       long value = System.currentTimeMillis();
-       ByteUtils.writeBytes(bytes, value, 0, 8);
-       assertEquals(&quot;Read value not equal to written value.&quot;, value, ByteUtils.readBytes(bytes, 0, 8));
-       bytes = new byte[24];
-       ByteUtils.writeBytes(bytes, value, 8, 8);
-       assertEquals(&quot;Read value not equal to written value.&quot;, value, ByteUtils.readBytes(bytes, 8, 8));
-   }
-   
-   public void testGetNumberOfRequiredBytes() {
-       assertEquals(1, ByteUtils.numberOfBytesRequired(0));
-       assertEquals(1, ByteUtils.numberOfBytesRequired(1));
-       assertEquals(2, ByteUtils.numberOfBytesRequired(257));
-       assertEquals(3, ByteUtils.numberOfBytesRequired(3 * Short.MAX_VALUE));
-       
-   }
-   
-   public void testToString() {
-       assertEquals(&quot;010203&quot;, ByteUtils.toHexString(new byte[]{1,2,3}));
-       assertEquals(&quot;afadae&quot;, ByteUtils.toHexString(new byte[]{(byte) 0xaf, (byte) 0xad, (byte) 0xae}));
-       assertEquals(&quot;00000001&quot; + &quot;00000010&quot; + &quot;00000011&quot;, ByteUtils.toBinaryString(new byte[]{1,2,3}));
-       assertEquals(&quot;10101111&quot; + &quot;10101101&quot; + &quot;10101110&quot;, ByteUtils.toBinaryString(new byte[]{(byte) 0xaf, (byte) 0xad, (byte) 0xae}));
-       		
-   }
-   
-   public void testNthByte() {
-       assertEquals((byte) 0xFF, ByteUtils.readNthByte(Long.MAX_VALUE, 0));
-       assertEquals((byte) 0xFF, ByteUtils.readNthByte(Long.MAX_VALUE, 1));
-       testNthByteRead(&quot;aa&quot;, &quot;bbaa&quot;, 0);
-       testNthByteRead(&quot;bb&quot;, &quot;bbaa&quot;, 1);
-       testNthByteRead(&quot;bb&quot;, &quot;bbaa&quot;, 1);
-       testNthByteRead(&quot;cc&quot;, &quot;aabbccddeeff&quot;, 3);
-   }
-   
-   public void testNthByteRead(String theByte, String theLong, int nth) {
-       assertEquals(2, theByte.length());
-       assertTrue(theByte.length() &lt;= theLong.length());
-       long asLong = Long.parseLong(theLong, 16);
-       byte asByte = (byte) Short.parseShort(theByte, 16);
-       assertEquals(asByte, ByteUtils.readNthByte(asLong, nth));
-   }
-   
-   public void testVarNumberSerialization() throws Exception {
-       varNumber(128);
-       List&lt;Long&gt; values = Arrays.asList(0L, 1L, 2L, 62L, 63L, 64L, 
-                                         126L, 127L, 128L, 536870911L, 
-                                         536870912L, 2147483647L, 2147483657L, 
-                                         17179869184L);
-       for(long v: values) {
-           varNumber(v);
-           // varNumber(-v);
-       }
-   }
-   
-   public void varNumber(long value) throws IOException {
-       //System.out.println(&quot;Got: &quot; + Long.toBinaryString(value));
-       ByteArrayOutputStream out = new ByteArrayOutputStream();
-       DataOutputStream dataOut = new DataOutputStream(out);
-       ByteUtils.writeVarNumber(value, dataOut);
-       dataOut.flush();
-       //System.out.println(&quot;Bytes: &quot; + ByteUtils.toBinaryString(out.toByteArray()));
-       ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
-       DataInputStream dataIn = new DataInputStream(in);
-       long found = ByteUtils.readVarNumber(dataIn);
-       //System.out.println(&quot;Found: &quot; + Long.toBinaryString(found));
-       assertEquals(value, found);
-   }
-   
-   public void testMd5() {
-       ByteUtils.md5(&quot;hello&quot;.getBytes());
-   }
-   
-   public void testSha1() {
-       ByteUtils.sha1(&quot;hello&quot;.getBytes());
-   }
-   
-   public void testByteComparison() {
-       assertEquals(0, ByteUtils.compare(new byte[]{}, new byte[]{}));
-       assertEquals(1, ByteUtils.compare(new byte[]{1}, new byte[]{}));
-       assertEquals(-1, ByteUtils.compare(new byte[]{}, new byte[]{1}));
-       assertEquals(0, ByteUtils.compare(new byte[]{0,1,2}, new byte[]{0,1,2}));
-       assertEquals(-1, ByteUtils.compare(new byte[]{0,1,1}, new byte[]{0,1,2}));
-       assertEquals(-1, ByteUtils.compare(new byte[]{-1,2,3}, new byte[]{0,1,2}));
-   }
-   
+
+    public void testConstruct() {
+        String str = &quot;hello&quot;;
+        String str2 = ReflectUtils.construct(String.class, new Object[] { str });
+        assertEquals(str, str2);
+    }
+
+    public void testReadWriteBytes() {
+        byte[] bytes = new byte[8];
+        ByteUtils.writeBytes(bytes, 5, 0, 8);
+        assertEquals(&quot;Read value not equal to written value.&quot;, 5, ByteUtils.readBytes(bytes, 0, 8));
+        long value = System.currentTimeMillis();
+        ByteUtils.writeBytes(bytes, value, 0, 8);
+        assertEquals(&quot;Read value not equal to written value.&quot;, value, ByteUtils.readBytes(bytes,
+                                                                                          0,
+                                                                                          8));
+        bytes = new byte[24];
+        ByteUtils.writeBytes(bytes, value, 8, 8);
+        assertEquals(&quot;Read value not equal to written value.&quot;, value, ByteUtils.readBytes(bytes,
+                                                                                          8,
+                                                                                          8));
+    }
+
+    public void testGetNumberOfRequiredBytes() {
+        assertEquals(1, ByteUtils.numberOfBytesRequired(0));
+        assertEquals(1, ByteUtils.numberOfBytesRequired(1));
+        assertEquals(2, ByteUtils.numberOfBytesRequired(257));
+        assertEquals(3, ByteUtils.numberOfBytesRequired(3 * Short.MAX_VALUE));
+
+    }
+
+    public void testToString() {
+        assertEquals(&quot;010203&quot;, ByteUtils.toHexString(new byte[] { 1, 2, 3 }));
+        assertEquals(&quot;afadae&quot;, ByteUtils.toHexString(new byte[] { (byte) 0xaf, (byte) 0xad,
+                (byte) 0xae }));
+        assertEquals(&quot;00000001&quot; + &quot;00000010&quot; + &quot;00000011&quot;, ByteUtils.toBinaryString(new byte[] { 1,
+                2, 3 }));
+        assertEquals(&quot;10101111&quot; + &quot;10101101&quot; + &quot;10101110&quot;, ByteUtils.toBinaryString(new byte[] {
+                (byte) 0xaf, (byte) 0xad, (byte) 0xae }));
+
+    }
+
+    public void testNthByte() {
+        assertEquals((byte) 0xFF, ByteUtils.readNthByte(Long.MAX_VALUE, 0));
+        assertEquals((byte) 0xFF, ByteUtils.readNthByte(Long.MAX_VALUE, 1));
+        testNthByteRead(&quot;aa&quot;, &quot;bbaa&quot;, 0);
+        testNthByteRead(&quot;bb&quot;, &quot;bbaa&quot;, 1);
+        testNthByteRead(&quot;bb&quot;, &quot;bbaa&quot;, 1);
+        testNthByteRead(&quot;cc&quot;, &quot;aabbccddeeff&quot;, 3);
+    }
+
+    public void testNthByteRead(String theByte, String theLong, int nth) {
+        assertEquals(2, theByte.length());
+        assertTrue(theByte.length() &lt;= theLong.length());
+        long asLong = Long.parseLong(theLong, 16);
+        byte asByte = (byte) Short.parseShort(theByte, 16);
+        assertEquals(asByte, ByteUtils.readNthByte(asLong, nth));
+    }
+
+    public void testVarNumberSerialization() throws Exception {
+        varNumber(128);
+        List&lt;Long&gt; values = Arrays.asList(0L,
+                                          1L,
+                                          2L,
+                                          62L,
+                                          63L,
+                                          64L,
+                                          126L,
+                                          127L,
+                                          128L,
+                                          536870911L,
+                                          536870912L,
+                                          2147483647L,
+                                          2147483657L,
+                                          17179869184L);
+        for(long v: values) {
+            varNumber(v);
+            // varNumber(-v);
+        }
+    }
+
+    public void varNumber(long value) throws IOException {
+        // System.out.println(&quot;Got: &quot; + Long.toBinaryString(value));
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        DataOutputStream dataOut = new DataOutputStream(out);
+        ByteUtils.writeVarNumber(value, dataOut);
+        dataOut.flush();
+        // System.out.println(&quot;Bytes: &quot; +
+        // ByteUtils.toBinaryString(out.toByteArray()));
+        ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
+        DataInputStream dataIn = new DataInputStream(in);
+        long found = ByteUtils.readVarNumber(dataIn);
+        // System.out.println(&quot;Found: &quot; + Long.toBinaryString(found));
+        assertEquals(value, found);
+    }
+
+    public void testMd5() {
+        ByteUtils.md5(&quot;hello&quot;.getBytes());
+    }
+
+    public void testSha1() {
+        ByteUtils.sha1(&quot;hello&quot;.getBytes());
+    }
+
+    public void testByteComparison() {
+        assertEquals(0, ByteUtils.compare(new byte[] {}, new byte[] {}));
+        assertEquals(1, ByteUtils.compare(new byte[] { 1 }, new byte[] {}));
+        assertEquals(-1, ByteUtils.compare(new byte[] {}, new byte[] { 1 }));
+        assertEquals(0, ByteUtils.compare(new byte[] { 0, 1, 2 }, new byte[] { 0, 1, 2 }));
+        assertEquals(-1, ByteUtils.compare(new byte[] { 0, 1, 1 }, new byte[] { 0, 1, 2 }));
+        assertEquals(-1, ByteUtils.compare(new byte[] { -1, 2, 3 }, new byte[] { 0, 1, 2 }));
+    }
+
 }</diff>
      <filename>test/unit/voldemort/UtilsTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 import java.net.URISyntaxException;</diff>
      <filename>test/unit/voldemort/client/AbstractStoreClientFactoryTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 import org.mortbay.jetty.Server;
@@ -9,7 +25,7 @@ import voldemort.store.http.HttpStore;
 
 /**
  * @author jay
- *
+ * 
  */
 public class HttpStoreClientFactoryTest extends AbstractStoreClientFactoryTest {
 
@@ -17,33 +33,44 @@ public class HttpStoreClientFactoryTest extends AbstractStoreClientFactoryTest {
     private Server server;
     private Context context;
     private String url;
-    
+
     public void setUp() throws Exception {
         super.setUp();
         int httpPort = 8080;
         url = &quot;http://localhost:&quot; + httpPort;
-        context = ServerTestUtils.getJettyServer(getClusterXml(), 
-                                                 getStoreDefXml(), 
-                                                 getValidStoreName(), 
+        context = ServerTestUtils.getJettyServer(getClusterXml(),
+                                                 getStoreDefXml(),
+                                                 getValidStoreName(),
                                                  httpPort);
         server = context.getServer();
         httpStore = ServerTestUtils.getHttpStore(getValidStoreName(), httpPort);
     }
-    
+
     public void tearDown() throws Exception {
         httpStore.close();
         server.stop();
         context.destroy();
     }
-    
+
     @Override
-    protected StoreClientFactory getFactory(String...bootstrapUrls) {
+    protected StoreClientFactory getFactory(String... bootstrapUrls) {
         return new HttpStoreClientFactory(4, bootstrapUrls);
     }
-    
+
     @Override
-    protected StoreClientFactory getFactoryWithSerializer(SerializerFactory factory, String...bootstrapUrls) {
-        return new HttpStoreClientFactory(3, 1000, 1000, 0, 1000, 1000, 10000, 10, 10, factory, bootstrapUrls);
+    protected StoreClientFactory getFactoryWithSerializer(SerializerFactory factory,
+                                                          String... bootstrapUrls) {
+        return new HttpStoreClientFactory(3,
+                                          1000,
+                                          1000,
+                                          0,
+                                          1000,
+                                          1000,
+                                          10000,
+                                          10,
+                                          10,
+                                          factory,
+                                          bootstrapUrls);
     }
 
     @Override</diff>
      <filename>test/unit/voldemort/client/HttpStoreClientFactoryTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.client;
 
 import java.net.URISyntaxException;
@@ -9,16 +25,16 @@ import voldemort.server.socket.SocketServer;
 
 /**
  * @author jay
- *
+ * 
  */
 public class SocketStoreClientFactoryTest extends AbstractStoreClientFactoryTest {
 
     private SocketServer server;
-    
+
     public SocketStoreClientFactoryTest() {
         super();
     }
-    
+
     @Override
     public void setUp() throws Exception {
         super.setUp();
@@ -32,18 +48,25 @@ public class SocketStoreClientFactoryTest extends AbstractStoreClientFactoryTest
         super.tearDown();
         server.shutdown();
     }
-    
+
     @Override
-    protected StoreClientFactory getFactory(String...bootstrapUrls) {
-        return new SocketStoreClientFactory(Executors.newCachedThreadPool(), 5, 10, 1000, 1000, 10000, bootstrapUrls);
+    protected StoreClientFactory getFactory(String... bootstrapUrls) {
+        return new SocketStoreClientFactory(Executors.newCachedThreadPool(),
+                                            5,
+                                            10,
+                                            1000,
+                                            1000,
+                                            10000,
+                                            bootstrapUrls);
     }
 
     @Override
-    protected StoreClientFactory getFactoryWithSerializer(SerializerFactory factory, String...bootstrapUrls) {
-        return new SocketStoreClientFactory(Executors.newCachedThreadPool(), 
-                                            5, 
-                                            10, 
-                                            1000, 
+    protected StoreClientFactory getFactoryWithSerializer(SerializerFactory factory,
+                                                          String... bootstrapUrls) {
+        return new SocketStoreClientFactory(Executors.newCachedThreadPool(),
+                                            5,
+                                            10,
+                                            1000,
                                             1000,
                                             1000,
                                             factory,</diff>
      <filename>test/unit/voldemort/client/SocketStoreClientFactoryTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.cluster;
 
 import java.util.HashSet;
@@ -14,55 +30,75 @@ public class TestCluster extends TestCase {
     private MockTime time = new MockTime();
     private List&lt;Node&gt; nodes;
     private Cluster cluster;
-    
+
     public void setUp() {
-        this.nodes = ImmutableList.of(new Node(1, &quot;test1&quot;, 1, 1, ImmutableList.of(1,2,3), new NodeStatus(time)),
-                                      new Node(2, &quot;test1&quot;, 2, 2, ImmutableList.of(3,5,6), new NodeStatus(time)),
-                                      new Node(3, &quot;test1&quot;, 3, 3, ImmutableList.of(7,8,9), new NodeStatus(time)),
-                                      new Node(4, &quot;test1&quot;, 4, 4, ImmutableList.of(10,11,12), new NodeStatus(time)));
+        this.nodes = ImmutableList.of(new Node(1,
+                                               &quot;test1&quot;,
+                                               1,
+                                               1,
+                                               ImmutableList.of(1, 2, 3),
+                                               new NodeStatus(time)),
+                                      new Node(2,
+                                               &quot;test1&quot;,
+                                               2,
+                                               2,
+                                               ImmutableList.of(3, 5, 6),
+                                               new NodeStatus(time)),
+                                      new Node(3,
+                                               &quot;test1&quot;,
+                                               3,
+                                               3,
+                                               ImmutableList.of(7, 8, 9),
+                                               new NodeStatus(time)),
+                                      new Node(4,
+                                               &quot;test1&quot;,
+                                               4,
+                                               4,
+                                               ImmutableList.of(10, 11, 12),
+                                               new NodeStatus(time)));
         this.cluster = new Cluster(clusterName, nodes);
     }
-    
+
     public void testBasics() {
         assertEquals(nodes.size(), cluster.getNumberOfNodes());
         assertEquals(new HashSet&lt;Node&gt;(nodes), new HashSet&lt;Node&gt;(cluster.getNodes()));
         assertEquals(clusterName, cluster.getName());
         assertEquals(nodes.get(0), cluster.getNodeById(1));
     }
-    
+
     public void testStatusBeginsAsAvailable() {
         for(Node n: cluster.getNodes()) {
             assertTrue(&quot;Node &quot; + n.getId() + &quot; is not available.&quot;, n.getStatus().isAvailable());
             assertFalse(&quot;Node &quot; + n.getId() + &quot; is not available.&quot;, n.getStatus().isUnavailable());
         }
     }
-    
+
     public void testUnavailability() {
         Node n = cluster.getNodeById(1);
         NodeStatus status = n.getStatus();
-        
+
         // begins available
         assertTrue(status.isAvailable());
         assertFalse(status.isUnavailable());
-        
+
         // if set unavailable, is unavailable
         status.setUnavailable();
         assertFalse(status.isAvailable());
         assertTrue(status.isUnavailable());
         assertTrue(status.isUnavailable(10));
-        
+
         // after 11 ms of no ops, still unavailable, but not
         // if checked with expiration
         time.addMilliseconds(11);
         assertTrue(status.isUnavailable());
         assertFalse(status.isAvailable());
         assertFalse(status.isUnavailable(10));
-        
+
         // if we set it back to available then it is available again
         status.setAvailable();
         assertTrue(status.isAvailable());
         assertFalse(status.isUnavailable());
         assertFalse(status.isUnavailable(10));
     }
-    
+
 }</diff>
      <filename>test/unit/voldemort/cluster/TestCluster.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.routing;
 
 import java.text.NumberFormat;
@@ -23,10 +39,10 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Multiset;
 
 public class ConsistentRoutingStrategyTest extends TestCase {
-    
+
     private final byte[] key = new byte[0];
     private final Time time = new MockTime(0);
-    
+
     private List&lt;Node&gt; getTestNodes() {
         return ImmutableList.of(node(0, 2, 7, 14),
                                 node(1, 1, 10, 13),
@@ -35,130 +51,139 @@ public class ConsistentRoutingStrategyTest extends TestCase {
                                 node(4, 6, 9, 15),
                                 node(5, 4, 8, 12));
     }
-    
+
     public ConsistentRoutingStrategy getRouter(HashFunction hash, int replicationFactor) {
         return new ConsistentRoutingStrategy(hash, getTestNodes(), replicationFactor);
     }
-    
+
     public ConsistentRoutingStrategy getRouter(int hashValue, int replicationFactor) {
         List&lt;Node&gt; nodes = getTestNodes();
-	    return new ConsistentRoutingStrategy(new ConstantHashFunction(hashValue), 
-	            nodes, replicationFactor);
-	}
-
-	public void test1xReplication() {
-		assertNodeOrder(getRouter(0, 1).routeRequest(key), 3);
-		assertNodeOrder(getRouter(14, 1).routeRequest(key), 0);
-		assertNodeOrder(getRouter(4, 1).routeRequest(key), 5);
-	}
-	
-	public void test3xReplcation() {
-	    assertNodeOrder(getRouter(0, 3).routeRequest(key), 3, 1, 0);
+        return new ConsistentRoutingStrategy(new ConstantHashFunction(hashValue),
+                                             nodes,
+                                             replicationFactor);
+    }
+
+    public void test1xReplication() {
+        assertNodeOrder(getRouter(0, 1).routeRequest(key), 3);
+        assertNodeOrder(getRouter(14, 1).routeRequest(key), 0);
+        assertNodeOrder(getRouter(4, 1).routeRequest(key), 5);
+    }
+
+    public void test3xReplcation() {
+        assertNodeOrder(getRouter(0, 3).routeRequest(key), 3, 1, 0);
         assertNodeOrder(getRouter(14, 3).routeRequest(key), 0, 4, 3);
-	    assertNodeOrder(getRouter(4, 3).routeRequest(key), 5, 2, 4);
-	    assertNodeOrder(getRouter(16, 3).routeRequest(key), 3, 2, 1);
-	}
-	
-	public void testGetNodes() {
-	    getRouter(0, 3).getNodes().containsAll(getTestNodes());
-	}
-	
-	public void testTagAssignment() {
-	    List&lt;Node&gt; nodes = getTestNodes();
-	    ConsistentRoutingStrategy router = getRouter(new FnvHashFunction(), 3);
-	    for(Node n: nodes)
-	        for(Integer tag: n.getPartitionIds())
-	            assertEquals(router.getNodeByPartition(tag), n);
-	    for(int i = 0; i &lt; nodes.size(); i++)
-	        assertEquals(&quot;Unexpected tag assignment for tag &quot; + i + &quot;: &quot;,
-	                     new HashSet&lt;Integer&gt;(nodes.get(i).getPartitionIds()), 
-	                     router.getPartitionsByNode(nodes.get(i)));
-	}
-	
-	public void testLoadBalancing() {
-	    testLoadBalancing(2, 10, 1000, 2);
-	    testLoadBalancing(6, 100, 1000, 3);
-	    testLoadBalancing(10, 200, 10000, 3);
-	}
-	
-	public void testLoadBalancing(int numNodes, int tagsPerNode, int numRequests, int replicationFactor) {
-	    List&lt;Integer&gt; tags = new ArrayList&lt;Integer&gt;();
-	    List&lt;Node&gt; nodes = new ArrayList&lt;Node&gt;();
-	    for(int i = 0; i &lt; numNodes * tagsPerNode; i++)
-	        tags.add(i);
-	    
-	    for(int i = 0; i &lt; numNodes; i++)
-	        nodes.add(new Node(i, &quot;host&quot;, 8080, 6666, tags.subList(tagsPerNode * i, tagsPerNode * (i + 1))));
-	    
-	    // use a seed so that this test is repeatable
+        assertNodeOrder(getRouter(4, 3).routeRequest(key), 5, 2, 4);
+        assertNodeOrder(getRouter(16, 3).routeRequest(key), 3, 2, 1);
+    }
+
+    public void testGetNodes() {
+        getRouter(0, 3).getNodes().containsAll(getTestNodes());
+    }
+
+    public void testTagAssignment() {
+        List&lt;Node&gt; nodes = getTestNodes();
+        ConsistentRoutingStrategy router = getRouter(new FnvHashFunction(), 3);
+        for(Node n: nodes)
+            for(Integer tag: n.getPartitionIds())
+                assertEquals(router.getNodeByPartition(tag), n);
+        for(int i = 0; i &lt; nodes.size(); i++)
+            assertEquals(&quot;Unexpected tag assignment for tag &quot; + i + &quot;: &quot;,
+                         new HashSet&lt;Integer&gt;(nodes.get(i).getPartitionIds()),
+                         router.getPartitionsByNode(nodes.get(i)));
+    }
+
+    public void testLoadBalancing() {
+        testLoadBalancing(2, 10, 1000, 2);
+        testLoadBalancing(6, 100, 1000, 3);
+        testLoadBalancing(10, 200, 10000, 3);
+    }
+
+    public void testLoadBalancing(int numNodes,
+                                  int tagsPerNode,
+                                  int numRequests,
+                                  int replicationFactor) {
+        List&lt;Integer&gt; tags = new ArrayList&lt;Integer&gt;();
+        List&lt;Node&gt; nodes = new ArrayList&lt;Node&gt;();
+        for(int i = 0; i &lt; numNodes * tagsPerNode; i++)
+            tags.add(i);
+
+        for(int i = 0; i &lt; numNodes; i++)
+            nodes.add(new Node(i, &quot;host&quot;, 8080, 6666, tags.subList(tagsPerNode * i, tagsPerNode
+                                                                                    * (i + 1))));
+
+        // use a seed so that this test is repeatable
         Random random = new Random(2158745224L);
-	    Collections.shuffle(nodes, random);
-        
-	    ConsistentRoutingStrategy router = new ConsistentRoutingStrategy(new FnvHashFunction(), nodes, replicationFactor);
+        Collections.shuffle(nodes, random);
+
+        ConsistentRoutingStrategy router = new ConsistentRoutingStrategy(new FnvHashFunction(),
+                                                                         nodes,
+                                                                         replicationFactor);
         for(Node n: nodes)
             assertEquals(tagsPerNode, router.getPartitionsByNode(n).size());
-	    
-	    // do some requests and test the load balancing
-	    Multiset&lt;Integer&gt; masters = new HashMultiset&lt;Integer&gt;();
-	    Multiset&lt;Integer&gt; counts = new HashMultiset&lt;Integer&gt;();
-	    byte[] key = new byte[16];
-	    for(int i = 0; i &lt; numRequests; i++) {
-	        random.nextBytes(key);
-	        List&lt;Node&gt; routed = router.routeRequest(key);
-	        assertEquals(replicationFactor, routed.size());
-	        masters.add(routed.get(0).getId());
-	        for(Node n: routed)
-	            counts.add(n.getId());
-	    }
-
-	    System.out.println(&quot;numNodes = &quot; + numNodes + &quot;, tagsPerNode = &quot; + tagsPerNode + 
-	                       &quot;, numRequests = &quot; + numRequests);
-	    System.out.println(&quot;master node distribution:&quot;);
-	    assertWellBalanced(numNodes, masters);
-	    System.out.println();
-	    System.out.println(&quot;storage node distribution:&quot;);
-	    assertWellBalanced(numNodes, counts);
-	    System.out.println();
-	}
-	
-	private void assertWellBalanced(int numNodes, Multiset&lt;Integer&gt; ids) {
-	    // compute the chi-sq statistic
-	    double expected = ids.size() / (double) numNodes;
-	    double chiSq = 0.0;
-	    int df = numNodes - 1;
+
+        // do some requests and test the load balancing
+        Multiset&lt;Integer&gt; masters = new HashMultiset&lt;Integer&gt;();
+        Multiset&lt;Integer&gt; counts = new HashMultiset&lt;Integer&gt;();
+        byte[] key = new byte[16];
+        for(int i = 0; i &lt; numRequests; i++) {
+            random.nextBytes(key);
+            List&lt;Node&gt; routed = router.routeRequest(key);
+            assertEquals(replicationFactor, routed.size());
+            masters.add(routed.get(0).getId());
+            for(Node n: routed)
+                counts.add(n.getId());
+        }
+
+        System.out.println(&quot;numNodes = &quot; + numNodes + &quot;, tagsPerNode = &quot; + tagsPerNode
+                           + &quot;, numRequests = &quot; + numRequests);
+        System.out.println(&quot;master node distribution:&quot;);
+        assertWellBalanced(numNodes, masters);
+        System.out.println();
+        System.out.println(&quot;storage node distribution:&quot;);
+        assertWellBalanced(numNodes, counts);
+        System.out.println();
+    }
+
+    private void assertWellBalanced(int numNodes, Multiset&lt;Integer&gt; ids) {
+        // compute the chi-sq statistic
+        double expected = ids.size() / (double) numNodes;
+        double chiSq = 0.0;
+        int df = numNodes - 1;
         NumberFormat prct = NumberFormat.getPercentInstance();
         prct.setMaximumFractionDigits(4);
         NumberFormat num = NumberFormat.getInstance();
         num.setMaximumFractionDigits(4);
         num.setMinimumFractionDigits(4);
-	    System.out.println(&quot;node\treqs\tX^2\tskew&quot;);
-	    for(Integer id: ids.elementSet()) {
-	        System.out.println(id + &quot;\t&quot; + ids.count(id) + &quot;\t&quot; + num.format(chiSq(ids.count(id), expected)) + &quot;\t&quot; + prct.format((ids.count(id) - expected)/expected));
-	        chiSq += chiSq(ids.count(id), expected);
-	    }
-	    System.out.println(&quot;X^2 = &quot; + chiSq);
-	    ChiSquare dist = new ChiSquare(df, new MersenneTwister());
-	    // p-value is ~= prob of seeing this distribution from fair router
-	    double pValue = 1.0 - dist.cdf(chiSq);
-	    System.out.println(&quot;p-value = &quot; + pValue);
-	    assertTrue(&quot;Non-uniform load distribution detected.&quot;, pValue &gt;= 0.05);
-	}
-	
-	private double chiSq(double observed, double expected) {
-	    return (observed - expected) * (observed - expected) / expected;
-	}
-	
-	private void assertNodeOrder(List&lt;Node&gt; found, int...expected) {
-	    assertEquals(&quot;Router produced unexpected number of nodes.&quot;, expected.length, found.size());
-	    for(int i = 0; i &lt; found.size(); i++)
-	        assertEquals(expected[i], found.get(i).getId());
-	}
-	
-	private Node node(int id, int...tags) {
-	    List&lt;Integer&gt; list = new ArrayList&lt;Integer&gt;(tags.length);
-	    for(int tag: tags)
-	        list.add(tag);
-	    return new Node(id, &quot;localhost&quot;, 8080, 6666, list, new NodeStatus(time));
-	}
+        System.out.println(&quot;node\treqs\tX^2\tskew&quot;);
+        for(Integer id: ids.elementSet()) {
+            System.out.println(id + &quot;\t&quot; + ids.count(id) + &quot;\t&quot;
+                               + num.format(chiSq(ids.count(id), expected)) + &quot;\t&quot;
+                               + prct.format((ids.count(id) - expected) / expected));
+            chiSq += chiSq(ids.count(id), expected);
+        }
+        System.out.println(&quot;X^2 = &quot; + chiSq);
+        ChiSquare dist = new ChiSquare(df, new MersenneTwister());
+        // p-value is ~= prob of seeing this distribution from fair router
+        double pValue = 1.0 - dist.cdf(chiSq);
+        System.out.println(&quot;p-value = &quot; + pValue);
+        assertTrue(&quot;Non-uniform load distribution detected.&quot;, pValue &gt;= 0.05);
+    }
+
+    private double chiSq(double observed, double expected) {
+        return (observed - expected) * (observed - expected) / expected;
+    }
+
+    private void assertNodeOrder(List&lt;Node&gt; found, int... expected) {
+        assertEquals(&quot;Router produced unexpected number of nodes.&quot;, expected.length, found.size());
+        for(int i = 0; i &lt; found.size(); i++)
+            assertEquals(expected[i], found.get(i).getId());
+    }
+
+    private Node node(int id, int... tags) {
+        List&lt;Integer&gt; list = new ArrayList&lt;Integer&gt;(tags.length);
+        for(int tag: tags)
+            list.add(tag);
+        return new Node(id, &quot;localhost&quot;, 8080, 6666, list, new NodeStatus(time));
+    }
 
 }</diff>
      <filename>test/unit/voldemort/routing/ConsistentRoutingStrategyTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,25 +1,35 @@
-/**
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
  * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
  */
-package voldemort.routing;
 
+package voldemort.routing;
 
 import junit.framework.TestCase;
 
 /**
  * @author jay
- *
+ * 
  */
 public class PartitionedRoutingStrategyTest extends TestCase {
 
-	public void setUp() throws Exception {
-	}
+    public void setUp() throws Exception {}
+
+    public void tearDown() throws Exception {}
 
-	public void tearDown() throws Exception {
-	}
-	
-	public void testToWrite() {
-		// fail(&quot;Write some tests.&quot;);
-	}
+    public void testToWrite() {
+    // fail(&quot;Write some tests.&quot;);
+    }
 
 }</diff>
      <filename>test/unit/voldemort/routing/PartitionedRoutingStrategyTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.scheduled;
 
 import java.util.List;
@@ -40,7 +56,7 @@ public class DataCleanupJobTest extends TestCase {
     }
 
     private void put(String... items) {
-        for(String item : items) {
+        for(String item: items) {
             VectorClock clock = null;
             List&lt;Versioned&lt;String&gt;&gt; found = engine.get(item);
             if(found.size() == 0) {
@@ -56,7 +72,7 @@ public class DataCleanupJobTest extends TestCase {
     }
 
     private void assertContains(String... keys) {
-        for(String key : keys) {
+        for(String key: keys) {
             List&lt;Versioned&lt;String&gt;&gt; found = engine.get(key);
             assertTrue(&quot;Did not find key '&quot; + key + &quot;' in store!&quot;, found.size() &gt; 0);
         }</diff>
      <filename>test/unit/voldemort/scheduled/DataCleanupJobTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.scheduled;
 
 import static voldemort.TestUtils.bytesEqual;
@@ -18,51 +34,60 @@ import voldemort.store.slop.Slop.Operation;
 import voldemort.versioning.Versioned;
 
 public class SlopPusherTest extends TestCase {
-	
-	private StorageEngine&lt;byte[],Slop&gt; slopStore;
-	private Map&lt;Integer,Store&lt;byte[],byte[]&gt;&gt; stores;
-	private SlopPusherJob pusher;
-	private Random random;
-	
-	public SlopPusherTest(String name) {
-		super(name);
-	}
 
-	protected void setUp() throws Exception {
-		slopStore = new InMemoryStorageEngine&lt;byte[],Slop&gt;(&quot;slop&quot;);
-		stores = new HashMap&lt;Integer,Store&lt;byte[],byte[]&gt;&gt;();
-		stores.put(0, new InMemoryStorageEngine&lt;byte[],byte[]&gt;(&quot;0&quot;));
-		stores.put(1, new InMemoryStorageEngine&lt;byte[],byte[]&gt;(&quot;1&quot;));
-		stores.put(2, new InMemoryStorageEngine&lt;byte[],byte[]&gt;(&quot;2&quot;));
-		pusher = new SlopPusherJob(slopStore, stores);
-		random = new Random();
-	}
-	
-	private Slop randomSlop(String name, int nodeId) {
-	    return new Slop(name, Operation.PUT, TestUtils.randomBytes(10), TestUtils.randomBytes(10), nodeId, new Date());
-	}
-	
-	private void testPush(Versioned&lt;Slop&gt;...slops) {
-	    // put all the slop in the slop store
-	    for(Versioned&lt;Slop&gt; s: slops)
-	        slopStore.put(s.getValue().makeKey(), s);
-	    
-	    // run the pusher
-	    pusher.run();
-	    
-	    // now all the slop should be gone and the various stores should have those items
-	    for(Versioned&lt;Slop&gt; vs: slops) {
-	        // check that all the slops are in the stores
-	        // and no new slops have appeared
-	        // and the SloppyStore is now empty
-	        Slop slop = vs.getValue();
-	        assertEquals(&quot;Slop remains.&quot;, 0, slopStore.get(slop.makeKey()).size());
-	        assertTrue(bytesEqual(slop.getValue(), stores.get(slop.getNodeId()).get(slop.makeKey()).get(0).getValue()));
-	    }
-	}
+    private StorageEngine&lt;byte[], Slop&gt; slopStore;
+    private Map&lt;Integer, Store&lt;byte[], byte[]&gt;&gt; stores;
+    private SlopPusherJob pusher;
+    private Random random;
+
+    public SlopPusherTest(String name) {
+        super(name);
+    }
+
+    protected void setUp() throws Exception {
+        slopStore = new InMemoryStorageEngine&lt;byte[], Slop&gt;(&quot;slop&quot;);
+        stores = new HashMap&lt;Integer, Store&lt;byte[], byte[]&gt;&gt;();
+        stores.put(0, new InMemoryStorageEngine&lt;byte[], byte[]&gt;(&quot;0&quot;));
+        stores.put(1, new InMemoryStorageEngine&lt;byte[], byte[]&gt;(&quot;1&quot;));
+        stores.put(2, new InMemoryStorageEngine&lt;byte[], byte[]&gt;(&quot;2&quot;));
+        pusher = new SlopPusherJob(slopStore, stores);
+        random = new Random();
+    }
+
+    private Slop randomSlop(String name, int nodeId) {
+        return new Slop(name,
+                        Operation.PUT,
+                        TestUtils.randomBytes(10),
+                        TestUtils.randomBytes(10),
+                        nodeId,
+                        new Date());
+    }
+
+    private void testPush(Versioned&lt;Slop&gt;... slops) {
+        // put all the slop in the slop store
+        for(Versioned&lt;Slop&gt; s: slops)
+            slopStore.put(s.getValue().makeKey(), s);
+
+        // run the pusher
+        pusher.run();
+
+        // now all the slop should be gone and the various stores should have
+        // those items
+        for(Versioned&lt;Slop&gt; vs: slops) {
+            // check that all the slops are in the stores
+            // and no new slops have appeared
+            // and the SloppyStore is now empty
+            Slop slop = vs.getValue();
+            assertEquals(&quot;Slop remains.&quot;, 0, slopStore.get(slop.makeKey()).size());
+            assertTrue(bytesEqual(slop.getValue(), stores.get(slop.getNodeId())
+                                                         .get(slop.makeKey())
+                                                         .get(0)
+                                                         .getValue()));
+        }
+    }
 
-	@SuppressWarnings(&quot;unchecked&quot;)
-	public void testPushSingleSlop() {
-	    testPush(new Versioned&lt;Slop&gt;(randomSlop(&quot;0&quot;, 0)));
-	}
+    @SuppressWarnings(&quot;unchecked&quot;)
+    public void testPushSingleSlop() {
+        testPush(new Versioned&lt;Slop&gt;(randomSlop(&quot;0&quot;, 0)));
+    }
 }</diff>
      <filename>test/unit/voldemort/scheduled/SlopPusherTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 import java.util.Date;
@@ -6,21 +22,37 @@ import junit.framework.TestCase;
 import voldemort.store.slop.Slop;
 
 public class SlopSerializerTest extends TestCase {
-	
-	private SlopSerializer serializer;
-	
-	public void setUp() {
-		this.serializer = new SlopSerializer();
-	}
-	
-	private void assertSerializes(Slop slop) {
-		assertEquals(slop, this.serializer.toObject(this.serializer.toBytes(slop)));
-	}
-	
-	public void testSerialization() {
-		assertSerializes(new Slop(&quot;test&quot;, Slop.Operation.DELETE, &quot;hello&quot;.getBytes(), new byte[]{1}, 1, new Date()));
-		assertSerializes(new Slop(&quot;test&quot;, Slop.Operation.GET, &quot;hello there&quot;.getBytes(), new byte[]{1, 3, 23,4,5,6,6}, 1, new Date(0)));
-		assertSerializes(new Slop(&quot;test&quot;, Slop.Operation.PUT, &quot;&quot;.getBytes(), new byte[]{}, 1, new Date()));
-		assertSerializes(new Slop(&quot;test&quot;, Slop.Operation.PUT, &quot;hello&quot;.getBytes(), null, 1, new Date()));
-	}
+
+    private SlopSerializer serializer;
+
+    public void setUp() {
+        this.serializer = new SlopSerializer();
+    }
+
+    private void assertSerializes(Slop slop) {
+        assertEquals(slop, this.serializer.toObject(this.serializer.toBytes(slop)));
+    }
+
+    public void testSerialization() {
+        assertSerializes(new Slop(&quot;test&quot;,
+                                  Slop.Operation.DELETE,
+                                  &quot;hello&quot;.getBytes(),
+                                  new byte[] { 1 },
+                                  1,
+                                  new Date()));
+        assertSerializes(new Slop(&quot;test&quot;, Slop.Operation.GET, &quot;hello there&quot;.getBytes(), new byte[] {
+                1, 3, 23, 4, 5, 6, 6 }, 1, new Date(0)));
+        assertSerializes(new Slop(&quot;test&quot;,
+                                  Slop.Operation.PUT,
+                                  &quot;&quot;.getBytes(),
+                                  new byte[] {},
+                                  1,
+                                  new Date()));
+        assertSerializes(new Slop(&quot;test&quot;,
+                                  Slop.Operation.PUT,
+                                  &quot;hello&quot;.getBytes(),
+                                  null,
+                                  1,
+                                  new Date()));
+    }
 }</diff>
      <filename>test/unit/voldemort/serialization/SlopSerializerTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization;
 
 import static voldemort.TestUtils.getClock;
@@ -5,29 +21,32 @@ import junit.framework.TestCase;
 import voldemort.versioning.Versioned;
 
 public class VersionedSerializerTest extends TestCase {
-	
-	private VersionedSerializer&lt;String&gt; serializer;
-	
-	public void setUp() {
-		this.serializer = new VersionedSerializer&lt;String&gt;(new StringSerializer(&quot;UTF-8&quot;));
-	}
-	
-	private void assertSerializes(String message, Versioned&lt;String&gt; obj) {
-		assertEquals(obj, this.serializer.toObject(this.serializer.toBytes(obj)));
-	}
-	
-	public void testSerialization() {
-		// assertSerializes(&quot;Empty Versioned should equal itself.&quot;,
-		//			     new Versioned&lt;String&gt;(null, getClock()));
-		assertSerializes(&quot;Empty Versioned should equal itself.&quot;,
-			     new Versioned&lt;String&gt;(&quot;&quot;, getClock()));
-		assertSerializes(&quot;Normal string should equal itself.&quot;,
-			     new Versioned&lt;String&gt;(&quot;hello&quot;, getClock()));
-		assertSerializes(&quot;Normal string should equal itself.&quot;,
-			     new Versioned&lt;String&gt;(&quot;hello&quot;, getClock(1,1,1,2,3)));
-		assertSerializes(&quot;Normal string should equal itself.&quot;,
-			     new Versioned&lt;String&gt;(&quot;hello&quot;, getClock(1)));
-		assertSerializes(&quot;Normal string should equal itself.&quot;,
-			     new Versioned&lt;String&gt;(&quot;hello&quot;, null));
-	}
+
+    private VersionedSerializer&lt;String&gt; serializer;
+
+    public void setUp() {
+        this.serializer = new VersionedSerializer&lt;String&gt;(new StringSerializer(&quot;UTF-8&quot;));
+    }
+
+    private void assertSerializes(String message, Versioned&lt;String&gt; obj) {
+        assertEquals(obj, this.serializer.toObject(this.serializer.toBytes(obj)));
+    }
+
+    public void testSerialization() {
+        // assertSerializes(&quot;Empty Versioned should equal itself.&quot;,
+        // new Versioned&lt;String&gt;(null, getClock()));
+        assertSerializes(&quot;Empty Versioned should equal itself.&quot;, new Versioned&lt;String&gt;(&quot;&quot;,
+                                                                                       getClock()));
+        assertSerializes(&quot;Normal string should equal itself.&quot;, new Versioned&lt;String&gt;(&quot;hello&quot;,
+                                                                                     getClock()));
+        assertSerializes(&quot;Normal string should equal itself.&quot;, new Versioned&lt;String&gt;(&quot;hello&quot;,
+                                                                                     getClock(1,
+                                                                                              1,
+                                                                                              1,
+                                                                                              2,
+                                                                                              3)));
+        assertSerializes(&quot;Normal string should equal itself.&quot;, new Versioned&lt;String&gt;(&quot;hello&quot;,
+                                                                                     getClock(1)));
+        assertSerializes(&quot;Normal string should equal itself.&quot;, new Versioned&lt;String&gt;(&quot;hello&quot;, null));
+    }
 }</diff>
      <filename>test/unit/voldemort/serialization/VersionedSerializerTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization.json;
 
 import static voldemort.TestUtils.str;</diff>
      <filename>test/unit/voldemort/serialization/json/JsonReaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.serialization.json;
 
 import static java.util.Arrays.asList;</diff>
      <filename>test/unit/voldemort/serialization/json/JsonTypeSerializerTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,19 +1,35 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server;
 
 import junit.framework.TestCase;
 
 /**
  * @author jay
- *
+ * 
  */
 public class ServiceTest extends TestCase {
-    
+
     public void testBeginsUnstarted() {
         FakeService s = new FakeService();
         assertFalse(s.isStarted());
         assertFalse(s.isStarted());
     }
-    
+
     public void testStartStartsAndStopStops() {
         FakeService s = new FakeService();
         s.start();
@@ -23,7 +39,7 @@ public class ServiceTest extends TestCase {
         s.start();
         assertTrue(s.isStarted());
     }
-    
+
     public void testStartupFailureLeavesUnstarted() {
         FakeService s = new FakeService(new RuntimeException(&quot;FAIL!&quot;), null);
         try {
@@ -32,7 +48,7 @@ public class ServiceTest extends TestCase {
             assertFalse(s.isStarted());
         }
     }
-    
+
     public void testShutdownFailureLeavesUnstarted() {
         FakeService s = new FakeService(null, new RuntimeException(&quot;FAIL!&quot;));
         s.start();
@@ -42,16 +58,16 @@ public class ServiceTest extends TestCase {
             assertFalse(s.isStarted());
         }
     }
-    
+
     private static class FakeService extends AbstractService {
-        
+
         private RuntimeException startException = null;
         private RuntimeException stopException = null;
-        
+
         public FakeService() {
             super(&quot;do-nothing&quot;);
         }
-        
+
         public FakeService(RuntimeException startException, RuntimeException stopException) {
             super(&quot;do-nothing&quot;);
             this.startException = startException;
@@ -69,7 +85,7 @@ public class ServiceTest extends TestCase {
             if(stopException != null)
                 throw stopException;
         }
-        
+
     }
-    
+
 }</diff>
      <filename>test/unit/voldemort/server/ServiceTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.server.socket;
 
 import java.util.concurrent.ConcurrentHashMap;
@@ -5,25 +21,23 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
+import junit.framework.TestCase;
 import voldemort.store.socket.SocketAndStreams;
 import voldemort.store.socket.SocketDestination;
 import voldemort.store.socket.SocketPool;
-import junit.framework.TestCase;
 
 /**
  * @author jay
- *
+ * 
  */
 public class SocketPoolTest extends TestCase {
-    
-    
 
     private int port = 8567;
     private int maxConnections = 3;
     private SocketPool pool;
     private SocketDestination dest;
     private SocketServer server;
-    
+
     public void setUp() {
         this.pool = new SocketPool(maxConnections, maxConnections, 2000);
         this.dest = new SocketDestination(&quot;localhost&quot;, port);
@@ -31,19 +45,19 @@ public class SocketPoolTest extends TestCase {
         this.server.start();
         this.server.awaitStartupCompletion();
     }
-    
+
     public void tearDown() {
         this.pool.close();
         this.server.shutdown();
     }
-    
+
     public void testTwoCheckoutsGetTheSameSocket() throws Exception {
         SocketAndStreams sas1 = pool.checkout(dest);
         pool.checkin(dest, sas1);
         SocketAndStreams sas2 = pool.checkout(dest);
         assertTrue(sas1 == sas2);
     }
-    
+
     public void testClosingSocketDeactivates() throws Exception {
         SocketAndStreams sas1 = pool.checkout(dest);
         sas1.getSocket().close();
@@ -51,7 +65,7 @@ public class SocketPoolTest extends TestCase {
         SocketAndStreams sas2 = pool.checkout(dest);
         assertTrue(sas1 != sas2);
     }
-    
+
     public void testClosingStreamDeactivates() throws Exception {
         SocketAndStreams sas1 = pool.checkout(dest);
         sas1.getOutputStream().close();
@@ -59,13 +73,14 @@ public class SocketPoolTest extends TestCase {
         SocketAndStreams sas2 = pool.checkout(dest);
         assertTrue(sas1 != sas2);
     }
-    
+
     public void testNoChurn() throws Exception {
         ExecutorService service = Executors.newFixedThreadPool(10);
         int numRequests = 1000;
         final CountDownLatch latch = new CountDownLatch(numRequests);
         for(int i = 0; i &lt; numRequests; i++) {
             service.execute(new Runnable() {
+
                 public void run() {
                     SocketAndStreams sas = pool.checkout(dest);
                     pool.checkin(dest, sas);</diff>
      <filename>test/unit/voldemort/server/socket/SocketPoolTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import static voldemort.TestUtils.getClock;
@@ -15,69 +31,69 @@ import voldemort.versioning.Versioned;
 
 import com.google.common.base.Objects;
 
-public abstract class BasicStoreTest&lt;K,V&gt; extends TestCase {
-	
-	public abstract Store&lt;K,V&gt; getStore();
-	
-	public abstract List&lt;V&gt; getValues(int numValues);
-	
-	public abstract List&lt;K&gt; getKeys(int numKeys);
-	
-	public List&lt;String&gt; getStrings(int numKeys, int size) {
-		List&lt;String&gt; ts = new ArrayList&lt;String&gt;(numKeys);
-		for(int i = 0; i &lt; numKeys; i++)
-			ts.add(randomLetters(size));
-		return ts;
-	}
-	
-	public List&lt;byte[]&gt; getByteValues(int numValues, int size) {
+public abstract class BasicStoreTest&lt;K, V&gt; extends TestCase {
+
+    public abstract Store&lt;K, V&gt; getStore();
+
+    public abstract List&lt;V&gt; getValues(int numValues);
+
+    public abstract List&lt;K&gt; getKeys(int numKeys);
+
+    public List&lt;String&gt; getStrings(int numKeys, int size) {
+        List&lt;String&gt; ts = new ArrayList&lt;String&gt;(numKeys);
+        for(int i = 0; i &lt; numKeys; i++)
+            ts.add(randomLetters(size));
+        return ts;
+    }
+
+    public List&lt;byte[]&gt; getByteValues(int numValues, int size) {
         List&lt;byte[]&gt; values = new ArrayList&lt;byte[]&gt;();
         for(int i = 0; i &lt; numValues; i++)
             values.add(TestUtils.randomBytes(size));
         return values;
     }
-	
-	public K getKey() {
-		return getKeys(1).get(0);
-	}
-	
-	public V getValue() {
-		return getValues(1).get(0);
-	}
-	
-	public Version getExpectedVersionAfterPut(Version version) {
-	    return version;
-	}
-	
-	protected boolean valuesEqual(V t1, V t2) {
-		return Objects.equal(t1, t2);
-	}
-	
-	protected void assertEquals(String message, Versioned&lt;V&gt; v1, Versioned&lt;V&gt; v2) {
-		assertEquals(v1, v2);
-	}
-	
-	protected void assertEquals(Versioned&lt;V&gt; v1, Versioned&lt;V&gt; v2) {
-		assertTrue(v1 + &quot; != &quot; + v2 + &quot;.&quot;, valuesEqual(v1.getValue(), v2.getValue()));
-		assertEquals(v1.getVersion(), v2.getVersion());
-	}
-	
-	public void assertContains(Collection&lt;Versioned&lt;V&gt;&gt; collection, Versioned&lt;V&gt; value) {
-		boolean found = false;
-		for(Versioned&lt;V&gt; t: collection)
-			if(valuesEqual(t.getValue(), value.getValue()))
-				found = true;
-		assertTrue(collection + &quot; does not contain &quot; + value + &quot;.&quot;, found);
-	}
-	
-	public void testNullKeys() {
-	    Store&lt;K,V&gt; store = getStore();
-	    try {
-	        store.put(null, new Versioned&lt;V&gt;(getValue()));
-	        fail(&quot;Store should not put null keys!&quot;);
-	    } catch(IllegalArgumentException e) {
-	        // this is good
-	    }
+
+    public K getKey() {
+        return getKeys(1).get(0);
+    }
+
+    public V getValue() {
+        return getValues(1).get(0);
+    }
+
+    public Version getExpectedVersionAfterPut(Version version) {
+        return version;
+    }
+
+    protected boolean valuesEqual(V t1, V t2) {
+        return Objects.equal(t1, t2);
+    }
+
+    protected void assertEquals(String message, Versioned&lt;V&gt; v1, Versioned&lt;V&gt; v2) {
+        assertEquals(v1, v2);
+    }
+
+    protected void assertEquals(Versioned&lt;V&gt; v1, Versioned&lt;V&gt; v2) {
+        assertTrue(v1 + &quot; != &quot; + v2 + &quot;.&quot;, valuesEqual(v1.getValue(), v2.getValue()));
+        assertEquals(v1.getVersion(), v2.getVersion());
+    }
+
+    public void assertContains(Collection&lt;Versioned&lt;V&gt;&gt; collection, Versioned&lt;V&gt; value) {
+        boolean found = false;
+        for(Versioned&lt;V&gt; t: collection)
+            if(valuesEqual(t.getValue(), value.getValue()))
+                found = true;
+        assertTrue(collection + &quot; does not contain &quot; + value + &quot;.&quot;, found);
+    }
+
+    public void testNullKeys() {
+        Store&lt;K, V&gt; store = getStore();
+        try {
+            store.put(null, new Versioned&lt;V&gt;(getValue()));
+            fail(&quot;Store should not put null keys!&quot;);
+        } catch(IllegalArgumentException e) {
+            // this is good
+        }
         try {
             store.get(null);
             fail(&quot;Store should not get null keys!&quot;);
@@ -90,106 +106,124 @@ public abstract class BasicStoreTest&lt;K,V&gt; extends TestCase {
         } catch(IllegalArgumentException e) {
             // this is good
         }
-	}
-	
-	public void testPutNullValue() {
-	    // Store&lt;K,V&gt; store = getStore();
-	    // K key = getKey();
-	    // store.put(key, new Versioned&lt;V&gt;(null));
-	    // List&lt;Versioned&lt;V&gt;&gt; found = store.get(key);
-	    // assertEquals(&quot;Wrong number of values.&quot;, 1, found.size());
-	    // assertEquals(&quot;Returned non-null value.&quot;, null, found.get(0).getValue());
-	}
-	
-	public void testGetAndDeleteNonExistentKey() {
-		K key = getKey();
-		Store&lt;K,V&gt; store = getStore();
-		List&lt;Versioned&lt;V&gt;&gt; found = store.get(key);
-		assertEquals(&quot;Found non-existent key: &quot; + found, 0, found.size());
-		assertTrue(&quot;Delete of non-existent key succeeded.&quot;, !store.delete(key, getClock(1,1,2,2,3,3)));
-	}
-	
-	private void testObsoletePutFails(String message, Store&lt;K,V&gt; store, K key, Versioned&lt;V&gt; versioned) {
-		VectorClock clock = (VectorClock) versioned.getVersion();
-		clock = clock.clone();
-		try {
-			store.put(key, versioned);
-			fail(message);
-		} catch(ObsoleteVersionException e) {
-			// this is good, but check that we didn't fuck with the version
-		    assertEquals(clock, versioned.getVersion());
-		}
-	}
-	
-	public void testFetchedEqualsPut() {
-		K key = getKey();
-		Store&lt;K,V&gt; store = getStore();
-		VectorClock clock = getClock(1,1,2,3,3,4);
-		V value = getValue();
-		assertEquals(&quot;Store not empty at start!&quot;, 0, store.get(key).size());
-		Versioned&lt;V&gt; versioned = new Versioned&lt;V&gt;(value, clock);
-		store.put(key, versioned);
-		List&lt;Versioned&lt;V&gt;&gt; found = store.get(key);
-		assertEquals(&quot;Should only be one version stored.&quot;, 1, found.size());
-		assertTrue(&quot;Values not equal!&quot;, valuesEqual(versioned.getValue(), found.get(0).getValue()));
-	}
-	
-	public void testVersionedPut() {
-		K key = getKey();
-		Store&lt;K,V&gt; store = getStore();
-		VectorClock clock = getClock(1,1);
-		VectorClock clockCopy = clock.clone();
-		V value = getValue();
-		assertEquals(&quot;Store not empty at start!&quot;, 0, store.get(key).size());
-		Versioned&lt;V&gt; versioned = new Versioned&lt;V&gt;(value, clock);
-		
-		// put initial version
-		store.put(key, versioned);
-		assertContains(store.get(key), versioned);
-		
-		// test that putting obsolete versions fails
-		testObsoletePutFails(&quot;Put of identical version/value succeeded.&quot;, store, key, new Versioned&lt;V&gt;(value, clockCopy));
-		testObsoletePutFails(&quot;Put of identical version succeeded.&quot;, store, key, new Versioned&lt;V&gt;(getValue(), clockCopy));
-		testObsoletePutFails(&quot;Put of obsolete version succeeded.&quot;, store, key, new Versioned&lt;V&gt;(getValue(), getClock(1)));
-		assertEquals(&quot;Should still only be one version in store.&quot;, store.get(key).size(), 1);
-		assertContains(store.get(key), versioned);
-		
-		// test that putting a concurrent version succeeds
-		store.put(key, new Versioned&lt;V&gt;(getValue(), getClock(1,2)));
-		assertEquals(2, store.get(key).size());
-		
-		// test that putting an incremented version succeeds
-		Versioned&lt;V&gt; newest = new Versioned&lt;V&gt;(getValue(), getClock(1,1,2,2));
-		store.put(key, newest);
-		assertContains(store.get(key), newest);
-	}
-	
-	public void testDelete() {
-		K key = getKey();
-		Store&lt;K,V&gt; store = getStore();
-		VectorClock c1 = getClock(1,1);
-		VectorClock c2 = getClock(1,2);
-		V value = getValue();
-		
-		// can't delete something that isn't there
-		assertTrue(!store.delete(key, c1));
-		
-		// put two conflicting versions, then delete one
-		Versioned&lt;V&gt; v1 = new Versioned&lt;V&gt;(value, c1);
-		Versioned&lt;V&gt; v2 = new Versioned&lt;V&gt;(value, c2);
-		store.put(key, v1);
-		store.put(key, v2);
-		assertTrue(&quot;Delete failed!&quot;, store.delete(key, v1.getVersion()));
-		List&lt;Versioned&lt;V&gt;&gt; found = store.get(key);
-		
-		// check that there is a single remaining version, namely the non-deleted
-		assertEquals(1, found.size());
-		assertEquals(v2.getVersion(), found.get(0).getVersion());
-		assertTrue(valuesEqual(v2.getValue(), found.get(0).getValue()));
-		
-		// now delete that version too
-		assertTrue(&quot;Delete failed!&quot;, store.delete(key, c2));
-		assertEquals(0, store.get(key).size());
-	}
+    }
+
+    public void testPutNullValue() {
+    // Store&lt;K,V&gt; store = getStore();
+    // K key = getKey();
+    // store.put(key, new Versioned&lt;V&gt;(null));
+    // List&lt;Versioned&lt;V&gt;&gt; found = store.get(key);
+    // assertEquals(&quot;Wrong number of values.&quot;, 1, found.size());
+    // assertEquals(&quot;Returned non-null value.&quot;, null, found.get(0).getValue());
+    }
+
+    public void testGetAndDeleteNonExistentKey() {
+        K key = getKey();
+        Store&lt;K, V&gt; store = getStore();
+        List&lt;Versioned&lt;V&gt;&gt; found = store.get(key);
+        assertEquals(&quot;Found non-existent key: &quot; + found, 0, found.size());
+        assertTrue(&quot;Delete of non-existent key succeeded.&quot;, !store.delete(key, getClock(1,
+                                                                                        1,
+                                                                                        2,
+                                                                                        2,
+                                                                                        3,
+                                                                                        3)));
+    }
+
+    private void testObsoletePutFails(String message,
+                                      Store&lt;K, V&gt; store,
+                                      K key,
+                                      Versioned&lt;V&gt; versioned) {
+        VectorClock clock = (VectorClock) versioned.getVersion();
+        clock = clock.clone();
+        try {
+            store.put(key, versioned);
+            fail(message);
+        } catch(ObsoleteVersionException e) {
+            // this is good, but check that we didn't fuck with the version
+            assertEquals(clock, versioned.getVersion());
+        }
+    }
+
+    public void testFetchedEqualsPut() {
+        K key = getKey();
+        Store&lt;K, V&gt; store = getStore();
+        VectorClock clock = getClock(1, 1, 2, 3, 3, 4);
+        V value = getValue();
+        assertEquals(&quot;Store not empty at start!&quot;, 0, store.get(key).size());
+        Versioned&lt;V&gt; versioned = new Versioned&lt;V&gt;(value, clock);
+        store.put(key, versioned);
+        List&lt;Versioned&lt;V&gt;&gt; found = store.get(key);
+        assertEquals(&quot;Should only be one version stored.&quot;, 1, found.size());
+        assertTrue(&quot;Values not equal!&quot;, valuesEqual(versioned.getValue(), found.get(0).getValue()));
+    }
+
+    public void testVersionedPut() {
+        K key = getKey();
+        Store&lt;K, V&gt; store = getStore();
+        VectorClock clock = getClock(1, 1);
+        VectorClock clockCopy = clock.clone();
+        V value = getValue();
+        assertEquals(&quot;Store not empty at start!&quot;, 0, store.get(key).size());
+        Versioned&lt;V&gt; versioned = new Versioned&lt;V&gt;(value, clock);
+
+        // put initial version
+        store.put(key, versioned);
+        assertContains(store.get(key), versioned);
+
+        // test that putting obsolete versions fails
+        testObsoletePutFails(&quot;Put of identical version/value succeeded.&quot;,
+                             store,
+                             key,
+                             new Versioned&lt;V&gt;(value, clockCopy));
+        testObsoletePutFails(&quot;Put of identical version succeeded.&quot;,
+                             store,
+                             key,
+                             new Versioned&lt;V&gt;(getValue(), clockCopy));
+        testObsoletePutFails(&quot;Put of obsolete version succeeded.&quot;,
+                             store,
+                             key,
+                             new Versioned&lt;V&gt;(getValue(), getClock(1)));
+        assertEquals(&quot;Should still only be one version in store.&quot;, store.get(key).size(), 1);
+        assertContains(store.get(key), versioned);
+
+        // test that putting a concurrent version succeeds
+        store.put(key, new Versioned&lt;V&gt;(getValue(), getClock(1, 2)));
+        assertEquals(2, store.get(key).size());
+
+        // test that putting an incremented version succeeds
+        Versioned&lt;V&gt; newest = new Versioned&lt;V&gt;(getValue(), getClock(1, 1, 2, 2));
+        store.put(key, newest);
+        assertContains(store.get(key), newest);
+    }
+
+    public void testDelete() {
+        K key = getKey();
+        Store&lt;K, V&gt; store = getStore();
+        VectorClock c1 = getClock(1, 1);
+        VectorClock c2 = getClock(1, 2);
+        V value = getValue();
+
+        // can't delete something that isn't there
+        assertTrue(!store.delete(key, c1));
+
+        // put two conflicting versions, then delete one
+        Versioned&lt;V&gt; v1 = new Versioned&lt;V&gt;(value, c1);
+        Versioned&lt;V&gt; v2 = new Versioned&lt;V&gt;(value, c2);
+        store.put(key, v1);
+        store.put(key, v2);
+        assertTrue(&quot;Delete failed!&quot;, store.delete(key, v1.getVersion()));
+        List&lt;Versioned&lt;V&gt;&gt; found = store.get(key);
+
+        // check that there is a single remaining version, namely the
+        // non-deleted
+        assertEquals(1, found.size());
+        assertEquals(v2.getVersion(), found.get(0).getVersion());
+        assertTrue(valuesEqual(v2.getValue(), found.get(0).getValue()));
+
+        // now delete that version too
+        assertTrue(&quot;Delete failed!&quot;, store.delete(key, c2));
+        assertEquals(0, store.get(key).size());
+    }
 
 }</diff>
      <filename>test/unit/voldemort/store/BasicStoreTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import java.util.List;
@@ -7,31 +23,31 @@ import voldemort.versioning.Versioned;
 
 /**
  * @author jay
- *
+ * 
  */
-public abstract class ByteArrayStoreTest extends BasicStoreTest&lt;byte[],byte[]&gt; {
+public abstract class ByteArrayStoreTest extends BasicStoreTest&lt;byte[], byte[]&gt; {
 
     public List&lt;byte[]&gt; getKeys(int numValues) {
         return this.getByteValues(numValues, 8);
     }
-    
-	@Override
-	public List&lt;byte[]&gt; getValues(int numValues) {
-		return this.getByteValues(numValues, 10);
-	}
-
-	@Override
-	protected boolean valuesEqual(byte[] t1, byte[] t2) {
-		return TestUtils.bytesEqual(t1, t2);
-	}
-	
-	public void testEmptyByteArray() {
-	    Store&lt;byte[],byte[]&gt; store = getStore();
-	    Versioned&lt;byte[]&gt; bytes = new Versioned&lt;byte[]&gt;(new byte[0]);
-	    store.put(new byte[0], bytes);
-	    List&lt;Versioned&lt;byte[]&gt;&gt; found = store.get(new byte[0]);
-	    assertEquals(&quot;Incorrect number of results.&quot;, 1, found.size());
-	    assertEquals(&quot;Get doesn't equal put.&quot;, bytes, found.get(0));
-	}
+
+    @Override
+    public List&lt;byte[]&gt; getValues(int numValues) {
+        return this.getByteValues(numValues, 10);
+    }
+
+    @Override
+    protected boolean valuesEqual(byte[] t1, byte[] t2) {
+        return TestUtils.bytesEqual(t1, t2);
+    }
+
+    public void testEmptyByteArray() {
+        Store&lt;byte[], byte[]&gt; store = getStore();
+        Versioned&lt;byte[]&gt; bytes = new Versioned&lt;byte[]&gt;(new byte[0]);
+        store.put(new byte[0], bytes);
+        List&lt;Versioned&lt;byte[]&gt;&gt; found = store.get(new byte[0]);
+        assertEquals(&quot;Incorrect number of results.&quot;, 1, found.size());
+        assertEquals(&quot;Get doesn't equal put.&quot;, bytes, found.get(0));
+    }
 
 }</diff>
      <filename>test/unit/voldemort/store/ByteArrayStoreTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store;
 
 import java.util.Iterator;
@@ -9,77 +25,77 @@ import voldemort.versioning.Versioned;
 
 public abstract class StorageEngineTest extends ByteArrayStoreTest {
 
-	@Override
-	public Store&lt;byte[],byte[]&gt; getStore() {
-		return getStorageEngine();
-	}
-	
-	public abstract StorageEngine&lt;byte[],byte[]&gt; getStorageEngine();
-	
-	public void testGetNoEntries() {
-	    ClosableIterator&lt;Entry&lt;byte[],Versioned&lt;byte[]&gt;&gt;&gt; it = null;
-	    try {
-    	    StorageEngine&lt;byte[],byte[]&gt; engine = getStorageEngine();
-    	    it = engine.entries();
-    	    while(it.hasNext())
-    	        fail(&quot;There shouldn't be any entries in this store.&quot;);
-	    } finally {
-	        if(it != null)
-	            it.close();
-	    }
-	}
-	
+    @Override
+    public Store&lt;byte[], byte[]&gt; getStore() {
+        return getStorageEngine();
+    }
+
+    public abstract StorageEngine&lt;byte[], byte[]&gt; getStorageEngine();
+
+    public void testGetNoEntries() {
+        ClosableIterator&lt;Entry&lt;byte[], Versioned&lt;byte[]&gt;&gt;&gt; it = null;
+        try {
+            StorageEngine&lt;byte[], byte[]&gt; engine = getStorageEngine();
+            it = engine.entries();
+            while(it.hasNext())
+                fail(&quot;There shouldn't be any entries in this store.&quot;);
+        } finally {
+            if(it != null)
+                it.close();
+        }
+    }
+
     public void testIterateOverNullValue() {
-        //StorageEngine&lt;byte[]&gt; engine = getStorageEngine();
-        //engine.put(&quot;null&quot;, new Versioned&lt;byte[]&gt;(null));
-        //ClosableIterator&lt;Entry&lt;Versioned&lt;byte[]&gt;&gt;&gt; it = engine.entries();
-        //Versioned&lt;byte[]&gt; v = it.next().getValue();
-        //assertNull(&quot;Value should remain null.&quot;, v.getValue());
-        //assertTrue(&quot;Two values found?!?&quot;, it.hasNext());
-        //assertNull(it.next());
+    // StorageEngine&lt;byte[]&gt; engine = getStorageEngine();
+    // engine.put(&quot;null&quot;, new Versioned&lt;byte[]&gt;(null));
+    // ClosableIterator&lt;Entry&lt;Versioned&lt;byte[]&gt;&gt;&gt; it = engine.entries();
+    // Versioned&lt;byte[]&gt; v = it.next().getValue();
+    // assertNull(&quot;Value should remain null.&quot;, v.getValue());
+    // assertTrue(&quot;Two values found?!?&quot;, it.hasNext());
+    // assertNull(it.next());
+    }
+
+    public void testGetEntries() {
+        StorageEngine&lt;byte[], byte[]&gt; engine = getStorageEngine();
+        int size = 20;
+        List&lt;byte[]&gt; values = getValues(size);
+        for(int i = 0; i &lt; size; i++)
+            engine.put(Integer.toString(i).getBytes(), new Versioned&lt;byte[]&gt;(values.get(i)));
+
+        ClosableIterator&lt;Entry&lt;byte[], Versioned&lt;byte[]&gt;&gt;&gt; it = engine.entries();
+        for(int i = 0; i &lt; size; i++) {
+            if(!it.hasNext())
+                fail(&quot;Expected &quot; + size + &quot; items but found only &quot; + i);
+            Versioned&lt;byte[]&gt; versioned = it.next().getValue();
+            assertTrue(&quot;Found value that wasn't put!&quot;, remove(values, versioned.getValue()));
+        }
+        assertEquals(&quot;Failed to remove all values!&quot;, 0, values.size());
+        it.close();
+    }
+
+    public void testPruneOnWrite() {
+        StorageEngine&lt;byte[], byte[]&gt; engine = getStorageEngine();
+        Versioned&lt;byte[]&gt; v1 = new Versioned&lt;byte[]&gt;(new byte[] { 1 }, TestUtils.getClock(1));
+        Versioned&lt;byte[]&gt; v2 = new Versioned&lt;byte[]&gt;(new byte[] { 2 }, TestUtils.getClock(2));
+        Versioned&lt;byte[]&gt; v3 = new Versioned&lt;byte[]&gt;(new byte[] { 3 }, TestUtils.getClock(1, 2));
+        byte[] key = new byte[] { 3 };
+        engine.put(key, v1);
+        engine.put(key, v2);
+        assertEquals(2, engine.get(key).size());
+        engine.put(key, v3);
+        assertEquals(1, engine.get(key).size());
+    }
+
+    private boolean remove(List&lt;byte[]&gt; list, byte[] item) {
+        Iterator&lt;byte[]&gt; it = list.iterator();
+        boolean removedSomething = false;
+        while(it.hasNext()) {
+            if(TestUtils.bytesEqual(item, it.next())) {
+                it.remove();
+                removedSomething = true;
+            }
+        }
+        return removedSomething;
     }
-	
-	public void testGetEntries() {
-		StorageEngine&lt;byte[],byte[]&gt; engine = getStorageEngine();
-		int size = 20;
-		List&lt;byte[]&gt; values = getValues(size);
-		for(int i = 0; i &lt; size; i++)
-		    engine.put(Integer.toString(i).getBytes(), new Versioned&lt;byte[]&gt;(values.get(i)));
-		
-		ClosableIterator&lt;Entry&lt;byte[],Versioned&lt;byte[]&gt;&gt;&gt; it = engine.entries();
-		for(int i = 0; i &lt; size; i++) {
-		    if(!it.hasNext())
-		        fail(&quot;Expected &quot; + size + &quot; items but found only &quot; + i);
-		    Versioned&lt;byte[]&gt; versioned = it.next().getValue();
-		    assertTrue(&quot;Found value that wasn't put!&quot;, remove(values, versioned.getValue()));
-		}
-		assertEquals(&quot;Failed to remove all values!&quot;, 0, values.size());
-		it.close();
-	}
-	
-	public void testPruneOnWrite() {
-	    StorageEngine&lt;byte[],byte[]&gt; engine = getStorageEngine();
-	    Versioned&lt;byte[]&gt; v1 = new Versioned&lt;byte[]&gt;(new byte[]{1}, TestUtils.getClock(1));
-	    Versioned&lt;byte[]&gt; v2 = new Versioned&lt;byte[]&gt;(new byte[]{2}, TestUtils.getClock(2));
-	    Versioned&lt;byte[]&gt; v3 = new Versioned&lt;byte[]&gt;(new byte[]{3}, TestUtils.getClock(1,2));
-	    byte[] key = new byte[]{3};
-	    engine.put(key, v1);
-	    engine.put(key, v2);
-	    assertEquals(2, engine.get(key).size());
-	    engine.put(key, v3);
-	    assertEquals(1, engine.get(key).size());
-	}
-	
-	private boolean remove(List&lt;byte[]&gt; list, byte[] item) {
-	    Iterator&lt;byte[]&gt; it = list.iterator();
-	    boolean removedSomething = false;
-	    while(it.hasNext()) {
-	        if(TestUtils.bytesEqual(item, it.next())) {
-	            it.remove();
-	            removedSomething = true;
-	        }
-	    }
-	    return removedSomething;
-	}
 
 }</diff>
      <filename>test/unit/voldemort/store/StorageEngineTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.bdb;
 
 import java.io.File;
@@ -17,72 +33,72 @@ import com.sleepycat.je.DatabaseConfig;
 import com.sleepycat.je.Environment;
 import com.sleepycat.je.EnvironmentConfig;
 
-
 public class BdbStorageEngineTest extends StorageEngineTest {
-	
-	private Environment environment;
-	private Database database;
-	private File tempDir;
-	private BdbStorageEngine store;
-	private DatabaseConfig databaseConfig;
-	private Random random;
 
-	@Override
-	protected void setUp() throws Exception {
-		super.setUp();
-		this.random = new Random();
-		EnvironmentConfig environmentConfig = new EnvironmentConfig();
-		environmentConfig = new EnvironmentConfig();
-		environmentConfig.setTxnNoSync(true);
-		environmentConfig.setAllowCreate(true);
-		environmentConfig.setTransactional(true);
-		this.tempDir = TestUtils.getTempDirectory();
-		this.environment = new Environment(this.tempDir, environmentConfig);
-		this.databaseConfig = new DatabaseConfig();
-		databaseConfig.setAllowCreate(true);
-		databaseConfig.setTransactional(true);
-		databaseConfig.setSortedDuplicates(true);
-		this.database = environment.openDatabase(null, &quot;test&quot;, databaseConfig);
-		this.store = new BdbStorageEngine(&quot;test&quot;, this.environment, this.database);
-	}
-	
-	@Override
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		try {
-			database.close();
-			environment.close();
-		} finally {
-			FileDeleteStrategy.FORCE.delete(tempDir);
-		}
-	}
-	
-	@Override
-	public StorageEngine&lt;byte[],byte[]&gt; getStorageEngine() {
-		return store;
-	}
+    private Environment environment;
+    private Database database;
+    private File tempDir;
+    private BdbStorageEngine store;
+    private DatabaseConfig databaseConfig;
+    private Random random;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        this.random = new Random();
+        EnvironmentConfig environmentConfig = new EnvironmentConfig();
+        environmentConfig = new EnvironmentConfig();
+        environmentConfig.setTxnNoSync(true);
+        environmentConfig.setAllowCreate(true);
+        environmentConfig.setTransactional(true);
+        this.tempDir = TestUtils.getTempDirectory();
+        this.environment = new Environment(this.tempDir, environmentConfig);
+        this.databaseConfig = new DatabaseConfig();
+        databaseConfig.setAllowCreate(true);
+        databaseConfig.setTransactional(true);
+        databaseConfig.setSortedDuplicates(true);
+        this.database = environment.openDatabase(null, &quot;test&quot;, databaseConfig);
+        this.store = new BdbStorageEngine(&quot;test&quot;, this.environment, this.database);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        try {
+            database.close();
+            environment.close();
+        } finally {
+            FileDeleteStrategy.FORCE.delete(tempDir);
+        }
+    }
+
+    @Override
+    public StorageEngine&lt;byte[], byte[]&gt; getStorageEngine() {
+        return store;
+    }
+
+    public void testMakeKey(byte[] key, VectorClock clock) {
+        byte[] keyBytes = BdbStorageEngine.makeKey(key, clock);
+        assertTrue(&quot;Invalid key returned&quot;,
+                   TestUtils.bytesEqual(key, BdbStorageEngine.getObjKey(keyBytes)));
+        assertEquals(&quot;Invalid clock returned&quot;, clock, BdbStorageEngine.getVersion(keyBytes));
+    }
+
+    public void testMakeKey() {
+        testMakeKey(&quot;&quot;.getBytes(), TestUtils.getClock());
+        testMakeKey(&quot;abc&quot;.getBytes(), null);
+        testMakeKey(&quot;hello-there&quot;.getBytes(), TestUtils.getClock(1, 1, 2, 3, 4));
+    }
 
-	public void testMakeKey(byte[] key, VectorClock clock) {
-		byte[] keyBytes = BdbStorageEngine.makeKey(key, clock);
-		assertTrue(&quot;Invalid key returned&quot;, TestUtils.bytesEqual(key, BdbStorageEngine.getObjKey(keyBytes)));
-		assertEquals(&quot;Invalid clock returned&quot;, clock, BdbStorageEngine.getVersion(keyBytes));
-	}
-	
-	public void testMakeKey() {
-		testMakeKey(&quot;&quot;.getBytes(), TestUtils.getClock());
-		testMakeKey(&quot;abc&quot;.getBytes(), null);
-		testMakeKey(&quot;hello-there&quot;.getBytes(), TestUtils.getClock(1, 1, 2, 3, 4));
-	}
-	
-	public void testPersistence() throws Exception {
-	    	StorageEngine&lt;byte[], byte[]&gt; eng = getStorageEngine();
-	    	eng.put(&quot;abc&quot;.getBytes(), new Versioned&lt;byte[]&gt;(&quot;cdef&quot;.getBytes()));
-	    	eng.close();
-	    	this.database = environment.openDatabase(null, &quot;test&quot;, databaseConfig);
-	    	eng = new BdbStorageEngine(&quot;test&quot;, this.environment, this.database);
-	    	List&lt;Versioned&lt;byte[]&gt;&gt; vals = eng.get(&quot;abc&quot;.getBytes());
-	    	assertEquals(1, vals.size());
-	    	TestUtils.bytesEqual(&quot;cdef&quot;.getBytes(), vals.get(0).getValue());
-	}
+    public void testPersistence() throws Exception {
+        StorageEngine&lt;byte[], byte[]&gt; eng = getStorageEngine();
+        eng.put(&quot;abc&quot;.getBytes(), new Versioned&lt;byte[]&gt;(&quot;cdef&quot;.getBytes()));
+        eng.close();
+        this.database = environment.openDatabase(null, &quot;test&quot;, databaseConfig);
+        eng = new BdbStorageEngine(&quot;test&quot;, this.environment, this.database);
+        List&lt;Versioned&lt;byte[]&gt;&gt; vals = eng.get(&quot;abc&quot;.getBytes());
+        assertEquals(1, vals.size());
+        TestUtils.bytesEqual(&quot;cdef&quot;.getBytes(), vals.get(0).getValue());
+    }
 
 }</diff>
      <filename>test/unit/voldemort/store/bdb/BdbStorageEngineTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.filesystem;
 
 import java.io.File;
@@ -10,16 +26,16 @@ import voldemort.TestUtils;
 import voldemort.store.BasicStoreTest;
 import voldemort.store.Store;
 
-public class FilesystemStorageEngineTest extends BasicStoreTest&lt;String,String&gt; {
-    
+public class FilesystemStorageEngineTest extends BasicStoreTest&lt;String, String&gt; {
+
     private List&lt;File&gt; tempDirs;
-    
+
     @Override
     public void setUp() throws Exception {
         super.setUp();
         tempDirs = new ArrayList&lt;File&gt;();
     }
-    
+
     @Override
     public void tearDown() throws Exception {
         super.tearDown();</diff>
      <filename>test/unit/voldemort/store/filesystem/FilesystemStorageEngineTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.http;
 
 import org.apache.commons.httpclient.HttpClient;
@@ -16,66 +32,66 @@ import voldemort.versioning.Versioned;
 
 /**
  * @author jay
- *
+ * 
  */
 public class HttpStoreTest extends ByteArrayStoreTest {
-	
-	private HttpStore httpStore;
-	private Server server;
-	private Context context;
 
-	@Override
-	public void setUp() throws Exception {
-		super.setUp();
-		Cluster cluster = VoldemortTestConstants.getOneNodeCluster();
-		Node node = cluster.getNodes().iterator().next();
-		context = ServerTestUtils.getJettyServer(VoldemortTestConstants.getOneNodeClusterXml(), 
-		                                         VoldemortTestConstants.getSimpleStoreDefinitionsXml(), 
-		                                         &quot;users&quot;, 
-		                                         node.getHttpPort());
-		server = context.getServer();
-		httpStore = ServerTestUtils.getHttpStore(&quot;users&quot;, node.getHttpPort());
-	}
-	
-	public &lt;T extends Exception&gt; void testBadUrlOrPort(String url, int port, Class&lt;T&gt; expected) {
-	    byte[] key = &quot;test&quot;.getBytes();
-		HttpStore badUrlHttpStore = new HttpStore(&quot;test&quot;, url, port, new HttpClient());
-		try {
-			badUrlHttpStore.put(key, new Versioned&lt;byte[]&gt;(&quot;value&quot;.getBytes(), new VectorClock()));
-		} catch(Exception e) {
-			assertTrue(e.getClass().equals(expected));
-		}
-		try {
-			badUrlHttpStore.get(key);
-		} catch(Exception e) {
-			assertTrue(e.getClass().equals(expected));
-		}
-		try {
-			badUrlHttpStore.delete(key, new VectorClock());
-		} catch(Exception e) {
-			assertTrue(e.getClass().equals(expected));
-		}
-	}
-	
-	public void testBadUrl() {
-		testBadUrlOrPort(&quot;asfgsadfsda&quot;, 80, UnreachableStoreException.class);
-	}
-	
-	public void testBadPort() {
-		testBadUrlOrPort(&quot;localhost&quot;, 7777, UnreachableStoreException.class);
-	}
-	
-	@Override
-	public void tearDown() throws Exception {
-		super.tearDown();
-		httpStore.close();
-		server.stop();
-		context.destroy();
-	}
-	
-	@Override
-	public Store&lt;byte[],byte[]&gt; getStore() {
-		return httpStore;
-	}
+    private HttpStore httpStore;
+    private Server server;
+    private Context context;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        Cluster cluster = VoldemortTestConstants.getOneNodeCluster();
+        Node node = cluster.getNodes().iterator().next();
+        context = ServerTestUtils.getJettyServer(VoldemortTestConstants.getOneNodeClusterXml(),
+                                                 VoldemortTestConstants.getSimpleStoreDefinitionsXml(),
+                                                 &quot;users&quot;,
+                                                 node.getHttpPort());
+        server = context.getServer();
+        httpStore = ServerTestUtils.getHttpStore(&quot;users&quot;, node.getHttpPort());
+    }
+
+    public &lt;T extends Exception&gt; void testBadUrlOrPort(String url, int port, Class&lt;T&gt; expected) {
+        byte[] key = &quot;test&quot;.getBytes();
+        HttpStore badUrlHttpStore = new HttpStore(&quot;test&quot;, url, port, new HttpClient());
+        try {
+            badUrlHttpStore.put(key, new Versioned&lt;byte[]&gt;(&quot;value&quot;.getBytes(), new VectorClock()));
+        } catch(Exception e) {
+            assertTrue(e.getClass().equals(expected));
+        }
+        try {
+            badUrlHttpStore.get(key);
+        } catch(Exception e) {
+            assertTrue(e.getClass().equals(expected));
+        }
+        try {
+            badUrlHttpStore.delete(key, new VectorClock());
+        } catch(Exception e) {
+            assertTrue(e.getClass().equals(expected));
+        }
+    }
+
+    public void testBadUrl() {
+        testBadUrlOrPort(&quot;asfgsadfsda&quot;, 80, UnreachableStoreException.class);
+    }
+
+    public void testBadPort() {
+        testBadUrlOrPort(&quot;localhost&quot;, 7777, UnreachableStoreException.class);
+    }
+
+    @Override
+    public void tearDown() throws Exception {
+        super.tearDown();
+        httpStore.close();
+        server.stop();
+        context.destroy();
+    }
+
+    @Override
+    public Store&lt;byte[], byte[]&gt; getStore() {
+        return httpStore;
+    }
 
 }</diff>
      <filename>test/unit/voldemort/store/http/HttpStoreTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.logging;
 
 import java.util.List;
@@ -8,7 +24,7 @@ import voldemort.store.memory.InMemoryStorageEngine;
 
 /**
  * @author jay
- *
+ * 
  */
 public class LoggingStoreTest extends BasicStoreTest&lt;String, String&gt; {
 
@@ -19,7 +35,7 @@ public class LoggingStoreTest extends BasicStoreTest&lt;String, String&gt; {
 
     @Override
     public Store&lt;String, String&gt; getStore() {
-        return new LoggingStore&lt;String,String&gt;(new InMemoryStorageEngine&lt;String,String&gt;(&quot;test-store&quot;));
+        return new LoggingStore&lt;String, String&gt;(new InMemoryStorageEngine&lt;String, String&gt;(&quot;test-store&quot;));
     }
 
     @Override</diff>
      <filename>test/unit/voldemort/store/logging/LoggingStoreTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.memory;
 
 import java.util.List;</diff>
      <filename>test/unit/voldemort/store/memory/CacheStorageEngineTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.memory;
 
 import java.util.ArrayList;
@@ -9,18 +25,18 @@ import voldemort.store.StorageEngineTest;
 
 public class InMemoryStorageEngineTest extends StorageEngineTest {
 
-	private InMemoryStorageEngine&lt;byte[],byte[]&gt; store;
-	
-	@Override
-	public StorageEngine&lt;byte[],byte[]&gt; getStorageEngine() {
-		return store;
-	}
-	
-	@Override
-	public void setUp() throws Exception {
-		super.setUp();
-		this.store = new InMemoryStorageEngine&lt;byte[],byte[]&gt;(&quot;test&quot;);
-	}
+    private InMemoryStorageEngine&lt;byte[], byte[]&gt; store;
+
+    @Override
+    public StorageEngine&lt;byte[], byte[]&gt; getStorageEngine() {
+        return store;
+    }
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        this.store = new InMemoryStorageEngine&lt;byte[], byte[]&gt;(&quot;test&quot;);
+    }
 
     @Override
     public List&lt;byte[]&gt; getKeys(int numKeys) {</diff>
      <filename>test/unit/voldemort/store/memory/InMemoryStorageEngineTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,27 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.metadata;
 
 import junit.framework.TestCase;
 
 public class MetadataStoreTest extends TestCase {
 
-	public void testToWrite() {
-		
-	}
-	
+    public void testToWrite() {
+
+    }
+
 }</diff>
      <filename>test/unit/voldemort/store/metadata/MetadataStoreTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.mysql;
 
 import java.sql.Connection;
@@ -12,9 +28,9 @@ import voldemort.store.StorageEngine;
 import voldemort.store.StorageEngineTest;
 
 public class MysqlStorageEngineTest extends StorageEngineTest {
-    
+
     private MysqlStorageEngine engine;
-    
+
     public void setUp() throws Exception {
         this.engine = (MysqlStorageEngine) getStorageEngine();
         engine.destroy();
@@ -23,14 +39,14 @@ public class MysqlStorageEngineTest extends StorageEngineTest {
     }
 
     @Override
-    public StorageEngine&lt;byte[],byte[]&gt; getStorageEngine() {
+    public StorageEngine&lt;byte[], byte[]&gt; getStorageEngine() {
         return new MysqlStorageEngine(&quot;test_store&quot;, getDataSource());
     }
-    
+
     public void tearDown() {
         engine.destroy();
     }
-    
+
     private DataSource getDataSource() {
         BasicDataSource ds = new BasicDataSource();
         ds.setUrl(&quot;jdbc:mysql://localhost:3306/test&quot;);
@@ -39,7 +55,7 @@ public class MysqlStorageEngineTest extends StorageEngineTest {
         ds.setDriverClassName(&quot;com.mysql.jdbc.Driver&quot;);
         return ds;
     }
-    
+
     public void executeQuery(DataSource datasource, String query) throws SQLException {
         Connection c = datasource.getConnection();
         PreparedStatement s = c.prepareStatement(query);</diff>
      <filename>test/unit/voldemort/store/mysql/MysqlStorageEngineTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.readonly;
 
 import java.util.ArrayList;</diff>
      <filename>test/unit/voldemort/store/readonly/ExternalSorterTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.readonly;
 
 import java.io.BufferedReader;</diff>
      <filename>test/unit/voldemort/store/readonly/JsonStoreBuilderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.routed;
 
 import static java.util.Arrays.asList;
@@ -17,139 +33,143 @@ import com.google.common.collect.Sets;
 
 /**
  * @author jay
- *
+ * 
  */
 @SuppressWarnings(&quot;unchecked&quot;)
-public class ReadRepairerTest extends TestCase
-{
-
-  private ReadRepairer&lt;String,Integer&gt; repairer = new ReadRepairer&lt;String,Integer&gt;();
-  private List&lt;NodeValue&lt;String,Integer&gt;&gt; empty = new ArrayList&lt;NodeValue&lt;String,Integer&gt;&gt;();
-  private Random random = new Random(1456);
-  
-  public void testEmptyList() throws Exception {
-    assertEquals(empty, repairer.getRepairs(empty));
-  }
-  
-  public void testSingleValue() throws Exception {
-    assertEquals(empty, repairer.getRepairs(asList(getValue(1, 1, new int[]{1}))));
-  }
-  
-  public void testAllEqual() throws Exception {
-    List&lt;NodeValue&lt;String,Integer&gt;&gt; values = asList(getValue(1, 1, new int[]{1}),
-                                             getValue(2, 1, new int[]{1}),
-                                             getValue(3, 1, new int[]{1}));
-    assertEquals(empty, repairer.getRepairs(values));
-  }
-  
-  public void testSingleSuccessor() throws Exception {
-    assertVariationsEqual(singletonList(getValue(1, 1, new int[]{1,1})), 
-                          asList(getValue(1, 1, new int[]{1}), 
-                                 getValue(2, 1, new int[]{1,1})));
-  }
-  
-  public void testAllConcurrent() throws Exception {
-    assertVariationsEqual(asList(getValue(1, 1, new int[]{2}),
-                                 getValue(1, 1, new int[]{3}),
-                                 getValue(2, 1, new int[]{1}),
-                                 getValue(2, 1, new int[]{3}),
-                                 getValue(3, 1, new int[]{1}),
-                                 getValue(3, 1, new int[]{2})),
-                          asList(getValue(1, 1, new int[]{1}), 
-                                 getValue(2, 1, new int[]{2}), 
-                                 getValue(3, 1, new int[]{3})));
-  }
-  
-  public void testTwoAncestorsToOneSuccessor() throws Exception {
-    int[] expected = new int[]{1,1,2,2};
-    assertVariationsEqual(asList(getValue(2, 1, expected), 
-                                 getValue(3, 1, expected)), 
-                          asList(getValue(1, 1, expected), 
-                                 getValue(2, 1, new int[]{1}), 
-                                 getValue(3, 1, new int[]{2})));
-  }
-  
-  public void testOneAcestorToTwoSuccessors() throws Exception {
-    int[] expected = new int[]{1,1,2,2};
-    assertVariationsEqual(asList(getValue(2, 1, expected), 
-                                 getValue(3, 1, expected)), 
-                          asList(getValue(1, 1, expected), 
-                                 getValue(2, 1, new int[]{1}), 
-                                 getValue(3, 1, new int[]{2})));
-  }
-  
-  public void testEqualObsoleteVersions() throws Exception {
-    int[] expected = new int[]{1,1};
-    assertVariationsEqual(asList(getValue(1, 1, expected), 
-                                 getValue(2, 1, expected),
-                                 getValue(3, 1, expected)), 
-                          asList(getValue(1, 1, new int[]{}), 
-                                 getValue(2, 1, new int[]{1}), 
-                                 getValue(3, 1, new int[]{1}),
-                                 getValue(4, 1, expected)));
-  }
-  
-  public void testDiamondPattern() throws Exception {
-    int[] expected = new int[]{1,1,2,2};
-    assertVariationsEqual(asList(getValue(1, 1, expected),
-                                 getValue(2, 1, expected), 
-                                 getValue(3, 1, expected)), 
-                          asList(getValue(1, 1, new int[]{}),
-                                 getValue(2, 1, new int[]{1}),
-                                 getValue(3, 1, new int[]{2}),
-                                 getValue(4, 1, expected)));
-  }
-  
-  public void testConcurrentToOneDoesNotImplyConcurrentToAll() throws Exception {
-    assertVariationsEqual(asList(getValue(1, 1, new int[]{1,3,3}),
-                                 getValue(1, 1, new int[]{1,2}),
-                                 getValue(2, 1, new int[]{1,3,3}),
-                                 getValue(3, 1, new int[]{1,2})), 
-                          asList(getValue(1, 1, new int[]{3,3}), 
-                                 getValue(2, 1, new int[]{1,2}), 
-                                 getValue(3, 1, new int[]{1,3,3})));                                                                                       
-  }
-  
-  public void testLotsOfVersions() throws Exception {
-    assertVariationsEqual(asList(getValue(1, 1, new int[]{1,2,2,3}),
-                                 getValue(1, 1, new int[]{1,2,3,3}),
-                                 getValue(2, 1, new int[]{1,2,2,3}),
-                                 getValue(2, 1, new int[]{1,2,3,3}),
-                                 getValue(3, 1, new int[]{1,2,2,3}),
-                                 getValue(3, 1, new int[]{1,2,3,3}),
-                                 getValue(4, 1, new int[]{1,2,3,3}),
-                                 getValue(5, 1, new int[]{1,2,2,3}),
-                                 getValue(6, 1, new int[]{1,2,2,3}),
-                                 getValue(6, 1, new int[]{1,2,3,3})), 
-                          asList(getValue(1, 1, new int[]{1,3}),
-                                 getValue(2, 1, new int[]{1,2}),
-                                 getValue(3, 1, new int[]{2,2}),
-                                 getValue(4, 1, new int[]{1,2,2,3}),
-                                 getValue(5, 1, new int[]{1,2,3,3}),
-                                 getValue(6, 1, new int[]{3,3})));
-  }
-  
-  /**
-   * Test the equality with a few variations on ordering
-   * @param expected List of expected values
-   * @param input List of actual values
-   */
-  public void assertVariationsEqual(List&lt;NodeValue&lt;String,Integer&gt;&gt; expected, List&lt;NodeValue&lt;String,Integer&gt;&gt; input) {
-    List&lt;NodeValue&lt;String,Integer&gt;&gt; copy = new ArrayList&lt;NodeValue&lt;String,Integer&gt;&gt;(input);
-    for(int i = 0; i &lt; Math.min(5, copy.size()); i++) {
-      int j = random.nextInt(copy.size());
-      int k = random.nextInt(copy.size());
-      Collections.swap(copy, j, k);
-      Set&lt;NodeValue&lt;String,Integer&gt;&gt; expSet = Sets.newHashSet(expected);
-      List&lt;NodeValue&lt;String,Integer&gt;&gt; repairs = repairer.getRepairs(copy);
-      Set&lt;NodeValue&lt;String,Integer&gt;&gt; repairSet =Sets.newHashSet(repairs);
-      assertEquals(&quot;Repairs list contains duplicates on iteration&quot; + i + &quot;.&quot;, repairs.size(), repairSet.size());
-      assertEquals(&quot;Expected repairs do not equal found repairs on iteration &quot; + i + &quot; : &quot;, expSet, repairSet);
+public class ReadRepairerTest extends TestCase {
+
+    private ReadRepairer&lt;String, Integer&gt; repairer = new ReadRepairer&lt;String, Integer&gt;();
+    private List&lt;NodeValue&lt;String, Integer&gt;&gt; empty = new ArrayList&lt;NodeValue&lt;String, Integer&gt;&gt;();
+    private Random random = new Random(1456);
+
+    public void testEmptyList() throws Exception {
+        assertEquals(empty, repairer.getRepairs(empty));
+    }
+
+    public void testSingleValue() throws Exception {
+        assertEquals(empty, repairer.getRepairs(asList(getValue(1, 1, new int[] { 1 }))));
+    }
+
+    public void testAllEqual() throws Exception {
+        List&lt;NodeValue&lt;String, Integer&gt;&gt; values = asList(getValue(1, 1, new int[] { 1 }),
+                                                         getValue(2, 1, new int[] { 1 }),
+                                                         getValue(3, 1, new int[] { 1 }));
+        assertEquals(empty, repairer.getRepairs(values));
+    }
+
+    public void testSingleSuccessor() throws Exception {
+        assertVariationsEqual(singletonList(getValue(1, 1, new int[] { 1, 1 })),
+                              asList(getValue(1, 1, new int[] { 1 }), getValue(2, 1, new int[] { 1,
+                                      1 })));
+    }
+
+    public void testAllConcurrent() throws Exception {
+        assertVariationsEqual(asList(getValue(1, 1, new int[] { 2 }),
+                                     getValue(1, 1, new int[] { 3 }),
+                                     getValue(2, 1, new int[] { 1 }),
+                                     getValue(2, 1, new int[] { 3 }),
+                                     getValue(3, 1, new int[] { 1 }),
+                                     getValue(3, 1, new int[] { 2 })),
+                              asList(getValue(1, 1, new int[] { 1 }),
+                                     getValue(2, 1, new int[] { 2 }),
+                                     getValue(3, 1, new int[] { 3 })));
+    }
+
+    public void testTwoAncestorsToOneSuccessor() throws Exception {
+        int[] expected = new int[] { 1, 1, 2, 2 };
+        assertVariationsEqual(asList(getValue(2, 1, expected), getValue(3, 1, expected)),
+                              asList(getValue(1, 1, expected),
+                                     getValue(2, 1, new int[] { 1 }),
+                                     getValue(3, 1, new int[] { 2 })));
+    }
+
+    public void testOneAcestorToTwoSuccessors() throws Exception {
+        int[] expected = new int[] { 1, 1, 2, 2 };
+        assertVariationsEqual(asList(getValue(2, 1, expected), getValue(3, 1, expected)),
+                              asList(getValue(1, 1, expected),
+                                     getValue(2, 1, new int[] { 1 }),
+                                     getValue(3, 1, new int[] { 2 })));
+    }
+
+    public void testEqualObsoleteVersions() throws Exception {
+        int[] expected = new int[] { 1, 1 };
+        assertVariationsEqual(asList(getValue(1, 1, expected),
+                                     getValue(2, 1, expected),
+                                     getValue(3, 1, expected)),
+                              asList(getValue(1, 1, new int[] {}),
+                                     getValue(2, 1, new int[] { 1 }),
+                                     getValue(3, 1, new int[] { 1 }),
+                                     getValue(4, 1, expected)));
+    }
+
+    public void testDiamondPattern() throws Exception {
+        int[] expected = new int[] { 1, 1, 2, 2 };
+        assertVariationsEqual(asList(getValue(1, 1, expected),
+                                     getValue(2, 1, expected),
+                                     getValue(3, 1, expected)),
+                              asList(getValue(1, 1, new int[] {}),
+                                     getValue(2, 1, new int[] { 1 }),
+                                     getValue(3, 1, new int[] { 2 }),
+                                     getValue(4, 1, expected)));
+    }
+
+    public void testConcurrentToOneDoesNotImplyConcurrentToAll() throws Exception {
+        assertVariationsEqual(asList(getValue(1, 1, new int[] { 1, 3, 3 }),
+                                     getValue(1, 1, new int[] { 1, 2 }),
+                                     getValue(2, 1, new int[] { 1, 3, 3 }),
+                                     getValue(3, 1, new int[] { 1, 2 })),
+                              asList(getValue(1, 1, new int[] { 3, 3 }), getValue(2, 1, new int[] {
+                                      1, 2 }), getValue(3, 1, new int[] { 1, 3, 3 })));
+    }
+
+    public void testLotsOfVersions() throws Exception {
+        assertVariationsEqual(asList(getValue(1, 1, new int[] { 1, 2, 2, 3 }),
+                                     getValue(1, 1, new int[] { 1, 2, 3, 3 }),
+                                     getValue(2, 1, new int[] { 1, 2, 2, 3 }),
+                                     getValue(2, 1, new int[] { 1, 2, 3, 3 }),
+                                     getValue(3, 1, new int[] { 1, 2, 2, 3 }),
+                                     getValue(3, 1, new int[] { 1, 2, 3, 3 }),
+                                     getValue(4, 1, new int[] { 1, 2, 3, 3 }),
+                                     getValue(5, 1, new int[] { 1, 2, 2, 3 }),
+                                     getValue(6, 1, new int[] { 1, 2, 2, 3 }),
+                                     getValue(6, 1, new int[] { 1, 2, 3, 3 })),
+                              asList(getValue(1, 1, new int[] { 1, 3 }),
+                                     getValue(2, 1, new int[] { 1, 2 }),
+                                     getValue(3, 1, new int[] { 2, 2 }),
+                                     getValue(4, 1, new int[] { 1, 2, 2, 3 }),
+                                     getValue(5, 1, new int[] { 1, 2, 3, 3 }),
+                                     getValue(6, 1, new int[] { 3, 3 })));
+    }
+
+    /**
+     * Test the equality with a few variations on ordering
+     * 
+     * @param expected List of expected values
+     * @param input List of actual values
+     */
+    public void assertVariationsEqual(List&lt;NodeValue&lt;String, Integer&gt;&gt; expected,
+                                      List&lt;NodeValue&lt;String, Integer&gt;&gt; input) {
+        List&lt;NodeValue&lt;String, Integer&gt;&gt; copy = new ArrayList&lt;NodeValue&lt;String, Integer&gt;&gt;(input);
+        for(int i = 0; i &lt; Math.min(5, copy.size()); i++) {
+            int j = random.nextInt(copy.size());
+            int k = random.nextInt(copy.size());
+            Collections.swap(copy, j, k);
+            Set&lt;NodeValue&lt;String, Integer&gt;&gt; expSet = Sets.newHashSet(expected);
+            List&lt;NodeValue&lt;String, Integer&gt;&gt; repairs = repairer.getRepairs(copy);
+            Set&lt;NodeValue&lt;String, Integer&gt;&gt; repairSet = Sets.newHashSet(repairs);
+            assertEquals(&quot;Repairs list contains duplicates on iteration&quot; + i + &quot;.&quot;,
+                         repairs.size(),
+                         repairSet.size());
+            assertEquals(&quot;Expected repairs do not equal found repairs on iteration &quot; + i + &quot; : &quot;,
+                         expSet,
+                         repairSet);
+        }
+    }
+
+    private NodeValue&lt;String, Integer&gt; getValue(int nodeId, int value, int[] version) {
+        return new NodeValue&lt;String, Integer&gt;(nodeId,
+                                              Integer.toString(value),
+                                              new Versioned&lt;Integer&gt;(value, getClock(version)));
     }
-  }
-  
-  private NodeValue&lt;String,Integer&gt; getValue(int nodeId, int value, int[] version) {
-    return new NodeValue&lt;String, Integer&gt;(nodeId, Integer.toString(value), new Versioned&lt;Integer&gt;(value, getClock(version)));
-  }
 
 }</diff>
      <filename>test/unit/voldemort/store/routed/ReadRepairerTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.routed;
 
 import static voldemort.TestUtils.getClock;
@@ -31,249 +47,312 @@ import com.google.common.collect.Maps;
  * Basic tests for RoutedStore
  * 
  * @author jay
- *
+ * 
  */
 public class RoutedStoreTest extends ByteArrayStoreTest {
-	
-	private Cluster cluster;
-	private final byte[] aKey = &quot;jay&quot;.getBytes();
-	private final byte[] aValue = &quot;kreps&quot;.getBytes();
-	
-	@Override
-	public void setUp() throws Exception {
-		super.setUp();
-		cluster = getNineNodeCluster();
-	}
-	
-	@Override
-	public Store&lt;byte[],byte[]&gt; getStore() {
-		return new InconsistencyResolvingStore&lt;byte[],byte[]&gt;(
-		        getStore(cluster, cluster.getNumberOfNodes(), cluster.getNumberOfNodes(), 4, 0), 
-				new VectorClockInconsistencyResolver&lt;byte[]&gt;());
-	}
-	
-	private RoutedStore getStore(Cluster cluster, 
-	                             int reads, 
-	                             int writes,
-	                             int threads, 
-	                             int failing) {
-	    return getStore(cluster, 
-	                    reads, 
-	                    writes,
-	                    cluster.getNumberOfNodes(),
-	                    threads, 
-	                    failing, 
-	                    0, 
-	                    new RouteToAllStrategy(cluster.getNodes()), 
-	                    new VoldemortException());
-	}
-	
-	private RoutedStore getStore(Cluster cluster, 
-	                             int reads, 
-	                             int writes, 
-	                             int replicationFactor,
-	                             int threads,
-	                             int failing, 
-	                             int sleepy, 
-	                             RoutingStrategy strategy, 
-	                             VoldemortException e) {
-		Map&lt;Integer,Store&lt;byte[],byte[]&gt;&gt; subStores = Maps.newHashMap();
-		int count = 0;
-		for(Node n: cluster.getNodes()) {
-	        if(count &gt;= cluster.getNumberOfNodes())
-	            throw new IllegalArgumentException(failing + &quot; failing nodes, &quot; + sleepy + &quot; sleepy nodes, but only &quot; + 
-	                                               cluster.getNumberOfNodes() + &quot; nodes in the cluster.&quot;);
-	        else if(count &lt; failing)
-				subStores.put(n.getId(), new FailingStore&lt;byte[],byte[]&gt;(&quot;test&quot;, e));
-	        else if(count &lt; failing + sleepy)
-	            subStores.put(n.getId(), new SleepyStore&lt;byte[],byte[]&gt;(Long.MAX_VALUE, 
-	                                                                    new InMemoryStorageEngine&lt;byte[],byte[]&gt;(&quot;test&quot;)));
-	        else
-	            subStores.put(n.getId(), new InMemoryStorageEngine&lt;byte[],byte[]&gt;(&quot;test&quot;));
-
-			count += 1;
-		}
-		return new RoutedStore(&quot;test&quot;, subStores, strategy, reads, writes, threads, true, 1000L);
-	}
-	
-	private int countOccurances(RoutedStore routedStore, byte[] key, Versioned&lt;byte[]&gt; value) {
-		int count = 0;
-		for(Store&lt;byte[],byte[]&gt; store: routedStore.getInnerStores().values())
-			try {
-				if(store.get(key).size() &gt; 0 &amp;&amp; Objects.deepEquals(store.get(key).get(0), value))
-					count += 1;
-			} catch(VoldemortException e) {
-				// This is normal for the failing store...
-			}
-		return count;
-	}
-	
-	private void assertNEqual(RoutedStore routedStore, int expected, byte[] key, Versioned&lt;byte[]&gt; value) {
-		int count = countOccurances(routedStore, key, value);
-		assertEquals(&quot;Expected &quot; + expected + &quot; occurances of '&quot; + key + &quot;' with value '&quot; + value + &quot;', but found &quot; + count + &quot;.&quot;, expected, count);
-	}
-	
-	private void assertNOrMoreEqual(RoutedStore routedStore, int expected, byte[] key, Versioned&lt;byte[]&gt; value) {
-		int count = countOccurances(routedStore, key, value);
-		assertTrue(&quot;Expected &quot; + expected + &quot; or more occurances of '&quot; + key + &quot;' with value '&quot; + value + &quot;', but found &quot; + count + &quot;.&quot;, expected &lt;= count);
-	}
-	
-	public void testBasicOperations(int reads, int writes, int failures, int threads) {
-		RoutedStore routedStore = getStore(cluster, reads, writes, threads, failures);
-		Store&lt;byte[],byte[]&gt; store = new InconsistencyResolvingStore&lt;byte[],byte[]&gt;(routedStore, new VectorClockInconsistencyResolver&lt;byte[]&gt;());
-		VectorClock clock = getClock(1);
-		Versioned&lt;byte[]&gt; versioned = new Versioned&lt;byte[]&gt;(aValue, clock);
-		routedStore.put(aKey, versioned);
-		assertNOrMoreEqual(routedStore, cluster.getNumberOfNodes() - failures, aKey, versioned);
-		List&lt;Versioned&lt;byte[]&gt;&gt; found = store.get(aKey);
-		assertEquals(1, found.size());
-		assertEquals(versioned, found.get(0));
-		assertNOrMoreEqual(routedStore, cluster.getNumberOfNodes() - failures, aKey, versioned);
-		assertTrue(routedStore.delete(aKey, versioned.getVersion()));
-		assertNEqual(routedStore, 0, aKey, versioned);
-		assertTrue(!routedStore.delete(aKey, versioned.getVersion()));
-	}
-	
-	public void testBasicOperationsSingleThreaded() {
-		testBasicOperations(cluster.getNumberOfNodes(), cluster.getNumberOfNodes(), 0, 1);
-	}
-	
-	public void testBasicOperationsMultiThreaded() {
-		testBasicOperations(cluster.getNumberOfNodes(), cluster.getNumberOfNodes(), 0, 4);
-	}
-	
-	public void testBasicOperationsMultiThreadedWithFailures() {
-		testBasicOperations(cluster.getNumberOfNodes() - 2, cluster.getNumberOfNodes() - 2, 2, 4);
-	}
-	
-	public void testBasicOperationFailure(int reads, int writes, int failures, int threads) {
-		VectorClock clock = getClock(1);
-		Versioned&lt;byte[]&gt; versioned = new Versioned&lt;byte[]&gt;(aValue, clock);
-		RoutedStore routedStore = getStore(cluster, 
-		                                   reads, 
-		                                   cluster.getNumberOfNodes(), 
-		                                   writes, 
-		                                   threads, 
-		                                   failures, 
-		                                   0, 
-		                                   new RouteToAllStrategy(cluster.getNodes()), 
-		                                   new UnreachableStoreException(&quot;no go&quot;));
-		try {
-			routedStore.put(aKey, versioned);
-			fail(&quot;Put succeeded with too few operational nodes.&quot;);
-		} catch(InsufficientOperationalNodesException e) {
-			// expected
-		}
-		try {
-			routedStore.get(aKey);
-			fail(&quot;Get succeeded with too few operational nodes.&quot;);
-		} catch(InsufficientOperationalNodesException e) {
-			// expected
-		}
-		try {
-			routedStore.delete(aKey, versioned.getVersion());
-			fail(&quot;Get succeeded with too few operational nodes.&quot;);
-		} catch(InsufficientOperationalNodesException e) {
-			// expected
-		}
-	}
-	
-	public void testBasicOperationFailureMultiThreaded() {
-		testBasicOperationFailure(cluster.getNumberOfNodes() - 2, cluster.getNumberOfNodes() - 2, 4, 4);
-	}
-	
+
+    private Cluster cluster;
+    private final byte[] aKey = &quot;jay&quot;.getBytes();
+    private final byte[] aValue = &quot;kreps&quot;.getBytes();
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        cluster = getNineNodeCluster();
+    }
+
+    @Override
+    public Store&lt;byte[], byte[]&gt; getStore() {
+        return new InconsistencyResolvingStore&lt;byte[], byte[]&gt;(getStore(cluster,
+                                                                        cluster.getNumberOfNodes(),
+                                                                        cluster.getNumberOfNodes(),
+                                                                        4,
+                                                                        0),
+                                                               new VectorClockInconsistencyResolver&lt;byte[]&gt;());
+    }
+
+    private RoutedStore getStore(Cluster cluster, int reads, int writes, int threads, int failing) {
+        return getStore(cluster,
+                        reads,
+                        writes,
+                        cluster.getNumberOfNodes(),
+                        threads,
+                        failing,
+                        0,
+                        new RouteToAllStrategy(cluster.getNodes()),
+                        new VoldemortException());
+    }
+
+    private RoutedStore getStore(Cluster cluster,
+                                 int reads,
+                                 int writes,
+                                 int replicationFactor,
+                                 int threads,
+                                 int failing,
+                                 int sleepy,
+                                 RoutingStrategy strategy,
+                                 VoldemortException e) {
+        Map&lt;Integer, Store&lt;byte[], byte[]&gt;&gt; subStores = Maps.newHashMap();
+        int count = 0;
+        for(Node n: cluster.getNodes()) {
+            if(count &gt;= cluster.getNumberOfNodes())
+                throw new IllegalArgumentException(failing + &quot; failing nodes, &quot; + sleepy
+                                                   + &quot; sleepy nodes, but only &quot;
+                                                   + cluster.getNumberOfNodes()
+                                                   + &quot; nodes in the cluster.&quot;);
+            else if(count &lt; failing)
+                subStores.put(n.getId(), new FailingStore&lt;byte[], byte[]&gt;(&quot;test&quot;, e));
+            else if(count &lt; failing + sleepy)
+                subStores.put(n.getId(),
+                              new SleepyStore&lt;byte[], byte[]&gt;(Long.MAX_VALUE,
+                                                              new InMemoryStorageEngine&lt;byte[], byte[]&gt;(&quot;test&quot;)));
+            else
+                subStores.put(n.getId(), new InMemoryStorageEngine&lt;byte[], byte[]&gt;(&quot;test&quot;));
+
+            count += 1;
+        }
+        return new RoutedStore(&quot;test&quot;, subStores, strategy, reads, writes, threads, true, 1000L);
+    }
+
+    private int countOccurances(RoutedStore routedStore, byte[] key, Versioned&lt;byte[]&gt; value) {
+        int count = 0;
+        for(Store&lt;byte[], byte[]&gt; store: routedStore.getInnerStores().values())
+            try {
+                if(store.get(key).size() &gt; 0 &amp;&amp; Objects.deepEquals(store.get(key).get(0), value))
+                    count += 1;
+            } catch(VoldemortException e) {
+                // This is normal for the failing store...
+            }
+        return count;
+    }
+
+    private void assertNEqual(RoutedStore routedStore,
+                              int expected,
+                              byte[] key,
+                              Versioned&lt;byte[]&gt; value) {
+        int count = countOccurances(routedStore, key, value);
+        assertEquals(&quot;Expected &quot; + expected + &quot; occurances of '&quot; + key + &quot;' with value '&quot; + value
+                     + &quot;', but found &quot; + count + &quot;.&quot;, expected, count);
+    }
+
+    private void assertNOrMoreEqual(RoutedStore routedStore,
+                                    int expected,
+                                    byte[] key,
+                                    Versioned&lt;byte[]&gt; value) {
+        int count = countOccurances(routedStore, key, value);
+        assertTrue(&quot;Expected &quot; + expected + &quot; or more occurances of '&quot; + key + &quot;' with value '&quot;
+                   + value + &quot;', but found &quot; + count + &quot;.&quot;, expected &lt;= count);
+    }
+
+    public void testBasicOperations(int reads, int writes, int failures, int threads) {
+        RoutedStore routedStore = getStore(cluster, reads, writes, threads, failures);
+        Store&lt;byte[], byte[]&gt; store = new InconsistencyResolvingStore&lt;byte[], byte[]&gt;(routedStore,
+                                                                                      new VectorClockInconsistencyResolver&lt;byte[]&gt;());
+        VectorClock clock = getClock(1);
+        Versioned&lt;byte[]&gt; versioned = new Versioned&lt;byte[]&gt;(aValue, clock);
+        routedStore.put(aKey, versioned);
+        assertNOrMoreEqual(routedStore, cluster.getNumberOfNodes() - failures, aKey, versioned);
+        List&lt;Versioned&lt;byte[]&gt;&gt; found = store.get(aKey);
+        assertEquals(1, found.size());
+        assertEquals(versioned, found.get(0));
+        assertNOrMoreEqual(routedStore, cluster.getNumberOfNodes() - failures, aKey, versioned);
+        assertTrue(routedStore.delete(aKey, versioned.getVersion()));
+        assertNEqual(routedStore, 0, aKey, versioned);
+        assertTrue(!routedStore.delete(aKey, versioned.getVersion()));
+    }
+
+    public void testBasicOperationsSingleThreaded() {
+        testBasicOperations(cluster.getNumberOfNodes(), cluster.getNumberOfNodes(), 0, 1);
+    }
+
+    public void testBasicOperationsMultiThreaded() {
+        testBasicOperations(cluster.getNumberOfNodes(), cluster.getNumberOfNodes(), 0, 4);
+    }
+
+    public void testBasicOperationsMultiThreadedWithFailures() {
+        testBasicOperations(cluster.getNumberOfNodes() - 2, cluster.getNumberOfNodes() - 2, 2, 4);
+    }
+
+    public void testBasicOperationFailure(int reads, int writes, int failures, int threads) {
+        VectorClock clock = getClock(1);
+        Versioned&lt;byte[]&gt; versioned = new Versioned&lt;byte[]&gt;(aValue, clock);
+        RoutedStore routedStore = getStore(cluster,
+                                           reads,
+                                           cluster.getNumberOfNodes(),
+                                           writes,
+                                           threads,
+                                           failures,
+                                           0,
+                                           new RouteToAllStrategy(cluster.getNodes()),
+                                           new UnreachableStoreException(&quot;no go&quot;));
+        try {
+            routedStore.put(aKey, versioned);
+            fail(&quot;Put succeeded with too few operational nodes.&quot;);
+        } catch(InsufficientOperationalNodesException e) {
+            // expected
+        }
+        try {
+            routedStore.get(aKey);
+            fail(&quot;Get succeeded with too few operational nodes.&quot;);
+        } catch(InsufficientOperationalNodesException e) {
+            // expected
+        }
+        try {
+            routedStore.delete(aKey, versioned.getVersion());
+            fail(&quot;Get succeeded with too few operational nodes.&quot;);
+        } catch(InsufficientOperationalNodesException e) {
+            // expected
+        }
+    }
+
+    public void testBasicOperationFailureMultiThreaded() {
+        testBasicOperationFailure(cluster.getNumberOfNodes() - 2,
+                                  cluster.getNumberOfNodes() - 2,
+                                  4,
+                                  4);
+    }
+
     public void testPutIncrementsVersion() {
-        Store&lt;byte[],byte[]&gt; store = getStore();
+        Store&lt;byte[], byte[]&gt; store = getStore();
         VectorClock clock = new VectorClock();
         VectorClock copy = clock.clone();
         store.put(aKey, new Versioned&lt;byte[]&gt;(getValue(), clock));
         List&lt;Versioned&lt;byte[]&gt;&gt; found = store.get(aKey);
         assertEquals(&quot;Invalid number of items found.&quot;, 1, found.size());
-        assertEquals(&quot;Version not incremented properly&quot;, Occured.BEFORE, copy.compare(found.get(0).getVersion()));
+        assertEquals(&quot;Version not incremented properly&quot;,
+                     Occured.BEFORE,
+                     copy.compare(found.get(0).getVersion()));
     }
-    
+
     public void testObsoleteMasterFails() {
-        // write me
+    // write me
     }
-    
+
     public void testOnlyNodeFailuresDisableNode() {
         RoutingStrategy strategy;
         Cluster cluster;
-        
+
         // test put
         cluster = getNineNodeCluster();
         strategy = new RouteToAllStrategy(cluster.getNodes());
-        Store&lt;byte[],byte[]&gt; s1 = getStore(cluster, 1, 9, cluster.getNumberOfNodes(), 9, 9, 0, strategy, new VoldemortException());
+        Store&lt;byte[], byte[]&gt; s1 = getStore(cluster,
+                                            1,
+                                            9,
+                                            cluster.getNumberOfNodes(),
+                                            9,
+                                            9,
+                                            0,
+                                            strategy,
+                                            new VoldemortException());
         try {
             s1.put(aKey, new Versioned&lt;byte[]&gt;(aValue));
             fail(&quot;Failure is expected&quot;);
         } catch(InsufficientOperationalNodesException e) { /* expected */}
         assertOperationalNodes(cluster, 9);
-        
+
         cluster = getNineNodeCluster();
         strategy = new RouteToAllStrategy(cluster.getNodes());
-        Store&lt;byte[],byte[]&gt; s2 = getStore(cluster, 1, 9, cluster.getNumberOfNodes(), 9, 9, 0, strategy, new UnreachableStoreException(&quot;no go&quot;));
+        Store&lt;byte[], byte[]&gt; s2 = getStore(cluster,
+                                            1,
+                                            9,
+                                            cluster.getNumberOfNodes(),
+                                            9,
+                                            9,
+                                            0,
+                                            strategy,
+                                            new UnreachableStoreException(&quot;no go&quot;));
         try {
             s2.put(aKey, new Versioned&lt;byte[]&gt;(aValue));
             fail(&quot;Failure is expected&quot;);
         } catch(InsufficientOperationalNodesException e) { /* expected */}
         assertOperationalNodes(cluster, 0);
-        
+
         // test get
         cluster = getNineNodeCluster();
         strategy = new RouteToAllStrategy(cluster.getNodes());
-        s1 = getStore(cluster, 1, 9, cluster.getNumberOfNodes(), 9, 9, 0, strategy, new VoldemortException());
+        s1 = getStore(cluster,
+                      1,
+                      9,
+                      cluster.getNumberOfNodes(),
+                      9,
+                      9,
+                      0,
+                      strategy,
+                      new VoldemortException());
         try {
             s1.get(aKey);
             fail(&quot;Failure is expected&quot;);
         } catch(InsufficientOperationalNodesException e) { /* expected */}
         assertOperationalNodes(cluster, 9);
-        
+
         cluster = getNineNodeCluster();
         strategy = new RouteToAllStrategy(cluster.getNodes());
-        s2 = getStore(cluster, 1, 9, cluster.getNumberOfNodes(), 9, 9, 0, strategy, new UnreachableStoreException(&quot;no go&quot;));
+        s2 = getStore(cluster,
+                      1,
+                      9,
+                      cluster.getNumberOfNodes(),
+                      9,
+                      9,
+                      0,
+                      strategy,
+                      new UnreachableStoreException(&quot;no go&quot;));
         try {
             s2.get(aKey);
             fail(&quot;Failure is expected&quot;);
         } catch(InsufficientOperationalNodesException e) { /* expected */}
         assertOperationalNodes(cluster, 0);
-        
+
         // test delete
         cluster = getNineNodeCluster();
         strategy = new RouteToAllStrategy(cluster.getNodes());
-        s1 = getStore(cluster, 1, 9, cluster.getNumberOfNodes(), 9, 9, 0, strategy, new VoldemortException());
+        s1 = getStore(cluster,
+                      1,
+                      9,
+                      cluster.getNumberOfNodes(),
+                      9,
+                      9,
+                      0,
+                      strategy,
+                      new VoldemortException());
         try {
             s1.delete(aKey, new VectorClock());
             fail(&quot;Failure is expected&quot;);
         } catch(InsufficientOperationalNodesException e) { /* expected */}
         assertOperationalNodes(cluster, 9);
-        
+
         cluster = getNineNodeCluster();
         strategy = new RouteToAllStrategy(cluster.getNodes());
-        s2 = getStore(cluster, 1, 9, cluster.getNumberOfNodes(), 9, 9, 0, strategy, new UnreachableStoreException(&quot;no go&quot;));
+        s2 = getStore(cluster,
+                      1,
+                      9,
+                      cluster.getNumberOfNodes(),
+                      9,
+                      9,
+                      0,
+                      strategy,
+                      new UnreachableStoreException(&quot;no go&quot;));
         try {
             s2.delete(aKey, new VectorClock());
             fail(&quot;Failure is expected&quot;);
         } catch(InsufficientOperationalNodesException e) { /* expected */}
         assertOperationalNodes(cluster, 0);
     }
-    
+
     public void testStoreTimeouts() throws InterruptedException {
-        /*
-        Cluster cluster = getThreeNodeThreePartitionCluster();
-        RoutingStrategy strategy = new RouteToAllStrategy(cluster);
-        final Store&lt;byte[],byte[]&gt; store = getStore(cluster, 1, 9, 9, 0, 9, strategy, new VoldemortException());
-        store.put(aKey, new Versioned&lt;byte[]&gt;(new byte[0]));
-        */
+    /*
+     * Cluster cluster = getThreeNodeThreePartitionCluster(); RoutingStrategy
+     * strategy = new RouteToAllStrategy(cluster); final Store&lt;byte[],byte[]&gt;
+     * store = getStore(cluster, 1, 9, 9, 0, 9, strategy, new
+     * VoldemortException()); store.put(aKey, new Versioned&lt;byte[]&gt;(new
+     * byte[0]));
+     */
     }
-    
+
     public void assertOperationalNodes(Cluster cluster, int expected) {
         int found = 0;
         for(Node n: cluster.getNodes())
             if(n.getStatus().isAvailable())
-                found ++;
-        assertEquals(&quot;Number of operational nodes not what was expected.&quot;,
-                     expected,
-                     found);
+                found++;
+        assertEquals(&quot;Number of operational nodes not what was expected.&quot;, expected, found);
     }
 }</diff>
      <filename>test/unit/voldemort/store/routed/RoutedStoreTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.serialized;
 
 import java.util.List;
@@ -9,7 +25,7 @@ import voldemort.store.memory.InMemoryStorageEngine;
 
 /**
  * @author jay
- *
+ * 
  */
 public class SerializingStoreTest extends BasicStoreTest&lt;String, String&gt; {
 
@@ -20,10 +36,9 @@ public class SerializingStoreTest extends BasicStoreTest&lt;String, String&gt; {
 
     @Override
     public Store&lt;String, String&gt; getStore() {
-        return new SerializingStore&lt;String, String&gt;(
-                new InMemoryStorageEngine&lt;byte[], byte[]&gt;(&quot;test&quot;), 
-                new StringSerializer(), 
-                new StringSerializer());
+        return new SerializingStore&lt;String, String&gt;(new InMemoryStorageEngine&lt;byte[], byte[]&gt;(&quot;test&quot;),
+                                                    new StringSerializer(),
+                                                    new StringSerializer());
     }
 
     @Override</diff>
      <filename>test/unit/voldemort/store/serialized/SerializingStoreTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.slop;
 
 import java.util.Arrays;
@@ -13,41 +29,41 @@ import voldemort.store.UnreachableStoreException;
 import voldemort.store.memory.InMemoryStorageEngine;
 import voldemort.versioning.Versioned;
 
-
 public class SloppyStoreTest extends ByteArrayStoreTest {
-    
+
     private static final byte[] testVal = &quot;test&quot;.getBytes();
     private static final int NODE_ID = 0;
 
-	@Override
+    @Override
     @SuppressWarnings(&quot;unchecked&quot;)
-	public Store&lt;byte[],byte[]&gt; getStore() {
-	    Collection&lt;InMemoryStorageEngine&lt;byte[],Slop&gt;&gt; backups = Arrays.asList(new InMemoryStorageEngine&lt;byte[],Slop&gt;(&quot;test&quot;));
-	    return new SloppyStore(NODE_ID, new InMemoryStorageEngine&lt;byte[],byte[]&gt;(&quot;test&quot;), backups);
-	}
-	
+    public Store&lt;byte[], byte[]&gt; getStore() {
+        Collection&lt;InMemoryStorageEngine&lt;byte[], Slop&gt;&gt; backups = Arrays.asList(new InMemoryStorageEngine&lt;byte[], Slop&gt;(&quot;test&quot;));
+        return new SloppyStore(NODE_ID, new InMemoryStorageEngine&lt;byte[], byte[]&gt;(&quot;test&quot;), backups);
+    }
+
     @SuppressWarnings(&quot;unchecked&quot;)
-    public SloppyStore getSloppyStore(Store&lt;byte[],byte[]&gt; store) {
-        Collection&lt;InMemoryStorageEngine&lt;byte[],Slop&gt;&gt; backups = Arrays.asList(new InMemoryStorageEngine&lt;byte[],Slop&gt;(&quot;test&quot;));
+    public SloppyStore getSloppyStore(Store&lt;byte[], byte[]&gt; store) {
+        Collection&lt;InMemoryStorageEngine&lt;byte[], Slop&gt;&gt; backups = Arrays.asList(new InMemoryStorageEngine&lt;byte[], Slop&gt;(&quot;test&quot;));
         return new SloppyStore(NODE_ID, store, backups);
     }
-    
-    private void assertBackupHasOperation(Slop slop, List&lt;Store&lt;byte[],Slop&gt;&gt; backups) {
-        for(Store&lt;byte[],Slop&gt; backup: backups) {
+
+    private void assertBackupHasOperation(Slop slop, List&lt;Store&lt;byte[], Slop&gt;&gt; backups) {
+        for(Store&lt;byte[], Slop&gt; backup: backups) {
             List&lt;Versioned&lt;Slop&gt;&gt; slops = backup.get(slop.makeKey());
             for(Versioned&lt;Slop&gt; found: slops) {
                 Slop foundSlop = found.getValue();
-                if(foundSlop.getKey().equals(slop.getKey()) &amp;&amp;
-                   TestUtils.bytesEqual(foundSlop.getValue(), slop.getValue()) &amp;&amp;
-                   foundSlop.getOperation().equals(slop.getOperation()))
+                if(foundSlop.getKey().equals(slop.getKey())
+                   &amp;&amp; TestUtils.bytesEqual(foundSlop.getValue(), slop.getValue())
+                   &amp;&amp; foundSlop.getOperation().equals(slop.getOperation()))
                     return;
             }
         }
         fail(&quot;Could not find slop &quot; + slop + &quot; in backup stores.&quot;);
     }
-    
+
     public void testFailingStore() {
-        SloppyStore store = getSloppyStore(new FailingStore&lt;byte[],byte[]&gt;(&quot;test&quot;, new UnreachableStoreException(&quot;Unreachable store.&quot;)));
+        SloppyStore store = getSloppyStore(new FailingStore&lt;byte[], byte[]&gt;(&quot;test&quot;,
+                                                                            new UnreachableStoreException(&quot;Unreachable store.&quot;)));
         try {
             store.put(testVal, new Versioned&lt;byte[]&gt;(testVal));
             fail(&quot;Failing store doesn't fail.&quot;);</diff>
      <filename>test/unit/voldemort/store/slop/SloppyStoreTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.store.socket;
 
 import java.util.concurrent.CountDownLatch;
@@ -14,47 +30,48 @@ import voldemort.store.Store;
 import voldemort.versioning.Versioned;
 
 public class SocketStoreTest extends ByteArrayStoreTest {
-    
+
     private SocketServer socketServer;
     private SocketStore socketStore;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        socketServer = ServerTestUtils.getSocketServer(VoldemortTestConstants.getOneNodeClusterXml(), 
+        socketServer = ServerTestUtils.getSocketServer(VoldemortTestConstants.getOneNodeClusterXml(),
                                                        VoldemortTestConstants.getSimpleStoreDefinitionsXml(),
-                                                       &quot;test&quot;, 
+                                                       &quot;test&quot;,
                                                        6667);
         socketStore = ServerTestUtils.getSocketStore(&quot;test&quot;, 6667);
     }
-    
+
     @Override
-    public Store&lt;byte[],byte[]&gt; getStore() {
+    public Store&lt;byte[], byte[]&gt; getStore() {
         return socketStore;
     }
-    
+
     @Override
     public void tearDown() throws Exception {
         super.tearDown();
         socketServer.shutdown();
         socketStore.close();
     }
-    
+
     public void testThreadOverload() throws Exception {
-        final Store&lt;byte[],byte[]&gt; store = getStore();
+        final Store&lt;byte[], byte[]&gt; store = getStore();
         final AtomicInteger val = new AtomicInteger(0);
         final CountDownLatch latch = new CountDownLatch(100);
         Executor exec = Executors.newCachedThreadPool();
         for(int i = 0; i &lt; 100; i++) {
             exec.execute(new Runnable() {
-               public void run() {
-                   store.put(TestUtils.randomString(&quot;abcdefghijklmnopqrs&quot;, 10).getBytes(), 
-                             new Versioned&lt;byte[]&gt;(TestUtils.randomBytes(8)));
-                   latch.countDown();
-               }
+
+                public void run() {
+                    store.put(TestUtils.randomString(&quot;abcdefghijklmnopqrs&quot;, 10).getBytes(),
+                              new Versioned&lt;byte[]&gt;(TestUtils.randomBytes(8)));
+                    latch.countDown();
+                }
             });
         }
         latch.await();
     }
-    
+
 }</diff>
      <filename>test/unit/voldemort/store/socket/SocketStoreTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,27 @@
-package voldemort.store.socket;
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
 
-import java.util.concurrent.*;
+package voldemort.store.socket;
 
-import voldemort.*;
+import voldemort.BlockingInputStream;
+import voldemort.BlockingOutputStream;
 
 public class SocketStreamHandlerTest {
-    
+
     private BlockingInputStream istream;
     private BlockingOutputStream ostream;
 
-    
-    
 }</diff>
      <filename>test/unit/voldemort/store/socket/SocketStreamHandlerTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,37 +1,52 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import junit.framework.TestCase;
 
-
 /**
  * @author jay
- *
+ * 
  */
 public class ClockEntryTest extends TestCase {
 
-	public void testEquality() {
-		ClockEntry v1 = new ClockEntry((short) 0, (short) 1);
-		ClockEntry v2 = new ClockEntry((short) 0, (short) 1);
-		assertTrue(v1.equals(v1));
-		assertTrue(!v1.equals(null));
-		assertEquals(v1, v2);
-		
-		v1 = new ClockEntry((short) 0, (short) 1);
-		v2 = new ClockEntry((short) 0, (short) 2);
-		assertTrue(!v1.equals(v2));
-
-		v1 = new ClockEntry((short) Short.MAX_VALUE, (short) 256);
-		v2 = new ClockEntry((short) Short.MAX_VALUE, (short) 256);
-		assertEquals(v1, v2);
-	}
-	
-	public void testIncrement() {
-		ClockEntry v = new ClockEntry((short) 0, (short) 1);
-		assertEquals(v.getNodeId(), 0);
-		assertEquals(v.getVersion(), 1);
-		ClockEntry v2 = v.incremented();
-		assertEquals(v.getVersion(), 1);
-		assertEquals(v2.getVersion(), 2);
-	}
-	
+    public void testEquality() {
+        ClockEntry v1 = new ClockEntry((short) 0, (short) 1);
+        ClockEntry v2 = new ClockEntry((short) 0, (short) 1);
+        assertTrue(v1.equals(v1));
+        assertTrue(!v1.equals(null));
+        assertEquals(v1, v2);
+
+        v1 = new ClockEntry((short) 0, (short) 1);
+        v2 = new ClockEntry((short) 0, (short) 2);
+        assertTrue(!v1.equals(v2));
+
+        v1 = new ClockEntry((short) Short.MAX_VALUE, (short) 256);
+        v2 = new ClockEntry((short) Short.MAX_VALUE, (short) 256);
+        assertEquals(v1, v2);
+    }
+
+    public void testIncrement() {
+        ClockEntry v = new ClockEntry((short) 0, (short) 1);
+        assertEquals(v.getNodeId(), 0);
+        assertEquals(v.getVersion(), 1);
+        ClockEntry v2 = v.incremented();
+        assertEquals(v.getVersion(), 1);
+        assertEquals(v2.getVersion(), 2);
+    }
+
 }</diff>
      <filename>test/unit/voldemort/versioning/ClockEntryTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import java.util.ArrayList;
@@ -8,46 +24,52 @@ import junit.framework.TestCase;
 import voldemort.TestUtils;
 
 public class VectorClockInconsistencyResolverTest extends TestCase {
-	
-	private InconsistencyResolver&lt;Versioned&lt;String&gt;&gt; resolver;
-	private Versioned&lt;String&gt; later;
-	private Versioned&lt;String&gt; prior;
-	private Versioned&lt;String&gt; current;
-	private Versioned&lt;String&gt; concurrent;
-	
-	public void setUp() {
-		resolver = new VectorClockInconsistencyResolver&lt;String&gt;();
-		current = getVersioned(1,1,2,3);
-		prior = getVersioned(1,2,3);
-		concurrent = getVersioned(1,2,3,3);
-		later = getVersioned(1,1,2,2,3);
-	}
-	
-	private Versioned&lt;String&gt; getVersioned(int...nodes) {
-		return new Versioned&lt;String&gt;(&quot;my-value&quot;, TestUtils.getClock(nodes));
-	}
-	
-	public void testEmptyList() {
-		assertEquals(0, resolver.resolveConflicts(new ArrayList&lt;Versioned&lt;String&gt;&gt;()).size());
-	}
-	
-	@SuppressWarnings(&quot;unchecked&quot;)
-	public void testDuplicatesResolve() {
-		assertEquals(2, resolver.resolveConflicts(Arrays.asList(concurrent, current, current, concurrent, current)).size());
-	}
-	
-	@SuppressWarnings(&quot;unchecked&quot;)
-	public void testResolveNormal() {
-		assertEquals(later, resolver.resolveConflicts(Arrays.asList(current, prior, later)).get(0));
-		assertEquals(later, resolver.resolveConflicts(Arrays.asList(prior, current, later)).get(0));
-		assertEquals(later, resolver.resolveConflicts(Arrays.asList(later, current, prior)).get(0));
-	}
-	
-	@SuppressWarnings(&quot;unchecked&quot;)
-	public void testResolveConcurrent() {
-		List&lt;Versioned&lt;String&gt;&gt; resolved = resolver.resolveConflicts(Arrays.asList(current, concurrent, prior));
-		assertEquals(2, resolved.size());
-		assertTrue(&quot;Version not found&quot;, resolved.contains(current));
-		assertTrue(&quot;Version not found&quot;, resolved.contains(concurrent));
-	}
+
+    private InconsistencyResolver&lt;Versioned&lt;String&gt;&gt; resolver;
+    private Versioned&lt;String&gt; later;
+    private Versioned&lt;String&gt; prior;
+    private Versioned&lt;String&gt; current;
+    private Versioned&lt;String&gt; concurrent;
+
+    public void setUp() {
+        resolver = new VectorClockInconsistencyResolver&lt;String&gt;();
+        current = getVersioned(1, 1, 2, 3);
+        prior = getVersioned(1, 2, 3);
+        concurrent = getVersioned(1, 2, 3, 3);
+        later = getVersioned(1, 1, 2, 2, 3);
+    }
+
+    private Versioned&lt;String&gt; getVersioned(int... nodes) {
+        return new Versioned&lt;String&gt;(&quot;my-value&quot;, TestUtils.getClock(nodes));
+    }
+
+    public void testEmptyList() {
+        assertEquals(0, resolver.resolveConflicts(new ArrayList&lt;Versioned&lt;String&gt;&gt;()).size());
+    }
+
+    @SuppressWarnings(&quot;unchecked&quot;)
+    public void testDuplicatesResolve() {
+        assertEquals(2, resolver.resolveConflicts(Arrays.asList(concurrent,
+                                                                current,
+                                                                current,
+                                                                concurrent,
+                                                                current)).size());
+    }
+
+    @SuppressWarnings(&quot;unchecked&quot;)
+    public void testResolveNormal() {
+        assertEquals(later, resolver.resolveConflicts(Arrays.asList(current, prior, later)).get(0));
+        assertEquals(later, resolver.resolveConflicts(Arrays.asList(prior, current, later)).get(0));
+        assertEquals(later, resolver.resolveConflicts(Arrays.asList(later, current, prior)).get(0));
+    }
+
+    @SuppressWarnings(&quot;unchecked&quot;)
+    public void testResolveConcurrent() {
+        List&lt;Versioned&lt;String&gt;&gt; resolved = resolver.resolveConflicts(Arrays.asList(current,
+                                                                                   concurrent,
+                                                                                   prior));
+        assertEquals(2, resolved.size());
+        assertTrue(&quot;Version not found&quot;, resolved.contains(current));
+        assertTrue(&quot;Version not found&quot;, resolved.contains(concurrent));
+    }
 }</diff>
      <filename>test/unit/voldemort/versioning/VectorClockInconsistencyResolverTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import static voldemort.TestUtils.getClock;</diff>
      <filename>test/unit/voldemort/versioning/VectorClockTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.versioning;
 
 import junit.framework.TestCase;</diff>
      <filename>test/unit/voldemort/versioning/VersionedTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.xml;
 
 import java.io.StringReader;
@@ -10,22 +26,22 @@ import voldemort.cluster.Node;
 
 public class ClusterMapperTest extends TestCase {
 
-	public void testClusterMapperValues() {
-		ClusterMapper mapper = new ClusterMapper();
-		Cluster cluster = mapper.readCluster(new StringReader(VoldemortTestConstants.getOneNodeClusterXml()));
-		assertEquals(cluster.getNumberOfNodes(), 1);
-		assertEquals(cluster.getName(), &quot;mycluster&quot;);
-		Node node = cluster.getNodes().iterator().next();
-		assertNotNull(node);
-		assertEquals(node.getId(), 0);
-		List&lt;Integer&gt; tags = node.getPartitionIds();
-		assertTrue(&quot;Tag not found.&quot;, tags.contains(0));
-		assertTrue(&quot;Tag not found.&quot;, tags.contains(1));
-	}
+    public void testClusterMapperValues() {
+        ClusterMapper mapper = new ClusterMapper();
+        Cluster cluster = mapper.readCluster(new StringReader(VoldemortTestConstants.getOneNodeClusterXml()));
+        assertEquals(cluster.getNumberOfNodes(), 1);
+        assertEquals(cluster.getName(), &quot;mycluster&quot;);
+        Node node = cluster.getNodes().iterator().next();
+        assertNotNull(node);
+        assertEquals(node.getId(), 0);
+        List&lt;Integer&gt; tags = node.getPartitionIds();
+        assertTrue(&quot;Tag not found.&quot;, tags.contains(0));
+        assertTrue(&quot;Tag not found.&quot;, tags.contains(1));
+    }
 
-	public void testOtherClusters() {
-	    ClusterMapper mapper = new ClusterMapper();
-	    mapper.readCluster(new StringReader(VoldemortTestConstants.getNineNodeClusterXml()));
-	    mapper.readCluster(new StringReader(VoldemortTestConstants.getTwoNodeClusterXml()));
-	}
+    public void testOtherClusters() {
+        ClusterMapper mapper = new ClusterMapper();
+        mapper.readCluster(new StringReader(VoldemortTestConstants.getNineNodeClusterXml()));
+        mapper.readCluster(new StringReader(VoldemortTestConstants.getTwoNodeClusterXml()));
+    }
 }</diff>
      <filename>test/unit/voldemort/xml/ClusterMapperTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,19 @@
+/*
+ * Copyright 2008-2009 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
 package voldemort.xml;
 
 import static voldemort.VoldemortTestConstants.getSimpleStoreDefinitionsXml;
@@ -17,7 +33,7 @@ public class StoreDefinitionMapperTest extends TestCase {
         String output = mapper.writeStoreList(storeDefs);
         List&lt;StoreDefinition&gt; found = mapper.readStoreList(new StringReader(output));
         assertEqual(storeDefs, found);
-        for(StoreDefinition def : storeDefs) {
+        for(StoreDefinition def: storeDefs) {
             String xml = mapper.writeStore(def);
             StoreDefinition newDef = mapper.readStore(new StringReader(xml));
             assertEquals(def, newDef);</diff>
      <filename>test/unit/voldemort/xml/StoreDefinitionMapperTest.java</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>license.txt</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>e0cff171a39181ae28ae70560ed75374d7110215</id>
    </parent>
  </parents>
  <author>
    <name>Jay Kreps</name>
    <email>jay.kreps@gmail.com</email>
  </author>
  <url>http://github.com/voldemort/voldemort/commit/1e68b44ad9db865751770bc2e2df1f01e109faeb</url>
  <id>1e68b44ad9db865751770bc2e2df1f01e109faeb</id>
  <committed-date>2009-01-13T14:59:15-08:00</committed-date>
  <authored-date>2009-01-13T14:59:15-08:00</authored-date>
  <message>Add license header to source files.</message>
  <tree>b4d5a95c5c6c00997b8d4635e41a28da8e2d2ffb</tree>
  <committer>
    <name>Jay Kreps</name>
    <email>jay.kreps@gmail.com</email>
  </committer>
</commit>
