You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gora.apache.org by le...@apache.org on 2012/09/04 22:44:56 UTC
svn commit: r1380874 - in /gora/branches/goraamazon: ./
docs/src/content/xdocs/ gora-accumulo/ gora-cassandra/
gora-cassandra/src/main/java/org/apache/gora/cassandra/query/
gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/
gora-cassan...
Author: lewismc
Date: Tue Sep 4 20:44:54 2012
New Revision: 1380874
URL: http://svn.apache.org/viewvc?rev=1380874&view=rev
Log:
batch backportof trunk issues to goraamazon branch
Added:
gora/branches/goraamazon/eclipse-codeformat.xml
- copied unchanged from r1380844, gora/trunk/eclipse-codeformat.xml
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/
- copied from r1380844, gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/GenericArraySerializer.java
- copied unchanged from r1380844, gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/GenericArraySerializer.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/GoraSerializerTypeInferer.java
- copied unchanged from r1380844, gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/GoraSerializerTypeInferer.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/SpecificFixedSerializer.java
- copied unchanged from r1380844, gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/SpecificFixedSerializer.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/StatefulHashMapSerializer.java
- copied unchanged from r1380844, gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/StatefulHashMapSerializer.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/TypeUtils.java
- copied unchanged from r1380844, gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/TypeUtils.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/Utf8Serializer.java
- copied unchanged from r1380844, gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/Utf8Serializer.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraMappingManager.java
- copied unchanged from r1380844, gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraMappingManager.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/HectorUtils.java
- copied unchanged from r1380844, gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/HectorUtils.java
gora/branches/goraamazon/gora-cassandra/src/test/conf/cassandra.yaml
- copied unchanged from r1380844, gora/trunk/gora-cassandra/src/test/conf/cassandra.yaml
gora/branches/goraamazon/gora-cassandra/src/test/conf/log4j-server.properties
- copied unchanged from r1380844, gora/trunk/gora-cassandra/src/test/conf/log4j-server.properties
gora/branches/goraamazon/gora-cassandra/src/test/java/org/
- copied from r1380844, gora/trunk/gora-cassandra/src/test/java/org/
gora/branches/goraamazon/gora-cassandra/src/test/java/org/apache/
- copied from r1380844, gora/trunk/gora-cassandra/src/test/java/org/apache/
gora/branches/goraamazon/gora-cassandra/src/test/java/org/apache/gora/
- copied from r1380844, gora/trunk/gora-cassandra/src/test/java/org/apache/gora/
gora/branches/goraamazon/gora-cassandra/src/test/java/org/apache/gora/cassandra/
- copied from r1380844, gora/trunk/gora-cassandra/src/test/java/org/apache/gora/cassandra/
gora/branches/goraamazon/gora-cassandra/src/test/java/org/apache/gora/cassandra/GoraCassandraTestDriver.java
- copied unchanged from r1380844, gora/trunk/gora-cassandra/src/test/java/org/apache/gora/cassandra/GoraCassandraTestDriver.java
gora/branches/goraamazon/gora-cassandra/src/test/java/org/apache/gora/cassandra/store/
- copied from r1380844, gora/trunk/gora-cassandra/src/test/java/org/apache/gora/cassandra/store/
gora/branches/goraamazon/gora-cassandra/src/test/java/org/apache/gora/cassandra/store/TestCassandraStore.java
- copied unchanged from r1380844, gora/trunk/gora-cassandra/src/test/java/org/apache/gora/cassandra/store/TestCassandraStore.java
Modified:
gora/branches/goraamazon/ (props changed)
gora/branches/goraamazon/CHANGES.txt
gora/branches/goraamazon/docs/src/content/xdocs/site.xml
gora/branches/goraamazon/gora-accumulo/pom.xml
gora/branches/goraamazon/gora-cassandra/pom.xml
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraResult.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraSubColumn.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraSuperColumn.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraMapping.java
gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java
gora/branches/goraamazon/gora-cassandra/src/test/conf/gora-cassandra-mapping.xml
gora/branches/goraamazon/gora-cassandra/src/test/conf/gora.properties
gora/branches/goraamazon/gora-core/pom.xml
gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/compiler/GoraCompiler.java
gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java
gora/branches/goraamazon/gora-core/src/main/java/overview.html
gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java
gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/persistency/TestListGenericArray.java
gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java
gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
gora/branches/goraamazon/gora-hbase/pom.xml
gora/branches/goraamazon/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseStore.java
gora/branches/goraamazon/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseTableConnection.java
gora/branches/goraamazon/gora-hbase/src/test/java/org/apache/gora/hbase/GoraHBaseTestDriver.java
gora/branches/goraamazon/gora-hbase/src/test/java/org/apache/gora/hbase/store/TestHBaseStore.java
gora/branches/goraamazon/gora-sql/pom.xml
gora/branches/goraamazon/gora-tutorial/pom.xml
gora/branches/goraamazon/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/LogAnalytics.java
gora/branches/goraamazon/pom.xml
Propchange: gora/branches/goraamazon/
------------------------------------------------------------------------------
svn:mergeinfo = /gora/trunk:1348392-1380844
Modified: gora/branches/goraamazon/CHANGES.txt
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/CHANGES.txt?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/CHANGES.txt (original)
+++ gora/branches/goraamazon/CHANGES.txt Tue Sep 4 20:44:54 2012
@@ -4,9 +4,42 @@
Gora Change Log
-0.3 (trunk) Current Development:
+trunk (current development)
-* GORA-103 Datastore for gora dynamodb - phase 1 (Renato Javier MarroquÃn Mogrovejo via lewismc)
+* GORA-160 Gora Fails to Import Into Recent Versions of Eclipse (Ed Kohlwey via lewismc)
+
+* GORA-85 Implement "Usage" messages for SpecificCompiler and LogAnalytics (lewismc)
+
+* GORA-164 Use <type> instead of <classifier> configuration for test dependencies (lewismc)
+
+* GORA-XX ensure directory cleanup succeeds in gora-* (Simone Tripodi via lewismc)
+
+0.2.1 release: 26/07/2012
+Release Report: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311172&version=12322496
+
+* GORA-157 gora-cassandra test failure - proposal to skip 10 test cases for a while (kazk)
+
+* GORA-156 Properly implement getSchemaName in CassandraStore (lewismc)
+
+* GORA-153 gora-cassandra does not correctly handle DELETED State for MAP (kazk)
+
+* GORA-152 gora-core test incorrectly uses ByteBuffer's array() method to get its byte array (kazk)
+
+* GORA-151 CassandraStore's schemaExists() method always returns false (kazk)
+
+* GORA-150 Introduce Configuration property preferred.schema.name (ferdy)
+
+* GORA-142 Creates org.apache.gora.cassandra.serializers package in order to clean the code of store and query packages and to support additional types in future. (kazk)
+
+* GORA-148 CassandraMapping supports only (first) keyspace and class in gora-cassandra-mapping.xml (kazk)
+
+* GORA-143 GoraCompiler needs to add "import FixedSize" statement for FIXED type (kazk)
+
+* GORA-147 fix threading issue caused by multiple threads trying to flush (ferdy)
+
+* GORA-146 HBaseStore does not properly set endkey (ferdy)
+
+* GORA-140 Requires some adjustments on dependency at gora-cassandra (kazk, lewismc)
* GORA-138 gora-cassandra array type support: Double fix for GORA-81 Replace CassandraStore#addOrUpdateField with TypeInferringSerializer to take advantage of when the value is already of type ByteBuffer. (Kazuomi Kashii via lewismc)
Modified: gora/branches/goraamazon/docs/src/content/xdocs/site.xml
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/docs/src/content/xdocs/site.xml?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/docs/src/content/xdocs/site.xml (original)
+++ gora/branches/goraamazon/docs/src/content/xdocs/site.xml Tue Sep 4 20:44:54 2012
@@ -48,7 +48,8 @@ See http://forrest.apache.org/docs/linki
<gora-cassandra label="gora-cassandra" href="gora-cassandra.html" />
<gora-hbase label="gora-hbase" href="gora-hbase.html" />
<gora-sql label="gora-sql" href="gora-sql.html" />
- <api label="API docs" href="ext:api/index" />
+ <nightly label="Nightly API docs" href="ext:nightly" />
+ <api label="0.2.1 API docs" href="ext:api/index" />
</docs>
<external-refs>
@@ -70,8 +71,9 @@ See http://forrest.apache.org/docs/linki
<cassandra href="http://cassandra.apache.org/"/>
<nutch href="http://nutch.apache.org/"/>
<sponsors href="http://www.apache.org/foundation/thanks.html"/>
+ <nightly href="https://builds.apache.org/job/gora-trunk/javadoc" />
- <api href="api/">
+ <api href="apidocs-0.2.1/">
<index href="index.html" />
<org href="org/">
<apache href="apache/">
Modified: gora/branches/goraamazon/gora-accumulo/pom.xml
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-accumulo/pom.xml?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-accumulo/pom.xml (original)
+++ gora/branches/goraamazon/gora-accumulo/pom.xml Tue Sep 4 20:44:54 2012
@@ -93,24 +93,6 @@
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>${maven-jar-plugin.version}</version>
- <executions>
- <execution>
- <goals>
- <goal>jar</goal>
- <goal>test-jar</goal>
- </goals>
- <configuration>
- <archive>
- <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
- </archive>
- </configuration>
- </execution>
- </executions>
- </plugin>
</plugins>
</build>
Modified: gora/branches/goraamazon/gora-cassandra/pom.xml
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-cassandra/pom.xml?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-cassandra/pom.xml (original)
+++ gora/branches/goraamazon/gora-cassandra/pom.xml Tue Sep 4 20:44:54 2012
@@ -61,9 +61,18 @@
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<finalName>${project.artifactId}-${project.version}</finalName>
- <!--<testOutputDirectory>target/test-classes</testOutputDirectory>-->
- <!--<testSourceDirectory>src/test/java</testSourceDirectory>-->
+ <testOutputDirectory>target/test-classes</testOutputDirectory>
+ <testSourceDirectory>src/test/java</testSourceDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
+ <testResources>
+ <testResource>
+ <directory>${project.basedir}/src/test/conf</directory>
+ <includes>
+ <include>**/*</include>
+ </includes>
+ <!--targetPath>${project.basedir}/target/classes/</targetPath-->
+ </testResource>
+ </testResources>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
@@ -83,24 +92,6 @@
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>${maven-jar-plugin.version}</version>
- <executions>
- <execution>
- <goals>
- <goal>jar</goal>
- <goal>test-jar</goal>
- </goals>
- <configuration>
- <archive>
- <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
- </archive>
- </configuration>
- </execution>
- </executions>
- </plugin>
</plugins>
</build>
@@ -122,19 +113,31 @@
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-all</artifactId>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.cassandra.deps</groupId>
+ <artifactId>avro</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
-
+
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-thrift</artifactId>
</dependency>
<dependency>
- <groupId>me.prettyprint</groupId>
+ <groupId>org.hectorclient</groupId>
<artifactId>hector-core</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.cassandra</groupId>
+ <artifactId>cassandra-all</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
-
-
+
<!-- Misc Dependencies -->
<dependency>
<groupId>com.google.guava</groupId>
@@ -148,13 +151,17 @@
<!-- Logging Dependencies -->
<dependency>
+ <groupId>org.apache.hadoop</groupId>
+ <artifactId>avro</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-jdk14</artifactId>
+ <artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
@@ -172,7 +179,7 @@
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-test</artifactId>
</dependency>
-
+
</dependencies>
</project>
Modified: gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java (original)
+++ gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java Tue Sep 4 20:44:54 2012
@@ -20,18 +20,12 @@ package org.apache.gora.cassandra.query;
import java.nio.ByteBuffer;
-import me.prettyprint.cassandra.serializers.FloatSerializer;
-import me.prettyprint.cassandra.serializers.DoubleSerializer;
-import me.prettyprint.cassandra.serializers.IntegerSerializer;
-import me.prettyprint.cassandra.serializers.LongSerializer;
-import me.prettyprint.cassandra.serializers.StringSerializer;
+import me.prettyprint.hector.api.Serializer;
import org.apache.avro.Schema;
import org.apache.avro.Schema.Field;
-import org.apache.avro.Schema.Field;
import org.apache.avro.Schema.Type;
-import org.apache.avro.generic.GenericArray;
-import org.apache.avro.util.Utf8;
+import org.apache.gora.cassandra.serializers.GoraSerializerTypeInferer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -71,32 +65,13 @@ public abstract class CassandraColumn {
public abstract ByteBuffer getName();
public abstract Object getValue();
-
- protected Object fromByteBuffer(Type type, ByteBuffer byteBuffer) {
+ protected Object fromByteBuffer(Schema schema, ByteBuffer byteBuffer) {
Object value = null;
- switch (type) {
- case STRING:
- value = new Utf8(StringSerializer.get().fromByteBuffer(byteBuffer));
- break;
- case BYTES:
- value = byteBuffer;
- break;
- case INT:
- value = IntegerSerializer.get().fromByteBuffer(byteBuffer);
- break;
- case LONG:
- value = LongSerializer.get().fromByteBuffer(byteBuffer);
- break;
- case FLOAT:
- value = FloatSerializer.get().fromByteBuffer(byteBuffer);
- break;
- case DOUBLE:
- value = DoubleSerializer.get().fromByteBuffer(byteBuffer);
- break;
-
- default:
- LOG.info("Type is not supported: " + type);
-
+ Serializer serializer = GoraSerializerTypeInferer.getSerializer(schema);
+ if (serializer == null) {
+ LOG.info("Schema is not supported: " + schema.toString());
+ } else {
+ value = serializer.fromByteBuffer(byteBuffer);
}
return value;
}
Modified: gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraResult.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraResult.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraResult.java (original)
+++ gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraResult.java Tue Sep 4 20:44:54 2012
@@ -26,6 +26,7 @@ import me.prettyprint.cassandra.serializ
import org.apache.avro.Schema;
import org.apache.avro.Schema.Field;
+import org.apache.avro.specific.SpecificFixed;
import org.apache.gora.persistency.Persistent;
import org.apache.gora.persistency.impl.PersistentBase;
import org.apache.gora.query.Query;
Modified: gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraSubColumn.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraSubColumn.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraSubColumn.java (original)
+++ gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraSubColumn.java Tue Sep 4 20:44:54 2012
@@ -37,6 +37,10 @@ import org.apache.avro.Schema.Type;
import org.apache.avro.generic.GenericArray;
import org.apache.avro.generic.GenericData;
import org.apache.avro.util.Utf8;
+import org.apache.gora.cassandra.serializers.GenericArraySerializer;
+import org.apache.gora.cassandra.serializers.StatefulHashMapSerializer;
+import org.apache.gora.cassandra.serializers.TypeUtils;
+import org.apache.gora.persistency.StatefulHashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -66,28 +70,20 @@ public class CassandraSubColumn extends
Schema fieldSchema = field.schema();
Type type = fieldSchema.getType();
ByteBuffer byteBuffer = hColumn.getValue();
+ if (byteBuffer == null) {
+ return null;
+ }
Object value = null;
if (type == Type.ARRAY) {
- // convert string to array
- String valueString = StringSerializer.get().fromByteBuffer(byteBuffer);
- valueString = valueString.substring(1, valueString.length()-1);
- String[] elements = valueString.split(", ");
-
- Type elementType = fieldSchema.getElementType().getType();
- if (elementType == Schema.Type.STRING) {
- // the array type is String
- GenericArray<String> genericArray = new GenericData.Array<String>(elements.length, Schema.createArray(Schema.create(Schema.Type.STRING)));
- for (String element: elements) {
- genericArray.add(element);
- }
-
- value = genericArray;
- } else {
- LOG.info("Element type not supported: " + elementType);
- }
- }
- else {
- value = fromByteBuffer(type, byteBuffer);
+ GenericArraySerializer serializer = GenericArraySerializer.get(fieldSchema.getElementType());
+ GenericArray genericArray = serializer.fromByteBuffer(byteBuffer);
+ value = genericArray;
+ } else if (type == Type.MAP) {
+ StatefulHashMapSerializer serializer = StatefulHashMapSerializer.get(fieldSchema.getValueType());
+ StatefulHashMap map = serializer.fromByteBuffer(byteBuffer);
+ value = map;
+ } else {
+ value = fromByteBuffer(fieldSchema, byteBuffer);
}
return value;
Modified: gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraSuperColumn.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraSuperColumn.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraSuperColumn.java (original)
+++ gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/query/CassandraSuperColumn.java Tue Sep 4 20:44:54 2012
@@ -31,6 +31,7 @@ import org.apache.avro.Schema.Field;
import org.apache.avro.Schema.Type;
import org.apache.avro.generic.GenericArray;
import org.apache.avro.util.Utf8;
+import org.apache.gora.cassandra.serializers.Utf8Serializer;
import org.apache.gora.persistency.ListGenericArray;
import org.apache.gora.persistency.StatefulHashMap;
import org.apache.gora.persistency.impl.PersistentBase;
@@ -55,12 +56,11 @@ public class CassandraSuperColumn extend
switch (type) {
case ARRAY:
- Type elementType = fieldSchema.getElementType().getType();
- GenericArray array = new ListGenericArray(Schema.create(elementType));
+ ListGenericArray array = new ListGenericArray(fieldSchema.getElementType());
for (HColumn<ByteBuffer, ByteBuffer> hColumn : this.hSuperColumn.getColumns()) {
ByteBuffer memberByteBuffer = hColumn.getValue();
- Object memberValue = fromByteBuffer(elementType, hColumn.getValue());
+ Object memberValue = fromByteBuffer(fieldSchema.getElementType(), hColumn.getValue());
// int i = IntegerSerializer().get().fromByteBuffer(hColumn.getName());
array.add(memberValue);
}
@@ -69,12 +69,12 @@ public class CassandraSuperColumn extend
break;
case MAP:
Map<Utf8, Object> map = new StatefulHashMap<Utf8, Object>();
- Type valueType = fieldSchema.getValueType().getType();
for (HColumn<ByteBuffer, ByteBuffer> hColumn : this.hSuperColumn.getColumns()) {
ByteBuffer memberByteBuffer = hColumn.getValue();
- Object memberValue = fromByteBuffer(valueType, hColumn.getValue());
- map.put(new Utf8(StringSerializer.get().fromByteBuffer(hColumn.getName())), memberValue);
+ Object memberValue = null;
+ memberValue = fromByteBuffer(fieldSchema.getValueType(), hColumn.getValue());
+ map.put(Utf8Serializer.get().fromByteBuffer(hColumn.getName()), memberValue);
}
value = map;
@@ -106,6 +106,10 @@ public class CassandraSuperColumn extend
for (HColumn<ByteBuffer, ByteBuffer> hColumn : this.hSuperColumn.getColumns()) {
String memberName = StringSerializer.get().fromByteBuffer(hColumn.getName());
+ if (memberName == null || memberName.length() == 0) {
+ LOG.warn("member name is null or empty.");
+ continue;
+ }
Field memberField = fieldSchema.getField(memberName);
CassandraSubColumn cassandraColumn = new CassandraSubColumn();
cassandraColumn.setField(memberField);
Modified: gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java (original)
+++ gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java Tue Sep 4 20:44:54 2012
@@ -25,12 +25,10 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import me.prettyprint.cassandra.model.ConfigurableConsistencyLevel;
import me.prettyprint.cassandra.serializers.ByteBufferSerializer;
-import me.prettyprint.cassandra.serializers.FloatSerializer;
import me.prettyprint.cassandra.serializers.IntegerSerializer;
-import me.prettyprint.cassandra.serializers.DoubleSerializer;
import me.prettyprint.cassandra.serializers.StringSerializer;
-import me.prettyprint.cassandra.serializers.SerializerTypeInferer;
import me.prettyprint.cassandra.service.CassandraHostConfigurator;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.Keyspace;
@@ -45,15 +43,22 @@ import me.prettyprint.hector.api.mutatio
import me.prettyprint.hector.api.query.QueryResult;
import me.prettyprint.hector.api.query.RangeSlicesQuery;
import me.prettyprint.hector.api.query.RangeSuperSlicesQuery;
-import me.prettyprint.cassandra.model.ConfigurableConsistencyLevel;
import me.prettyprint.hector.api.HConsistencyLevel;
import me.prettyprint.hector.api.Serializer;
+import org.apache.avro.Schema;
+import org.apache.avro.Schema.Type;
+import org.apache.avro.generic.GenericArray;
import org.apache.avro.util.Utf8;
import org.apache.gora.cassandra.query.CassandraQuery;
+import org.apache.gora.cassandra.serializers.GenericArraySerializer;
+import org.apache.gora.cassandra.serializers.GoraSerializerTypeInferer;
+import org.apache.gora.cassandra.serializers.TypeUtils;
import org.apache.gora.mapreduce.GoraRecordReader;
import org.apache.gora.persistency.Persistent;
import org.apache.gora.persistency.impl.PersistentBase;
+import org.apache.gora.persistency.State;
+import org.apache.gora.persistency.StatefulHashMap;
import org.apache.gora.query.Query;
import org.apache.gora.util.ByteUtils;
import org.slf4j.Logger;
@@ -66,14 +71,19 @@ public class CassandraClient<K, T extend
private Keyspace keyspace;
private Mutator<K> mutator;
private Class<K> keyClass;
+ private Class<T> persistentClass;
- private CassandraMapping cassandraMapping = new CassandraMapping();
+ private CassandraMapping cassandraMapping = null;
private Serializer<K> keySerializer;
- public void initialize(Class<K> keyClass) throws Exception {
+ public void initialize(Class<K> keyClass, Class<T> persistentClass) throws Exception {
this.keyClass = keyClass;
- this.cassandraMapping.loadConfiguration();
+
+ // get cassandra mapping with persistent class
+ this.persistentClass = persistentClass;
+ this.cassandraMapping = CassandraMappingManager.getManager().get(persistentClass);
+
this.cluster = HFactory.getOrCreateCluster(this.cassandraMapping.getClusterName(), new CassandraHostConfigurator(this.cassandraMapping.getHostName()));
// add keyspace to cluster
@@ -82,9 +92,17 @@ public class CassandraClient<K, T extend
// Just create a Keyspace object on the client side, corresponding to an already existing keyspace with already created column families.
this.keyspace = HFactory.createKeyspace(this.cassandraMapping.getKeyspaceName(), this.cluster);
- this.keySerializer = SerializerTypeInferer.getSerializer(keyClass);
+ this.keySerializer = GoraSerializerTypeInferer.getSerializer(keyClass);
this.mutator = HFactory.createMutator(this.keyspace, this.keySerializer);
}
+
+ /**
+ * Check if keyspace already exists.
+ */
+ public boolean keyspaceExists() {
+ KeyspaceDefinition keyspaceDefinition = this.cluster.describeKeyspace(this.cassandraMapping.getKeyspaceName());
+ return (keyspaceDefinition != null);
+ }
/**
* Check if keyspace already exists. If not, create it.
@@ -100,7 +118,7 @@ public class CassandraClient<K, T extend
List<ColumnFamilyDefinition> columnFamilyDefinitions = this.cassandraMapping.getColumnFamilyDefinitions();
keyspaceDefinition = HFactory.createKeyspaceDefinition(this.cassandraMapping.getKeyspaceName(), "org.apache.cassandra.locator.SimpleStrategy", 1, columnFamilyDefinitions);
this.cluster.addKeyspace(keyspaceDefinition, true);
- LOG.info("Keyspace '" + this.cassandraMapping.getKeyspaceName() + "' in cluster '" + this.cassandraMapping.getClusterName() + "' was created on host '" + this.cassandraMapping.getHostName() + "'");
+ // LOG.info("Keyspace '" + this.cassandraMapping.getKeyspaceName() + "' in cluster '" + this.cassandraMapping.getClusterName() + "' was created on host '" + this.cassandraMapping.getHostName() + "'");
// Create a customized Consistency Level
ConfigurableConsistencyLevel configurableConsistencyLevel = new ConfigurableConsistencyLevel();
@@ -144,8 +162,12 @@ public class CassandraClient<K, T extend
String columnFamily = this.cassandraMapping.getFamily(fieldName);
String columnName = this.cassandraMapping.getColumn(fieldName);
+ if (columnName == null) {
+ LOG.warn("Column name is null for field=" + fieldName + " with value=" + value.toString());
+ return;
+ }
- this.mutator.insert(key, columnFamily, HFactory.createColumn(columnName, byteBuffer, StringSerializer.get(), ByteBufferSerializer.get()));
+ HectorUtils.insertColumn(mutator, key, columnFamily, columnName, byteBuffer);
}
/**
@@ -160,14 +182,97 @@ public class CassandraClient<K, T extend
if (value == null) {
return;
}
-
+
ByteBuffer byteBuffer = toByteBuffer(value);
String columnFamily = this.cassandraMapping.getFamily(fieldName);
String superColumnName = this.cassandraMapping.getColumn(fieldName);
- this.mutator.insert(key, columnFamily, HFactory.createSuperColumn(superColumnName, Arrays.asList(HFactory.createColumn(columnName, byteBuffer, ByteBufferSerializer.get(), ByteBufferSerializer.get())), StringSerializer.get(), ByteBufferSerializer.get(), ByteBufferSerializer.get()));
+ HectorUtils.insertSubColumn(mutator, key, columnFamily, superColumnName, columnName, byteBuffer);
+ }
+
+ public void addSubColumn(K key, String fieldName, String columnName, Object value) {
+ addSubColumn(key, fieldName, StringSerializer.get().toByteBuffer(columnName), value);
+ }
+
+ public void addSubColumn(K key, String fieldName, Integer columnName, Object value) {
+ addSubColumn(key, fieldName, IntegerSerializer.get().toByteBuffer(columnName), value);
+ }
+
+
+ /**
+ * Delete a member in a super column. This is used for map and record Avro types.
+ * @param key the row key
+ * @param fieldName the field name
+ * @param columnName the column name (the member name, or the index of array)
+ */
+ @SuppressWarnings("unchecked")
+ public void deleteSubColumn(K key, String fieldName, ByteBuffer columnName) {
+
+ String columnFamily = this.cassandraMapping.getFamily(fieldName);
+ String superColumnName = this.cassandraMapping.getColumn(fieldName);
+ HectorUtils.deleteSubColumn(mutator, key, columnFamily, superColumnName, columnName);
+ }
+
+ public void deleteSubColumn(K key, String fieldName, String columnName) {
+ deleteSubColumn(key, fieldName, StringSerializer.get().toByteBuffer(columnName));
+ }
+
+
+ @SuppressWarnings("unchecked")
+ public void addGenericArray(K key, String fieldName, GenericArray array) {
+ if (isSuper( cassandraMapping.getFamily(fieldName) )) {
+ int i= 0;
+ for (Object itemValue: array) {
+
+ // TODO: hack, do not store empty arrays
+ if (itemValue instanceof GenericArray<?>) {
+ if (((GenericArray)itemValue).size() == 0) {
+ continue;
+ }
+ } else if (itemValue instanceof StatefulHashMap<?,?>) {
+ if (((StatefulHashMap)itemValue).size() == 0) {
+ continue;
+ }
+ }
+
+ addSubColumn(key, fieldName, i++, itemValue);
+ }
+ }
+ else {
+ addColumn(key, fieldName, array);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public void addStatefulHashMap(K key, String fieldName, StatefulHashMap<Utf8,Object> map) {
+ if (isSuper( cassandraMapping.getFamily(fieldName) )) {
+ int i= 0;
+ for (Utf8 mapKey: map.keySet()) {
+ if (map.getState(mapKey) == State.DELETED) {
+ deleteSubColumn(key, fieldName, mapKey.toString());
+ continue;
+ }
+
+ // TODO: hack, do not store empty arrays
+ Object mapValue = map.get(mapKey);
+ if (mapValue instanceof GenericArray<?>) {
+ if (((GenericArray)mapValue).size() == 0) {
+ continue;
+ }
+ } else if (mapValue instanceof StatefulHashMap<?,?>) {
+ if (((StatefulHashMap)mapValue).size() == 0) {
+ continue;
+ }
+ }
+
+ addSubColumn(key, fieldName, mapKey.toString(), mapValue);
+ }
+ }
+ else {
+ addColumn(key, fieldName, map);
+ }
}
/**
@@ -177,29 +282,17 @@ public class CassandraClient<K, T extend
*/
@SuppressWarnings("unchecked")
public ByteBuffer toByteBuffer(Object value) {
- if (value == null) {
- return null;
- }
-
ByteBuffer byteBuffer = null;
- if (value instanceof ByteBuffer) {
- byteBuffer = (ByteBuffer) value;
- }
- else if (value instanceof Utf8) {
- byteBuffer = StringSerializer.get().toByteBuffer(((Utf8)value).toString());
- }
- else if (value instanceof Float) {
- // workaround for hector-core-1.0-1.jar
- // because SerializerTypeInferer.getSerializer(Float ) returns ObjectSerializer !?
- byteBuffer = FloatSerializer.get().toByteBuffer((Float)value);
- }
- else if (value instanceof Double) {
- // workaround for hector-core-1.0-1.jar
- // because SerializerTypeInferer.getSerializer(Double ) returns ObjectSerializer !?
- byteBuffer = DoubleSerializer.get().toByteBuffer((Double)value);
+ Serializer serializer = GoraSerializerTypeInferer.getSerializer(value);
+ if (serializer == null) {
+ LOG.info("Serializer not found for: " + value.toString());
}
else {
- byteBuffer = SerializerTypeInferer.getSerializer(value).toByteBuffer(value);
+ byteBuffer = serializer.toByteBuffer(value);
+ }
+
+ if (byteBuffer == null) {
+ LOG.info("value class=" + value.getClass().getName() + " value=" + value + " -> null");
}
return byteBuffer;
@@ -313,4 +406,12 @@ public class CassandraClient<K, T extend
}
+
+ /**
+ * Obtain Schema/Keyspace name
+ * @return Keyspace
+ */
+ public String getKeyspaceName() {
+ return this.cassandraMapping.getKeyspaceName();
+ }
}
Modified: gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraMapping.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraMapping.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraMapping.java (original)
+++ gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraMapping.java Tue Sep 4 20:44:54 2012
@@ -107,42 +107,30 @@ public class CassandraMapping {
/**
* Primary class for loading Cassandra configuration from the 'MAPPING_FILE'.
- *
- * @throws JDOMException
- * @throws IOException
*/
- @SuppressWarnings("unchecked")
- public void loadConfiguration() throws JDOMException, IOException {
- SAXBuilder saxBuilder = new SAXBuilder();
- Document document = saxBuilder.build(getClass().getClassLoader().getResourceAsStream(MAPPING_FILE));
- if (document == null) {
- LOG.warn("Mapping file '" + MAPPING_FILE + "' could not be found!");
- }
- Element root = document.getRootElement();
-
- Element keyspace = root.getChild(KEYSPACE_ELEMENT);
+ public CassandraMapping(Element keyspace, Element mapping) {
if (keyspace == null) {
LOG.warn("Error locating Cassandra Keyspace element!");
} else {
- LOG.info("Located Cassandra Keyspace: '" + KEYSPACE_ELEMENT + "'");
+ // LOG.info("Located Cassandra Keyspace: '" + KEYSPACE_ELEMENT + "'");
}
this.keyspaceName = keyspace.getAttributeValue(NAME_ATTRIBUTE);
if (this.keyspaceName == null) {
LOG.warn("Error locating Cassandra Keyspace name attribute!");
} else {
- LOG.info("Located Cassandra Keyspace name: '" + NAME_ATTRIBUTE + "'");
+ // LOG.info("Located Cassandra Keyspace name: '" + NAME_ATTRIBUTE + "'");
}
this.clusterName = keyspace.getAttributeValue(CLUSTER_ATTRIBUTE);
if (this.clusterName == null) {
LOG.warn("Error locating Cassandra Keyspace cluster attribute!");
} else {
- LOG.info("Located Cassandra Keyspace cluster: '" + CLUSTER_ATTRIBUTE + "'");
+ // LOG.info("Located Cassandra Keyspace cluster: '" + CLUSTER_ATTRIBUTE + "'");
}
this.hostName = keyspace.getAttributeValue(HOST_ATTRIBUTE);
if (this.hostName == null) {
LOG.warn("Error locating Cassandra Keyspace host attribute!");
} else {
- LOG.info("Located Cassandra Keyspace host: '" + HOST_ATTRIBUTE + "'");
+ // LOG.info("Located Cassandra Keyspace host: '" + HOST_ATTRIBUTE + "'");
}
// load column family definitions
@@ -154,13 +142,13 @@ public class CassandraMapping {
if (familyName == null) {
LOG.warn("Error locating column family name attribute!");
} else {
- LOG.info("Located column family name: '" + NAME_ATTRIBUTE + "'");
+ // LOG.info("Located column family name: '" + NAME_ATTRIBUTE + "'");
}
String superAttribute = element.getAttributeValue(SUPER_ATTRIBUTE);
if (superAttribute != null) {
- LOG.info("Located super column family");
+ // LOG.info("Located super column family");
this.superFamilies.add(familyName);
- LOG.info("Added super column family: '" + familyName + "'");
+ // LOG.info("Added super column family: '" + familyName + "'");
cfDef.setColumnType(ColumnType.SUPER);
cfDef.setSubComparatorType(ComparatorType.BYTESTYPE);
}
@@ -175,7 +163,6 @@ public class CassandraMapping {
}
// load column definitions
- Element mapping = root.getChild(MAPPING_ELEMENT);
elements = mapping.getChildren();
for (Element element: elements) {
String fieldName = element.getAttributeValue(NAME_ATTRIBUTE);
Modified: gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java (original)
+++ gora/branches/goraamazon/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java Tue Sep 4 20:44:54 2012
@@ -41,6 +41,7 @@ import org.apache.avro.Schema;
import org.apache.avro.Schema.Field;
import org.apache.avro.Schema.Type;
import org.apache.avro.generic.GenericArray;
+import org.apache.avro.specific.SpecificFixed;
import org.apache.avro.util.Utf8;
import org.apache.gora.cassandra.query.CassandraQuery;
import org.apache.gora.cassandra.query.CassandraResult;
@@ -63,7 +64,7 @@ import org.slf4j.LoggerFactory;
public class CassandraStore<K, T extends PersistentBase> extends DataStoreBase<K, T> {
public static final Logger LOG = LoggerFactory.getLogger(CassandraStore.class);
-
+
private CassandraClient<K, T> cassandraClient = new CassandraClient<K, T>();
/**
@@ -81,7 +82,7 @@ public class CassandraStore<K, T extends
public void initialize(Class<K> keyClass, Class<T> persistent, Properties properties) throws IOException {
super.initialize(keyClass, persistent, properties);
try {
- this.cassandraClient.initialize(keyClass);
+ this.cassandraClient.initialize(keyClass, persistent);
}
catch (Exception e) {
throw new IOException(e.getMessage(), e);
@@ -96,7 +97,7 @@ public class CassandraStore<K, T extends
@Override
public void createSchema() {
- LOG.debug("create schema");
+ LOG.debug("creating Cassandra keyspace");
this.cassandraClient.checkKeyspace();
}
@@ -255,10 +256,14 @@ public class CassandraStore<K, T extends
partitions.add(new PartitionQueryImpl<K,T>(query));
return partitions;
}
-
+
+ /**
+ * In Cassandra Schemas are referred to as Keyspaces
+ * @return Keyspace
+ */
@Override
public String getSchemaName() {
- return null;
+ return this.cassandraClient.getKeyspaceName();
}
@Override
@@ -277,8 +282,9 @@ public class CassandraStore<K, T extends
T p = (T) value.newInstance(new StateManagerImpl());
Schema schema = value.getSchema();
for (Field field: schema.getFields()) {
- if (value.isDirty(field.pos())) {
- Object fieldValue = value.get(field.pos());
+ int fieldPos = field.pos();
+ if (value.isDirty(fieldPos)) {
+ Object fieldValue = value.get(fieldPos);
// check if field has a nested structure (array, map, or record)
Schema fieldSchema = field.schema();
@@ -293,14 +299,11 @@ public class CassandraStore<K, T extends
fieldValue = newRecord;
break;
case MAP:
- StatefulHashMap<?, ?> map = (StatefulHashMap<?, ?>) fieldValue;
- StatefulHashMap<?, ?> newMap = new StatefulHashMap(map);
- fieldValue = newMap;
+ // needs to keep State.DELETED.
break;
case ARRAY:
GenericArray array = (GenericArray) fieldValue;
- Type elementType = fieldSchema.getElementType().getType();
- GenericArray newArray = new ListGenericArray(Schema.create(elementType));
+ ListGenericArray newArray = new ListGenericArray(fieldSchema.getElementType());
Iterator iter = array.iterator();
while (iter.hasNext()) {
newArray.add(iter.next());
@@ -309,7 +312,7 @@ public class CassandraStore<K, T extends
break;
}
- p.put(field.pos(), fieldValue);
+ p.put(fieldPos, fieldValue);
}
}
@@ -328,11 +331,13 @@ public class CassandraStore<K, T extends
Type type = schema.getType();
switch (type) {
case STRING:
+ case BOOLEAN:
case INT:
case LONG:
case BYTES:
case FLOAT:
case DOUBLE:
+ case FIXED:
this.cassandraClient.addColumn(key, field.name(), value);
break;
case RECORD:
@@ -344,16 +349,16 @@ public class CassandraStore<K, T extends
// TODO: hack, do not store empty arrays
Object memberValue = persistentBase.get(member.pos());
if (memberValue instanceof GenericArray<?>) {
- GenericArray<String> array = (GenericArray<String>) memberValue;
- if (array.size() == 0) {
+ if (((GenericArray)memberValue).size() == 0) {
+ continue;
+ }
+ } else if (memberValue instanceof StatefulHashMap<?,?>) {
+ if (((StatefulHashMap)memberValue).size() == 0) {
continue;
}
}
-
- if (memberValue instanceof Utf8) {
- memberValue = memberValue.toString();
- }
- this.cassandraClient.addSubColumn(key, field.name(), StringSerializer.get().toByteBuffer(member.name()), memberValue);
+
+ this.cassandraClient.addSubColumn(key, field.name(), member.name(), memberValue);
}
} else {
LOG.info("Record not supported: " + value.toString());
@@ -364,24 +369,7 @@ public class CassandraStore<K, T extends
case MAP:
if (value != null) {
if (value instanceof StatefulHashMap<?, ?>) {
- //TODO cast to stateful map and only write dirty keys
- Map<Utf8, Object> map = (Map<Utf8, Object>) value;
- for (Utf8 mapKey: map.keySet()) {
-
- // TODO: hack, do not store empty arrays
- Object keyValue = map.get(mapKey);
- if (keyValue instanceof GenericArray<?>) {
- GenericArray<String> array = (GenericArray<String>) keyValue;
- if (array.size() == 0) {
- continue;
- }
- }
-
- if (keyValue instanceof Utf8) {
- keyValue = keyValue.toString();
- }
- this.cassandraClient.addSubColumn(key, field.name(), StringSerializer.get().toByteBuffer(mapKey.toString()), keyValue);
- }
+ this.cassandraClient.addStatefulHashMap(key, field.name(), (StatefulHashMap<Utf8,Object>)value);
} else {
LOG.info("Map not supported: " + value.toString());
}
@@ -390,14 +378,7 @@ public class CassandraStore<K, T extends
case ARRAY:
if (value != null) {
if (value instanceof GenericArray<?>) {
- GenericArray<Object> array = (GenericArray<Object>) value;
- int i= 0;
- for (Object itemValue: array) {
- if (itemValue instanceof Utf8) {
- itemValue = itemValue.toString();
- }
- this.cassandraClient.addSubColumn(key, field.name(), IntegerSerializer.get().toByteBuffer(i++), itemValue);
- }
+ this.cassandraClient.addGenericArray(key, field.name(), (GenericArray)value);
} else {
LOG.info("Array not supported: " + value.toString());
}
@@ -411,7 +392,7 @@ public class CassandraStore<K, T extends
@Override
public boolean schemaExists() throws IOException {
LOG.info("schema exists");
- return false;
+ return cassandraClient.keyspaceExists();
}
}
Modified: gora/branches/goraamazon/gora-cassandra/src/test/conf/gora-cassandra-mapping.xml
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-cassandra/src/test/conf/gora-cassandra-mapping.xml?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-cassandra/src/test/conf/gora-cassandra-mapping.xml (original)
+++ gora/branches/goraamazon/gora-cassandra/src/test/conf/gora-cassandra-mapping.xml Tue Sep 4 20:44:54 2012
@@ -18,24 +18,41 @@
-->
<gora-orm>
+ <keyspace name="Employee" host="localhost" cluster="Gora Cassandra Test Cluster">
+ <family name="p"/>
+ <family name="f"/>
+ <family name="sc" type="super" />
+ </keyspace>
+
+ <keyspace name="WebPage" host="localhost" cluster="Gora Cassandra Test Cluster">
+ <family name="p"/>
+ <family name="f"/>
+ <family name="sc" type="super"/>
+ </keyspace>
+
+ <keyspace name="TokenDatum" host="localhost" cluster="Gora Cassandra Test Cluster">
+ <family name="p"/>
+ <family name="f"/>
+ <family name="sc" type="super"/>
+ </keyspace>
<class name="org.apache.gora.examples.generated.Employee" keyClass="java.lang.String" keyspace="Employee">
- <field name="name" path="info:nm"/>
- <field name="dateOfBirth" path="info:db"/>
- <field name="ssn" path="info:sn"/>
- <field name="salary" path="info:sl"/>
+ <field name="name" family="p" qualifier="info:nm"/>
+ <field name="dateOfBirth" family="p" qualifier="info:db"/>
+ <field name="ssn" family="p" qualifier="info:sn"/>
+ <field name="salary" family="p" qualifier="info:sl"/>
</class>
<class name="org.apache.gora.examples.generated.WebPage" keyClass="java.lang.String" keyspace="WebPage">
- <field name="url" path="c:u"/>
- <field name="content" path="p:cnt:c"/>
- <field name="parsedContent" path="p:parsedContent"/>
- <field name="outlinks" path="p:outlinks"/>
- <field name="metadata" path="c:mt"/>
+ <field name="url" family="p" qualifier="c:u"/>
+ <field name="content" family="p" qualifier="p:cnt:c"/>
+ <field name="parsedContent" family="sc" qualifier="p:parsedContent"/>
+ <field name="outlinks" family="sc" qualifier="p:outlinks"/>
+ <field name="metadata" family="sc" qualifier="c:mt"/>
</class>
<class name="org.apache.gora.examples.generated.TokenDatum" keyClass="java.lang.String" keyspace="TokenDatum">
- <field name="count" path="common:count"/>
+ <field name="count" family="p" qualifier="common:count"/>
</class>
</gora-orm>
Modified: gora/branches/goraamazon/gora-cassandra/src/test/conf/gora.properties
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-cassandra/src/test/conf/gora.properties?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-cassandra/src/test/conf/gora.properties (original)
+++ gora/branches/goraamazon/gora-cassandra/src/test/conf/gora.properties Tue Sep 4 20:44:54 2012
@@ -13,4 +13,17 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-gora.cassandrastore.servers=localhost:9160
+gora.datastore.default=org.apache.gora.cassandra.CassandraStore
+gora.cassandrastore.keyspace=
+gora.cassandrastore.name=
+gora.cassandrastore.class=
+gora.cassandrastore.qualifier=
+gora.cassandrastore.family=
+gora.cassandrastore.type=
+gora.cassandraStore.cluster=Test Cluster
+gora.cassandraStore.host=localhost
+
+
+
+
+
Modified: gora/branches/goraamazon/gora-core/pom.xml
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-core/pom.xml?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-core/pom.xml (original)
+++ gora/branches/goraamazon/gora-core/pom.xml Tue Sep 4 20:44:54 2012
@@ -91,24 +91,6 @@
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>${maven-jar-plugin.version}</version>
- <executions>
- <execution>
- <goals>
- <goal>jar</goal>
- <goal>test-jar</goal>
- </goals>
- <configuration>
- <archive>
- <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
- </archive>
- </configuration>
- </execution>
- </executions>
- </plugin>
</plugins>
</build>
Modified: gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/compiler/GoraCompiler.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/compiler/GoraCompiler.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/compiler/GoraCompiler.java (original)
+++ gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/compiler/GoraCompiler.java Tue Sep 4 20:44:54 2012
@@ -171,6 +171,7 @@ public class GoraCompiler {
line(0, "import org.apache.avro.util.Utf8;");
line(0, "import org.apache.avro.ipc.AvroRemoteException;");
line(0, "import org.apache.avro.generic.GenericArray;");
+ line(0, "import org.apache.avro.specific.FixedSize;");
line(0, "import org.apache.avro.specific.SpecificExceptionBase;");
line(0, "import org.apache.avro.specific.SpecificRecordBase;");
line(0, "import org.apache.avro.specific.SpecificRecord;");
@@ -317,6 +318,7 @@ public class GoraCompiler {
switch (fieldSchema.getType()) {
case INT:case LONG:case FLOAT:case DOUBLE:
case BOOLEAN:case BYTES:case STRING: case ENUM: case RECORD:
+ case FIXED:
String unboxed = unbox(fieldSchema);
String fieldType = type(fieldSchema);
line(1, "public "+unboxed+" get" +camelKey+"() {");
Modified: gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java (original)
+++ gora/branches/goraamazon/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java Tue Sep 4 20:44:54 2012
@@ -23,7 +23,6 @@ import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Properties;
import org.apache.avro.Schema;
@@ -198,7 +197,7 @@ implements DataStore<K, T>, Configurable
public boolean equals(Object obj) {
if(obj instanceof DataStoreBase) {
@SuppressWarnings("rawtypes")
- DataStoreBase that = (DataStoreBase) obj;
+ DataStoreBase that = (DataStoreBase) obj;
EqualsBuilder builder = new EqualsBuilder();
builder.append(this.keyClass, that.keyClass);
builder.append(this.persistentClass, that.persistentClass);
@@ -217,22 +216,25 @@ implements DataStore<K, T>, Configurable
/**
* Returns the name of the schema to use for the persistent class.
*
- * First the schema name in the defined properties is returned. If null then
+ * The schema name is prefixed with schema.prefix from {@link Configuration}.
+ * 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 schemaName = DataStoreFactory.getDefaultSchemaName(properties, this);
if(schemaName != null) {
- return schemaName;
+ return prefix+schemaName;
}
if(mappingSchemaName != null) {
- return mappingSchemaName;
+ return prefix+mappingSchemaName;
}
- return StringUtils.getClassname(persistentClass);
+ return prefix+StringUtils.getClassname(persistentClass);
}
}
Modified: gora/branches/goraamazon/gora-core/src/main/java/overview.html
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-core/src/main/java/overview.html?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-core/src/main/java/overview.html (original)
+++ gora/branches/goraamazon/gora-core/src/main/java/overview.html Tue Sep 4 20:44:54 2012
@@ -51,10 +51,12 @@
<h2> gora-sql </h2>
<p> gora-sql module contains the source code for the SQL backends. Currently MySQL and HSQLDB is supported. </p>
-
+
+ <h2> gora-accumulo </h2>
+ <p> gora-accumulo module contains the source code for the <a href="http://accumulo.apache.org/">Apache Accumulo</a> backend. </p>
<h2> More information </h2>
- <p> Most of the documentation about the project is kept at the project <a href="http://incubator.apache.org/gora/">web site</a> or at the <a href="https://cwiki.apache.org/confluence/display/GORA/Index">wiki</a>. </p>
+ <p> Most of the documentation about the project is kept at the project <a href="http://gora.apache.org">web site</a> or at the <a href="https://cwiki.apache.org/confluence/display/GORA/Index">wiki</a>. </p>
</body>
</html>
Modified: gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java (original)
+++ gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java Tue Sep 4 20:44:54 2012
@@ -31,10 +31,10 @@ import org.apache.gora.util.GoraExceptio
import org.apache.hadoop.conf.Configuration;
/**
- * GoraTestDriver is a helper class for third party tests.
- * GoraTestDriver can be used to initialize and tear down mini clusters
- * (such as mini HBase cluster, local Hsqldb instance, etc) so that
- * these details are abstracted away.
+ * GoraTestDriver is a helper class for third party tests and should
+ * be used to initialize and tear down mini clusters (such as mini HBase
+ * or Cassandra cluster, local Hsqldb instance, etc) so that these
+ * details are abstracted away.
*/
public class GoraTestDriver {
@@ -86,13 +86,13 @@ public class GoraTestDriver {
public void tearDown() throws Exception {
log.info("tearing down test");
//delete everything
- try {
- for(DataStore store : dataStores) {
+ for(DataStore store : dataStores) {
+ try {
//store.flush();
store.deleteSchema();
store.close();
+ }catch (Exception ignore) {
}
- }catch (IOException ignore) {
}
dataStores.clear();
}
Modified: gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/persistency/TestListGenericArray.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/persistency/TestListGenericArray.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/persistency/TestListGenericArray.java (original)
+++ gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/persistency/TestListGenericArray.java Tue Sep 4 20:44:54 2012
@@ -19,6 +19,7 @@
package org.apache.gora.persistency;
import org.apache.avro.Schema;
+import org.apache.avro.generic.GenericData;
import org.apache.avro.util.Utf8;
import org.apache.gora.persistency.ListGenericArray;
import org.junit.Assert;
@@ -42,4 +43,17 @@ public class TestListGenericArray {
}
Assert.assertFalse(stackOverflowError);
}
+
+ @Test
+ public void testCompareTo() {
+ ListGenericArray array = new ListGenericArray(Schema.create(Schema.Type.STRING));
+ boolean stackOverflowError = false;
+ array.add(new Utf8("array comparison test"));
+ try {
+ int compareTo = array.compareTo(array);
+ } catch (StackOverflowError e) {
+ stackOverflowError = true;
+ }
+ Assert.assertFalse(stackOverflowError);
+ }
}
Modified: gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java (original)
+++ gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java Tue Sep 4 20:44:54 2012
@@ -90,7 +90,9 @@ public abstract class DataStoreTestBase
//There is an issue in JUnit 4 tests in Eclipse where TestSqlStore static
//methods are not called BEFORE setUpClass. I think this is a bug in
//JUnitRunner in Eclipse. Below is a workaround for that problem.
- if(!setUpClassCalled) setUpClass();
+ if(!setUpClassCalled) {
+ setUpClass();
+ }
log.info("setting up test");
if(testDriver != null) {
Modified: gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java (original)
+++ gora/branches/goraamazon/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java Tue Sep 4 20:44:54 2012
@@ -293,7 +293,7 @@ public class DataStoreTestUtil {
for (int i = 0; i < urls.length; i++) {
WebPage webPage = dataStore.get(urls[i]);
- Assert.assertEquals(content + i, ByteUtils.toString(webPage.getContent().array()));
+ Assert.assertEquals(content + i, ByteUtils.toString( toByteArray(webPage.getContent()) ));
Assert.assertEquals(10, webPage.getParsedContent().size());
int j = 0;
for (Utf8 pc : webPage.getParsedContent()) {
@@ -336,9 +336,9 @@ public class DataStoreTestUtil {
Assert.assertNotNull(page);
Assert.assertEquals(URLS[i], page.getUrl().toString());
- Assert.assertTrue("content error:" + new String(page.getContent().array()) +
+ Assert.assertTrue("content error:" + new String( toByteArray(page.getContent()) ) +
" actual=" + CONTENTS[i] + " i=" + i
- , Arrays.equals(page.getContent().array()
+ , Arrays.equals( toByteArray(page.getContent() )
, CONTENTS[i].getBytes()));
GenericArray<Utf8> parsedContent = page.getParsedContent();
@@ -718,4 +718,15 @@ public class DataStoreTestUtil {
}
}
+
+ private static byte[] toByteArray(ByteBuffer buffer) {
+ int p = buffer.position();
+ int n = buffer.limit() - p;
+ byte[] bytes = new byte[n];
+ for (int i = 0; i < n; i++) {
+ bytes[i] = buffer.get(p++);
+ }
+ return bytes;
+ }
+
}
Modified: gora/branches/goraamazon/gora-hbase/pom.xml
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-hbase/pom.xml?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-hbase/pom.xml (original)
+++ gora/branches/goraamazon/gora-hbase/pom.xml Tue Sep 4 20:44:54 2012
@@ -92,24 +92,6 @@
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>${maven-jar-plugin.version}</version>
- <executions>
- <execution>
- <goals>
- <goal>jar</goal>
- <goal>test-jar</goal>
- </goals>
- <configuration>
- <archive>
- <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
- </archive>
- </configuration>
- </execution>
- </executions>
- </plugin>
</plugins>
</build>
@@ -136,7 +118,7 @@
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
- <classifier>tests</classifier>
+ <type>test-jar</type>
</dependency>
Modified: gora/branches/goraamazon/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseStore.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseStore.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseStore.java (original)
+++ gora/branches/goraamazon/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseStore.java Tue Sep 4 20:44:54 2012
@@ -326,13 +326,13 @@ implements Configurable {
(stopRow.length == 0 ||
Bytes.compareTo(stopRow, keys.getFirst()[i]) > 0)) {
- byte[] splitStart = (startRow.length == 0 ||
- Bytes.compareTo(keys.getFirst()[i], startRow) >= 0) ?
+ byte[] splitStart = startRow.length == 0 ||
+ Bytes.compareTo(keys.getFirst()[i], startRow) >= 0 ?
keys.getFirst()[i] : startRow;
- byte[] splitStop = (stopRow.length == 0 ||
- Bytes.compareTo(keys.getSecond()[i], stopRow) <= 0) ?
- keys.getSecond()[i] : stopRow;
+ byte[] splitStop = (stopRow.length == 0 ||
+ Bytes.compareTo(keys.getSecond()[i], stopRow) <= 0) &&
+ keys.getSecond()[i].length > 0 ? keys.getSecond()[i] : stopRow;
K startKey = Arrays.equals(HConstants.EMPTY_START_ROW, splitStart) ?
null : HBaseByteInterface.fromBytes(keyClass, splitStart);
Modified: gora/branches/goraamazon/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseTableConnection.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseTableConnection.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseTableConnection.java (original)
+++ gora/branches/goraamazon/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseTableConnection.java Tue Sep 4 20:44:54 2012
@@ -78,7 +78,12 @@ public class HBaseTableConnection implem
private HTable getTable() throws IOException {
HTable table = tables.get();
if (table == null) {
- table = new HTable(conf, tableName);
+ table = new HTable(conf, tableName) {
+ @Override
+ public synchronized void flushCommits() throws IOException {
+ super.flushCommits();
+ }
+ };
table.setAutoFlush(autoflush);
pool.add(table); //keep track
tables.set(table);
Modified: gora/branches/goraamazon/gora-hbase/src/test/java/org/apache/gora/hbase/GoraHBaseTestDriver.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-hbase/src/test/java/org/apache/gora/hbase/GoraHBaseTestDriver.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-hbase/src/test/java/org/apache/gora/hbase/GoraHBaseTestDriver.java (original)
+++ gora/branches/goraamazon/gora-hbase/src/test/java/org/apache/gora/hbase/GoraHBaseTestDriver.java Tue Sep 4 20:44:54 2012
@@ -21,6 +21,8 @@ package org.apache.gora.hbase;
import org.apache.gora.GoraTestDriver;
import org.apache.gora.hbase.store.HBaseStore;
import org.apache.hadoop.conf.Configuration;
+
+//HBase imports
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
@@ -82,4 +84,4 @@ public class GoraHBaseTestDriver extends
return hbaseUtil;
}
-}
+}
Modified: gora/branches/goraamazon/gora-hbase/src/test/java/org/apache/gora/hbase/store/TestHBaseStore.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-hbase/src/test/java/org/apache/gora/hbase/store/TestHBaseStore.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-hbase/src/test/java/org/apache/gora/hbase/store/TestHBaseStore.java (original)
+++ gora/branches/goraamazon/gora-hbase/src/test/java/org/apache/gora/hbase/store/TestHBaseStore.java Tue Sep 4 20:44:54 2012
@@ -53,6 +53,7 @@ public class TestHBaseStore extends Data
conf = getTestDriver().getHbaseUtil().getConfiguration();
}
+ @SuppressWarnings("unchecked")
@Override
protected DataStore<String, Employee> createEmployeeDataStore()
throws IOException {
@@ -60,6 +61,7 @@ public class TestHBaseStore extends Data
Employee.class, conf);
}
+ @SuppressWarnings("unchecked")
@Override
protected DataStore<String, WebPage> createWebPageDataStore()
throws IOException {
Modified: gora/branches/goraamazon/gora-sql/pom.xml
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-sql/pom.xml?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-sql/pom.xml (original)
+++ gora/branches/goraamazon/gora-sql/pom.xml Tue Sep 4 20:44:54 2012
@@ -66,12 +66,11 @@
<sourceDirectory>src/main/java</sourceDirectory>
<testResources>
<testResource>
- <directory>src/test/conf</directory>
+ <directory>src/test/conf</directory>
<includes>
- <include>
- **/*
- </include>
+ <include>**/*</include>
</includes>
+ <!--targetPath>${project.basedir}/target/classes/</targetPath-->
</testResource>
</testResources>
<plugins>
@@ -119,24 +118,6 @@
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>${maven-jar-plugin.version}</version>
- <executions>
- <execution>
- <goals>
- <goal>jar</goal>
- <goal>test-jar</goal>
- </goals>
- <configuration>
- <archive>
- <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
- </archive>
- </configuration>
- </execution>
- </executions>
- </plugin>
</plugins>
</build>
Modified: gora/branches/goraamazon/gora-tutorial/pom.xml
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-tutorial/pom.xml?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-tutorial/pom.xml (original)
+++ gora/branches/goraamazon/gora-tutorial/pom.xml Tue Sep 4 20:44:54 2012
@@ -91,24 +91,6 @@
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>${maven-jar-plugin.version}</version>
- <executions>
- <execution>
- <goals>
- <goal>jar</goal>
- <!-- goal>test-jar</goal-->
- </goals>
- <configuration>
- <archive>
- <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
- </archive>
- </configuration>
- </execution>
- </executions>
- </plugin>
</plugins>
</build>
Modified: gora/branches/goraamazon/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/LogAnalytics.java
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/LogAnalytics.java?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/LogAnalytics.java (original)
+++ gora/branches/goraamazon/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/LogAnalytics.java Tue Sep 4 20:44:54 2012
@@ -189,7 +189,13 @@ public class LogAnalytics extends Config
return success ? 0 : 1;
}
+ private static final String USAGE = "LogAnalytics <input_data_store> <output_data_store>";
+
public static void main(String[] args) throws Exception {
+ if(args.length < 2) {
+ System.err.println(USAGE);
+ System.exit(1);
+ }
//run as any other MR job
int ret = ToolRunner.run(new LogAnalytics(), args);
System.exit(ret);
Modified: gora/branches/goraamazon/pom.xml
URL: http://svn.apache.org/viewvc/gora/branches/goraamazon/pom.xml?rev=1380874&r1=1380873&r2=1380874&view=diff
==============================================================================
--- gora/branches/goraamazon/pom.xml (original)
+++ gora/branches/goraamazon/pom.xml Tue Sep 4 20:44:54 2012
@@ -126,7 +126,7 @@
<email>kturner [at] apache [dot] org</email>
<roles>
<role>Committer</role>
- <role>PPMC Member</role>
+ <role>PMC Member</role>
</roles>
</developer>
<developer>
@@ -167,6 +167,15 @@
<role>PMC Member</role>
</roles>
</developer>
+ <developer>
+ <id>kazk</id>
+ <name>Kazuomi Kashii</name>
+ <email>kazk [at] apache [dot] org</email>
+ <roles>
+ <role>Committer</role>
+ <role>PMC Member</role>
+ </roles>
+ </developer>
</developers>
<mailingLists>
@@ -274,6 +283,23 @@
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-clean-plugin</artifactId>
+ <version>${maven-clean-plugin.version}</version>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>${basedir}/lib</directory>
+ <followSymlinks>false</followSymlinks>
+ <useDefaultExcludes>true</useDefaultExcludes>
+ <includes>
+ <include>*.jar</include>
+ </includes>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${maven-release-plugin.version}</version>
<configuration>
@@ -284,7 +310,45 @@
<autoVersionSubmodules>true</autoVersionSubmodules>
</configuration>
</plugin>
- </plugins>
+ <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <versionRange>[2.4,)</versionRange>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <versionRange>[1.7,)</versionRange>
+ <goals>
+ <goal>reserve-network-port</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
</pluginManagement>
<plugins>
<plugin>
@@ -293,7 +357,7 @@
<version>${maven-compiler-plugin.version}</version>
<inherited>true</inherited>
<configuration>
- <source>${javac.source.version}</source>
+ <source>${javac.src.version}</source>
<target>${javac.target.version}</target>
</configuration>
</plugin>
@@ -329,19 +393,6 @@
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>${maven-jar-plugin.version}</version>
- <executions>
- <execution>
- <goals>
- <goal>jar</goal>
- <goal>test-jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
@@ -366,15 +417,6 @@
</supportedProjectTypes>
<unpackBundle>true</unpackBundle>
</configuration>
- <executions>
- <execution>
- <id>bundle-manifest</id>
- <phase>process-classes</phase>
- <goals>
- <goal>manifest</goal>
- </goals>
- </execution>
- </executions>
</plugin>
</plugins>
</build>
@@ -526,10 +568,9 @@
<!-- Amazon Dependencies -->
<amazon.version>1.3.12</amazon.version>
<!-- Cassandra Dependencies -->
- <cassandra.version>1.0.2</cassandra.version>
- <cassandra.thrift.version>1.0.2</cassandra.thrift.version>
+ <cassandra.version>1.1.2</cassandra.version>
<libthrift.version>0.7.0</libthrift.version>
- <hector.version>1.0-1</hector.version>
+ <hector.version>1.1-0</hector.version>
<!-- Misc Dependencies -->
<guava.version>10.0.1</guava.version>
<commons-lang.version>2.6</commons-lang.version>
@@ -538,7 +579,7 @@
<mysql.version>5.1.18</mysql.version>
<xerces.version>2.9.1</xerces.version>
<!-- Logging Dependencies -->
- <slf4j.version>1.5.8</slf4j.version>
+ <slf4j.version>1.6.1</slf4j.version>
<log4j.version>1.2.16</log4j.version>
<!-- Testing Dependencies -->
@@ -560,6 +601,7 @@
<maven-assembly-plugin.version>2.2.2</maven-assembly-plugin.version>
<maven-deploy-plugin.version>2.5</maven-deploy-plugin.version>
<checksum-maven-plugin.version>1.0.1</checksum-maven-plugin.version>
+ <maven-clean-plugin.version>2.5</maven-clean-plugin.version>
<!-- General Properties -->
<implementation.build>${scmBranch}@r${buildNumber}</implementation.build>
@@ -591,7 +633,13 @@
<artifactId>gora-cassandra</artifactId>
<version>${project.version}</version>
</dependency>
-
+ <dependency>
+ <groupId>org.apache.gora</groupId>
+ <artifactId>gora-cassandra</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ </dependency>
+
<dependency>
<groupId>org.apache.gora</groupId>
<artifactId>gora-sql</artifactId>
@@ -707,7 +755,7 @@
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
<version>${hbase.version}</version>
- <classifier>tests</classifier>
+ <type>test-jar</type>
</dependency>
<!-- Cassandra Dependencies -->
@@ -715,27 +763,40 @@
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-all</artifactId>
<version>${cassandra.version}</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.cassandra.deps</groupId>
+ <artifactId>avro</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
-
+
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-thrift</artifactId>
- <version>${cassandra.thrift.version}</version>
+ <version>${cassandra.version}</version>
</dependency>
<dependency>
- <groupId>me.prettyprint</groupId>
+ <groupId>org.hectorclient</groupId>
<artifactId>hector-core</artifactId>
<version>${hector.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.cassandra</groupId>
+ <artifactId>cassandra-all</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<!-- Amazon Dependencies -->
<dependency>
- <groupId>com.amazonaws</groupId>
- <artifactId>aws-java-sdk</artifactId>
- <version>${amazon.version}</version>
+ <groupId>com.amazonaws</groupId>
+ <artifactId>aws-java-sdk</artifactId>
+ <version>${amazon.version}</version>
</dependency>
-
+
<!-- Misc Dependencies -->
<dependency>
<groupId>com.google.guava</groupId>
@@ -803,6 +864,12 @@
</dependency>
<dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>${slf4j.version}</version>
+ </dependency>
+
+ <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
@@ -838,7 +905,7 @@
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
-
+
</dependencies>
</dependencyManagement>