You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2012/03/17 00:57:09 UTC

svn commit: r1301829 - in /pig/trunk: CHANGES.txt src/org/apache/pig/data/DataByteArray.java test/org/apache/pig/test/TestDataModel.java

Author: daijy
Date: Fri Mar 16 23:57:08 2012
New Revision: 1301829

URL: http://svn.apache.org/viewvc?rev=1301829&view=rev
Log:
PIG-2182: Add more append support to DataByteArray

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/data/DataByteArray.java
    pig/trunk/test/org/apache/pig/test/TestDataModel.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1301829&r1=1301828&r2=1301829&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Fri Mar 16 23:57:08 2012
@@ -149,6 +149,8 @@ INCOMPATIBLE CHANGES
 
 IMPROVEMENTS
 
+PIG-2182: Add more append support to DataByteArray (gsingers via daijy)
+
 PIG-438: Handle realiasing of existing Alias (A=B;) (daijy)
 
 PIG-2548: Support for providing parameters to python script (daijy)

Modified: pig/trunk/src/org/apache/pig/data/DataByteArray.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/data/DataByteArray.java?rev=1301829&r1=1301828&r2=1301829&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/data/DataByteArray.java (original)
+++ pig/trunk/src/org/apache/pig/data/DataByteArray.java Fri Mar 16 23:57:08 2012
@@ -139,19 +139,38 @@ public class DataByteArray implements Co
      * @param b byte array who's contents to append.  The contents of the byte array are
      * copied.
      */
-    public void append(DataByteArray b) {
+    public DataByteArray append(DataByteArray b) {
 
         byte[] ba = (b == null) ?  null : b.get();
+        return append(ba, 0, ba == null ? 0 : ba.length);
+
+    }
+
+    public DataByteArray append(byte [] ba){
+      return append(ba, 0, ba.length);
+    }
+
+    public DataByteArray append(byte [] ba, int start, int baLength){
         int mDataLength = (mData == null) ? 0 : mData.length;
-        int baLength = (ba == null) ? 0 : ba.length;
-        
+
         int totalSize = mDataLength + baLength;
         if(totalSize == 0) {
-            return;
+            return this;
         }
         byte[] oldData = mData == null ? new byte[0] : mData.clone();
         System.arraycopy(oldData, 0, mData = new byte[totalSize], 0, mDataLength);
-        System.arraycopy(ba, 0, mData, mDataLength, baLength);
+        System.arraycopy(ba, start, mData, mDataLength, baLength);
+        return this;
+    }
+
+    public DataByteArray append(String str){
+      try {
+        return append(str.getBytes("UTF8"));
+      } catch (UnsupportedEncodingException e) {
+        e.printStackTrace();
+      }
+      //TODO: better error here
+      throw new RuntimeException("Unable to append str: " + str);
     }
 
     /**

Modified: pig/trunk/test/org/apache/pig/test/TestDataModel.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestDataModel.java?rev=1301829&r1=1301828&r2=1301829&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestDataModel.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestDataModel.java Fri Mar 16 23:57:08 2012
@@ -521,6 +521,33 @@ public class TestDataModel extends junit
         db1.append(db2);
         assertTrue("appends as expected", db1.equals(expected));
     }
+    
+    @Test
+    public void testByteArrayAppendMore() throws Exception {
+        DataByteArray expected = new DataByteArray("hello world!");
+        DataByteArray db1 = new DataByteArray("hello ");
+        DataByteArray db2 = new DataByteArray("world");
+        DataByteArray db3 = new DataByteArray("!");
+        db1.append(db2).append(db3);
+        assertTrue("appends as expected", db1.equals(expected));
+    }
+    
+    @Test
+    public void testByteArrayAppendBytes() throws Exception {
+        DataByteArray expected = new DataByteArray("hello world");
+        DataByteArray db1 = new DataByteArray("hello ");
+        byte[] db2 = "world".getBytes();
+        db1.append(db2);
+        assertTrue("appends as expected", db1.equals(expected));
+    }
+    
+    @Test
+    public void testByteArrayAppendString() throws Exception {
+        DataByteArray expected = new DataByteArray("hello world");
+        DataByteArray db1 = new DataByteArray("hello ");
+        db1.append("world");
+        assertTrue("appends as expected", db1.equals(expected));
+    }
 
     @Test
     public void testMapConversionErr() throws Exception {