Modified: gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/persistency/ws/impl/PersistentWSBase.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/persistency/ws/impl/PersistentWSBase.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/persistency/ws/impl/PersistentWSBase.java (original) +++ gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/persistency/ws/impl/PersistentWSBase.java Sat Aug 24 00:27:39 2013 @@ -23,7 +23,6 @@ import java.util.HashMap; import java.util.Map; import org.apache.gora.persistency.Persistent; -import org.apache.gora.persistency.StateManager; /** * Base classs implementing common functionality for Web services @@ -43,26 +42,6 @@ public abstract class PersistentWSBase i protected static Map<Class<?>, String[]> FIELDS = new HashMap<Class<?>, String[]>(); - /** - * Object used to manage the state of fields - */ - private StateManager stateManager; - - /** - * Constructor - */ - protected PersistentWSBase() { - this(new StateManagerWSImpl()); - } - - /** - * Constructor using a stateManager object - * @param stateManager - */ - protected PersistentWSBase(StateManager stateManager) { - this.stateManager = stateManager; - stateManager.setManagedPersistent(this); - } /** Subclasses should call this function for all the persistable fields * in the class to register them. @@ -80,15 +59,6 @@ public abstract class PersistentWSBase i FIELD_MAP.put(clazz, map); } - @Override - /** - * Gets the state manager - */ - public StateManager getStateManager() { - return stateManager; - } - - @Override /** * Gets fields using a specific class */ @@ -96,7 +66,6 @@ public abstract class PersistentWSBase i return FIELDS.get(getClass()); } - @Override /** * Gets a specific field from the fields map */ @@ -104,7 +73,6 @@ public abstract class PersistentWSBase i return FIELDS.get(getClass())[index]; } - @Override /** * Gets a field index based on the field name */ @@ -122,36 +90,17 @@ public abstract class PersistentWSBase i clearReadable(); } - @Override - /** - * Determines if a class is new or not - */ - public boolean isNew() { - return getStateManager().isNew(this); - } - - @Override - /** - * Sets this element as a new one inside the stateManager object - */ - public void setNew() { - getStateManager().setNew(this); - } - - @Override - /** - * Clears a new object from the stateManager - */ - public void clearNew() { - getStateManager().clearNew(this); + private void clearReadable() { + // TODO Auto-generated method stub + } - @Override + @Override /** * Determines if an object has been modified or not */ public boolean isDirty() { - return getStateManager().isDirty(this); + return true; } @Override @@ -160,7 +109,7 @@ public abstract class PersistentWSBase i * based on its field index */ public boolean isDirty(int fieldIndex) { - return getStateManager().isDirty(this, fieldIndex); + return true; } @Override @@ -174,112 +123,6 @@ public abstract class PersistentWSBase i @Override /** - * Sets this class as dirty - */ - public void setDirty() { - getStateManager().setDirty(this); - } - - @Override - /** - * Sets a specific field as dirty using its index - */ - public void setDirty(int fieldIndex) { - getStateManager().setDirty(this, fieldIndex); - } - - @Override - /** - * Sets a specific field as dirty using its name - */ - public void setDirty(String field) { - setDirty(getFieldIndex(field)); - } - - @Override - /** - * Clears dirty fields using its index - */ - public void clearDirty(int fieldIndex) { - getStateManager().clearDirty(this, fieldIndex); - } - - @Override - /** - * Clears dirty fields using its name - */ - public void clearDirty(String field) { - clearDirty(getFieldIndex(field)); - } - - @Override - /** - * Clears dirty fields from the state manager - */ - public void clearDirty() { - getStateManager().clearDirty(this); - } - - @Override - /** - * Checks if a field is readable using its index - */ - public boolean isReadable(int fieldIndex) { - return getStateManager().isReadable(this, fieldIndex); - } - - @Override - /** - * Checks if a field is readable using its name - */ - public boolean isReadable(String field) { - return isReadable(getFieldIndex(field)); - } - - @Override - /** - * Sets a field as readable using its index - */ - public void setReadable(int fieldIndex) { - getStateManager().setReadable(this, fieldIndex); - } - - @Override - /** - * Sets a field as readable using its name - */ - public void setReadable(String field) { - setReadable(getFieldIndex(field)); - } - - @Override - /** - * Clears this readable object from the state manager - */ - public void clearReadable() { - getStateManager().clearReadable(this); - } - - @Override - /** - * Clears a readable object based on its field index - * using a stateManager object - */ - public void clearReadable(int fieldIndex) { - getStateManager().clearReadable(this, fieldIndex); - } - - @Override - /** - * Clears a readable object based on its field name - * using a stateManager object - */ - public void clearReadable(String field) { - clearReadable(getFieldIndex(field)); - } - - @Override - /** * Determines if an object is equal to this class */ public boolean equals(Object o) {
Modified: gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java (original) +++ gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java Sat Aug 24 00:27:39 2013 @@ -22,14 +22,15 @@ import java.io.Closeable; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.avro.Schema; import org.apache.avro.Schema.Field; +import org.apache.avro.specific.SpecificDatumReader; +import org.apache.avro.specific.SpecificDatumWriter; import org.apache.commons.lang.builder.EqualsBuilder; -import org.apache.gora.avro.PersistentDatumReader; -import org.apache.gora.avro.PersistentDatumWriter; import org.apache.gora.avro.store.AvroStore; import org.apache.gora.persistency.BeanFactory; import org.apache.gora.persistency.impl.BeanFactoryImpl; @@ -70,9 +71,9 @@ public abstract class DataStoreBase<K, T protected Properties properties; - protected PersistentDatumReader<T> datumReader; + protected SpecificDatumReader<T> datumReader; - protected PersistentDatumWriter<T> datumWriter; + protected SpecificDatumWriter<T> datumWriter; public static final Logger LOG = LoggerFactory.getLogger(AvroStore.class); @@ -93,8 +94,8 @@ public abstract class DataStoreBase<K, T autoCreateSchema = DataStoreFactory.getAutoCreateSchema(properties, this); this.properties = properties; - datumReader = new PersistentDatumReader<T>(schema, false); - datumWriter = new PersistentDatumWriter<T>(schema, false); + datumReader = new SpecificDatumReader<T>(schema); + datumWriter = new SpecificDatumWriter<T>(schema); } @Override @@ -164,7 +165,12 @@ public abstract class DataStoreBase<K, T if(fields != null) { return fields; } - return beanFactory.getCachedPersistent().getFields(); + List<Field> schemaFields = beanFactory.getCachedPersistent().getSchema().getFields(); + String[] fieldNames = new String[schemaFields.size()]; + for(int i = 0; i<fieldNames.length; i++ ){ + fieldNames[i] = schemaFields.get(i).name(); + } + return fieldNames; } @Override @@ -234,25 +240,28 @@ public abstract class DataStoreBase<K, T /** * Returns the name of the schema to use for the persistent class. * - * The schema name is prefixed with schema.prefix from {@link Configuration}. - * The schema name in the defined properties is returned. If null then + * First the schema name in the {@link Configuration} is used. If null, + * the schema name in the defined properties is returned. If null then * the provided mappingSchemaName is returned. If this is null too, * the class name, without the package, of the persistent class is returned. * @param mappingSchemaName the name of the schema as read from the mapping file * @param persistentClass persistent class */ protected String getSchemaName(String mappingSchemaName, Class<?> persistentClass) { - String prefix = getOrCreateConf().get("schema.prefix",""); + String confSchemaName = getOrCreateConf().get("preferred.schema.name"); + if (confSchemaName != null) { + return confSchemaName; + } String schemaName = DataStoreFactory.getDefaultSchemaName(properties, this); if(schemaName != null) { - return prefix+schemaName; + return schemaName; } if(mappingSchemaName != null) { - return prefix+mappingSchemaName; + return mappingSchemaName; } - return prefix+StringUtils.getClassname(persistentClass); + return StringUtils.getClassname(persistentClass); } } Modified: gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/AvroUtils.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/AvroUtils.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/AvroUtils.java (original) +++ gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/AvroUtils.java Sat Aug 24 00:27:39 2013 @@ -18,17 +18,25 @@ package org.apache.gora.util; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.avro.Schema; import org.apache.avro.Schema.Field; +import org.apache.avro.io.BinaryEncoder; +import org.apache.avro.io.Decoder; +import org.apache.avro.io.DecoderFactory; +import org.apache.avro.io.EncoderFactory; import org.apache.avro.reflect.ReflectData; +import org.apache.avro.specific.SpecificDatumReader; +import org.apache.avro.specific.SpecificDatumWriter; import org.apache.gora.persistency.Persistent; /** - * An utility class for Avro related tasks + * An utility class for Avro related tasks */ public class AvroUtils { @@ -38,31 +46,87 @@ public class AvroUtils { public static Map<String, Field> getFieldMap(Schema schema) { List<Field> fields = schema.getFields(); HashMap<String, Field> fieldMap = new HashMap<String, Field>(fields.size()); - for(Field field: fields) { + for (Field field : fields) { fieldMap.put(field.name(), field); } return fieldMap; } - + @SuppressWarnings("unchecked") public static Object getEnumValue(Schema schema, String symbol) { return Enum.valueOf(ReflectData.get().getClass(schema), symbol); } - + public static Object getEnumValue(Schema schema, int enumOrdinal) { String symbol = schema.getEnumSymbols().get(enumOrdinal); return getEnumValue(schema, symbol); } - + /** * Returns the schema of the class */ - public static Schema getSchema(Class<? extends Persistent> clazz) - throws SecurityException, NoSuchFieldException - , IllegalArgumentException, IllegalAccessException { - - java.lang.reflect.Field field = clazz.getDeclaredField("_SCHEMA"); + public static Schema getSchema(Class<? extends Persistent> clazz) + throws SecurityException, NoSuchFieldException, IllegalArgumentException, + IllegalAccessException { + + java.lang.reflect.Field field = clazz.getDeclaredField("SCHEMA$"); return (Schema) field.get(null); } - + + /** + * Return the field names from a persistent object + * + * @param persistent + * the persistent object to get the fields names from + * @return the field names + */ + public static String[] getPersistentFieldNames(Persistent persistent) { + return getSchemaFieldNames(persistent.getSchema()); + } + + /** + * Return the field names from a schema object + * + * @param persistent + * the persistent object to get the fields names from + * @return the field names + */ + public static String[] getSchemaFieldNames(Schema schema) { + List<Field> fields = schema.getFields(); + String[] fieldNames = new String[fields.size() - 1]; + for (int i = 0; i < fieldNames.length; i++) { + fieldNames[i] = fields.get(i + 1).name(); + } + return fieldNames; + } + + public static <T extends Persistent> T deepClonePersistent(T persistent) { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + BinaryEncoder enc = EncoderFactory.get().binaryEncoder(bos, null); + SpecificDatumWriter<Persistent> writer = new SpecificDatumWriter<Persistent>( + persistent.getSchema()); + try { + writer.write(persistent, enc); + } catch (IOException e) { + throw new RuntimeException( + "Unable to serialize avro object to byte buffer - " + + "please report this issue to the Gora bugtracker " + + "or your administrator."); + } + byte[] value = bos.toByteArray(); + Decoder dec = DecoderFactory.get().binaryDecoder(value, null); + @SuppressWarnings("unchecked") + SpecificDatumReader<T> reader = new SpecificDatumReader<T>( + (Class<T>) persistent.getClass()); + try { + return reader.read(null, dec); + } catch (IOException e) { + throw new RuntimeException( + "Unable to deserialize avro object from byte buffer - " + + "please report this issue to the Gora bugtracker " + + "or your administrator."); + } + + } + } Modified: gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/ByteUtils.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/ByteUtils.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/ByteUtils.java (original) +++ gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/ByteUtils.java Sat Aug 24 00:27:39 2013 @@ -43,9 +43,10 @@ import java.nio.ByteBuffer; import org.apache.avro.Schema; import org.apache.avro.Schema.Type; import org.apache.avro.reflect.ReflectData; +import org.apache.avro.specific.SpecificDatumReader; +import org.apache.avro.specific.SpecificDatumWriter; +import org.apache.avro.specific.SpecificRecord; import org.apache.avro.util.Utf8; -import org.apache.gora.avro.PersistentDatumReader; -import org.apache.gora.avro.PersistentDatumWriter; import org.apache.hadoop.io.WritableUtils; // This code is copied almost directly from HBase project's Bytes class. @@ -677,30 +678,31 @@ public class ByteUtils { } @SuppressWarnings("unchecked") - public static Object fromBytes( byte[] val, Schema schema - , PersistentDatumReader<?> datumReader, Object object) + public static <T> T fromBytes( byte[] val, Schema schema + , SpecificDatumReader<T> datumReader, T object) throws IOException { Type type = schema.getType(); switch (type) { case ENUM: String symbol = schema.getEnumSymbols().get(val[0]); - return Enum.valueOf(ReflectData.get().getClass(schema), symbol); - case STRING: return new Utf8(toString(val)); - case BYTES: return ByteBuffer.wrap(val); - case INT: return bytesToVint(val); - case LONG: return bytesToVlong(val); - case FLOAT: return toFloat(val); - case DOUBLE: return toDouble(val); - case BOOLEAN: return val[0] != 0; + return (T)Enum.valueOf(ReflectData.get().getClass(schema), symbol); + case STRING: return (T)new Utf8(toString(val)); + case BYTES: return (T)ByteBuffer.wrap(val); + case INT: return (T)Integer.valueOf(bytesToVint(val)); + case LONG: return (T)Long.valueOf(bytesToVlong(val)); + case FLOAT: return (T)Float.valueOf(toFloat(val)); + case DOUBLE: return (T)Double.valueOf(toDouble(val)); + case BOOLEAN: return (T)Boolean.valueOf(val[0] != 0); case RECORD: //fall case MAP: - case ARRAY: return IOUtils.deserialize(val, datumReader, schema, object); + case ARRAY: return (T)IOUtils.deserialize(val, (SpecificDatumReader<SpecificRecord>)datumReader, schema, (SpecificRecord)object); default: throw new RuntimeException("Unknown type: "+type); } } - public static byte[] toBytes(Object o, Schema schema - , PersistentDatumWriter<?> datumWriter) + @SuppressWarnings("unchecked") + public static <T> byte[] toBytes(T o, Schema schema + , SpecificDatumWriter<T> datumWriter) throws IOException { Type type = schema.getType(); switch (type) { @@ -714,7 +716,7 @@ public class ByteUtils { case ENUM: return new byte[] { (byte)((Enum<?>) o).ordinal() }; case RECORD: //fall case MAP: - case ARRAY: return IOUtils.serialize(datumWriter, schema, o); + case ARRAY: return IOUtils.serialize((SpecificDatumWriter<SpecificRecord>)datumWriter, schema, (SpecificRecord)o); default: throw new RuntimeException("Unknown type: "+type); } } Modified: gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/IOUtils.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/IOUtils.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/IOUtils.java (original) +++ gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/IOUtils.java Sat Aug 24 00:27:39 2013 @@ -38,11 +38,12 @@ import org.apache.avro.io.BinaryEncoder; import org.apache.avro.io.Decoder; import org.apache.avro.io.DecoderFactory; import org.apache.avro.io.Encoder; -import org.apache.avro.ipc.ByteBufferInputStream; -import org.apache.avro.ipc.ByteBufferOutputStream; -import org.apache.gora.avro.PersistentDatumReader; -import org.apache.gora.avro.PersistentDatumWriter; -import org.apache.gora.persistency.impl.PersistentBase; +import org.apache.avro.io.EncoderFactory; +import org.apache.avro.specific.SpecificDatumReader; +import org.apache.avro.specific.SpecificDatumWriter; +import org.apache.avro.specific.SpecificRecord; +import org.apache.avro.util.ByteBufferInputStream; +import org.apache.avro.util.ByteBufferOutputStream; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.DataInputBuffer; import org.apache.hadoop.io.DataOutputBuffer; @@ -162,20 +163,20 @@ public class IOUtils { /** * Serializes the field object using the datumWriter. */ - public static<T extends PersistentBase> void serialize(OutputStream os, - PersistentDatumWriter<T> datumWriter, Schema schema, Object object) + public static<T extends SpecificRecord> void serialize(OutputStream os, + SpecificDatumWriter<T> datumWriter, Schema schema, T object) throws IOException { - BinaryEncoder encoder = new BinaryEncoder(os); - datumWriter.write(schema, object, encoder); + BinaryEncoder encoder = EncoderFactory.get().binaryEncoder(os, null); + datumWriter.write(object, encoder); encoder.flush(); } /** * Serializes the field object using the datumWriter. */ - public static<T extends PersistentBase> byte[] serialize(PersistentDatumWriter<T> datumWriter - , Schema schema, Object object) throws IOException { + public static<T extends SpecificRecord> byte[] serialize(SpecificDatumWriter<T> datumWriter + , Schema schema, T object) throws IOException { ByteArrayOutputStream os = new ByteArrayOutputStream(); serialize(os, datumWriter, schema, object); return os.toByteArray(); @@ -251,34 +252,21 @@ public class IOUtils { /** * Deserializes the field object using the datumReader. */ - @SuppressWarnings("unchecked") - public static<K, T extends PersistentBase> K deserialize(InputStream is, - PersistentDatumReader<T> datumReader, Schema schema, K object) + public static<K, T extends SpecificRecord> T deserialize(InputStream is, + SpecificDatumReader<T> datumReader, Schema schema, T object) throws IOException { - decoder = DecoderFactory.defaultFactory().createBinaryDecoder(is, decoder); - return (K)datumReader.read(object, schema, decoder); + decoder = DecoderFactory.get().binaryDecoder(is, decoder); + return (T)datumReader.read(object, decoder); } /** * Deserializes the field object using the datumReader. */ - @SuppressWarnings("unchecked") - public static<K, T extends PersistentBase> K deserialize(byte[] bytes, - PersistentDatumReader<T> datumReader, Schema schema, K object) + public static<K, T extends SpecificRecord> T deserialize(byte[] bytes, + SpecificDatumReader<T> datumReader, Schema schema, T object) throws IOException { - decoder = DecoderFactory.defaultFactory().createBinaryDecoder(bytes, decoder); - return (K)datumReader.read(object, schema, decoder); - } - - - /** - * Serializes the field object using the datumWriter. - */ - public static<T extends PersistentBase> byte[] deserialize(PersistentDatumWriter<T> datumWriter - , Schema schema, Object object) throws IOException { - ByteArrayOutputStream os = new ByteArrayOutputStream(); - serialize(os, datumWriter, schema, object); - return os.toByteArray(); + decoder = DecoderFactory.get().binaryDecoder(bytes, decoder); + return (T)datumReader.read(object, decoder); } /** Added: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/examples/TestWebPageDataCreator.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/examples/TestWebPageDataCreator.java?rev=1517093&view=auto ============================================================================== --- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/examples/TestWebPageDataCreator.java (added) +++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/examples/TestWebPageDataCreator.java Sat Aug 24 00:27:39 2013 @@ -0,0 +1,19 @@ +package org.apache.gora.examples; + +import java.io.IOException; + +import org.apache.gora.examples.generated.WebPage; +import org.apache.gora.memory.store.MemStore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class TestWebPageDataCreator { + + @Test public void testCreatesData() throws IOException{ + MemStore<String, WebPage> dataStore = new MemStore<String, WebPage>(); + WebPageDataCreator.createWebPageData(dataStore); + } + +} Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/DataStoreMapReduceTestBase.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/DataStoreMapReduceTestBase.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/DataStoreMapReduceTestBase.java (original) +++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/DataStoreMapReduceTestBase.java Sat Aug 24 00:27:39 2013 @@ -37,7 +37,6 @@ import org.slf4j.LoggerFactory; * class, which actually only uses {@link MapReduceTestUtils} methods to * run the tests. */ -@SuppressWarnings("deprecation") public abstract class DataStoreMapReduceTestBase extends HadoopTestCase { public static final Logger LOG = LoggerFactory.getLogger(DataStoreMapReduceTestBase.class); @@ -71,8 +70,8 @@ public abstract class DataStoreMapReduce @Override public void tearDown() throws Exception { LOG.info("Tearing down Hadoop Test Case..."); - super.tearDown(); webPageStore.close(); + super.tearDown(); } protected abstract DataStore<String, WebPage> createWebPageDataStore() Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/MapReduceTestUtils.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/MapReduceTestUtils.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/MapReduceTestUtils.java (original) +++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/MapReduceTestUtils.java Sat Aug 24 00:27:39 2013 @@ -19,10 +19,10 @@ package org.apache.gora.mapreduce; import java.util.HashMap; +import java.util.List; import java.util.Map; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.avro.Schema.Field; import org.apache.gora.examples.WebPageDataCreator; import org.apache.gora.examples.generated.TokenDatum; import org.apache.gora.examples.generated.WebPage; @@ -32,8 +32,11 @@ import org.apache.gora.query.Query; import org.apache.gora.store.DataStore; import org.apache.gora.store.impl.DataStoreBase; import org.apache.hadoop.conf.Configuration; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class MapReduceTestUtils { @@ -50,7 +53,12 @@ public class MapReduceTestUtils { QueryCounter<String,WebPage> counter = new QueryCounter<String,WebPage>(conf); Query<String,WebPage> query = dataStore.newQuery(); - query.setFields(WebPage._ALL_FIELDS); + List<Field> fields = WebPage.SCHEMA$.getFields(); + String[] fieldNames = new String[fields.size()]; + for(int i = 0; i< fieldNames.length; i++){ + fieldNames[i] = fields.get(i).name(); + } + query.setFields(fieldNames); dataStore.close(); @@ -65,7 +73,7 @@ public class MapReduceTestUtils { public static void testWordCount(Configuration conf, DataStore<String,WebPage> inStore, DataStore<String, TokenDatum> outStore) throws Exception { - //Datastore now has to be a Hadoop based datastore + //Datastore now has to be a Hadoop based datastore ((DataStoreBase<String,WebPage>)inStore).setConf(conf); ((DataStoreBase<String,TokenDatum>)outStore).setConf(conf); @@ -97,6 +105,6 @@ public class MapReduceTestUtils { String token, int count) throws Exception { TokenDatum datum = outStore.get(token, null); assertNotNull("token:" + token + " cannot be found in datastore", datum); - assertEquals("count for token:" + token + " is wrong", count, datum.getCount()); + assertEquals("count for token:" + token + " is wrong", count, datum.getCount()); //.intValue()? } } Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestGoraInputFormat.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestGoraInputFormat.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestGoraInputFormat.java (original) +++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestGoraInputFormat.java Sat Aug 24 00:27:39 2013 @@ -22,6 +22,7 @@ import java.io.IOException; import java.util.Arrays; import java.util.List; +import org.apache.avro.Schema.Field; import org.apache.gora.examples.generated.Employee; import org.apache.gora.mock.persistency.MockPersistent; import org.apache.gora.mock.query.MockQuery; @@ -41,7 +42,8 @@ public class TestGoraInputFormat { MockDataStore store = MockDataStore.get(); MockQuery query = store.newQuery(); - query.setFields(Employee._ALL_FIELDS); + + query.setFields(getEmployeeFieldNames()); GoraInputFormat.setInput(job, query, false); GoraInputFormat<String, MockPersistent> inputFormat @@ -61,7 +63,16 @@ public class TestGoraInputFormat { InputSplit split = splits.get(0); PartitionQuery query = ((GoraInputSplit)split).getQuery(); - assertTrue(Arrays.equals(Employee._ALL_FIELDS, query.getFields())); + Assert.assertTrue(Arrays.equals(getEmployeeFieldNames(), query.getFields())); + } + + private static String[] getEmployeeFieldNames(){ + List<Field> fields = Employee.SCHEMA$.getFields(); + String[] fieldNames = new String[fields.size()]; + for(int i = 0; i< fieldNames.length; i++){ + fieldNames[i] = fields.get(i).name(); + } + return fieldNames; } } \ No newline at end of file Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestPersistentSerialization.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestPersistentSerialization.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestPersistentSerialization.java (original) +++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestPersistentSerialization.java Sat Aug 24 00:27:39 2013 @@ -18,6 +18,9 @@ package org.apache.gora.mapreduce; +import java.util.ArrayList; +import java.util.HashMap; + import org.apache.avro.util.Utf8; import org.apache.gora.examples.WebPageDataCreator; import org.apache.gora.examples.generated.Employee; @@ -31,8 +34,9 @@ import org.apache.hadoop.conf.Configurat import org.junit.Test; import static org.junit.Assert.assertEquals; -/** Test class for {@link PersistentSerialization}, {@link PersistentSerializer} - * and {@link PersistentDeserializer} +/** + * Test class for {@link PersistentSerialization}, {@link PersistentSerializer} + * and {@link PersistentDeserializer} */ public class TestPersistentSerialization { @@ -75,8 +79,8 @@ public class TestPersistentSerialization Result<String, WebPage> result = store.newQuery().execute(); - int i=0; - while(result.next()) { + int i = 0; + while (result.next()) { WebPage page = result.get(); TestIOUtils.testSerializeDeserialize(page); i++; @@ -93,10 +97,10 @@ public class TestPersistentSerialization page1.setUrl(new Utf8("foo")); page2.setUrl(new Utf8("baz")); page3.setUrl(new Utf8("bar")); - - page1.addToParsedContent(new Utf8("coo")); - - page2.putToOutlinks(new Utf8("a"), new Utf8("b")); + page1.setParsedContent(new ArrayList<CharSequence>()); + page1.getParsedContent().add(new Utf8("coo")); + page2.setOutlinks(new HashMap<CharSequence, CharSequence>()); + page2.getOutlinks().put(new Utf8("a"), new Utf8("b")); TestIOUtils.testSerializeDeserialize(page1, page2, page3); } Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mock/persistency/MockPersistent.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mock/persistency/MockPersistent.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mock/persistency/MockPersistent.java (original) +++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mock/persistency/MockPersistent.java Sat Aug 24 00:27:39 2013 @@ -19,8 +19,7 @@ package org.apache.gora.mock.persistency; import org.apache.avro.Schema; -import org.apache.gora.persistency.Persistent; -import org.apache.gora.persistency.StateManager; +import org.apache.gora.persistency.Tombstone; import org.apache.gora.persistency.impl.PersistentBase; public class MockPersistent extends PersistentBase { @@ -36,9 +35,6 @@ public class MockPersistent extends Pers public MockPersistent() { } - public MockPersistent(StateManager stateManager) { - super(stateManager); - } @Override public Object get(int field) { @@ -79,22 +75,9 @@ public class MockPersistent extends Pers } @Override - public String getField(int index) { - return null; - } - - @Override - public int getFieldIndex(String field) { - return 0; - } - - @Override - public String[] getFields() { - return null; + public Tombstone getTombstone() { + return new Tombstone(){}; } - @Override - public Persistent newInstance(StateManager stateManager) { - return new MockPersistent(stateManager); - } + } Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/persistency/impl/TestPersistentBase.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/persistency/impl/TestPersistentBase.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/persistency/impl/TestPersistentBase.java (original) +++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/persistency/impl/TestPersistentBase.java Sat Aug 24 00:27:39 2013 @@ -20,13 +20,19 @@ package org.apache.gora.persistency.impl import java.io.IOException; import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.HashMap; import org.apache.avro.util.Utf8; import org.apache.gora.examples.generated.Employee; +import org.apache.gora.examples.generated.ImmutableFields; +import org.apache.gora.examples.generated.Metadata; +import org.apache.gora.examples.generated.V2; import org.apache.gora.examples.generated.WebPage; import org.apache.gora.memory.store.MemStore; import org.apache.gora.store.DataStoreFactory; import org.apache.gora.store.DataStoreTestUtil; +import org.apache.gora.util.AvroUtils; import org.apache.hadoop.conf.Configuration; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java (original) +++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java Sat Aug 24 00:27:39 2013 @@ -53,6 +53,7 @@ import org.apache.gora.persistency.impl. import org.apache.gora.query.PartitionQuery; import org.apache.gora.query.Query; import org.apache.gora.query.Result; +import org.apache.gora.util.AvroUtils; import org.apache.gora.util.ByteUtils; import org.apache.gora.util.StringUtils; import org.junit.Test; @@ -159,7 +160,7 @@ public class DataStoreTestUtil { dataStore.put(ssn, employee); dataStore.flush(); - Employee after = dataStore.get(ssn, Employee._ALL_FIELDS); + Employee after = dataStore.get(ssn, AvroUtils.getSchemaFieldNames(Employee.SCHEMA$)); assertEquals(employee, after); } @@ -337,9 +338,9 @@ public class DataStoreTestUtil { for (int i = 0; i < 1; i++) { String key = Long.toString(ssn + i); Employee employee = dataStore.get(key); - assertEquals(now - 18L * YEAR_IN_MS, employee.getDateOfBirth()); + assertEquals(now - 18L * YEAR_IN_MS, employee.getDateOfBirth()); //.intValue()? assertEquals("John Doe " + (i + 5), employee.getName().toString()); - assertEquals(120000, employee.getSalary()); + assertEquals(120000, employee.getSalary()); //.intValue()? } } @@ -360,10 +361,10 @@ public class DataStoreTestUtil { WebPage webPage = dataStore.newPersistent(); webPage.setUrl(new Utf8(urls[i])); for (parsedContentCount = 0; parsedContentCount < 5; parsedContentCount++) { - webPage.addToParsedContent(new Utf8(parsedContent + i + "," + parsedContentCount)); + webPage.getParsedContent().add(new Utf8(parsedContent + i + "," + parsedContentCount)); } for (int j = 0; j < urls.length; j += 2) { - webPage.putToOutlinks(new Utf8(anchor + j), new Utf8(urls[j])); + webPage.getOutlinks().put(new Utf8(anchor + j), new Utf8(urls[j])); } dataStore.put(webPage.getUrl().toString(), webPage); } @@ -374,11 +375,11 @@ public class DataStoreTestUtil { WebPage webPage = dataStore.get(urls[i]); webPage.setContent(ByteBuffer.wrap(ByteUtils.toBytes(content + i))); for (parsedContentCount = 5; parsedContentCount < 10; parsedContentCount++) { - webPage.addToParsedContent(new Utf8(parsedContent + i + "," + parsedContentCount)); + webPage.getParsedContent().add(new Utf8(parsedContent + i + "," + parsedContentCount)); } webPage.getOutlinks().clear(); for (int j = 1; j < urls.length; j += 2) { - webPage.putToOutlinks(new Utf8(anchor + j), new Utf8(urls[j])); + webPage.getOutlinks().put(new Utf8(anchor + j), new Utf8(urls[j])); } dataStore.put(webPage.getUrl().toString(), webPage); } @@ -390,13 +391,13 @@ public class DataStoreTestUtil { assertEquals(content + i, ByteUtils.toString( toByteArray(webPage.getContent()) )); assertEquals(10, webPage.getParsedContent().size()); int j = 0; - for (Utf8 pc : webPage.getParsedContent()) { + for (CharSequence pc : webPage.getParsedContent()) { assertEquals(parsedContent + i + "," + j, pc.toString()); j++; } int count = 0; for (j = 1; j < urls.length; j += 2) { - Utf8 link = webPage.getOutlinks().get(new Utf8(anchor + j)); + CharSequence link = webPage.getOutlinks().get(new Utf8(anchor + j)); assertNotNull(link); assertEquals(urls[j], link.toString()); count++; @@ -407,7 +408,7 @@ public class DataStoreTestUtil { for (int i = 0; i < urls.length; i++) { WebPage webPage = dataStore.get(urls[i]); for (int j = 0; j < urls.length; j += 2) { - webPage.putToOutlinks(new Utf8(anchor + j), new Utf8(urls[j])); + webPage.getOutlinks().put(new Utf8(anchor + j), new Utf8(urls[j])); } dataStore.put(webPage.getUrl().toString(), webPage); } @@ -418,7 +419,7 @@ public class DataStoreTestUtil { WebPage webPage = dataStore.get(urls[i]); int count = 0; for (int j = 0; j < urls.length; j++) { - Utf8 link = webPage.getOutlinks().get(new Utf8(anchor + j)); + CharSequence link = webPage.getOutlinks().get(new Utf8(anchor + j)); assertNotNull(link); assertEquals(urls[j], link.toString()); count++; @@ -710,7 +711,7 @@ public class DataStoreTestUtil { WebPageDataCreator.createWebPageData(store); query = store.newQuery(); - query.setFields(WebPage._ALL_FIELDS); + query.setFields(AvroUtils.getSchemaFieldNames(WebPage.SCHEMA$)); assertNumResults(store.newQuery(), URLS.length); store.deleteByQuery(query); @@ -753,8 +754,8 @@ public class DataStoreTestUtil { WebPageDataCreator.createWebPageData(store); query = store.newQuery(); - query.setFields(WebPage.Field.OUTLINKS.getName() - , WebPage.Field.PARSED_CONTENT.getName(), WebPage.Field.CONTENT.getName()); + query.setFields("outlinks" + , "parsedContent", "content"); assertNumResults(store.newQuery(), URLS.length); store.deleteByQuery(query); @@ -786,7 +787,7 @@ public class DataStoreTestUtil { WebPageDataCreator.createWebPageData(store); query = store.newQuery(); - query.setFields(WebPage.Field.URL.getName()); + query.setFields("url"); String startKey = SORTED_URLS[NUM_KEYS]; String endKey = SORTED_URLS[SORTED_URLS.length - NUM_KEYS]; query.setStartKey(startKey); @@ -831,7 +832,7 @@ public class DataStoreTestUtil { WebPage page = store.newPersistent(); Metadata metadata = new Metadata(); metadata.setVersion(1); - metadata.putToData(new Utf8("foo"), new Utf8("baz")); + metadata.getData().put(new Utf8("foo"), new Utf8("baz")); page.setMetadata(metadata); page.setUrl(new Utf8(url)); @@ -842,7 +843,7 @@ public class DataStoreTestUtil { page = store.get(revUrl); metadata = page.getMetadata(); assertNotNull(metadata); - assertEquals(1, metadata.getVersion()); + assertEquals(1, metadata.getVersion()); //.intValue()? assertEquals(new Utf8("baz"), metadata.getData().get(new Utf8("foo"))); } @@ -854,7 +855,7 @@ public class DataStoreTestUtil { String[] tokens = {"example", "content", "in", "example.com"}; for(String token: tokens) { - page.addToParsedContent(new Utf8(token)); + page.getParsedContent().add(new Utf8(token)); } store.put("com.example/http", page); @@ -885,9 +886,9 @@ public class DataStoreTestUtil { WebPage page = store.newPersistent(); page.setUrl(new Utf8("http://example.com")); - page.putToOutlinks(new Utf8("http://example2.com"), new Utf8("anchor2")); - page.putToOutlinks(new Utf8("http://example3.com"), new Utf8("anchor3")); - page.putToOutlinks(new Utf8("http://example3.com"), new Utf8("anchor4")); + page.getOutlinks().put(new Utf8("http://example2.com"), new Utf8("anchor2")); + page.getOutlinks().put(new Utf8("http://example3.com"), new Utf8("anchor3")); + page.getOutlinks().put(new Utf8("http://example3.com"), new Utf8("anchor4")); store.put("com.example/http", page); store.close(); } Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/util/TestIOUtils.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/util/TestIOUtils.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/util/TestIOUtils.java (original) +++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/util/TestIOUtils.java Sat Aug 24 00:27:39 2013 @@ -27,11 +27,10 @@ import java.io.EOFException; import java.io.IOException; import java.util.Arrays; -import org.apache.avro.ipc.ByteBufferInputStream; -import org.apache.avro.ipc.ByteBufferOutputStream; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.avro.util.ByteBufferInputStream; +import org.apache.avro.util.ByteBufferOutputStream; import org.apache.gora.mapreduce.GoraMapReduceUtils; +import org.apache.gora.util.IOUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.DataInputBuffer; import org.apache.hadoop.io.DataOutputBuffer; @@ -39,6 +38,8 @@ import org.apache.hadoop.io.Text; import org.apache.hadoop.io.Writable; import org.junit.Test; import static org.junit.Assert.assertEquals; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Test case for {@link IOUtils} class. Modified: gora/branches/GORA_94/gora-tutorial/pom.xml URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-tutorial/pom.xml?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-tutorial/pom.xml (original) +++ gora/branches/GORA_94/gora-tutorial/pom.xml Sat Aug 24 00:27:39 2013 @@ -128,7 +128,7 @@ </dependency> <dependency> - <groupId>org.apache.hadoop</groupId> + <groupId>org.apache.avro</groupId> <artifactId>avro</artifactId> </dependency> Modified: gora/branches/GORA_94/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/LogAnalytics.java URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/LogAnalytics.java?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/LogAnalytics.java (original) +++ gora/branches/GORA_94/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/LogAnalytics.java Sat Aug 24 00:27:39 2013 @@ -77,7 +77,7 @@ public class LogAnalytics extends Config protected void map(Long key, Pageview pageview, Context context) throws IOException ,InterruptedException { - Utf8 url = pageview.getUrl(); + CharSequence url = pageview.getUrl(); long day = getDay(pageview.getTimestamp()); tuple.getKey().set(url.toString()); Modified: gora/branches/GORA_94/pom.xml URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/pom.xml?rev=1517093&r1=1517092&r2=1517093&view=diff ============================================================================== --- gora/branches/GORA_94/pom.xml (original) +++ gora/branches/GORA_94/pom.xml Sat Aug 24 00:27:39 2013 @@ -571,12 +571,14 @@ </profiles> <modules> + <module>gora-compiler</module> + <module>gora-compiler-cli</module> <module>gora-core</module> - <module>gora-hbase</module> - <module>gora-accumulo</module> - <module>gora-cassandra</module> + <!--module>gora-hbase</module> + <module>gora-accumulo</module--> + <!--module>gora-cassandra</module--> <!-- module>gora-solr</module--> - <module>gora-dynamodb</module> + <!--module>gora-dynamodb</module--> <!--module>gora-sql</module--> <module>gora-tutorial</module> <module>sources-dist</module> @@ -591,7 +593,7 @@ <hadoop.version>1.0.1</hadoop.version> <hadoop.test.version>1.0.1</hadoop.test.version> <hbase.version>0.90.4</hbase.version> - <avro.version>1.3.3</avro.version> + <avro.version>1.7.4</avro.version> <cxf-rt-frontend-jaxrs.version>2.5.2</cxf-rt-frontend-jaxrs.version> <!-- Amazon Dependencies --> <amazon.version>1.3.12</amazon.version> @@ -618,7 +620,7 @@ <mysql.version>5.1.18</mysql.version> <xerces.version>2.9.1</xerces.version> <!-- Logging Dependencies --> - <slf4j.version>1.6.1</slf4j.version> + <slf4j.version>1.5.8</slf4j.version> <log4j.version>1.2.16</log4j.version> <!-- Testing Dependencies --> @@ -627,7 +629,8 @@ <!-- Maven Plugin Dependencies --> <maven-compiler-plugin.version>2.3.2</maven-compiler-plugin.version> <maven-resources-plugin.version>2.5</maven-resources-plugin.version> - <maven-jar-plugin.version>2.4</maven-jar-plugin.version> + <!-- pegged at 2.3.2 for eclipse users, see https://github.com/sonatype/m2eclipse-extras/issues/10 --> + <maven-jar-plugin.version>2.3.2</maven-jar-plugin.version> <maven-dependency-plugin.version>2.4</maven-dependency-plugin.version> <build-helper-maven-plugin.version>1.7</build-helper-maven-plugin.version> <maven-surfire-plugin.version>2.12</maven-surfire-plugin.version> @@ -702,6 +705,30 @@ <version>${project.version}</version> <type>test-jar</type> </dependency> + + <dependency> + <groupId>org.apache.gora</groupId> + <artifactId>gora-compiler</artifactId> + <version>${project.version}</version> + </dependency> + <!--dependency> + <groupId>org.apache.gora</groupId> + <artifactId>gora-core</artifactId> + <version>${project.version}</version> + <type>test-jar</type> + </dependency--> + + <dependency> + <groupId>org.apache.gora</groupId> + <artifactId>gora-compiler-cli</artifactId> + <version>${project.version}</version> + </dependency> + <!--dependency> + <groupId>org.apache.gora</groupId> + <artifactId>gora-core</artifactId> + <version>${project.version}</version> + <type>test-jar</type> + </dependency--> <dependency> <groupId>org.apache.gora</groupId> @@ -786,7 +813,7 @@ </dependency> <dependency> - <groupId>org.apache.hadoop</groupId> + <groupId>org.apache.avro</groupId> <artifactId>avro</artifactId> <version>${avro.version}</version> <exclusions> @@ -796,17 +823,53 @@ </exclusion> </exclusions> </dependency> + + <dependency> + <groupId>org.apache.avro</groupId> + <artifactId>avro-compiler</artifactId> + <version>${avro.version}</version> + <exclusions> + <exclusion> + <groupId>ant</groupId> + <artifactId>ant</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.apache.avro</groupId> + <artifactId>avro-mapred</artifactId> + <version>${avro.version}</version> + <exclusions> + <exclusion> + <groupId>ant</groupId> + <artifactId>ant</artifactId> + </exclusion> + </exclusions> + </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase</artifactId> <version>${hbase.version}</version> + <exclusions> + <exclusion> + <groupId>org.apache.hadoop</groupId> + <artifactId>avro</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase</artifactId> <version>${hbase.version}</version> <type>test-jar</type> + <exclusions> + <exclusion> + <groupId>org.apache.hadoop</groupId> + <artifactId>avro</artifactId> + </exclusion> + </exclusions> </dependency> <!-- Cassandra Dependencies --> @@ -1252,7 +1315,7 @@ <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> - + </dependencies> </dependencyManagement>
