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 {