ACCUMULO-1783 Update this repo with the upstream changes I've been pushing Pig's way.
diff --git a/.gitignore b/.gitignore
index 8d0bf0b..d8a339e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
 .settings
 /target
 site/_site
+build
diff --git a/pom.xml b/pom.xml
index 24449e7..e103468 100644
--- a/pom.xml
+++ b/pom.xml
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.0</version>
     </dependency>
     <dependency>
       <groupId>joda-time</groupId>
@@ -96,7 +96,7 @@
     <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-minicluster</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.0</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/src/main/java/org/apache/accumulo/pig/AbstractAccumuloStorage.java b/src/main/java/org/apache/accumulo/pig/AbstractAccumuloStorage.java
index b3e91fc..2c21b95 100644
--- a/src/main/java/org/apache/accumulo/pig/AbstractAccumuloStorage.java
+++ b/src/main/java/org/apache/accumulo/pig/AbstractAccumuloStorage.java
@@ -17,6 +17,8 @@
 package org.apache.accumulo.pig;
 
 import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.Collection;
@@ -139,7 +141,7 @@
       simpleUnset(conf, entriesToUnset);
     } else {
       // If we're running on something else, we have to remove everything and re-add it
-      replaceUnset(conf, entriesToUnset);
+      clearUnset(conf, entriesToUnset);
     }
   }
   
@@ -149,8 +151,24 @@
    * @param entriesToUnset
    */
   protected void simpleUnset(Configuration conf, Map<String,String> entriesToUnset) {
-    for (String key : entriesToUnset.keySet()) {
-      conf.unset(key);
+    try {
+      Method unset = conf.getClass().getMethod("unset", String.class);
+      
+      for (String key : entriesToUnset.keySet()) {
+        unset.invoke(conf, key);
+      }
+    } catch (NoSuchMethodException e) {
+      LOG.error("Could not invoke Configuration.unset method", e);
+      throw new RuntimeException(e);
+    } catch (IllegalAccessException e) {
+      LOG.error("Could not invoke Configuration.unset method", e);
+      throw new RuntimeException(e);
+    } catch (IllegalArgumentException e) {
+      LOG.error("Could not invoke Configuration.unset method", e);
+      throw new RuntimeException(e);
+    } catch (InvocationTargetException e) {
+      LOG.error("Could not invoke Configuration.unset method", e);
+      throw new RuntimeException(e);
     }
   }
   
@@ -160,7 +178,7 @@
    * @param conf
    * @param entriesToUnset
    */
-  protected void replaceUnset(Configuration conf, Map<String,String> entriesToUnset) {
+  protected void clearUnset(Configuration conf, Map<String,String> entriesToUnset) {
     // Gets a copy of the entries
     Iterator<Entry<String,String>> originalEntries = conf.iterator();
     conf.clear();
diff --git a/src/main/java/org/apache/accumulo/pig/AccumuloStorage.java b/src/main/java/org/apache/accumulo/pig/AccumuloStorage.java
index 742480c..d2be9b6 100644
--- a/src/main/java/org/apache/accumulo/pig/AccumuloStorage.java
+++ b/src/main/java/org/apache/accumulo/pig/AccumuloStorage.java
@@ -1,3 +1,19 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); 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 "AS IS" 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 org.apache.accumulo.pig;
 
 import java.io.IOException;
diff --git a/src/main/java/org/apache/accumulo/pig/FORMAT.java b/src/main/java/org/apache/accumulo/pig/FORMAT.java
index a72987a..16a85ca 100644
--- a/src/main/java/org/apache/accumulo/pig/FORMAT.java
+++ b/src/main/java/org/apache/accumulo/pig/FORMAT.java
@@ -1,3 +1,19 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); 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 "AS IS" 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 org.apache.accumulo.pig;
 
 import java.io.IOException;
diff --git a/src/test/java/org/apache/accumulo/pig/AccumuloPigClusterTest.java b/src/test/java/org/apache/accumulo/pig/AccumuloPigClusterTest.java
index 10b0a2a..d53620d 100644
--- a/src/test/java/org/apache/accumulo/pig/AccumuloPigClusterTest.java
+++ b/src/test/java/org/apache/accumulo/pig/AccumuloPigClusterTest.java
@@ -1,3 +1,19 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); 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 "AS IS" 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 org.apache.accumulo.pig;
 
 import java.io.File;
diff --git a/src/test/java/org/apache/accumulo/pig/AccumuloStorageConfigurationTest.java b/src/test/java/org/apache/accumulo/pig/AccumuloStorageConfigurationTest.java
index 079cc0c..c58d26d 100644
--- a/src/test/java/org/apache/accumulo/pig/AccumuloStorageConfigurationTest.java
+++ b/src/test/java/org/apache/accumulo/pig/AccumuloStorageConfigurationTest.java
@@ -1,3 +1,19 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); 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 "AS IS" 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 org.apache.accumulo.pig;
 
 import java.util.HashMap;
@@ -8,6 +24,7 @@
 import org.apache.hadoop.conf.Configuration;
 import org.junit.Assert;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 
 public class AccumuloStorageConfigurationTest {
@@ -41,9 +58,78 @@
     return contents;
   }
   
+  @Test
+  public void testClearEquivalenceStrings() {
+    Configuration clearCopy = new Configuration(original);
+    
+    Assert.assertEquals(getContents(original), getContents(clearCopy));
+    
+    Map<String,String>  entriesToUnset = new HashMap<String,String>();
+    entriesToUnset.put("string1", "foo");
+    entriesToUnset.put("string3", "bar");
+    
+    storage.clearUnset(clearCopy, entriesToUnset);
+    
+    Configuration originalCopy = new Configuration();
+    for (Entry<String,String> entry : original) {
+      if (!"string1".equals(entry.getKey()) && !"string3".equals(entry.getKey())) {
+        originalCopy.set(entry.getKey(), entry.getValue());
+      }
+    }
+    
+    Assert.assertEquals(getContents(originalCopy), getContents(clearCopy));
+  }
   
   @Test
-  public void testEquivalence() {
+  public void testClearEquivalenceOnTypes() {
+    Configuration clearCopy = new Configuration(original);
+    
+    Assert.assertEquals(getContents(original), getContents(clearCopy));
+    
+    Map<String,String>  entriesToUnset = new HashMap<String,String>();
+    entriesToUnset.put("long", "foo");
+    entriesToUnset.put("boolean", "bar");
+    entriesToUnset.put("integer", "foobar");
+    
+    storage.clearUnset(clearCopy, entriesToUnset);
+    
+    Configuration originalCopy = new Configuration();
+    for (Entry<String,String> entry : original) {
+      if (!"long".equals(entry.getKey()) && !"boolean".equals(entry.getKey()) &&
+          !"integer".equals(entry.getKey())) {
+        originalCopy.set(entry.getKey(), entry.getValue());
+      }
+    }
+    
+    Assert.assertEquals(getContents(originalCopy), getContents(clearCopy));
+  }
+  
+  @Ignore // Ignored until dependency gets updated to Hadoop >=1.2.0 and we have Configuration#unset
+  @Test
+  public void testUnsetEquivalenceStrings() {
+    Configuration unsetCopy = new Configuration(original);
+    
+    Assert.assertEquals(getContents(original), getContents(unsetCopy));
+    
+    Map<String,String>  entriesToUnset = new HashMap<String,String>();
+    entriesToUnset.put("string1", "foo");
+    entriesToUnset.put("string3", "bar");
+    
+    storage.simpleUnset(unsetCopy, entriesToUnset);
+    
+    Configuration originalCopy = new Configuration();
+    for (Entry<String,String> entry : original) {
+      if (!"string1".equals(entry.getKey()) && !"string2".equals(entry.getKey())) {
+        originalCopy.set(entry.getKey(), entry.getValue());
+      }
+    }
+    
+    Assert.assertEquals(getContents(originalCopy), getContents(unsetCopy));
+  }
+  
+  @Ignore // Ignored until dependency gets updated to Hadoop >=1.2.0 and we have Configuration#unset
+  @Test
+  public void testEquivalenceStrings() {
     Configuration unsetCopy = new Configuration(original), clearCopy = new Configuration(original);
     
     Assert.assertEquals(getContents(unsetCopy), getContents(clearCopy));
@@ -53,24 +139,28 @@
     entriesToUnset.put("string3", "bar");
     
     storage.simpleUnset(unsetCopy, entriesToUnset);
-    storage.replaceUnset(clearCopy, entriesToUnset);
+    storage.clearUnset(clearCopy, entriesToUnset);
     
     Assert.assertEquals(getContents(unsetCopy), getContents(clearCopy));
     
-    Configuration originalCopy = new Configuration(original);
-    originalCopy.unset("string1");
-    originalCopy.unset("string3");
+    Configuration originalCopy = new Configuration();
+    for (Entry<String,String> entry : original) {
+      if (!"string1".equals(entry.getKey()) && !"string2".equals(entry.getKey())) {
+        originalCopy.set(entry.getKey(), entry.getValue());
+      }
+    }
     
     Assert.assertEquals(getContents(originalCopy), getContents(unsetCopy));
     Assert.assertEquals(getContents(originalCopy), getContents(clearCopy));
   }
   
-  
+  @Ignore // Ignored until dependency gets updated to Hadoop >=1.2.0 and we have Configuration#unset
   @Test
   public void testEquivalenceOnTypes() {
     Configuration unsetCopy = new Configuration(original), clearCopy = new Configuration(original);
     
-    Assert.assertEquals(getContents(unsetCopy), getContents(clearCopy));
+    Assert.assertEquals(getContents(original), getContents(unsetCopy));
+    Assert.assertEquals(getContents(original), getContents(clearCopy));
     
     Map<String,String>  entriesToUnset = new HashMap<String,String>();
     entriesToUnset.put("long", "foo");
@@ -78,17 +168,42 @@
     entriesToUnset.put("integer", "foobar");
     
     storage.simpleUnset(unsetCopy, entriesToUnset);
-    storage.replaceUnset(clearCopy, entriesToUnset);
+    storage.clearUnset(clearCopy, entriesToUnset);
     
-    Assert.assertEquals(getContents(unsetCopy), getContents(clearCopy));
-    
-    Configuration originalCopy = new Configuration(original);
-    originalCopy.unset("long");
-    originalCopy.unset("boolean");
-    originalCopy.unset("integer");
+    Configuration originalCopy = new Configuration();
+    for (Entry<String,String> entry : original) {
+      if (!"long".equals(entry.getKey()) && !"boolean".equals(entry.getKey()) &&
+          !"integer".equals(entry.getKey())) {
+        originalCopy.set(entry.getKey(), entry.getValue());
+      }
+    }
     
     Assert.assertEquals(getContents(originalCopy), getContents(unsetCopy));
     Assert.assertEquals(getContents(originalCopy), getContents(clearCopy));
   }
-
+  
+  @Ignore // Ignored until dependency gets updated to Hadoop >=1.2.0 and we have Configuration#unset
+  @Test
+  public void testUnsetEquivalenceOnTypes() {
+    Configuration unsetCopy = new Configuration(original);
+    
+    Assert.assertEquals(getContents(original), getContents(unsetCopy));
+    
+    Map<String,String>  entriesToUnset = new HashMap<String,String>();
+    entriesToUnset.put("long", "foo");
+    entriesToUnset.put("boolean", "bar");
+    entriesToUnset.put("integer", "foobar");
+    
+    storage.simpleUnset(unsetCopy, entriesToUnset);
+    
+    Configuration originalCopy = new Configuration();
+    for (Entry<String,String> entry : original) {
+      if (!"long".equals(entry.getKey()) && !"boolean".equals(entry.getKey()) &&
+          !"integer".equals(entry.getKey())) {
+        originalCopy.set(entry.getKey(), entry.getValue());
+      }
+    }
+    
+    Assert.assertEquals(getContents(originalCopy), getContents(unsetCopy));
+  }
 }
diff --git a/src/test/java/org/apache/accumulo/pig/AccumuloStorageTest.java b/src/test/java/org/apache/accumulo/pig/AccumuloStorageTest.java
index aa88191..d102d64 100644
--- a/src/test/java/org/apache/accumulo/pig/AccumuloStorageTest.java
+++ b/src/test/java/org/apache/accumulo/pig/AccumuloStorageTest.java
@@ -1,3 +1,19 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); 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 "AS IS" 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 org.apache.accumulo.pig;
 
 import java.io.IOException;
diff --git a/src/test/java/org/apache/pig/test/MiniCluster.java b/src/test/java/org/apache/pig/test/MiniCluster.java
index 64467ae..aacd30f 100644
--- a/src/test/java/org/apache/pig/test/MiniCluster.java
+++ b/src/test/java/org/apache/pig/test/MiniCluster.java
@@ -1,4 +1,3 @@
-package org.apache.pig.test;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,6 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.pig.test;
 
 
 import java.io.File;
diff --git a/src/test/java/org/apache/pig/test/MiniGenericCluster.java b/src/test/java/org/apache/pig/test/MiniGenericCluster.java
index 584631a..b4ea84f 100644
--- a/src/test/java/org/apache/pig/test/MiniGenericCluster.java
+++ b/src/test/java/org/apache/pig/test/MiniGenericCluster.java
@@ -1,4 +1,3 @@
-package org.apache.pig.test;
 /**
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,6 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.pig.test;
 
 
 import java.io.*;