You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by cu...@apache.org on 2011/06/24 16:34:51 UTC
svn commit: r1139328 - in /avro/trunk: CHANGES.txt
lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java
Author: cutting
Date: Fri Jun 24 14:34:51 2011
New Revision: 1139328
URL: http://svn.apache.org/viewvc?rev=1139328&view=rev
Log:
AVRO-841. Java: Implement insertion in GenericData.Array. Contributed by Nick Palmer.
Modified:
avro/trunk/CHANGES.txt
avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
avro/trunk/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java
Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1139328&r1=1139327&r2=1139328&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Fri Jun 24 14:34:51 2011
@@ -14,6 +14,9 @@ Avro 1.6.0 (unreleased)
AVRO-833. Don't require simplejson for python >= 2.6.
(Miki Tebeka via philz)
+ AVRO-841. Java: Implement insertion in GenericData.Array.
+ (Nick Palmer via cutting)
+
BUG FIXES
Avro 1.5.2 (unreleased)
Modified: avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java?rev=1139328&r1=1139327&r2=1139328&view=diff
==============================================================================
--- avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java (original)
+++ avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java Fri Jun 24 14:34:51 2011
@@ -123,6 +123,19 @@ public class GenericData {
elements[size++] = o;
return true;
}
+ @Override public void add(int location, T o) {
+ if (location > size || location < 0) {
+ throw new IndexOutOfBoundsException("Index " + location + " out of bounds.");
+ }
+ if (size == elements.length) {
+ Object[] newElements = new Object[(size * 3)/2 + 1];
+ System.arraycopy(elements, 0, newElements, 0, size);
+ elements = newElements;
+ }
+ System.arraycopy(elements, location, elements, location + 1, size - location);
+ elements[location] = o;
+ size++;
+ }
@Override public T set(int i, T o) {
if (i >= size)
throw new IndexOutOfBoundsException("Index " + i + " out of bounds.");
Modified: avro/trunk/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java?rev=1139328&r1=1139327&r2=1139328&view=diff
==============================================================================
--- avro/trunk/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java (original)
+++ avro/trunk/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java Fri Jun 24 14:34:51 2011
@@ -153,6 +153,35 @@ public class TestGenericData {
}
@Test
+ public void testArrayAddAtLocation()
+ {
+ Schema schema = Schema.createArray(Schema.create(Schema.Type.INT));
+ GenericArray<Integer> array = new GenericData.Array<Integer>(6, schema);
+ array.clear();
+ for(int i=0; i<5; ++i)
+ array.add(i);
+ assertEquals(5, array.size());
+ array.add(0, 6);
+ assertEquals(new Integer(6), array.get(0));
+ assertEquals(6, array.size());
+ assertEquals(new Integer(0), array.get(1));
+ assertEquals(new Integer(4), array.get(5));
+ array.add(6, 7);
+ assertEquals(new Integer(7), array.get(6));
+ assertEquals(7, array.size());
+ assertEquals(new Integer(6), array.get(0));
+ assertEquals(new Integer(4), array.get(5));
+ array.add(1, 8);
+ assertEquals(new Integer(8), array.get(1));
+ assertEquals(new Integer(0), array.get(2));
+ assertEquals(new Integer(6), array.get(0));
+ assertEquals(8, array.size());
+ try {
+ array.get(9);
+ fail("Expected IndexOutOfBoundsException after adding elements");
+ } catch (IndexOutOfBoundsException e){}
+ }
+ @Test
public void testArrayRemove()
{
Schema schema = Schema.createArray(Schema.create(Schema.Type.INT));