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 2010/10/26 22:32:13 UTC
svn commit: r1027736 - in /avro/trunk: CHANGES.txt
lang/java/src/java/org/apache/avro/file/DataFileStream.java
lang/java/src/test/java/org/apache/avro/TestDataFileMeta.java
Author: cutting
Date: Tue Oct 26 20:32:13 2010
New Revision: 1027736
URL: http://svn.apache.org/viewvc?rev=1027736&view=rev
Log:
AVRO-682. Java: Add method DataFileStream.getMetaKeys(). Contributed by Harsh J Chouraria.
Modified:
avro/trunk/CHANGES.txt
avro/trunk/lang/java/src/java/org/apache/avro/file/DataFileStream.java
avro/trunk/lang/java/src/test/java/org/apache/avro/TestDataFileMeta.java
Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1027736&r1=1027735&r2=1027736&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Tue Oct 26 20:32:13 2010
@@ -14,6 +14,11 @@ Avro 1.5.0 (unreleased)
moves some protected GenericDatumReader/Writer methods to
GenericData, potentially breaking subclasses. (cutting)
+ IMPROVEMENTS
+
+ AVRO-682. Java: Add method DataFileStream.getMetaKeys().
+ (Harsh J Chouraria via cutting)
+
BUG FIXES
AVRO-675. C: Bytes and fixed setters don't update datum size.
Modified: avro/trunk/lang/java/src/java/org/apache/avro/file/DataFileStream.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/file/DataFileStream.java?rev=1027736&r1=1027735&r2=1027736&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/file/DataFileStream.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/file/DataFileStream.java Tue Oct 26 20:32:13 2010
@@ -24,8 +24,11 @@ import java.io.Closeable;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
@@ -54,6 +57,7 @@ public class DataFileStream<D> implement
BinaryDecoder datumIn = null;
Map<String,byte[]> meta = new HashMap<String,byte[]>();
+ List<String> metaKeyList = new ArrayList<String>();
ByteBuffer blockBuffer;
long blockCount; // # entries in block
@@ -99,9 +103,14 @@ public class DataFileStream<D> implement
byte[] bb = new byte[value.remaining()];
value.get(bb);
meta.put(key, bb);
+ metaKeyList.add(key);
}
} while ((l = vin.mapNext()) != 0);
}
+
+ // Make the meta keys list unmodifiable.
+ metaKeyList = Collections.unmodifiableList(metaKeyList);
+
vin.readFixed(sync); // read sync
this.codec = resolveCodec();
@@ -122,6 +131,11 @@ public class DataFileStream<D> implement
/** Return the schema used in this file. */
public Schema getSchema() { return schema; }
+ /** Return the list of keys in the metadata */
+ public List<String> getMetaKeys() {
+ return metaKeyList;
+ }
+
/** Return the value of a metadata property. */
public byte[] getMeta(String key) {
return meta.get(key);
Modified: avro/trunk/lang/java/src/test/java/org/apache/avro/TestDataFileMeta.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/test/java/org/apache/avro/TestDataFileMeta.java?rev=1027736&r1=1027735&r2=1027736&view=diff
==============================================================================
--- avro/trunk/lang/java/src/test/java/org/apache/avro/TestDataFileMeta.java (original)
+++ avro/trunk/lang/java/src/test/java/org/apache/avro/TestDataFileMeta.java Tue Oct 26 20:32:13 2010
@@ -18,6 +18,7 @@
package org.apache.avro;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -49,6 +50,9 @@ public class TestDataFileMeta {
w.close();
DataFileStream<Void> r = new DataFileStream<Void>(new FileInputStream(f), new GenericDatumReader<Void>());
+
+ assertTrue(r.getMetaKeys().contains("hello"));
+
assertEquals("bar", r.getMetaString("hello"));
}