[1/3] gora git commit: Removing old gora-cassandra module
Repository: gora Updated Branches: refs/heads/master 3d4e1d69a -> cbed41d00 http://git-wip-us.apache.org/repos/asf/gora/blob/cbed41d0/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/package-info.java -- diff --git a/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/package-info.java b/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/package-info.java deleted file mode 100644 index e6d0176..000 --- a/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This package contains all the Cassandra store related classes. - */ -package org.apache.gora.cassandra.store; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/gora/blob/cbed41d0/gora-cassandra/src/test/conf/cassandra.yaml -- diff --git a/gora-cassandra/src/test/conf/cassandra.yaml b/gora-cassandra/src/test/conf/cassandra.yaml deleted file mode 100644 index 772648d..000 --- a/gora-cassandra/src/test/conf/cassandra.yaml +++ /dev/null @@ -1,418 +0,0 @@ -# Cassandra storage config YAML - -# NOTE: -# See http://wiki.apache.org/cassandra/StorageConfiguration for -# full explanations of configuration directives -# /NOTE - -# The name of the cluster. This is mainly used to prevent machines in -# one logical cluster from joining another. -cluster_name: "Gora Cassandra Test Cluster" - -# You should always specify InitialToken when setting up a production -# cluster for the first time, and often when adding capacity later. -# The principle is that each node should be given an equal slice of -# the token ring; see http://wiki.apache.org/cassandra/Operations -# for more details. -# -# If blank, Cassandra will request a token bisecting the range of -# the heaviest-loaded existing node. If there is no load information -# available, such as is the case with a new cluster, it will pick -# a random token, which will lead to hot spots. -initial_token: - -# See http://wiki.apache.org/cassandra/HintedHandoff -hinted_handoff_enabled: true -# this defines the maximum amount of time a dead host will have hints -# generated. After it has been dead this long, hints will be dropped. -max_hint_window_in_ms: 360 # one hour -# Sleep this long after delivering each row or row fragment -#hinted_handoff_throttle_delay_in_ms: 50 (deprecated in 2.0.2) - -# authentication backend, implementing IAuthenticator; used to identify users -authenticator: org.apache.cassandra.auth.AllowAllAuthenticator - -# authorization backend, implementing IAuthority; used to limit access/provide permissions -authorizer: org.apache.cassandra.auth.AllowAllAuthorizer - -# The partitioner is responsible for distributing rows (by key) across -# nodes in the cluster. Any IPartitioner may be used, including your -# own as long as it is on the classpath. Out of the box, Cassandra -# provides org.apache.cassandra.dht.RandomPartitioner -# org.apache.cassandra.dht.ByteOrderedPartitioner, -# org.apache.cassandra.dht.OrderPreservingPartitioner (deprecated), -# and org.apache.cassandra.dht.CollatingOrderPreservingPartitioner -# (deprecated). -# -# - RandomPartitioner distributes rows across the cluster evenly by md5. -# When in doubt, this is the best option. -# - ByteOrderedPartitioner orders rows lexically by key bytes. BOP allows -# scanning rows in key order, but the ordering can generate hot spots -# for sequential insertion workloads. -# - OrderPreservingPartitioner is an obsolete form of BOP, that stores -# - keys in a less-efficient format and only works with keys that are -# UTF8-encoded Strings. -# - CollatingOPP colates according to EN,US rules rather than lexical byte -# ordering. Use this as an example if you need custom collation. -# -# See http://wiki.apache.org/cassandra/Operations for more on -# partitioners and token selection. -# partitioner: org.apache.cassandra.dht.RandomPartitioner -partitioner: org.apache.cassandra.dht.ByteOrderedPartitioner - -# directories where Cassandra should store data on disk. -data_file_directories: -
[3/3] gora git commit: Removing old gora-cassandra module
Removing old gora-cassandra module Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/cbed41d0 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/cbed41d0 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/cbed41d0 Branch: refs/heads/master Commit: cbed41d00ab55776b8f7647ffe00818ff736ddba Parents: 3d4e1d6 Author: Lewis John McGibbneyAuthored: Wed Aug 23 14:05:38 2017 -0700 Committer: Lewis John McGibbney Committed: Wed Aug 23 14:05:38 2017 -0700 -- gora-cassandra/conf/.gitignore | 15 - gora-cassandra/pom.xml | 192 -- gora-cassandra/src/examples/java/.gitignore | 15 - .../org/apache/gora/cassandra/package-info.java | 20 - .../gora/cassandra/query/CassandraColumn.java | 97 --- .../gora/cassandra/query/CassandraQuery.java| 107 --- .../gora/cassandra/query/CassandraResult.java | 194 -- .../cassandra/query/CassandraResultSet.java | 54 -- .../gora/cassandra/query/CassandraRow.java | 58 -- .../cassandra/query/CassandraSubColumn.java | 111 --- .../cassandra/query/CassandraSuperColumn.java | 197 -- .../gora/cassandra/query/package-info.java | 21 - .../serializers/AvroSerializerUtil.java | 94 --- .../serializers/CharSequenceSerializer.java | 64 -- .../serializers/GoraSerializerTypeInferer.java | 230 --- .../cassandra/serializers/ListSerializer.java | 193 -- .../cassandra/serializers/MapSerializer.java| 223 --- .../serializers/SpecificFixedSerializer.java| 119 .../gora/cassandra/serializers/TypeUtils.java | 232 --- .../cassandra/serializers/package-info.java | 20 - .../gora/cassandra/store/CassandraClient.java | 658 -- .../gora/cassandra/store/CassandraMapping.java | 329 - .../store/CassandraMappingManager.java | 158 - .../gora/cassandra/store/CassandraStore.java| 668 --- .../gora/cassandra/store/HectorUtils.java | 117 .../gora/cassandra/store/package-info.java | 20 - gora-cassandra/src/test/conf/cassandra.yaml | 418 .../src/test/conf/gora-cassandra-mapping.xml| 95 --- gora-cassandra/src/test/conf/gora.properties| 28 - .../src/test/conf/log4j-server.properties | 47 -- gora-cassandra/src/test/java/.gitignore | 15 - .../gora/cassandra/GoraCassandraTestDriver.java | 158 - .../org/apache/gora/cassandra/package-info.java | 21 - .../cassandra/store/TestCassandraStore.java | 92 --- .../gora/cassandra/store/package-info.java | 21 - 35 files changed, 5101 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/cbed41d0/gora-cassandra/conf/.gitignore -- diff --git a/gora-cassandra/conf/.gitignore b/gora-cassandra/conf/.gitignore deleted file mode 100644 index 09697dc..000 --- a/gora-cassandra/conf/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - http://git-wip-us.apache.org/repos/asf/gora/blob/cbed41d0/gora-cassandra/pom.xml -- diff --git a/gora-cassandra/pom.xml b/gora-cassandra/pom.xml deleted file mode 100644 index 0d3d13c..000 --- a/gora-cassandra/pom.xml +++ /dev/null @@ -1,192 +0,0 @@ - -http://maven.apache.org/POM/4.0.0; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd;> - -4.0.0 - - -org.apache.gora -gora -0.8-SNAPSHOT -../ - -gora-cassandra -bundle - -Apache Gora :: Cassandra -http://gora.apache.org -The Apache Gora open source framework provides an in-memory data model and -persistence for big data. Gora supports persisting to column stores, key value stores, -document stores and RDBMSs, and analyzing the data with
[07/13] gora git commit: Rename gora-cassandra-cql module into gora-cassandra module
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestCassandraStore.java -- diff --git a/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestCassandraStore.java b/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestCassandraStore.java deleted file mode 100644 index ce9e2df..000 --- a/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestCassandraStore.java +++ /dev/null @@ -1,178 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the" - * License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.gora.cassandra.store; - -import org.apache.gora.cassandra.GoraCassandraTestDriver; -import org.apache.gora.examples.WebPageDataCreator; -import org.apache.gora.examples.generated.WebPage; -import org.apache.gora.query.Query; -import org.apache.gora.store.DataStore; -import org.apache.gora.store.DataStoreTestBase; -import org.apache.gora.store.DataStoreTestUtil; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.Properties; - -import static org.apache.gora.examples.WebPageDataCreator.SORTED_URLS; -import static org.apache.gora.examples.WebPageDataCreator.URLS; -import static org.apache.gora.store.DataStoreTestUtil.assertEmptyResults; -import static org.apache.gora.store.DataStoreTestUtil.assertNumResults; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - -/** - * - * Testing class for all standard gora-cassandra functionality. - * We extend DataStoreTestBase enabling us to run the entire base test - * suite for Gora. - * - * Test Avro Serialization for CassandraStore. - */ -public class TestCassandraStore extends DataStoreTestBase { - private static final Logger LOG = LoggerFactory.getLogger(TestCassandraStore.class); - private static Properties properties; - - static { -GoraCassandraTestDriver testDriver = new GoraCassandraTestDriver(); -setProperties(); -testDriver.setParameters(properties); -setTestDriver(testDriver); - } - - private static void setProperties() { -properties = new Properties(); -properties.setProperty(CassandraStoreParameters.CASSANDRA_SERVERS, "localhost"); -properties.setProperty(CassandraStoreParameters.PORT, "9042"); - properties.setProperty(CassandraStoreParameters.CASSANDRA_SERIALIZATION_TYPE, "avro"); -properties.setProperty(CassandraStoreParameters.PROTOCOL_VERSION, "3"); -properties.setProperty(CassandraStoreParameters.CLUSTER_NAME, "Test Cluster"); - properties.setProperty(CassandraStoreParameters.READ_CONSISTENCY_LEVEL,"ONE"); - properties.setProperty(CassandraStoreParameters.WRITE_CONSISTENCY_LEVEL,"ONE"); -properties.setProperty("gora.cassandrastore.mapping.file", "avro/gora-cassandra-mapping.xml"); - } - - @Before - public void setUp() throws Exception { -super.setUp(); - } - - @Ignore() - @Override - public void testGetPartitions() throws IOException { - } - - private void preConfiguration() { -if (webPageStore.schemaExists()) { - webPageStore.truncateSchema(); -} else { - webPageStore.createSchema(); -} - } - - @Test - public void testQuery() throws Exception { -preConfiguration(); -log.info("test method: testQuery"); -DataStoreTestUtil.testQueryWebPages(webPageStore); - } - - @Test - public void testQueryStartKey() throws Exception { -preConfiguration(); -log.info("test method: testQueryStartKey"); -DataStoreTestUtil.testQueryWebPageStartKey(webPageStore); - } - - @Test - public void testQueryEndKey() throws Exception { -preConfiguration(); -log.info("test method: testQueryEndKey"); -DataStoreTestUtil.testQueryWebPageEndKey(webPageStore); - } - - @Test - public void testQueryKeyRange() throws Exception { -preConfiguration(); -log.info("test method: testQueryKetRange"); -DataStoreTestUtil.testQueryWebPageKeyRange(webPageStore); - } - - @Test - public void testDelete() throws Exception { -
[08/13] gora git commit: Rename gora-cassandra-cql module into gora-cassandra module
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/test/conf/cassandra.yaml -- diff --git a/gora-cassandra-cql/src/test/conf/cassandra.yaml b/gora-cassandra-cql/src/test/conf/cassandra.yaml deleted file mode 100644 index ca154ae..000 --- a/gora-cassandra-cql/src/test/conf/cassandra.yaml +++ /dev/null @@ -1,1196 +0,0 @@ -# Cassandra storage config YAML - -# NOTE: -# See http://wiki.apache.org/cassandra/StorageConfiguration for -# full explanations of configuration directives -# /NOTE - -# The name of the cluster. This is mainly used to prevent machines in -# one logical cluster from joining another. -cluster_name: 'Gora Test Cluster' - -# This defines the number of tokens randomly assigned to this node on the ring -# The more tokens, relative to other nodes, the larger the proportion of data -# that this node will store. You probably want all nodes to have the same number -# of tokens assuming they have equal hardware capability. -# -# If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility, -# and will use the initial_token as described below. -# -# Specifying initial_token will override this setting on the node's initial start, -# on subsequent starts, this setting will apply even if initial token is set. -# -# If you already have a cluster with 1 token per node, and wish to migrate to -# multiple tokens per node, see http://wiki.apache.org/cassandra/Operations -num_tokens: 256 - -# Triggers automatic allocation of num_tokens tokens for this node. The allocation -# algorithm attempts to choose tokens in a way that optimizes replicated load over -# the nodes in the datacenter for the replication strategy used by the specified -# keyspace. -# -# The load assigned to each node will be close to proportional to its number of -# vnodes. -# -# Only supported with the Murmur3Partitioner. -# allocate_tokens_for_keyspace: KEYSPACE - -# initial_token allows you to specify tokens manually. While you can use it with -# vnodes (num_tokens > 1, above) -- in which case you should provide a -# comma-separated list -- it's primarily used when adding nodes to legacy clusters -# that do not have vnodes enabled. -# initial_token: - -# See http://wiki.apache.org/cassandra/HintedHandoff -# May either be "true" or "false" to enable globally -hinted_handoff_enabled: true - -# When hinted_handoff_enabled is true, a black list of data centers that will not -# perform hinted handoff -# hinted_handoff_disabled_datacenters: -#- DC1 -#- DC2 - -# this defines the maximum amount of time a dead host will have hints -# generated. After it has been dead this long, new hints for it will not be -# created until it has been seen alive and gone down again. -max_hint_window_in_ms: 1080 # 3 hours - -# Maximum throttle in KBs per second, per delivery thread. This will be -# reduced proportionally to the number of nodes in the cluster. (If there -# are two nodes in the cluster, each delivery thread will use the maximum -# rate; if there are three, each will throttle to half of the maximum, -# since we expect two nodes to be delivering hints simultaneously.) -hinted_handoff_throttle_in_kb: 1024 - -# Number of threads with which to deliver hints; -# Consider increasing this number when you have multi-dc deployments, since -# cross-dc handoff tends to be slower -max_hints_delivery_threads: 2 - -# Directory where Cassandra should store hints. -# If not set, the default directory is $CASSANDRA_HOME/data/hints. -hints_directory: target/test/var/lib/cassandra/hints - -# How often hints should be flushed from the internal buffers to disk. -# Will *not* trigger fsync. -hints_flush_period_in_ms: 1 - -# Maximum size for a single hints file, in megabytes. -max_hints_file_size_in_mb: 128 - -# Compression to apply to the hint files. If omitted, hints files -# will be written uncompressed. LZ4, Snappy, and Deflate compressors -# are supported. -#hints_compression: -# - class_name: LZ4Compressor -# parameters: -# - - -# Maximum throttle in KBs per second, total. This will be -# reduced proportionally to the number of nodes in the cluster. -batchlog_replay_throttle_in_kb: 1024 - -# Authentication backend, implementing IAuthenticator; used to identify users -# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator, -# PasswordAuthenticator}. -# -# - AllowAllAuthenticator performs no checks - set it to disable authentication. -# - PasswordAuthenticator relies on username/password pairs to authenticate -# users. It keeps usernames and hashed passwords in system_auth.roles table. -# Please increase system_auth keyspace replication factor if you use this authenticator. -# If using PasswordAuthenticator, CassandraRoleManager must also be used (see below) -authenticator: AllowAllAuthenticator - -# Authorization backend, implementing
[02/13] gora git commit: Rename gora-cassandra-cql module into gora-cassandra module
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra/src/test/conf/cassandra.yaml -- diff --git a/gora-cassandra/src/test/conf/cassandra.yaml b/gora-cassandra/src/test/conf/cassandra.yaml new file mode 100644 index 000..ca154ae --- /dev/null +++ b/gora-cassandra/src/test/conf/cassandra.yaml @@ -0,0 +1,1196 @@ +# Cassandra storage config YAML + +# NOTE: +# See http://wiki.apache.org/cassandra/StorageConfiguration for +# full explanations of configuration directives +# /NOTE + +# The name of the cluster. This is mainly used to prevent machines in +# one logical cluster from joining another. +cluster_name: 'Gora Test Cluster' + +# This defines the number of tokens randomly assigned to this node on the ring +# The more tokens, relative to other nodes, the larger the proportion of data +# that this node will store. You probably want all nodes to have the same number +# of tokens assuming they have equal hardware capability. +# +# If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility, +# and will use the initial_token as described below. +# +# Specifying initial_token will override this setting on the node's initial start, +# on subsequent starts, this setting will apply even if initial token is set. +# +# If you already have a cluster with 1 token per node, and wish to migrate to +# multiple tokens per node, see http://wiki.apache.org/cassandra/Operations +num_tokens: 256 + +# Triggers automatic allocation of num_tokens tokens for this node. The allocation +# algorithm attempts to choose tokens in a way that optimizes replicated load over +# the nodes in the datacenter for the replication strategy used by the specified +# keyspace. +# +# The load assigned to each node will be close to proportional to its number of +# vnodes. +# +# Only supported with the Murmur3Partitioner. +# allocate_tokens_for_keyspace: KEYSPACE + +# initial_token allows you to specify tokens manually. While you can use it with +# vnodes (num_tokens > 1, above) -- in which case you should provide a +# comma-separated list -- it's primarily used when adding nodes to legacy clusters +# that do not have vnodes enabled. +# initial_token: + +# See http://wiki.apache.org/cassandra/HintedHandoff +# May either be "true" or "false" to enable globally +hinted_handoff_enabled: true + +# When hinted_handoff_enabled is true, a black list of data centers that will not +# perform hinted handoff +# hinted_handoff_disabled_datacenters: +#- DC1 +#- DC2 + +# this defines the maximum amount of time a dead host will have hints +# generated. After it has been dead this long, new hints for it will not be +# created until it has been seen alive and gone down again. +max_hint_window_in_ms: 1080 # 3 hours + +# Maximum throttle in KBs per second, per delivery thread. This will be +# reduced proportionally to the number of nodes in the cluster. (If there +# are two nodes in the cluster, each delivery thread will use the maximum +# rate; if there are three, each will throttle to half of the maximum, +# since we expect two nodes to be delivering hints simultaneously.) +hinted_handoff_throttle_in_kb: 1024 + +# Number of threads with which to deliver hints; +# Consider increasing this number when you have multi-dc deployments, since +# cross-dc handoff tends to be slower +max_hints_delivery_threads: 2 + +# Directory where Cassandra should store hints. +# If not set, the default directory is $CASSANDRA_HOME/data/hints. +hints_directory: target/test/var/lib/cassandra/hints + +# How often hints should be flushed from the internal buffers to disk. +# Will *not* trigger fsync. +hints_flush_period_in_ms: 1 + +# Maximum size for a single hints file, in megabytes. +max_hints_file_size_in_mb: 128 + +# Compression to apply to the hint files. If omitted, hints files +# will be written uncompressed. LZ4, Snappy, and Deflate compressors +# are supported. +#hints_compression: +# - class_name: LZ4Compressor +# parameters: +# - + +# Maximum throttle in KBs per second, total. This will be +# reduced proportionally to the number of nodes in the cluster. +batchlog_replay_throttle_in_kb: 1024 + +# Authentication backend, implementing IAuthenticator; used to identify users +# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator, +# PasswordAuthenticator}. +# +# - AllowAllAuthenticator performs no checks - set it to disable authentication. +# - PasswordAuthenticator relies on username/password pairs to authenticate +# users. It keeps usernames and hashed passwords in system_auth.roles table. +# Please increase system_auth keyspace replication factor if you use this authenticator. +# If using PasswordAuthenticator, CassandraRoleManager must also be used (see below) +authenticator: AllowAllAuthenticator + +# Authorization backend, implementing IAuthorizer; used to limit
[13/13] gora git commit: Remove hector dependecy
Remove hector dependecy Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/52d583af Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/52d583af Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/52d583af Branch: refs/heads/master Commit: 52d583affe4e4132d682e011930fe9c466fed27f Parents: 89683c7 Author: madhawa-gunasekaraAuthored: Thu Aug 24 03:10:16 2017 +0530 Committer: madhawa-gunasekara Committed: Thu Aug 24 03:10:16 2017 +0530 -- pom.xml | 13 - 1 file changed, 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/52d583af/pom.xml -- diff --git a/pom.xml b/pom.xml index b67d263..3944882 100644 --- a/pom.xml +++ b/pom.xml @@ -752,7 +752,6 @@ 3.3.0 3.11.0 -1.1-4 6.5.1 6.5.1 @@ -1097,18 +1096,6 @@ -org.hectorclient -hector-core -${hector.version} - - -org.apache.cassandra -cassandra-all - - - - - com.ibm.icu icu4j 49.1
[05/13] gora git commit: Rename gora-cassandra-cql module into gora-cassandra module
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java -- diff --git a/gora-cassandra/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java b/gora-cassandra/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java new file mode 100644 index 000..cd0a5d2 --- /dev/null +++ b/gora-cassandra/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java @@ -0,0 +1,326 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.gora.cassandra.compiler; + +import org.apache.commons.io.FilenameUtils; +import org.apache.gora.cassandra.bean.Field; +import org.apache.gora.cassandra.store.CassandraMapping; +import org.apache.gora.cassandra.store.CassandraMappingBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.nio.charset.Charset; +import java.util.List; +import java.util.Locale; + +/** + * This class generate Java classes for Cassandra Native Serialization. + * + * Generate specific Java classes for defined Gora cassandra mapping. + * Different from the @see org.apache.gora.compiler.GoraCompiler, + * which uses an .avsc or .json schema definition, this compiler + * expects an XML mapping file as input. + */ +public class GoraCassandraNativeCompiler { + + private static final Logger log = LoggerFactory.getLogger(GoraCassandraNativeCompiler.class); + + private Writer out; + private File dest; + + GoraCassandraNativeCompiler(File dest) { +this.dest = dest; + } + + /** + * Start point of the compiler program + * + * @param args the schema file to be compiled and where this should be written + */ + public static void main(String[] args) { +try { + if (args.length < 2) { +log.error("Usage: Compiler "); +System.exit(1); + } + compileSchema(new File(args[0]), new File(args[1])); +} catch (Exception e) { + log.error("Something went wrong. Please check the input file.", e.getMessage()); + throw new RuntimeException(e); +} + } + + /** + * Generates Java classes for a mapping. + */ + private static void compileSchema(File src, File dest) throws Exception { +log.info("Compiling {} to {}", src, dest); +GoraCassandraNativeCompiler compiler = new GoraCassandraNativeCompiler(dest); +List mappings = readMappingFile(src); +for (CassandraMapping mapping : mappings) { + compiler.compile(mapping); +} + } + + private static List readMappingFile(File src) throws Exception { +List mappings = new CassandraMappingBuilder().readMappingFile(src); +return mappings; + } + + /** + * Returns the string received with the first letter in uppercase + * + * @param name to be converted + * @return camelCase String + */ + static String cap(String name) { +return name.substring(0, 1).toUpperCase(Locale.getDefault()) ++ name.substring(1, name.length()); + } + + /** + * Method in charge of compiling a specific table using a key schema and a set + * of attributes + * + * @param mapping Cassandra Mapping + */ + private void compile(CassandraMapping mapping) { +String fullQualifiedName = mapping.getProperty("name"); +String tableName = mapping.getCoreName(); +String packageName = fullQualifiedName.substring(0, fullQualifiedName.lastIndexOf(".")); +String className = fullQualifiedName.substring(packageName.length() + 1, fullQualifiedName.length()); +String keySpace = mapping.getKeySpace().getName(); + +try { + startFile(className, packageName); + setHeaders(packageName); + line(0, ""); + line(0, "@Table(keyspace = \"" + keySpace + "\", name = \"" + tableName + "\"," + + "readConsistency = \"QUORUM\"," + + "writeConsistency = \"QUORUM\"," + + "caseSensitiveKeyspace = false," + + "caseSensitiveTable = false)"); +
[09/13] gora git commit: Rename gora-cassandra-cql module into gora-cassandra module
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMappingBuilder.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMappingBuilder.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMappingBuilder.java deleted file mode 100644 index a5ada56..000 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMappingBuilder.java +++ /dev/null @@ -1,321 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.gora.cassandra.store; - -import org.apache.gora.cassandra.bean.CassandraKey; -import org.apache.gora.cassandra.bean.ClusterKeyField; -import org.apache.gora.cassandra.bean.Field; -import org.apache.gora.cassandra.bean.KeySpace; -import org.apache.gora.cassandra.bean.PartitionKeyField; -import org.apache.gora.persistency.Persistent; -import org.jdom.Attribute; -import org.jdom.Document; -import org.jdom.Element; -import org.jdom.input.SAXBuilder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - -/** - * This Class reads the Cassandra Mapping file and create tha Cassandra Mapping object. - * {@link org.apache.gora.cassandra.store.CassandraMapping} - */ -public class CassandraMappingBuilder{ - - private static final Logger LOG = LoggerFactory.getLogger(CassandraMappingBuilder.class); - - private CassandraStore dataStore; - - public CassandraMappingBuilder() { - } - - /** - * Constructor for builder to create the mapper. - * - * @param store Cassandra Store - */ - CassandraMappingBuilder(final CassandraStore store) { -this.dataStore = store; - } - - private static int getReplicationFactor(Element element) { -if (element == null) { - return 1; -} -String value = element.getAttributeValue("replicationFactor"); -if (value == null) { - return 1; -} else { - return Integer.parseInt(value); -} - } - - /** - * @param fileName mapping fileName - * @return All the Cassandra Mappings in the mapping file - * @throws Exception - */ - @SuppressWarnings("all") - public List readMappingFile(File fileName) throws Exception { -List mappings = new ArrayList<>(); -SAXBuilder builder = new SAXBuilder(); -Document doc = builder.build(fileName); - -List keyspaces = doc.getRootElement().getChildren("keyspace"); -List classes = doc.getRootElement().getChildren("class"); -List keys = doc.getRootElement().getChildren("cassandraKey"); -for (Element classElement : classes) { - CassandraMapping mapping = new CassandraMapping(); - processClass(mapping, classElement); - mappings.add(mapping); -} - -for (CassandraMapping mapping : mappings) { - for (Element keySpace : keyspaces) { -String keySpaceName = keySpace.getAttributeValue("name"); -if (keySpaceName.equals(mapping.getProperty("keyspace"))) { - processKeySpace(mapping, keySpace, keySpaceName); - break; -} - } - - for (Element cassandraKey : keys) { -String cassandraKeyName = cassandraKey.getAttributeValue("name"); -if (mapping.getProperty("keyClass").equals(cassandraKeyName)) { - processCassandraKeys(mapping, cassandraKey, cassandraKeyName); -} - } - mapping.finalized(); -} -return mappings; - } - - /** - * In this method we reads the mapping file and creates the Cassandra Mapping. - * - * @param filename mapping file name - * @return @{@link CassandraMapping} - * @throws IOException - */ - @SuppressWarnings("all") - CassandraMapping readMapping(String filename) throws Exception { -CassandraMapping cassandraMapping = new CassandraMapping(); -Class keyClass = dataStore.getKeyClass(); -Class persistentClass = dataStore.getPersistentClass(); -SAXBuilder builder = new SAXBuilder(); -Document doc =
[10/13] gora git commit: Rename gora-cassandra-cql module into gora-cassandra module
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java deleted file mode 100644 index 928370c..000 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java +++ /dev/null @@ -1,836 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.gora.cassandra.serializers; - -import com.datastax.driver.core.querybuilder.BuiltStatement; -import com.datastax.driver.core.querybuilder.Delete; -import com.datastax.driver.core.querybuilder.QueryBuilder; -import com.datastax.driver.core.querybuilder.Select; -import com.datastax.driver.core.querybuilder.Update; -import com.datastax.driver.mapping.annotations.UDT; -import org.apache.avro.Schema; -import org.apache.gora.cassandra.bean.CassandraKey; -import org.apache.gora.cassandra.bean.ClusterKeyField; -import org.apache.gora.cassandra.bean.Field; -import org.apache.gora.cassandra.bean.KeySpace; -import org.apache.gora.cassandra.bean.PartitionKeyField; -import org.apache.gora.cassandra.query.CassandraQuery; -import org.apache.gora.cassandra.store.CassandraMapping; -import org.apache.gora.cassandra.store.CassandraStore; -import org.apache.gora.query.Query; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -/** - * This class is used create Cassandra Queries. - */ -class CassandraQueryFactory { - - private static final Logger LOG = LoggerFactory.getLogger(CassandraQueryFactory.class); - - /** - * This method returns the CQL query to create key space. - * refer : http://docs.datastax.com/en/cql/3.1/cql/cql_reference/create_keyspace_r.html - * - * @param mapping Cassandra Mapping {@link CassandraMapping} - * @return CQL Query - */ - static String getCreateKeySpaceQuery(CassandraMapping mapping) { -KeySpace keySpace = mapping.getKeySpace(); -StringBuilder stringBuffer = new StringBuilder(); -stringBuffer.append("CREATE KEYSPACE IF NOT EXISTS ").append(keySpace.getName()).append(" WITH REPLICATION = { 'class' : "); -KeySpace.PlacementStrategy placementStrategy = keySpace.getPlacementStrategy(); -stringBuffer.append("'").append(placementStrategy).append("'").append(", ").append("'"); -switch (placementStrategy) { - case SimpleStrategy: -stringBuffer.append("replication_factor").append("'").append(" : ").append(keySpace.getReplicationFactor()).append(" }"); -break; - case NetworkTopologyStrategy: -boolean isCommaNeeded = false; -for (Map.Entryentry : keySpace.getDataCenters().entrySet()) { - if (isCommaNeeded) { -stringBuffer.append(", '"); - } - stringBuffer.append(entry.getKey()).append("'").append(" : ").append(entry.getValue()); - isCommaNeeded = true; -} -stringBuffer.append(" }"); -break; -} -if (keySpace.isDurableWritesEnabled()) { - stringBuffer.append(" AND DURABLE_WRITES = ").append(keySpace.isDurableWritesEnabled()); -} -return stringBuffer.toString(); - } - - /** - * This method returns the CQL query to table. - * refer : http://docs.datastax.com/en/cql/3.1/cql/cql_reference/create_table_r.html - * - * Trick : To have a consistency of the order of the columns, first we append partition keys, second cluster keys and finally other columns. - * It's very much needed to follow the same order in other CRUD operations as well. - * - * @param mapping Cassandra mapping {@link CassandraMapping} - * @return CQL Query - */ - static String getCreateTableQuery(CassandraMapping mapping) { -StringBuilder stringBuffer = new StringBuilder(); -
[06/13] gora git commit: Rename gora-cassandra-cql module into gora-cassandra module
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraRecord.java -- diff --git a/gora-cassandra/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraRecord.java b/gora-cassandra/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraRecord.java new file mode 100644 index 000..da320ab --- /dev/null +++ b/gora-cassandra/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraRecord.java @@ -0,0 +1,1524 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the" + * License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.gora.cassandra.example.generated.AvroSerialization; + +/** + * This object created to used as Persistent Object to test cassandra data store + */ +public class CassandraRecord extends org.apache.gora.persistency.impl.PersistentBase implements org.apache.avro.specific.SpecificRecord, org.apache.gora.persistency.Persistent { + public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"CassandraRecord\",\"namespace\":\"org.apache.gora.cassandra.example.generated.AvroSerialization\",\"doc\":\"This object created to used as Persistent Object to test cassandra data store\",\"fields\":[{\"name\":\"dataString\",\"type\":\"string\",\"default\":\"\"},{\"name\":\"dataInt\",\"type\":\"int\",\"default\":0},{\"name\":\"dataLong\",\"type\":[\"null\",\"long\"],\"default\":null},{\"name\":\"dataDouble\",\"type\":[\"null\",\"double\"],\"default\":null},{\"name\":\"dataBytes\",\"type\":[\"null\",\"bytes\"],\"default\":null},{\"name\":\"arrayInt\",\"type\":{\"type\":\"array\",\"items\":\"int\"},\"default\":null},{\"name\":\"arrayString\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"default\":null},{\"name\":\"arrayLong\",\"type\":{\"type\":\"array\",\"items\":\"long\"},\"default\":null},{\"name\":\"arrayDouble\",\"type\":{\"type\":\"array\",\"it ems\":\"double\"},\"default\":null},{\"name\":\"mapInt\",\"type\":{\"type\":\"map\",\"values\":\"int\"},\"default\":{}},{\"name\":\"mapString\",\"type\":{\"type\":\"map\",\"values\":\"string\"},\"default\":{}},{\"name\":\"mapLong\",\"type\":{\"type\":\"map\",\"values\":\"long\"},\"default\":{}},{\"name\":\"mapDouble\",\"type\":{\"type\":\"map\",\"values\":\"double\"},\"default\":{}}],\"default\":null}"); + public static final String[] _ALL_FIELDS = { + "dataString", + "dataInt", + "dataLong", + "dataDouble", + "dataBytes", + "arrayInt", + "arrayString", + "arrayLong", + "arrayDouble", + "mapInt", + "mapString", + "mapLong", + "mapDouble", + }; + private static final long serialVersionUID = -4030705451859358186L; + + ; + private static final Tombstone TOMBSTONE = new Tombstone(); + private static final org.apache.avro.io.DatumWriter + DATUM_WRITER$ = new org.apache.avro.specific.SpecificDatumWriter(SCHEMA$); + private static final org.apache.avro.io.DatumReader + DATUM_READER$ = new org.apache.avro.specific.SpecificDatumReader(SCHEMA$); + private java.lang.CharSequence dataString; + private int dataInt; + private java.lang.Long dataLong; + private java.lang.Double dataDouble; + private java.nio.ByteBuffer dataBytes; + private java.util.List arrayInt; + private java.util.List arrayString; + private java.util.List arrayLong; + private java.util.List arrayDouble; + private java.util.MapmapInt; + private java.util.Map mapString; + private java.util.Map mapLong; + private java.util.Map mapDouble; + + /** + * Creates a new CassandraRecord RecordBuilder + */ + public static org.apache.gora.cassandra.example.generated.AvroSerialization.CassandraRecord.Builder newBuilder() { +return new
[04/13] gora git commit: Rename gora-cassandra-cql module into gora-cassandra module
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java -- diff --git a/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java b/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java new file mode 100644 index 000..928370c --- /dev/null +++ b/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java @@ -0,0 +1,836 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.gora.cassandra.serializers; + +import com.datastax.driver.core.querybuilder.BuiltStatement; +import com.datastax.driver.core.querybuilder.Delete; +import com.datastax.driver.core.querybuilder.QueryBuilder; +import com.datastax.driver.core.querybuilder.Select; +import com.datastax.driver.core.querybuilder.Update; +import com.datastax.driver.mapping.annotations.UDT; +import org.apache.avro.Schema; +import org.apache.gora.cassandra.bean.CassandraKey; +import org.apache.gora.cassandra.bean.ClusterKeyField; +import org.apache.gora.cassandra.bean.Field; +import org.apache.gora.cassandra.bean.KeySpace; +import org.apache.gora.cassandra.bean.PartitionKeyField; +import org.apache.gora.cassandra.query.CassandraQuery; +import org.apache.gora.cassandra.store.CassandraMapping; +import org.apache.gora.cassandra.store.CassandraStore; +import org.apache.gora.query.Query; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * This class is used create Cassandra Queries. + */ +class CassandraQueryFactory { + + private static final Logger LOG = LoggerFactory.getLogger(CassandraQueryFactory.class); + + /** + * This method returns the CQL query to create key space. + * refer : http://docs.datastax.com/en/cql/3.1/cql/cql_reference/create_keyspace_r.html + * + * @param mapping Cassandra Mapping {@link CassandraMapping} + * @return CQL Query + */ + static String getCreateKeySpaceQuery(CassandraMapping mapping) { +KeySpace keySpace = mapping.getKeySpace(); +StringBuilder stringBuffer = new StringBuilder(); +stringBuffer.append("CREATE KEYSPACE IF NOT EXISTS ").append(keySpace.getName()).append(" WITH REPLICATION = { 'class' : "); +KeySpace.PlacementStrategy placementStrategy = keySpace.getPlacementStrategy(); +stringBuffer.append("'").append(placementStrategy).append("'").append(", ").append("'"); +switch (placementStrategy) { + case SimpleStrategy: +stringBuffer.append("replication_factor").append("'").append(" : ").append(keySpace.getReplicationFactor()).append(" }"); +break; + case NetworkTopologyStrategy: +boolean isCommaNeeded = false; +for (Map.Entryentry : keySpace.getDataCenters().entrySet()) { + if (isCommaNeeded) { +stringBuffer.append(", '"); + } + stringBuffer.append(entry.getKey()).append("'").append(" : ").append(entry.getValue()); + isCommaNeeded = true; +} +stringBuffer.append(" }"); +break; +} +if (keySpace.isDurableWritesEnabled()) { + stringBuffer.append(" AND DURABLE_WRITES = ").append(keySpace.isDurableWritesEnabled()); +} +return stringBuffer.toString(); + } + + /** + * This method returns the CQL query to table. + * refer : http://docs.datastax.com/en/cql/3.1/cql/cql_reference/create_table_r.html + * + * Trick : To have a consistency of the order of the columns, first we append partition keys, second cluster keys and finally other columns. + * It's very much needed to follow the same order in other CRUD operations as well. + * + * @param mapping Cassandra mapping {@link CassandraMapping} + * @return CQL Query + */ + static String getCreateTableQuery(CassandraMapping mapping) { +StringBuilder stringBuffer = new StringBuilder(); +stringBuffer.append("CREATE
[01/37] gora git commit: Initial commit gora cassandra cql with Connection parameters
Repository: gora Updated Branches: refs/heads/master 837b12606 -> 3d4e1d69a Initial commit gora cassandra cql with Connection parameters Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/cd3522aa Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/cd3522aa Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/cd3522aa Branch: refs/heads/master Commit: cd3522aa47c542594dc9cc4d91b023a65db71ae9 Parents: d5e5560 Author: madhawa-gunasekaraAuthored: Tue Jun 13 01:03:21 2017 +0530 Committer: madhawa Committed: Fri Jun 16 23:27:12 2017 +0530 -- gora-cassandra-cql/pom.xml | 230 + gora-cassandra-cql/src/examples/java/.gitignore | 15 + .../org/apache/gora/cassandra/package-info.java | 20 + .../gora/cassandra/query/package-info.java | 21 + .../cassandra/serializers/package-info.java | 20 + .../gora/cassandra/store/CassandraStore.java| 516 +++ .../apache/gora/cassandra/store/Constants.java | 100 .../gora/cassandra/store/package-info.java | 20 + gora-cassandra-cql/src/test/conf/cassandra.yaml | 418 +++ .../src/test/conf/gora-cassandra-mapping.xml| 95 .../src/test/conf/gora.properties | 30 ++ .../src/test/conf/log4j-server.properties | 48 ++ gora-cassandra-cql/src/test/java/.gitignore | 15 + .../gora/cassandra/GoraCassandraTestDriver.java | 157 ++ .../org/apache/gora/cassandra/package-info.java | 21 + .../cassandra/store/TestCassandraStore.java | 92 .../gora/cassandra/store/package-info.java | 21 + pom.xml | 1 + 18 files changed, 1840 insertions(+) -- http://git-wip-us.apache.org/repos/asf/gora/blob/cd3522aa/gora-cassandra-cql/pom.xml -- diff --git a/gora-cassandra-cql/pom.xml b/gora-cassandra-cql/pom.xml new file mode 100644 index 000..b17fd41 --- /dev/null +++ b/gora-cassandra-cql/pom.xml @@ -0,0 +1,230 @@ + + + +http://maven.apache.org/POM/4.0.0; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd;> + +4.0.0 + + +org.apache.gora +gora +0.8-SNAPSHOT +../ + +gora-cassandra-cql +bundle + +Apache Gora :: Cassandra - CQL +http://gora.apache.org +The Apache Gora open source framework provides an in-memory data model and +persistence for big data. Gora supports persisting to column stores, key value stores, +document stores and RDBMSs, and analyzing the data with extensive Apache Hadoop MapReduce +support. +2010 + +The Apache Software Foundation +http://www.apache.org/ + + +JIRA +https://issues.apache.org/jira/browse/GORA + + +Jenkins +https://builds.apache.org/job/Gora-trunk/ + + + +* + org.apache.gora.cassandra*;version="${project.version}";-noimport:=true + + + +target +target/classes +${project.artifactId}-${project.version} +target/test-classes +src/test/java +src/main/java + + +${project.basedir}/src/test/conf + + **/* + + + + + + +org.codehaus.mojo +build-helper-maven-plugin +${build-helper-maven-plugin.version} + + +generate-sources + +add-source + + + +src/examples/java + + + + + + + + + + + + + +org.xerial.snappy +snappy-java +1.0.5-M3 +test + + + + +org.apache.gora +gora-core + + + +org.apache.gora +gora-core +test-jar +test + + + + +com.datastax.cassandra +cassandra-driver-core +${cassandra-driver.version} + + +com.google.guava +guava + + + + + + +org.apache.cassandra +cassandra-all +test + + +
[2/3] gora git commit: Removing old gora-cassandra module
http://git-wip-us.apache.org/repos/asf/gora/blob/cbed41d0/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/TypeUtils.java -- diff --git a/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/TypeUtils.java b/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/TypeUtils.java deleted file mode 100644 index c5db72b..000 --- a/gora-cassandra/src/main/java/org/apache/gora/cassandra/serializers/TypeUtils.java +++ /dev/null @@ -1,232 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.gora.cassandra.serializers; - -import java.nio.ByteBuffer; -import java.util.List; -import java.util.Map; - -import org.apache.avro.Schema; -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.persistency.Persistent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Utility class that infers the concrete Serializer needed to turn a value into - * its binary representation - */ -public class TypeUtils { - - public static final Logger LOG = LoggerFactory.getLogger(TypeUtils.class); - - // @SuppressWarnings({ "rawtypes", "unchecked" }) - public static Class getClass(Object value) { -return value.getClass(); - } - - public static Schema getSchema(Object value) { -if (value instanceof GenericArray) { - return Schema.createArray( getElementSchema((GenericArray)value) ); -} else { - return getSchema( getClass(value) ); -} - } - - public static Type getType(Object value) { -return getType( getClass(value) ); - } - - public static Type getType(Class clazz) { -if (clazz.equals(Utf8.class)) { - return Type.STRING; -} else if (clazz.equals(Boolean.class) || clazz.equals(boolean.class)) { - return Type.BOOLEAN; -} else if (clazz.equals(ByteBuffer.class)) { - return Type.BYTES; -} else if (clazz.equals(Double.class) || clazz.equals(double.class)) { - return Type.DOUBLE; -} else if (clazz.equals(Float.class) || clazz.equals(float.class)) { - return Type.FLOAT; -} else if (clazz.equals(Integer.class) || clazz.equals(int.class)) { - return Type.INT; -} else if (clazz.equals(Long.class) || clazz.equals(long.class)) { - return Type.LONG; -} else if (clazz.isAssignableFrom(List.class)) { - return Type.ARRAY; -} else if (clazz.isAssignableFrom(Map.class)) { - return Type.MAP; -} else if (clazz.equals(Persistent.class)) { - return Type.RECORD; -} else if (clazz.getSuperclass().equals(SpecificFixed.class)) { - return Type.FIXED; -} else { - return null; -} - } - - public static Class getClass(Type type) { -if (type == Type.STRING) { - return Utf8.class; -} else if (type == Type.BOOLEAN) { - return Boolean.class; -} else if (type == Type.BYTES) { - return ByteBuffer.class; -} else if (type == Type.DOUBLE) { - return Double.class; -} else if (type == Type.FLOAT) { - return Float.class; -} else if (type == Type.INT) { - return Integer.class; -} else if (type == Type.LONG) { - return Long.class; -} else if (type == Type.ARRAY) { - return List.class; -} else if (type == Type.MAP) { - return Map.class; -} else if (type == Type.RECORD) { - return Persistent.class; -} else if (type == Type.FIXED) { - // return SpecificFixed.class; - return null; -} else { - return null; -} - } - - public static Schema getSchema(Class clazz) { -Type type = getType(clazz); -if (type == null) { - return null; -} else if (type == Type.FIXED) { - int size = getFixedSize(clazz); - String name = clazz.getName(); - String space = null; - int n = name.lastIndexOf("."); - if (n < 0) { -space = name.substring(0,n); -name = name.substring(n+1); - } else { -space = null; - } - String doc = null; // ? - // LOG.info(Schema.createFixed(name, doc, space, size).toString()); -
[22/37] gora git commit: Fix functionality of the UpdateByQuery for Avro Serialization
Fix functionality of the UpdateByQuery for Avro Serialization Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/99894b82 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/99894b82 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/99894b82 Branch: refs/heads/master Commit: 99894b82ae77290ff43d84eeffe638c3ed55d2d9 Parents: c5352b0 Author: madhawaAuthored: Fri Jul 28 09:09:17 2017 +0530 Committer: madhawa Committed: Fri Jul 28 09:09:17 2017 +0530 -- .../serializers/CassandraQueryFactory.java | 25 +++- .../gora/cassandra/store/CassandraMapping.java | 9 +++ .../compositeKey/gora-cassandra-mapping.xml | 33 --- .../TestCassandraStoreWithCassandraKey.java | 61 +--- ...stCassandraStoreWithNativeSerialization.java | 38 ++-- 5 files changed, 102 insertions(+), 64 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/99894b82/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java index bf33750..4362a04 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java @@ -20,11 +20,13 @@ import com.datastax.driver.core.querybuilder.Delete; import com.datastax.driver.core.querybuilder.QueryBuilder; import com.datastax.driver.core.querybuilder.Select; import com.datastax.driver.core.querybuilder.Update; +import org.apache.avro.Schema; import org.apache.gora.cassandra.bean.CassandraKey; import org.apache.gora.cassandra.bean.ClusterKeyField; import org.apache.gora.cassandra.bean.Field; import org.apache.gora.cassandra.bean.KeySpace; import org.apache.gora.cassandra.bean.PartitionKeyField; +import org.apache.gora.cassandra.persistent.CassandraNativePersistent; import org.apache.gora.cassandra.query.CassandraQuery; import org.apache.gora.cassandra.store.CassandraMapping; import org.apache.gora.query.Query; @@ -609,9 +611,26 @@ class CassandraQueryFactory { Update.Assignments updateAssignments = null; if (cassandraQuery instanceof CassandraQuery) { String[] columnNames = getColumnNames(mapping, Arrays.asList(cassandraQuery.getFields())); - for (String column : columnNames) { -updateAssignments = update.with(QueryBuilder.set(column, "?")); -objects.add(((CassandraQuery) cassandraQuery).getUpdateFieldValue(column)); + if(CassandraNativePersistent.class.isAssignableFrom(mapping.getPersistentClass())) { +for (String column : columnNames) { + updateAssignments = update.with(QueryBuilder.set(column, "?")); + objects.add(((CassandraQuery) cassandraQuery).getUpdateFieldValue(mapping.getFieldFromColumnName(column).getFieldName())); +} + } else { +for (String column : columnNames) { + updateAssignments = update.with(QueryBuilder.set(column, "?")); + String field = mapping.getFieldFromColumnName(column).getFieldName(); + Object value = ((CassandraQuery) cassandraQuery).getUpdateFieldValue(field); + try { +Schema schema = (Schema) mapping.getPersistentClass().getField("SCHEMA$").get(null); +Schema schemaField = schema.getField(field).schema(); + objects.add(AvroCassandraUtils.getFieldValueFromAvroBean(schemaField, schemaField.getType(), value)); + } catch (IllegalAccessException | NoSuchFieldException e) { +throw new RuntimeException("SCHEMA$ field can't accessible, Please recompile the Avro schema with goracompiler."); + } catch (NullPointerException e) { +throw new RuntimeException(field + " field couldn't find in the class " + mapping.getPersistentClass() + "."); + } +} } } String primaryKey = null; http://git-wip-us.apache.org/repos/asf/gora/blob/99894b82/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMapping.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMapping.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMapping.java index 61b8d1e..5699355 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMapping.java +++
[04/37] gora git commit: Read Cassandra Key in mapping file
Read Cassandra Key in mapping file Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/6617b0bb Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/6617b0bb Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/6617b0bb Branch: refs/heads/master Commit: 6617b0bb81b7c7da327acf3be2bef9b8cb77337a Parents: 05b791a Author: madhawaAuthored: Fri Jun 23 11:43:42 2017 +0530 Committer: madhawa Committed: Fri Jun 23 11:43:42 2017 +0530 -- .../gora/cassandra/bean/CassandraKey.java | 43 +++- .../gora/cassandra/bean/ClusterKeyField.java| 41 +++ .../apache/gora/cassandra/bean/KeySpace.java| 35 +++--- .../gora/cassandra/bean/PartitionKeyField.java | 51 + .../gora/cassandra/store/CassandraMapping.java | 25 +++-- .../gora/cassandra/store/CassandraStore.java| 107 +-- .../src/test/conf/gora-cassandra-mapping.xml| 12 +-- 7 files changed, 272 insertions(+), 42 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/6617b0bb/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/CassandraKey.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/CassandraKey.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/CassandraKey.java index c0adf2c..ca9657b 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/CassandraKey.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/CassandraKey.java @@ -17,8 +17,49 @@ package org.apache.gora.cassandra.bean; +import java.util.ArrayList; +import java.util.List; + /** * This Class represents the Cassandra Key. */ -public class CassandraKey { +public class CassandraKey{ + + private String name; + + private List clusterKeyFields; + + private List partitionKeyFields; + + + public CassandraKey(String name) { +this.name = name; + } + + public String getName() { +return name; + } + + public List getClusterKeyFields() { +return clusterKeyFields; + } + + public List getPartitionKeyFields() { +return partitionKeyFields; + } + + public void addPartitionKeyField(PartitionKeyField partitionKeyField) { +if(this.partitionKeyFields == null) { + this.partitionKeyFields = new ArrayList<>(); +} +this.partitionKeyFields.add(partitionKeyField); + } + + public void addClusterKeyField(ClusterKeyField clusterKeyField) { +if(this.clusterKeyFields == null) { + this.clusterKeyFields = new ArrayList<>(); +} +this.clusterKeyFields.add(clusterKeyField); + } + } http://git-wip-us.apache.org/repos/asf/gora/blob/6617b0bb/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java new file mode 100644 index 000..560b61c --- /dev/null +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.gora.cassandra.bean; + +/** + * This class represents Cassandra Clustering Key. + */ +public class ClusterKeyField extends Field { + + public enum Order { +DESC, +ASC, + } + + private Order order; + + public Order getOrder() { +return order; + } + + public void setOrder(Order order) { +this.order = order; + } + + +} http://git-wip-us.apache.org/repos/asf/gora/blob/6617b0bb/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java
[26/37] gora git commit: Refactored the code
Refactored the code Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/962d7a6a Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/962d7a6a Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/962d7a6a Branch: refs/heads/master Commit: 962d7a6ad830b8a6feca752ddf39f4d705bd563e Parents: 99894b8 Author: madhawaAuthored: Sun Jul 30 23:11:09 2017 +0530 Committer: madhawa Committed: Wed Aug 2 07:14:55 2017 +0530 -- gora-cassandra-cql/pom.xml |7 +- .../AvroSerialization/CassandraKey.java | 517 +++--- .../AvroSerialization/CassandraRecord.java | 1582 ++ .../nativeSerialization/ComplexTypes.java | 15 +- .../generated/nativeSerialization/User.java | 25 +- .../gora/cassandra/bean/CassandraKey.java | 24 +- .../gora/cassandra/bean/ClusterKeyField.java| 23 +- .../org/apache/gora/cassandra/bean/Field.java | 19 +- .../apache/gora/cassandra/bean/KeySpace.java| 46 +- .../gora/cassandra/bean/PartitionKeyField.java |2 +- .../org/apache/gora/cassandra/package-info.java |7 +- .../persistent/CassandraNativePersistent.java | 13 +- .../gora/cassandra/query/CassandraQuery.java|2 +- .../cassandra/query/CassandraResultSet.java | 27 +- .../gora/cassandra/query/package-info.java |7 +- .../serializers/AvroCassandraUtils.java | 156 +- .../cassandra/serializers/AvroSerializer.java | 236 +-- .../serializers/CassandraQueryFactory.java | 203 ++- .../serializers/CassandraSerializer.java| 100 +- .../cassandra/serializers/NativeSerializer.java | 31 +- .../cassandra/serializers/package-info.java |7 +- .../gora/cassandra/store/CassandraClient.java | 24 +- .../gora/cassandra/store/CassandraMapping.java | 154 +- .../store/CassandraMappingBuilder.java | 26 +- .../gora/cassandra/store/CassandraStore.java| 48 +- .../store/CassandraStoreParameters.java |8 +- .../gora/cassandra/store/package-info.java |7 +- .../test/conf/avro/gora-cassandra-mapping.xml | 48 +- .../compositeKey/gora-cassandra-mapping.xml | 12 +- .../src/test/conf/gora-cassandra-mapping.xml|3 +- .../src/test/conf/gora.properties |1 - .../src/test/conf/log4j-server.properties |9 +- .../gora-cassandra-mapping.xml | 49 +- .../conf/nativeSerialization/gora.properties|1 - .../gora/cassandra/GoraCassandraTestDriver.java | 128 +- .../cassandra/store/TestCassandraStore.java | 133 ++ .../TestCassandraStoreWithCassandraKey.java | 34 +- ...stCassandraStoreWithNativeSerialization.java | 10 +- 38 files changed, 2225 insertions(+), 1519 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/962d7a6a/gora-cassandra-cql/pom.xml -- diff --git a/gora-cassandra-cql/pom.xml b/gora-cassandra-cql/pom.xml index 13e5a1a..ed98a18 100644 --- a/gora-cassandra-cql/pom.xml +++ b/gora-cassandra-cql/pom.xml @@ -16,7 +16,7 @@ ~ limitations under the License. --> -http://maven.apache.org/POM/4.0.0; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; +http://www.w3.org/2001/XMLSchema-instance; xmlns="http://maven.apache.org/POM/4.0.0; xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd;> 4.0.0 @@ -173,6 +173,11 @@ 4.0.37.Final + +org.apache.gora +gora-hbase + + com.google.guava http://git-wip-us.apache.org/repos/asf/gora/blob/962d7a6a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraKey.java -- diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraKey.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraKey.java index 478690d..6b89c33 100644 --- a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraKey.java +++ b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraKey.java @@ -1,99 +1,123 @@ /** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the" - *License"); you may not use
[10/37] gora git commit: Refactored the code
http://git-wip-us.apache.org/repos/asf/gora/blob/5e383ef9/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java index 113d0c4..1d9093d 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java @@ -17,35 +17,8 @@ package org.apache.gora.cassandra.store; -import com.datastax.driver.core.Cluster; -import com.datastax.driver.core.ConsistencyLevel; -import com.datastax.driver.core.HostDistance; -import com.datastax.driver.core.KeyspaceMetadata; -import com.datastax.driver.core.PoolingOptions; -import com.datastax.driver.core.ProtocolOptions; -import com.datastax.driver.core.ProtocolVersion; -import com.datastax.driver.core.QueryOptions; -import com.datastax.driver.core.Session; -import com.datastax.driver.core.SocketOptions; -import com.datastax.driver.core.TableMetadata; -import com.datastax.driver.core.TypeCodec; -import com.datastax.driver.core.policies.ConstantReconnectionPolicy; -import com.datastax.driver.core.policies.DCAwareRoundRobinPolicy; -import com.datastax.driver.core.policies.DefaultRetryPolicy; -import com.datastax.driver.core.policies.DowngradingConsistencyRetryPolicy; -import com.datastax.driver.core.policies.ExponentialReconnectionPolicy; -import com.datastax.driver.core.policies.FallthroughRetryPolicy; -import com.datastax.driver.core.policies.LatencyAwarePolicy; -import com.datastax.driver.core.policies.LoggingRetryPolicy; -import com.datastax.driver.core.policies.RoundRobinPolicy; -import com.datastax.driver.core.policies.TokenAwarePolicy; -import com.datastax.driver.mapping.Mapper; -import com.datastax.driver.mapping.MappingManager; -import org.apache.gora.cassandra.bean.CassandraKey; -import org.apache.gora.cassandra.bean.ClusterKeyField; -import org.apache.gora.cassandra.bean.Field; -import org.apache.gora.cassandra.bean.KeySpace; -import org.apache.gora.cassandra.bean.PartitionKeyField; +import org.apache.gora.cassandra.persistent.CassandraNativePersistent; +import org.apache.gora.cassandra.serializers.CassandraSerializer; import org.apache.gora.persistency.BeanFactory; import org.apache.gora.persistency.Persistent; import org.apache.gora.query.PartitionQuery; @@ -53,18 +26,11 @@ import org.apache.gora.query.Query; import org.apache.gora.query.Result; import org.apache.gora.store.DataStore; import org.apache.gora.store.DataStoreFactory; -import org.jdom.Attribute; -import org.jdom.Document; -import org.jdom.Element; -import org.jdom.JDOMException; -import org.jdom.input.SAXBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; -import java.util.ArrayList; import java.util.List; -import java.util.Locale; import java.util.Properties; /** @@ -81,19 +47,23 @@ public class CassandraStoreimplements DataStore private BeanFactory beanFactory; - private Cluster cluster; + private Class keyClass; - private Class keyClass; - - private Class persistentClass; + private Class persistentClass; private CassandraMapping mapping; - private boolean isUseNativeSerialization; + private CassandraSerializer cassandraSerializer; + + public enum SerializerType { +AVRO("AVRO"), NATIVE("NATIVE"); +String val; - private Mapper mapper; +SerializerType(String v) { + this.val = v; +} + } - private Session session; public CassandraStore() { super(); @@ -113,22 +83,11 @@ public class CassandraStore implements DataStore this.keyClass = keyClass; this.persistentClass = persistentClass; String mappingFile = DataStoreFactory.getMappingFile(properties, this, DEFAULT_MAPPING_FILE); - List codecs = readCustomCodec(properties); - mapping = readMapping(mappingFile); - isUseNativeSerialization = Boolean.parseBoolean(properties.getProperty(CassandraStoreParameters.USE_CASSANDRA_NATIVE_SERIALIZATION)); - Cluster.Builder builder = Cluster.builder(); - builder = populateSettings(builder, properties); - this.cluster = builder.build(); - if (codecs != null) { -registerCustomCodecs(codecs); - } - this.session = this.cluster.connect(); - if (isUseNativeSerialization) { -this.createSchema(); -MappingManager mappingManager = new MappingManager(session); -mapper = mappingManager.mapper(persistentClass); - } - + CassandraMappingBuilder mappingBuilder = new CassandraMappingBuilder(this); + mapping = mappingBuilder.readMapping(mappingFile); + CassandraClient cassandraClient = new CassandraClient(); +
[29/37] gora git commit: Add Cassandra Native Compiler
Add Cassandra Native Compiler Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/a2d63cae Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/a2d63cae Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/a2d63cae Branch: refs/heads/master Commit: a2d63caeac9b1b640ea2d2004e4312393ec6efcc Parents: a9a3ad4 Author: madhawa-gunasekaraAuthored: Fri Aug 11 19:01:41 2017 +0530 Committer: madhawa-gunasekara Committed: Fri Aug 11 19:01:41 2017 +0530 -- bin/gora| 5 + gora-cassandra-cql/pom.xml | 12 + .../compiler/GoraCassandraNativeCompiler.java | 324 ++ .../serializers/AvroCassandraUtils.java | 39 +++ .../cassandra/serializers/AvroSerializer.java | 39 +-- .../store/CassandraMappingBuilder.java | 341 +++ .../src/test/conf/gora-cassandra-mapping.xml| 98 -- 7 files changed, 581 insertions(+), 277 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/a2d63cae/bin/gora -- diff --git a/bin/gora b/bin/gora index 51b9489..03d368b 100755 --- a/bin/gora +++ b/bin/gora @@ -45,6 +45,7 @@ if [ $# = 0 ]; then echo "where COMMAND is one of:" echo " goracompiler Run Compiler" echo " specificcompiler Run Avro Specific Compiler" + echo " cassandranativecompilerRun Gora Cassandra Native Compiler" echo " dynamocompiler Run Gora DynamoDB Compiler" echo " goracirackspaceRun the GoraCI Rackspace orchestration setup" echo " goracichef Run the GoraCI Chef software provisioning setup" @@ -121,6 +122,10 @@ elif [ "$COMMAND" = "specificcompiler" ] ; then MODULE=gora-core CLASSPATH=$CLASSPATH:$GORA_HOME/$MODULE/target/classes/ CLASS=org.apache.avro.specific.SpecificCompiler +elif [ "$COMMAND" = "cassandranativecompiler" ] ; then + MODULE=gora-cassandra-cql + CLASSPATH=$CLASSPATH:$GORA_HOME/$MODULE/target/classes/ + CLASS=org.apache.gora.cassandra.compiler.GoraCassandraNativeCompiler elif [ "$COMMAND" = "dynamocompiler" ] ; then MODULE=gora-dynamodb CLASSPATH=$CLASSPATH:$GORA_HOME/$MODULE/target/classes/ http://git-wip-us.apache.org/repos/asf/gora/blob/a2d63cae/gora-cassandra-cql/pom.xml -- diff --git a/gora-cassandra-cql/pom.xml b/gora-cassandra-cql/pom.xml index b78db24..630c51b 100644 --- a/gora-cassandra-cql/pom.xml +++ b/gora-cassandra-cql/pom.xml @@ -106,6 +106,18 @@ -Xmx1024m -XX:MaxPermSize=512m + +org.apache.maven.plugins +maven-jar-plugin + + + + org.apache.gora.cassandra.compiler.GoraCassandraNativeCompiler + org.apache.gora.cassandra.compiler + + + + http://git-wip-us.apache.org/repos/asf/gora/blob/a2d63cae/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java new file mode 100644 index 000..6d07759 --- /dev/null +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java @@ -0,0 +1,324 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.gora.cassandra.compiler; + +import org.apache.commons.io.FilenameUtils; +import org.apache.gora.cassandra.bean.Field; +import
[09/37] gora git commit: Add tests for schemaExists and truncateSchema methods
Add tests for schemaExists and truncateSchema methods Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/89109b85 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/89109b85 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/89109b85 Branch: refs/heads/master Commit: 89109b855537050f5b9d125a88d26ca2c1d12f78 Parents: 2695794 Author: madhawaAuthored: Sun Jun 25 02:35:02 2017 +0530 Committer: madhawa Committed: Sun Jun 25 02:41:37 2017 +0530 -- .../cassandra/store/CassandraQueryFactory.java | 146 ++- .../gora/cassandra/store/CassandraStore.java| 31 ++-- .../compositeKey/gora-cassandra-mapping.xml | 78 ++ ...stCassandraStoreWithNativeSerialization.java | 34 - 4 files changed, 272 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/89109b85/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraQueryFactory.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraQueryFactory.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraQueryFactory.java index 422fbc6..fc90c5f 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraQueryFactory.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraQueryFactory.java @@ -16,9 +16,13 @@ */ package org.apache.gora.cassandra.store; +import org.apache.gora.cassandra.bean.CassandraKey; +import org.apache.gora.cassandra.bean.ClusterKeyField; import org.apache.gora.cassandra.bean.Field; import org.apache.gora.cassandra.bean.KeySpace; +import org.apache.gora.cassandra.bean.PartitionKeyField; +import java.util.List; import java.util.Map; /** @@ -26,6 +30,13 @@ import java.util.Map; */ class CassandraQueryFactory { + /** + * This method returns the CQL query to create key space. + * refer : http://docs.datastax.com/en/cql/3.1/cql/cql_reference/create_keyspace_r.html + * + * @param mapping Cassandra Mapping + * @return CQL Query + */ static String getCreateKeySpaceQuery(CassandraMapping mapping) { KeySpace keySpace = mapping.getKeySpace(); StringBuilder stringBuffer = new StringBuilder(); @@ -59,6 +70,25 @@ class CassandraQueryFactory { StringBuilder stringBuffer = new StringBuilder(); stringBuffer.append("CREATE TABLE IF NOT EXISTS ").append(mapping.getKeySpace().getName()).append(".").append(mapping.getCoreName()).append(" ("); boolean isCommaNeeded = false; +CassandraKey cassandraKey = mapping.getCassandraKey(); +// appending Cassandra key columns into db schema +if (cassandraKey != null) { + for (PartitionKeyField partitionKeyField : cassandraKey.getPartitionKeyFields()) { +if (partitionKeyField.isComposite()) { + for (Field compositeField : partitionKeyField.getFields()) { +stringBuffer = processFields(stringBuffer, compositeField, isCommaNeeded); + } + +} else { + stringBuffer = processFields(stringBuffer, partitionKeyField, isCommaNeeded); +} +isCommaNeeded = true; + } + for (ClusterKeyField clusterKeyField : cassandraKey.getClusterKeyFields()) { +stringBuffer = processFields(stringBuffer, clusterKeyField, isCommaNeeded); + } +} +// appending Other columns for (Field field : mapping.getFieldList()) { if (isCommaNeeded) { stringBuffer.append(", "); @@ -69,22 +99,126 @@ class CassandraQueryFactory { if (isStaticColumn) { stringBuffer.append(" STATIC"); } - if(isPrimaryKey) { + if (isPrimaryKey) { stringBuffer.append(" PRIMARY KEY "); } isCommaNeeded = true; } +if (cassandraKey != null) { + List pkey = cassandraKey.getPartitionKeyFields(); + if (pkey != null) { +stringBuffer.append(", PRIMARY KEY ("); +boolean isCommaNeededToApply = false; +for (PartitionKeyField keyField : pkey) { + if (isCommaNeededToApply) { +stringBuffer.append(","); + } + if (keyField.isComposite()) { +stringBuffer.append("("); +boolean isCommaNeededHere = false; +for (Field field : keyField.getFields()) { + if (isCommaNeededHere) { +stringBuffer.append(", "); + } + stringBuffer.append(field.getColumnName()); + isCommaNeededHere = true; +} +stringBuffer.append(")"); + } else { +stringBuffer.append(keyField.getColumnName()); + } + isCommaNeededToApply =
[37/37] gora git commit: Merge branch 'ISSUE-497'
Merge branch 'ISSUE-497' Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/3d4e1d69 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/3d4e1d69 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/3d4e1d69 Branch: refs/heads/master Commit: 3d4e1d69a27b96583cc9c8ccc1cd4abc9a7bf0b9 Parents: 837b126 ce78ef5 Author: Lewis John McGibbneyAuthored: Wed Aug 23 13:54:52 2017 -0700 Committer: Lewis John McGibbney Committed: Wed Aug 23 13:54:52 2017 -0700 -- bin/gora|5 + gora-cassandra-cql/pom.xml | 219 +++ .../src/examples/avro/cassandraKey.json | 22 + .../src/examples/avro/cassandraRecord.json | 107 ++ .../AvroSerialization/CassandraKey.java | 446 + .../AvroSerialization/CassandraRecord.java | 1524 ++ .../nativeSerialization/ComplexTypes.java | 199 +++ .../generated/nativeSerialization/Customer.java | 75 + .../generated/nativeSerialization/Document.java | 136 ++ .../generated/nativeSerialization/User.java | 159 ++ .../gora/cassandra/bean/CassandraKey.java | 91 ++ .../gora/cassandra/bean/ClusterKeyField.java| 54 + .../org/apache/gora/cassandra/bean/Field.java | 70 + .../apache/gora/cassandra/bean/KeySpace.java| 84 + .../gora/cassandra/bean/PartitionKeyField.java | 50 + .../compiler/GoraCassandraNativeCompiler.java | 326 .../org/apache/gora/cassandra/package-info.java | 21 + .../gora/cassandra/query/CassandraQuery.java| 108 ++ .../cassandra/query/CassandraResultSet.java | 121 ++ .../gora/cassandra/query/package-info.java | 22 + .../serializers/AvroCassandraUtils.java | 354 .../cassandra/serializers/AvroSerializer.java | 446 + .../serializers/CassandraQueryFactory.java | 836 ++ .../serializers/CassandraSerializer.java| 225 +++ .../cassandra/serializers/NativeSerializer.java | 243 +++ .../cassandra/serializers/package-info.java | 21 + .../gora/cassandra/store/CassandraClient.java | 535 ++ .../gora/cassandra/store/CassandraMapping.java | 242 +++ .../store/CassandraMappingBuilder.java | 321 .../gora/cassandra/store/CassandraStore.java| 380 + .../store/CassandraStoreParameters.java | 236 +++ .../gora/cassandra/store/package-info.java | 21 + .../test/conf/avro/gora-cassandra-mapping.xml | 50 + .../conf/avroUDT/gora-cassandra-mapping.xml | 50 + gora-cassandra-cql/src/test/conf/cassandra.yaml | 1196 ++ .../compositeKey/gora-cassandra-mapping.xml | 54 + .../src/test/conf/gora.properties | 37 + .../src/test/conf/log4j-server.properties | 41 + .../conf/nativeSerialization/custom-codecs.xml | 24 + .../gora-cassandra-mapping.xml | 45 + .../conf/nativeSerialization/gora.properties| 19 + .../conf/nativeUDT/gora-cassandra-mapping.xml | 32 + .../gora/cassandra/GoraCassandraTestDriver.java | 163 ++ .../org/apache/gora/cassandra/package-info.java | 21 + .../store/TestAvroSerializationWithUDT.java | 96 ++ .../cassandra/store/TestCassandraStore.java | 178 ++ .../TestCassandraStoreWithCassandraKey.java | 331 ...stCassandraStoreWithNativeSerialization.java | 305 .../store/TestNativeSerializationWithUDT.java | 87 + .../gora/cassandra/store/package-info.java | 21 + .../nativeSerialization/DateAsStringCodec.java | 50 + gora-tutorial/pom.xml |2 +- pom.xml | 11 +- 53 files changed, 10506 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/3d4e1d69/gora-tutorial/pom.xml -- http://git-wip-us.apache.org/repos/asf/gora/blob/3d4e1d69/pom.xml --
[33/37] gora git commit: Add java docs for Native Compiler
Add java docs for Native Compiler Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/b1f906c2 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/b1f906c2 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/b1f906c2 Branch: refs/heads/master Commit: b1f906c263217909d7c8ba555eb2464ea120ade5 Parents: 266ebf4 Author: madhawa-gunasekaraAuthored: Mon Aug 14 00:39:52 2017 +0530 Committer: madhawa-gunasekara Committed: Mon Aug 14 00:39:52 2017 +0530 -- .../gora/cassandra/compiler/GoraCassandraNativeCompiler.java | 8 1 file changed, 8 insertions(+) -- http://git-wip-us.apache.org/repos/asf/gora/blob/b1f906c2/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java index 369ff31..fd34a48 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java @@ -34,6 +34,14 @@ import java.nio.charset.Charset; import java.util.List; import java.util.Locale; +/** + * This class generate Java classes for Cassandra Native Serialization. + * + * Generate specific Java classes for defined Gora cassandra mapping. + * Different from the @see org.apache.gora.compiler.GoraCompiler, + * which uses an .avsc or .json schema definition, this compiler + * expects an XML mapping file as input. + */ public class GoraCassandraNativeCompiler { private static final Logger log = LoggerFactory.getLogger(GoraCassandraNativeCompiler.class);
[11/37] gora git commit: Refactored the code
Refactored the code Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/5e383ef9 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/5e383ef9 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/5e383ef9 Branch: refs/heads/master Commit: 5e383ef974541804382a639b79e3efbf6b03d2b2 Parents: 89109b8 Author: madhawaAuthored: Wed Jun 28 23:45:18 2017 +0530 Committer: madhawa Committed: Wed Jun 28 23:48:54 2017 +0530 -- gora-cassandra-cql/pom.xml | 10 - gora-cassandra-cql/src/examples/java/.gitignore | 15 - .../generated/nativeSerialization/User.java | 66 ++ .../persistent/CassandraNativePersistent.java | 109 .../cassandra/serializers/AvroSerializer.java | 51 ++ .../serializers/CassandraNativePersistent.java | 91 --- .../serializers/CassandraQueryFactory.java | 248 .../serializers/CassandraSerializer.java| 105 +++ .../cassandra/serializers/NativeSerializer.java | 61 ++ .../gora/cassandra/store/CassandraClient.java | 368 +++ .../store/CassandraMappingBuilder.java | 234 +++ .../cassandra/store/CassandraQueryFactory.java | 224 --- .../gora/cassandra/store/CassandraStore.java| 636 ++- .../store/CassandraStoreParameters.java | 2 +- .../test/conf/avro/gora-cassandra-mapping.xml | 73 +++ .../gora-cassandra-mapping.xml | 2 +- gora-cassandra-cql/src/test/java/.gitignore | 15 - ...stCassandraStoreWithNativeSerialization.java | 25 +- .../nativeSerialization/DateAsStringCodec.java | 17 + .../test/nativeSerialization/User.java | 66 -- 20 files changed, 1404 insertions(+), 1014 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/5e383ef9/gora-cassandra-cql/pom.xml -- diff --git a/gora-cassandra-cql/pom.xml b/gora-cassandra-cql/pom.xml index d56e07a..13e5a1a 100644 --- a/gora-cassandra-cql/pom.xml +++ b/gora-cassandra-cql/pom.xml @@ -110,16 +110,6 @@ - - - - -org.xerial.snappy -snappy-java -1.0.5-M3 -test - - org.apache.gora http://git-wip-us.apache.org/repos/asf/gora/blob/5e383ef9/gora-cassandra-cql/src/examples/java/.gitignore -- diff --git a/gora-cassandra-cql/src/examples/java/.gitignore b/gora-cassandra-cql/src/examples/java/.gitignore deleted file mode 100644 index 09697dc..000 --- a/gora-cassandra-cql/src/examples/java/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - http://git-wip-us.apache.org/repos/asf/gora/blob/5e383ef9/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java -- diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java new file mode 100644 index 000..1e810a0 --- /dev/null +++ b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java @@ -0,0 +1,66 @@ +package org.apache.gora.cassandra.example.generated.nativeSerialization; + +import com.datastax.driver.mapping.annotations.Column; +import com.datastax.driver.mapping.annotations.PartitionKey; +import com.datastax.driver.mapping.annotations.Table; +import com.datastax.driver.mapping.annotations.Transient; +import org.apache.gora.cassandra.persistent.CassandraNativePersistent; + +import java.util.Date; +import java.util.UUID; + +/** + * Created by madhawa on 6/23/17. + */ + +@Table(keyspace = "nativeTestKeySpace", name = "users", +readConsistency = "QUORUM", +writeConsistency = "QUORUM", +
[08/37] gora git commit: Add Simple Test for Native Cassandra Serialization
Add Simple Test for Native Cassandra Serialization Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/2695794a Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/2695794a Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/2695794a Branch: refs/heads/master Commit: 2695794ad01132486447e489b7e179edb357b974 Parents: 516f366 Author: madhawaAuthored: Fri Jun 23 23:42:44 2017 +0530 Committer: madhawa Committed: Sat Jun 24 22:16:30 2017 +0530 -- gora-cassandra-cql/pom.xml | 69 +- .../serializers/CassandraNativePersistent.java | 91 ++ .../cassandra/store/CassandraQueryFactory.java | 28 +- .../gora/cassandra/store/CassandraStore.java| 171 ++- .../store/CassandraStoreParameters.java | 83 +- gora-cassandra-cql/src/test/conf/cassandra.yaml | 1248 ++ .../src/test/conf/log4j-server.properties |2 +- .../mappingManager/gora-cassandra-mapping.xml | 97 -- .../test/conf/mappingManager/gora.properties| 30 - .../conf/nativeSerialization/custom-codecs.xml | 24 + .../gora-cassandra-mapping.xml | 65 + .../conf/nativeSerialization/gora.properties| 30 + .../gora/cassandra/GoraCassandraTestDriver.java | 35 +- ...stCassandraStoreWithNativeSerialization.java | 46 +- .../nativeSerialization/DateAsStringCodec.java | 33 + .../test/nativeSerialization/User.java | 86 +- gora-tutorial/pom.xml |2 +- pom.xml |8 +- 18 files changed, 1563 insertions(+), 585 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/2695794a/gora-cassandra-cql/pom.xml -- diff --git a/gora-cassandra-cql/pom.xml b/gora-cassandra-cql/pom.xml index 11da4fc..d56e07a 100644 --- a/gora-cassandra-cql/pom.xml +++ b/gora-cassandra-cql/pom.xml @@ -16,10 +16,11 @@ ~ limitations under the License. --> -http://maven.apache.org/POM/4.0.0; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd;> +http://maven.apache.org/POM/4.0.0; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd;> 4.0.0 - + org.apache.gora gora 0.8-SNAPSHOT @@ -29,11 +30,12 @@ bundle Apache Gora :: Cassandra - CQL -http://gora.apache.org -The Apache Gora open source framework provides an in-memory data model and -persistence for big data. Gora supports persisting to column stores, key value stores, -document stores and RDBMSs, and analyzing the data with extensive Apache Hadoop MapReduce -support. +http://gora.apache.org +The Apache Gora open source framework provides an in-memory data model and +persistence for big data. Gora supports persisting to column stores, key value stores, +document stores and RDBMSs, and analyzing the data with extensive Apache Hadoop MapReduce +support. + 2010 The Apache Software Foundation @@ -49,7 +51,7 @@ -17.0 +18.0 * org.apache.gora.cassandra*;version="${project.version}";-noimport:=true @@ -62,13 +64,13 @@ src/test/java src/main/java - -${project.basedir}/src/test/conf - - **/* - - - + +${project.basedir}/src/test/conf + +**/* + + + @@ -89,6 +91,21 @@ + +org.apache.maven.plugins +maven-surefire-plugin + + +org.apache.maven.surefire +surefire-junit47 +2.20 + + + +always +-Xmx1024m -XX:MaxPermSize=512m + + @@ -124,8 +141,14 @@ -com.datastax.cassandra -cassandra-driver-mapping +com.datastax.cassandra +cassandra-driver-mapping +${cassandra-driver.version} + + + +com.datastax.cassandra +cassandra-driver-extras ${cassandra-driver.version} @@ -144,12 +167,22 @@ slf4j-log4j12
[14/37] gora git commit: Add logs for NativeSerializer
Add logs for NativeSerializer Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/163624a9 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/163624a9 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/163624a9 Branch: refs/heads/master Commit: 163624a9596298bf80bb41360fcd246a886a0688 Parents: 2fe2c2b Author: madhawaAuthored: Sat Jul 8 11:06:45 2017 +0530 Committer: madhawa Committed: Sat Jul 8 11:13:40 2017 +0530 -- .../cassandra/serializers/AvroSerializer.java | 4 ++-- .../cassandra/serializers/NativeSerializer.java | 22 +--- .../gora/cassandra/store/CassandraStore.java| 2 +- 3 files changed, 22 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/163624a9/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java index 8061a80..83676dc 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java @@ -37,7 +37,7 @@ import java.util.Map; /** * This class contains the operations relates to Avro Serialization */ -public class AvroSerializer extends CassandraSerializer { +class AvroSerializer extends CassandraSerializer { /** @@ -45,7 +45,7 @@ public class AvroSerializer extends CassandraSerial */ public static final int DEFAULT_UNION_SCHEMA = 0; - public AvroSerializer(CassandraClient cassandraClient, Class keyClass, Class persistentClass, CassandraMapping mapping) { + AvroSerializer(CassandraClient cassandraClient, Class keyClass, Class persistentClass, CassandraMapping mapping) { super(cassandraClient, keyClass, persistentClass, mapping); } http://git-wip-us.apache.org/repos/asf/gora/blob/163624a9/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/NativeSerializer.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/NativeSerializer.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/NativeSerializer.java index d551d33..2bac3dd 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/NativeSerializer.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/NativeSerializer.java @@ -29,6 +29,8 @@ import org.apache.gora.cassandra.store.CassandraMapping; import org.apache.gora.persistency.Persistent; import org.apache.gora.query.Query; import org.apache.gora.store.DataStore; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.lang.reflect.Method; import java.util.ArrayList; @@ -38,22 +40,32 @@ import java.util.List; /** * This Class contains the operation relates to Native Serialization. */ -public class NativeSerializer extends CassandraSerializer { +class NativeSerializer extends CassandraSerializer { + + private static final Logger LOG = LoggerFactory.getLogger(CassandraNativePersistent.class); private Mapper mapper; @Override public void put(Object key, Persistent value) { +LOG.debug("Object is saved with key : {} and value : {}",key,value); mapper.save((T) value); } @Override public T get(Object key) { -return mapper.get(key); +T object = mapper.get(key); +if(object != null) { + LOG.debug("Object is found for key : {}", key); +} else { + LOG.debug("Object is not found for key : {}", key); +} +return object; } @Override public boolean delete(Object key) { +LOG.debug("Object is deleted for key : {}", key); mapper.delete(key); return true; } @@ -66,8 +78,10 @@ public class NativeSerializer extends Ca Result objects = mapper.map(results); List objectList = objects.all(); if (objectList != null) { + LOG.debug("Object is found for key : {}", key); return objectList.get(0); } +LOG.debug("Object is not found for key : {}" , key); return null; } @@ -81,6 +95,8 @@ public class NativeSerializer extends Ca } else { results = client.getSession().execute(cqlQuery, objectArrayList.toArray());
[35/37] gora git commit: Fix code formatting
Fix code formatting Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/683d902d Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/683d902d Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/683d902d Branch: refs/heads/master Commit: 683d902dc66c21b2353292880a00e0e149e548d4 Parents: 1fba416 Author: madhawaAuthored: Sun Aug 20 20:50:49 2017 +0530 Committer: madhawa Committed: Sun Aug 20 22:13:01 2017 +0530 -- .../serializers/CassandraSerializer.java| 2 +- .../store/CassandraMappingBuilder.java | 36 .../store/CassandraStoreParameters.java | 2 +- .../test/conf/avro/gora-cassandra-mapping.xml | 2 +- .../conf/avroUDT/gora-cassandra-mapping.xml | 2 +- .../gora-cassandra-mapping.xml | 2 +- .../conf/nativeUDT/gora-cassandra-mapping.xml | 2 +- 7 files changed, 28 insertions(+), 20 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/683d902d/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraSerializer.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraSerializer.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraSerializer.java index 5f15743..6a20a35 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraSerializer.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraSerializer.java @@ -80,7 +80,7 @@ public abstract class CassandraSerializer { * @return Serializer */ public static CassandraSerializer getSerializer(CassandraClient cc, String type, final DataStore dataStore, CassandraMapping mapping) { -CassandraStore.SerializerType serType = type.isEmpty() ? CassandraStore.SerializerType.NATIVE : CassandraStore.SerializerType.valueOf(type.toUpperCase(Locale.ENGLISH)); +CassandraStore.SerializerType serType = type == null || type.isEmpty() ? CassandraStore.SerializerType.NATIVE : CassandraStore.SerializerType.valueOf(type.toUpperCase(Locale.ENGLISH)); CassandraSerializer serializer; switch (serType) { case AVRO: http://git-wip-us.apache.org/repos/asf/gora/blob/683d902d/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMappingBuilder.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMappingBuilder.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMappingBuilder.java index fa988d9..f1fe8d4 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMappingBuilder.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraMappingBuilder.java @@ -59,7 +59,10 @@ public class CassandraMappingBuilder { } private static int getReplicationFactor(Element element) { -String value = element.getAttributeValue("replication_factor"); +if (element == null) { + return 1; +} +String value = element.getAttributeValue("replicationFactor"); if (value == null) { return 1; } else { @@ -213,19 +216,24 @@ public class CassandraMappingBuilder { } } Element placementStrategy = keyspaceElement.getChild("placementStrategy"); -switch (KeySpace.PlacementStrategy.valueOf(placementStrategy.getAttributeValue("name"))) { - case SimpleStrategy: - keyspace.setPlacementStrategy(KeySpace.PlacementStrategy.SimpleStrategy); -keyspace.setReplicationFactor(getReplicationFactor(placementStrategy)); -break; - case NetworkTopologyStrategy: -List dataCenters = placementStrategy.getChildren("datacenter"); - keyspace.setPlacementStrategy(KeySpace.PlacementStrategy.NetworkTopologyStrategy); -for (Element dataCenter : dataCenters) { - String dataCenterName = dataCenter.getAttributeValue("name"); - keyspace.addDataCenter(dataCenterName, getReplicationFactor(dataCenter)); -} -break; +if (placementStrategy != null) { + switch (KeySpace.PlacementStrategy.valueOf(placementStrategy.getAttributeValue("name"))) { +case SimpleStrategy: + keyspace.setPlacementStrategy(KeySpace.PlacementStrategy.SimpleStrategy); + keyspace.setReplicationFactor(getReplicationFactor(placementStrategy)); + break; +case NetworkTopologyStrategy: + List dataCenters =
[12/37] gora git commit: Add execute method, get by fields for native serialization
Add execute method, get by fields for native serialization Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/4ce6a6e4 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/4ce6a6e4 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/4ce6a6e4 Branch: refs/heads/master Commit: 4ce6a6e423700c72b99d28c7419aacc1dfe9e1ab Parents: 5e383ef Author: madhawaAuthored: Fri Jul 7 22:18:36 2017 +0530 Committer: madhawa Committed: Fri Jul 7 22:18:36 2017 +0530 -- .../generated/nativeSerialization/User.java | 20 +++- .../gora/cassandra/query/CassandraColumn.java | 51 .../gora/cassandra/query/CassandraQuery.java| 67 +++ .../cassandra/query/CassandraResultSet.java | 82 + .../gora/cassandra/query/CassandraRow.java | 79 .../cassandra/serializers/AvroSerializer.java | 35 +- .../serializers/CassandraQueryFactory.java | 119 +-- .../serializers/CassandraSerializer.java| 39 -- .../cassandra/serializers/NativeSerializer.java | 80 - .../gora/cassandra/store/CassandraClient.java | 5 +- .../gora/cassandra/store/CassandraMapping.java | 18 +++ .../store/CassandraMappingBuilder.java | 6 +- .../gora/cassandra/store/CassandraStore.java| 13 +- .../test/conf/avro/gora-cassandra-mapping.xml | 2 +- .../cassandra/store/TestCassandraStore.java | 95 +++ ...stCassandraStoreWithNativeSerialization.java | 79 +++- 16 files changed, 746 insertions(+), 44 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/4ce6a6e4/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java -- diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java index 1e810a0..105dfb7 100644 --- a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java +++ b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.gora.cassandra.example.generated.nativeSerialization; import com.datastax.driver.mapping.annotations.Column; @@ -10,9 +27,8 @@ import java.util.Date; import java.util.UUID; /** - * Created by madhawa on 6/23/17. + * Sample class for native cassandra persistent example. */ - @Table(keyspace = "nativeTestKeySpace", name = "users", readConsistency = "QUORUM", writeConsistency = "QUORUM", http://git-wip-us.apache.org/repos/asf/gora/blob/4ce6a6e4/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java new file mode 100644 index 000..e95b815 --- /dev/null +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java @@ -0,0 +1,51 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License
[05/37] gora git commit: Add doc comments to Cassandra Store Parameters
Add doc comments to Cassandra Store Parameters Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/516f366c Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/516f366c Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/516f366c Branch: refs/heads/master Commit: 516f366cc27fa2654cf4017fa151cc07ad902a6d Parents: 6617b0b Author: madhawaAuthored: Fri Jun 23 18:18:46 2017 +0530 Committer: madhawa Committed: Fri Jun 23 18:18:46 2017 +0530 -- .../gora/cassandra/store/CassandraStore.java| 173 ++- .../store/CassandraStoreParameters.java | 222 +++ .../apache/gora/cassandra/store/Constants.java | 101 - .../mappingManager/gora-cassandra-mapping.xml | 97 .../test/conf/mappingManager/gora.properties| 30 +++ .../gora/cassandra/GoraCassandraTestDriver.java | 27 ++- .../cassandra/store/TestCassandraStore.java | 89 ...stCassandraStoreWithNativeSerialization.java | 57 + .../test/nativeSerialization/User.java | 122 ++ pom.xml | 2 +- 10 files changed, 620 insertions(+), 300 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/516f366c/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java index 09123da..7031444 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java @@ -23,13 +23,12 @@ import com.datastax.driver.core.*; import com.datastax.driver.core.policies.*; import org.apache.gora.cassandra.bean.*; import org.apache.gora.persistency.BeanFactory; -import org.apache.gora.persistency.impl.PersistentBase; +import org.apache.gora.persistency.Persistent; import org.apache.gora.query.PartitionQuery; import org.apache.gora.query.Query; import org.apache.gora.query.Result; +import org.apache.gora.store.DataStore; import org.apache.gora.store.DataStoreFactory; -import org.apache.gora.store.impl.DataStoreBase; -import org.apache.hadoop.conf.Configuration; import org.jdom.Attribute; import org.jdom.Document; import org.jdom.Element; @@ -37,10 +36,9 @@ import org.jdom.input.SAXBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.DataInput; -import java.io.DataOutput; import java.io.IOException; import java.util.List; +import java.util.Locale; import java.util.Properties; /** @@ -49,14 +47,20 @@ import java.util.Properties; * @param key class * @param persistent class */ -public class CassandraStore extends DataStoreBase { +public class CassandraStore implements DataStore { private static final String DEFAULT_MAPPING_FILE = "gora-cassandra-mapping.xml"; public static final Logger LOG = LoggerFactory.getLogger(CassandraStore.class); + private BeanFactory beanFactory; + private Cluster cluster; + private Class keyClass; + + private Class persistentClass; + private CassandraMapping mapping; private boolean isUseCassandraMappingManager; @@ -70,7 +74,7 @@ public class CassandraStore extends DataStoreBase extends DataStoreBase keyClass, Class persistentClass, Properties properties) { LOG.debug("Initializing Cassandra store"); -super.initialize(keyClass, persistentClass, properties); try { + this.keyClass = keyClass; + this.persistentClass = persistentClass; String mappingFile = DataStoreFactory.getMappingFile(properties, this, DEFAULT_MAPPING_FILE); mapping = readMapping(mappingFile); - isUseCassandraMappingManager = Boolean.parseBoolean(properties.getProperty(Constants.USE_CASSANDRA_MAPPING_MANAGER)); + isUseCassandraMappingManager = Boolean.parseBoolean(properties.getProperty(CassandraStoreParameters.USE_CASSANDRA_NATIVE_SERIALIZATION)); Cluster.Builder builder = Cluster.builder(); populateSettings(builder, properties); this.cluster = builder.build(); @@ -128,8 +132,7 @@ public class CassandraStore extends DataStoreBase extends DataStoreBase extends DataStoreBase extends DataStoreBase extends DataStoreBase extends DataStoreBase extends DataStoreBase extends DataStoreBase extends DataStoreBase extends DataStoreBase extends DataStoreBase extends DataStoreBase extends DataStoreBase extends
[32/37] gora git commit: Reformat the code
Reformat the code Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/266ebf46 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/266ebf46 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/266ebf46 Branch: refs/heads/master Commit: 266ebf464983940a1e36f2bf15737d258d471f24 Parents: 0de528e Author: madhawa-gunasekaraAuthored: Sun Aug 13 20:34:57 2017 +0530 Committer: madhawa-gunasekara Committed: Sun Aug 13 20:34:57 2017 +0530 -- .../apache/gora/cassandra/bean/ClusterKeyField.java | 1 + .../org/apache/gora/cassandra/bean/KeySpace.java| 4 .../apache/gora/cassandra/query/CassandraQuery.java | 2 ++ .../gora/cassandra/serializers/AvroSerializer.java | 8 ++-- .../cassandra/serializers/CassandraSerializer.java | 10 +++--- .../apache/gora/cassandra/store/CassandraStore.java | 16 ++-- gora-cassandra-cql/src/test/conf/gora.properties| 8 +--- .../test/conf/nativeSerialization/gora.properties | 8 +--- .../test/conf/nativeUDT/gora-cassandra-mapping.xml | 1 - 9 files changed, 24 insertions(+), 34 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/266ebf46/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java index 259025a..e1c88e3 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java @@ -23,6 +23,7 @@ package org.apache.gora.cassandra.bean; public class ClusterKeyField { private String columnName; + private Order order; public ClusterKeyField() { http://git-wip-us.apache.org/repos/asf/gora/blob/266ebf46/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java index 7deb49a..898b370 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java @@ -26,9 +26,13 @@ import java.util.Map; public class KeySpace { private String name; + private PlacementStrategy placementStrategy; + private boolean durableWritesEnabled; + private int replicationFactor; + private Map dataCenters; public String getName() { http://git-wip-us.apache.org/repos/asf/gora/blob/266ebf46/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java index 919e946..45f9b77 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java @@ -33,7 +33,9 @@ import java.util.Map; public class CassandraQuery extends QueryWSBase { private Filter filter; + private boolean localFilterEnabled = true; + private Map updateFields = new HashMap<>(); public CassandraQuery(DataStore dataStore) { http://git-wip-us.apache.org/repos/asf/gora/blob/266ebf46/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java index 893de91..3037d6c 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java @@ -58,10 +58,14 @@ class AvroSerializer extends CassandraSerializer { private Schema persistentSchema; - AvroSerializer(CassandraClient cassandraClient, DataStore dataStore, CassandraMapping mapping, Schema schema) { + AvroSerializer(CassandraClient cassandraClient, DataStore dataStore, CassandraMapping mapping) { super(cassandraClient,
[19/37] gora git commit: Add avro serialization support
Add avro serialization support Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/a51b719c Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/a51b719c Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/a51b719c Branch: refs/heads/master Commit: a51b719cb265ec63f9699f74b498efc0d27c1920 Parents: 4343982 Author: madhawaAuthored: Tue Jul 25 00:09:57 2017 +0530 Committer: madhawa Committed: Tue Jul 25 00:09:57 2017 +0530 -- .../src/examples/avro/cassandraKey.json | 21 + .../src/examples/avro/cassandraRecord.json | 106 ++ .../avroSerialization/CassandraKey.java | 380 + .../avroSerialization/CassandraRecord.java | 1293 ++ .../gora/cassandra/bean/CassandraKey.java | 21 +- .../gora/cassandra/bean/ClusterKeyField.java| 16 +- .../gora/cassandra/query/CassandraColumn.java | 51 - .../cassandra/query/CassandraResultSet.java |4 + .../gora/cassandra/query/CassandraRow.java | 79 -- .../serializers/AvroCassandraUtils.java | 274 .../cassandra/serializers/AvroSerializer.java | 250 +++- .../serializers/CassandraQueryFactory.java | 327 - .../serializers/CassandraSerializer.java| 47 +- .../cassandra/serializers/NativeSerializer.java | 43 +- .../gora/cassandra/store/CassandraMapping.java | 67 +- .../store/CassandraMappingBuilder.java | 32 +- .../gora/cassandra/store/CassandraStore.java|2 +- .../test/conf/avro/gora-cassandra-mapping.xml | 49 +- .../compositeKey/gora-cassandra-mapping.xml | 31 +- .../src/test/conf/gora-cassandra-mapping.xml|2 +- .../TestCassandraStoreWithCassandraKey.java | 210 +++ ...stCassandraStoreWithNativeSerialization.java |4 +- 22 files changed, 2954 insertions(+), 355 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/a51b719c/gora-cassandra-cql/src/examples/avro/cassandraKey.json -- diff --git a/gora-cassandra-cql/src/examples/avro/cassandraKey.json b/gora-cassandra-cql/src/examples/avro/cassandraKey.json new file mode 100644 index 000..6db3127 --- /dev/null +++ b/gora-cassandra-cql/src/examples/avro/cassandraKey.json @@ -0,0 +1,21 @@ +{ + "type": "record", + "name": "CassandraKey", + "default": null, + "namespace": "org.apache.gora.cassandra.example.generated.avroSerialization", + "fields": [ +{ + "name": "url", + "type": [ +"null", +"string" + ], + "default": null +}, +{ + "name": "timestamp", + "type": "long", + "default": 0 +} + ] +} http://git-wip-us.apache.org/repos/asf/gora/blob/a51b719c/gora-cassandra-cql/src/examples/avro/cassandraRecord.json -- diff --git a/gora-cassandra-cql/src/examples/avro/cassandraRecord.json b/gora-cassandra-cql/src/examples/avro/cassandraRecord.json new file mode 100644 index 000..bd741cd --- /dev/null +++ b/gora-cassandra-cql/src/examples/avro/cassandraRecord.json @@ -0,0 +1,106 @@ +{ + "type": "record", + "name": "CassandraRecord", + "default": null, + "namespace": "org.apache.gora.cassandra.example.generated.avroSerialization", + "fields": [ +{ + "name": "dataString", + "type": "string", + "default": "" +}, +{ + "name": "dataInt", + "type": "int", + "default": 0 +}, +{ + "name": "dataLong", + "type": [ +"null", +"long" + ], + "default": null +}, +{ + "name": "dataDouble", + "type": [ +"null", +"double" + ], + "default": null +}, +{ + "name": "dataBytes", + "type": [ +"null", +"bytes" + ], + "default": null +}, +{ + "name": "arrayInt", + "type": { +"type": "array", +"items": "int" + }, + "default": null +}, +{ + "name": "arrayString", + "type": { +"type": "array", +"items": "string" + }, + "default": null +}, +{ + "name": "arrayLong", + "type": { +"type": "array", +"items": "long" + }, + "default": null +}, +{ + "name": "arrayDouble", + "type": { +"type": "array", +"items": "double" + }, + "default": null +}, +{ + "name": "mapInt", + "type": { +"type": "map", +"values": "int" + }, + "default": {} +}, +{ + "name": "mapString", + "type": { +"type": "map", +"values": "string" + }, + "default": {} +}, +{ + "name": "mapLong", + "type": { +
[28/37] gora git commit: Add tests for avro
Add tests for avro Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/a9a3ad49 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/a9a3ad49 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/a9a3ad49 Branch: refs/heads/master Commit: a9a3ad4922a45a76c8c6b1b76c011d72736e0c30 Parents: 962d7a6 Author: madhawa-gunasekaraAuthored: Fri Aug 4 21:35:14 2017 +0530 Committer: madhawa-gunasekara Committed: Thu Aug 10 23:45:56 2017 +0530 -- gora-cassandra-cql/pom.xml | 5 +- .../nativeSerialization/ComplexTypes.java | 85 ++- .../generated/nativeSerialization/Customer.java | 81 +++ .../generated/nativeSerialization/Document.java | 137 + .../generated/nativeSerialization/User.java | 86 ++- .../org/apache/gora/cassandra/bean/Field.java | 1 + .../persistent/CassandraNativePersistent.java | 108 .../cassandra/query/CassandraResultSet.java | 6 +- .../serializers/AvroCassandraUtils.java | 20 +- .../cassandra/serializers/AvroSerializer.java | 126 +++-- .../serializers/CassandraQueryFactory.java | 526 +-- .../serializers/CassandraSerializer.java| 87 +-- .../cassandra/serializers/NativeSerializer.java | 10 +- .../gora/cassandra/store/CassandraMapping.java | 8 +- .../store/CassandraMappingBuilder.java | 3 + .../gora/cassandra/store/CassandraStore.java| 26 +- .../conf/avroUDT/gora-cassandra-mapping.xml | 50 ++ .../src/test/conf/gora.properties | 4 +- .../conf/nativeUDT/gora-cassandra-mapping.xml | 33 ++ .../gora/cassandra/GoraCassandraTestDriver.java | 8 +- .../store/TestAvroSerializationWithUDT.java | 91 .../cassandra/store/TestCassandraStore.java | 97 +++- .../TestCassandraStoreWithCassandraKey.java | 68 +++ .../store/TestNativeSerializationWithUDT.java | 91 pom.xml | 4 +- 25 files changed, 1248 insertions(+), 513 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/a9a3ad49/gora-cassandra-cql/pom.xml -- diff --git a/gora-cassandra-cql/pom.xml b/gora-cassandra-cql/pom.xml index ed98a18..b78db24 100644 --- a/gora-cassandra-cql/pom.xml +++ b/gora-cassandra-cql/pom.xml @@ -167,11 +167,10 @@ - + org.apache.gora http://git-wip-us.apache.org/repos/asf/gora/blob/a9a3ad49/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java -- diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java index 797ea62..c161ef9 100644 --- a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java +++ b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java @@ -3,7 +3,10 @@ package org.apache.gora.cassandra.example.generated.nativeSerialization; import com.datastax.driver.mapping.annotations.Column; import com.datastax.driver.mapping.annotations.PartitionKey; import com.datastax.driver.mapping.annotations.Table; -import org.apache.gora.cassandra.persistent.CassandraNativePersistent; +import com.datastax.driver.mapping.annotations.Transient; +import org.apache.avro.Schema; +import org.apache.gora.persistency.Persistent; +import org.apache.gora.persistency.Tombstone; import java.util.List; import java.util.Map; @@ -18,7 +21,7 @@ import java.util.UUID; writeConsistency = "QUORUM", caseSensitiveKeyspace = false, caseSensitiveTable = true) -public class ComplexTypes extends CassandraNativePersistent { +public class ComplexTypes implements Persistent { @Column private List listDataType; @@ -98,4 +101,82 @@ public class ComplexTypes extends CassandraNativePersistent { public void setId(String id) { this.id = id; } + + @Transient + @Override + public void clear() { + + } + + @Transient + @Override + public boolean isDirty(int fieldIndex) { +return false; + } + + @Transient + @Override + public boolean isDirty(String field) { +return false; + } + + @Transient + @Override + public void setDirty() { + + } + + @Transient + @Override + public void setDirty(int fieldIndex) { + + } + + @Transient + @Override + public void clearDirty(int fieldIndex) { + + } + + @Transient + @Override + public void
[21/37] gora git commit: Fix review comments
Fix review comments Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/c5352b0e Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/c5352b0e Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/c5352b0e Branch: refs/heads/master Commit: c5352b0e077ad1bebe6f3536e7fd1efe2fef5cfa Parents: a51b719 Author: madhawaAuthored: Thu Jul 27 23:37:01 2017 +0530 Committer: madhawa Committed: Thu Jul 27 23:41:56 2017 +0530 -- .../src/examples/avro/cassandraKey.json |1 + .../src/examples/avro/cassandraRecord.json |1 + .../AvroSerialization/CassandraKey.java | 381 ++ .../AvroSerialization/CassandraRecord.java | 1294 ++ .../avroSerialization/CassandraKey.java | 380 - .../avroSerialization/CassandraRecord.java | 1293 - .../apache/gora/cassandra/bean/KeySpace.java| 19 +- .../gora/cassandra/query/CassandraQuery.java|6 +- .../cassandra/query/CassandraResultSet.java | 46 +- .../serializers/AvroCassandraUtils.java | 26 +- .../cassandra/serializers/AvroSerializer.java |7 +- .../serializers/CassandraQueryFactory.java | 84 +- .../serializers/CassandraSerializer.java|2 +- .../cassandra/serializers/NativeSerializer.java |3 - .../store/CassandraMappingBuilder.java | 36 +- .../gora/cassandra/store/CassandraStore.java|6 + .../compositeKey/gora-cassandra-mapping.xml |6 +- .../gora-cassandra-mapping.xml |8 +- .../TestCassandraStoreWithCassandraKey.java | 16 +- 19 files changed, 1862 insertions(+), 1753 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/c5352b0e/gora-cassandra-cql/src/examples/avro/cassandraKey.json -- diff --git a/gora-cassandra-cql/src/examples/avro/cassandraKey.json b/gora-cassandra-cql/src/examples/avro/cassandraKey.json index 6db3127..f4c4a76 100644 --- a/gora-cassandra-cql/src/examples/avro/cassandraKey.json +++ b/gora-cassandra-cql/src/examples/avro/cassandraKey.json @@ -3,6 +3,7 @@ "name": "CassandraKey", "default": null, "namespace": "org.apache.gora.cassandra.example.generated.avroSerialization", + "doc": "This Object is created to used as Cassandra Key to test cassandra data store, Cassandra Key can be used to define partition keys, clustering keys.", "fields": [ { "name": "url", http://git-wip-us.apache.org/repos/asf/gora/blob/c5352b0e/gora-cassandra-cql/src/examples/avro/cassandraRecord.json -- diff --git a/gora-cassandra-cql/src/examples/avro/cassandraRecord.json b/gora-cassandra-cql/src/examples/avro/cassandraRecord.json index bd741cd..48ce275 100644 --- a/gora-cassandra-cql/src/examples/avro/cassandraRecord.json +++ b/gora-cassandra-cql/src/examples/avro/cassandraRecord.json @@ -3,6 +3,7 @@ "name": "CassandraRecord", "default": null, "namespace": "org.apache.gora.cassandra.example.generated.avroSerialization", + "doc": "This object created to used as Persistent Object to test cassandra data store", "fields": [ { "name": "dataString", http://git-wip-us.apache.org/repos/asf/gora/blob/c5352b0e/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraKey.java -- diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraKey.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraKey.java new file mode 100644 index 000..478690d --- /dev/null +++ b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/AvroSerialization/CassandraKey.java @@ -0,0 +1,381 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the" + *License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, software + *distributed under the License is distributed on an "AS IS" BASIS, + *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + *See the License for the specific language governing permissions and + *limitations under the License. + */ +package
[15/37] gora git commit: Add getPartitions Method
Add getPartitions Method Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/4ebfabb1 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/4ebfabb1 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/4ebfabb1 Branch: refs/heads/master Commit: 4ebfabb194c88fa10db51d6f2db6282a357ae15d Parents: 163624a Author: madhawaAuthored: Sat Jul 8 11:54:05 2017 +0530 Committer: madhawa Committed: Sat Jul 8 11:54:05 2017 +0530 -- .../org/apache/gora/cassandra/store/CassandraStore.java | 9 - 1 file changed, 8 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/4ebfabb1/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java index e6cf373..8a100aa 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java @@ -25,12 +25,15 @@ import org.apache.gora.persistency.Persistent; import org.apache.gora.query.PartitionQuery; import org.apache.gora.query.Query; import org.apache.gora.query.Result; +import org.apache.gora.query.impl.PartitionQueryImpl; +import org.apache.gora.query.ws.impl.PartitionWSQueryImpl; import org.apache.gora.store.DataStore; import org.apache.gora.store.DataStoreFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Properties; @@ -227,7 +230,11 @@ public class CassandraStore implements DataStore @Override public List > getPartitions(Query query) throws IOException { -return null; +List > partitions = new ArrayList<>(); +PartitionWSQueryImpl pqi = new PartitionWSQueryImpl<>(query); +pqi.setDataStore(this); +partitions.add(pqi); +return partitions; } @Override
[30/37] gora git commit: Add License Headers
Add License Headers Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/2695207b Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/2695207b Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/2695207b Branch: refs/heads/master Commit: 2695207be60528c10f0d03ac097c0af73a2ab292 Parents: a2d63ca Author: madhawa-gunasekaraAuthored: Fri Aug 11 21:10:03 2017 +0530 Committer: madhawa-gunasekara Committed: Fri Aug 11 21:18:13 2017 +0530 -- gora-cassandra-cql/pom.xml | 5 -- .../nativeSerialization/ComplexTypes.java | 18 .../generated/nativeSerialization/Customer.java | 14 ++ .../generated/nativeSerialization/Document.java | 1 - .../generated/nativeSerialization/User.java | 1 - .../compiler/GoraCassandraNativeCompiler.java | 27 +-- .../cassandra/serializers/AvroSerializer.java | 6 --- .../serializers/CassandraQueryFactory.java | 15 +++--- .../serializers/CassandraSerializer.java| 7 +-- .../cassandra/serializers/NativeSerializer.java | 2 +- .../store/CassandraMappingBuilder.java | 48 +--- .../store/TestAvroSerializationWithUDT.java | 6 +-- .../cassandra/store/TestCassandraStore.java | 4 ++ .../TestCassandraStoreWithCassandraKey.java | 14 +++--- .../store/TestNativeSerializationWithUDT.java | 11 + 15 files changed, 80 insertions(+), 99 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/2695207b/gora-cassandra-cql/pom.xml -- diff --git a/gora-cassandra-cql/pom.xml b/gora-cassandra-cql/pom.xml index 630c51b..2e05e43 100644 --- a/gora-cassandra-cql/pom.xml +++ b/gora-cassandra-cql/pom.xml @@ -179,11 +179,6 @@ - - org.apache.gora gora-hbase http://git-wip-us.apache.org/repos/asf/gora/blob/2695207b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java -- diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java index c161ef9..1a6a674 100644 --- a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java +++ b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the" + * License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.gora.cassandra.example.generated.nativeSerialization; import com.datastax.driver.mapping.annotations.Column; http://git-wip-us.apache.org/repos/asf/gora/blob/2695207b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Customer.java -- diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Customer.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Customer.java index 1b2de10..59bed36 100644 --- a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Customer.java +++ b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Customer.java @@ -15,37 +15,31 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.gora.cassandra.example.generated.nativeSerialization; import com.datastax.driver.mapping.annotations.Field; import com.datastax.driver.mapping.annotations.UDT; -import java.util.List; -import java.util.Map; import
[02/37] gora git commit: Adding Cassandra Mapping file reading
Adding Cassandra Mapping file reading Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/a7b99f83 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/a7b99f83 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/a7b99f83 Branch: refs/heads/master Commit: a7b99f83aaf385cbe6772a5a0c7843b65153ec57 Parents: cd3522a Author: madhawa-gunasekaraAuthored: Thu Jun 22 15:36:48 2017 +0530 Committer: madhawa Committed: Fri Jun 23 00:52:39 2017 +0530 -- gora-cassandra-cql/pom.xml | 47 + .../org/apache/gora/cassandra/bean/Field.java | 54 ++ .../apache/gora/cassandra/bean/KeySpace.java| 84 + .../apache/gora/cassandra/bean/PrimaryKey.java | 7 + .../gora/cassandra/store/CassandraMapping.java | 60 +++ .../cassandra/store/CassandraQueryFactory.java | 58 ++ .../gora/cassandra/store/CassandraStore.java| 178 +-- .../apache/gora/cassandra/store/Constants.java | 75 .../src/test/conf/gora-cassandra-mapping.xml| 78 .../gora/cassandra/GoraCassandraTestDriver.java | 3 +- .../cassandra/store/TestCassandraStore.java | 9 +- 11 files changed, 514 insertions(+), 139 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/a7b99f83/gora-cassandra-cql/pom.xml -- diff --git a/gora-cassandra-cql/pom.xml b/gora-cassandra-cql/pom.xml index b17fd41..11da4fc 100644 --- a/gora-cassandra-cql/pom.xml +++ b/gora-cassandra-cql/pom.xml @@ -17,22 +17,6 @@ --> http://maven.apache.org/POM/4.0.0; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd;> - 4.0.0 @@ -65,6 +49,7 @@ +17.0 * org.apache.gora.cassandra*;version="${project.version}";-noimport:=true @@ -136,12 +121,12 @@ com.datastax.cassandra cassandra-driver-core ${cassandra-driver.version} - - -com.google.guava -guava - - + + + +com.datastax.cassandra +cassandra-driver-mapping +${cassandra-driver.version} @@ -165,26 +150,11 @@ - - - - - - - - - - - - - com.google.guava guava +${guava.version} @@ -192,7 +162,6 @@ jdom - org.apache.avro avro http://git-wip-us.apache.org/repos/asf/gora/blob/a7b99f83/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/Field.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/Field.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/Field.java new file mode 100644 index 000..2bd997f --- /dev/null +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/Field.java @@ -0,0 +1,54 @@ +package org.apache.gora.cassandra.bean; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by madhawa on 6/22/17. + */ +public class Field { + + private String fieldName; + + private String columnName; + + private String type; + + public Field() { +properties = new HashMap<>(2); + } + + private Map properties; + + public void setFieldName(String fieldName) { +this.fieldName = fieldName; + } + + public void setColumnName(String columnName) { +this.columnName = columnName; + } + + public void addProperty(String key, String value) { +properties.put(key, value); + } + + public String getFieldName() { +return fieldName; + } + + public String getColumnName() { +return columnName; + } + + public String getType() { +return type; + } + + public void setType(String type) { +this.type = type; + } + + public String getProperty(String key) { +return this.properties.get(key); + } +} http://git-wip-us.apache.org/repos/asf/gora/blob/a7b99f83/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java new file mode 100644 index 000..af563da --- /dev/null +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java
[16/37] gora git commit: Add updateByQuery for native serialization
Add updateByQuery for native serialization Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/cc452f8d Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/cc452f8d Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/cc452f8d Branch: refs/heads/master Commit: cc452f8dc0d864c50279dfa61d56e57e5e40a740 Parents: 4ebfabb Author: madhawaAuthored: Sat Jul 8 15:02:54 2017 +0530 Committer: madhawa Committed: Sat Jul 8 15:02:54 2017 +0530 -- .../gora/cassandra/query/CassandraQuery.java| 35 .../cassandra/serializers/AvroSerializer.java | 4 ++ .../serializers/CassandraQueryFactory.java | 60 ++-- .../serializers/CassandraSerializer.java| 2 + .../cassandra/serializers/NativeSerializer.java | 13 + .../gora/cassandra/store/CassandraStore.java| 19 +++ ...stCassandraStoreWithNativeSerialization.java | 22 +++ 7 files changed, 129 insertions(+), 26 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/cc452f8d/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java index 251e9df..c3f2e81 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java @@ -6,9 +6,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -20,22 +20,21 @@ package org.apache.gora.cassandra.query; import org.apache.gora.filter.Filter; import org.apache.gora.persistency.Persistent; -import org.apache.gora.persistency.impl.PersistentBase; import org.apache.gora.query.Query; -import org.apache.gora.query.Result; -import org.apache.gora.query.impl.QueryBase; import org.apache.gora.query.ws.impl.QueryWSBase; import org.apache.gora.store.DataStore; -import org.apache.hadoop.conf.Configurable; -import org.apache.hadoop.io.Writable; + +import java.util.HashMap; +import java.util.Map; /** * Cassandra specific implementation of the {@link Query} interface. */ -public class CassandraQuery extends QueryWSBase { +public class CassandraQuery extends QueryWSBase { protected Filter filter; - protected boolean localFilterEnabled=true; + protected boolean localFilterEnabled = true; + protected Map updateFields = new HashMap<>(); public CassandraQuery(DataStore dataStore) { super(dataStore); @@ -61,7 +60,21 @@ public class CassandraQuery extends QueryWSBase { localFilterEnabled = enable; } - public void addUpdateField(String field, Object oldValue, Object newValue) { + public void addUpdateField(String field, Object newValue) { +updateFields.put(field, newValue); + } + public Object getUpdateFieldValue(String key) { +return updateFields.get(key); + } + + @Override + public String[] getFields() { +if(updateFields.size() == 0) { + return super.getFields(); +} else { + String[] updateFieldsArray = new String[updateFields.size()]; + return updateFields.keySet().toArray(updateFieldsArray); +} } } http://git-wip-us.apache.org/repos/asf/gora/blob/cc452f8d/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java index 83676dc..3b626a4 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java @@ -80,4 +80,8 @@ class AvroSerializer extends CassandraSerializer { return 0; } + @Override + public boolean updateByQuery(Query query) { +return false; + } }
[31/37] gora git commit: Fix code review comments
Fix code review comments Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/0de528ef Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/0de528ef Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/0de528ef Branch: refs/heads/master Commit: 0de528effcfa595ff9f9c5cb3d0c7eaf18392554 Parents: 2695207 Author: madhawa-gunasekaraAuthored: Sun Aug 13 15:52:43 2017 +0530 Committer: madhawa-gunasekara Committed: Sun Aug 13 19:28:18 2017 +0530 -- .../compiler/GoraCassandraNativeCompiler.java | 2 +- .../gora/cassandra/query/CassandraQuery.java| 27 + .../cassandra/query/CassandraResultSet.java | 5 +- .../serializers/AvroCassandraUtils.java | 2 +- .../cassandra/serializers/AvroSerializer.java | 94 ++- .../serializers/CassandraQueryFactory.java | 34 -- .../serializers/CassandraSerializer.java| 102 .../cassandra/serializers/NativeSerializer.java | 73 ++- .../gora/cassandra/store/CassandraClient.java | 6 +- .../gora/cassandra/store/CassandraMapping.java | 7 +- .../gora/cassandra/store/CassandraStore.java| 120 ++- .../gora/cassandra/GoraCassandraTestDriver.java | 3 - .../store/TestAvroSerializationWithUDT.java | 3 + .../cassandra/store/TestCassandraStore.java | 44 ++- .../store/TestNativeSerializationWithUDT.java | 3 + 15 files changed, 405 insertions(+), 120 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/0de528ef/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java index 77d6777..369ff31 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java @@ -64,7 +64,7 @@ public class GoraCassandraNativeCompiler { } /** - * Generates Java classes for a schema. + * Generates Java classes for a mapping. */ private static void compileSchema(File src, File dest) throws Exception { log.info("Compiling {} to {}", src, dest); http://git-wip-us.apache.org/repos/asf/gora/blob/0de528ef/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java index 1479686..919e946 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java @@ -40,34 +40,61 @@ public class CassandraQuery extends QueryWSBase { super(dataStore); } + /** + * {@inheritDoc} + */ @Override public Filter getFilter() { return filter; } + /** + * {@inheritDoc} + */ @Override public void setFilter(Filter filter) { this.filter = filter; } + /** + * {@inheritDoc} + */ @Override public boolean isLocalFilterEnabled() { return localFilterEnabled; } + /** + * {@inheritDoc} + */ @Override public void setLocalFilterEnabled(boolean enable) { localFilterEnabled = enable; } + /** + * This method adds Update field with the relevant Value + * + * @param fieldfield Name + * @param newValue New Value of the field + */ public void addUpdateField(String field, Object newValue) { updateFields.put(field, newValue); } + /** + * This method returns the updated field value of the particular field. + * + * @param key Field Name + * @return Object value + */ public Object getUpdateFieldValue(String key) { return updateFields.get(key); } + /** + * {@inheritDoc} + */ @Override public String[] getFields() { if (updateFields.size() == 0) { http://git-wip-us.apache.org/repos/asf/gora/blob/0de528ef/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraResultSet.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraResultSet.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraResultSet.java index
[20/37] gora git commit: Fix review comments
http://git-wip-us.apache.org/repos/asf/gora/blob/c5352b0e/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/avroSerialization/CassandraRecord.java -- diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/avroSerialization/CassandraRecord.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/avroSerialization/CassandraRecord.java deleted file mode 100644 index 4a92882..000 --- a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/avroSerialization/CassandraRecord.java +++ /dev/null @@ -1,1293 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the" - *License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package org.apache.gora.cassandra.example.generated.avroSerialization; - -public class CassandraRecord extends org.apache.gora.persistency.impl.PersistentBase implements org.apache.avro.specific.SpecificRecord, org.apache.gora.persistency.Persistent { - public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"CassandraRecord\",\"namespace\":\"org.apache.gora.cassandra.example.generated.avroSerialization\",\"fields\":[{\"name\":\"dataString\",\"type\":\"string\",\"default\":\"\"},{\"name\":\"dataInt\",\"type\":\"int\",\"default\":0},{\"name\":\"dataLong\",\"type\":[\"null\",\"long\"],\"default\":null},{\"name\":\"dataDouble\",\"type\":[\"null\",\"double\"],\"default\":null},{\"name\":\"dataBytes\",\"type\":[\"null\",\"bytes\"],\"default\":null},{\"name\":\"arrayInt\",\"type\":{\"type\":\"array\",\"items\":\"int\"},\"default\":null},{\"name\":\"arrayString\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"default\":null},{\"name\":\"arrayLong\",\"type\":{\"type\":\"array\",\"items\":\"long\"},\"default\":null},{\"name\":\"arrayDouble\",\"type\":{\"type\":\"array\",\"items\":\"double\"},\"default\":null},{\"name\":\"mapInt\",\"type\":{\"type\":\"map\",\"valu es\":\"int\"},\"default\":{}},{\"name\":\"mapString\",\"type\":{\"type\":\"map\",\"values\":\"string\"},\"default\":{}},{\"name\":\"mapLong\",\"type\":{\"type\":\"map\",\"values\":\"long\"},\"default\":{}},{\"name\":\"mapDouble\",\"type\":{\"type\":\"map\",\"values\":\"double\"},\"default\":{}}],\"default\":null}"); - private static final long serialVersionUID = 5865822911454498901L; - /** Enum containing all data bean's fields. */ - public static enum Field { -DATA_STRING(0, "dataString"), -DATA_INT(1, "dataInt"), -DATA_LONG(2, "dataLong"), -DATA_DOUBLE(3, "dataDouble"), -DATA_BYTES(4, "dataBytes"), -ARRAY_INT(5, "arrayInt"), -ARRAY_STRING(6, "arrayString"), -ARRAY_LONG(7, "arrayLong"), -ARRAY_DOUBLE(8, "arrayDouble"), -MAP_INT(9, "mapInt"), -MAP_STRING(10, "mapString"), -MAP_LONG(11, "mapLong"), -MAP_DOUBLE(12, "mapDouble"), -; -/** - * Field's index. - */ -private int index; - -/** - * Field's name. - */ -private String name; - -/** - * Field's constructor - * @param index field's index. - * @param name field's name. - */ -Field(int index, String name) {this.index=index;this.name=name;} - -/** - * Gets field's index. - * @return int field's index. - */ -public int getIndex() {return index;} - -/** - * Gets field's name. - * @return String field's name. - */ -public String getName() {return name;} - -/** - * Gets field's attributes to string. - * @return String field's attributes to string. - */ -public String toString() {return name;} - }; - - public static final String[] _ALL_FIELDS = { - "dataString", - "dataInt", - "dataLong", - "dataDouble", - "dataBytes", - "arrayInt", - "arrayString", - "arrayLong", - "arrayDouble", - "mapInt", - "mapString", - "mapLong", - "mapDouble", - }; - - /** - * Gets the total field count. - * @return int field count - */ - public int getFieldsCount() { -return CassandraRecord._ALL_FIELDS.length; - } - - private java.lang.CharSequence dataString; - private int dataInt; - private java.lang.Long dataLong; - private java.lang.Double
[13/37] gora git commit: Add delete by Query method for native serialization
Add delete by Query method for native serialization Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/2fe2c2bb Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/2fe2c2bb Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/2fe2c2bb Branch: refs/heads/master Commit: 2fe2c2bbbffcbeb968e523dd332ad087827b3f92 Parents: 4ce6a6e Author: madhawaAuthored: Sat Jul 8 10:55:27 2017 +0530 Committer: madhawa Committed: Sat Jul 8 10:55:27 2017 +0530 -- .../cassandra/serializers/AvroSerializer.java | 5 + .../serializers/CassandraQueryFactory.java | 131 ++- .../serializers/CassandraSerializer.java| 4 +- .../cassandra/serializers/NativeSerializer.java | 13 ++ .../gora/cassandra/store/CassandraStore.java| 12 +- .../gora-cassandra-mapping.xml | 2 +- .../cassandra/store/TestCassandraStore.java | 95 -- ...stCassandraStoreWithNativeSerialization.java | 43 +- 8 files changed, 164 insertions(+), 141 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/2fe2c2bb/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java index d5dd548..8061a80 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java @@ -75,4 +75,9 @@ public class AvroSerializer extends CassandraSerial return null; } + @Override + public long deleteByQuery(Query query) { +return 0; + } + } http://git-wip-us.apache.org/repos/asf/gora/blob/2fe2c2bb/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java index 3939c34..2a980e5 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/CassandraQueryFactory.java @@ -16,6 +16,7 @@ */ package org.apache.gora.cassandra.serializers; +import com.datastax.driver.core.querybuilder.Delete; import com.datastax.driver.core.querybuilder.QueryBuilder; import com.datastax.driver.core.querybuilder.Select; import org.apache.gora.cassandra.bean.CassandraKey; @@ -27,6 +28,7 @@ import org.apache.gora.cassandra.query.CassandraRow; import org.apache.gora.cassandra.store.CassandraMapping; import org.apache.gora.query.Query; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -290,64 +292,125 @@ class CassandraQueryFactory { } - static String getExecuteQuery(CassandraMapping mapping, Query cassandraQuery, List objects ) { + static String getExecuteQuery(CassandraMapping mapping, Query cassandraQuery, List objects) { String[] fields = cassandraQuery.getFields(); fields = fields != null ? fields : mapping.getFieldNames(); Object startKey = cassandraQuery.getStartKey(); Object endKey = cassandraQuery.getEndKey(); -long limit = cassandraQuery.getLimit(); -Select select = QueryBuilder.select(getColumnNames(mapping,fields)).from(mapping.getKeySpace().getName(), mapping.getCoreName()); -if(limit > 0) { - select = select.limit((int)limit); +Object key = cassandraQuery.getKey(); +String primaryKey = null; +long limit = cassandraQuery.getLimit(); +Select select = QueryBuilder.select(getColumnNames(mapping, fields)).from(mapping.getKeySpace().getName(), mapping.getCoreName()); +if (limit > 0) { + select = select.limit((int) limit); } Select.Where query = null; boolean isWhereNeeded = true; -if(startKey != null) { - if (mapping.getCassandraKey() != null) { +if (key != null) { + primaryKey = getPKey(mapping.getFieldList()); + query = select.where(QueryBuilder.eq(primaryKey, "?")); + objects.add(key); +} else { + if (startKey != null) { +if (mapping.getCassandraKey() != null) { //todo avro serialization - } else { -for (Field field : mapping.getFieldList()) { - boolean isPrimaryKey = Boolean.parseBoolean(field.getProperty("primarykey")); - if (isPrimaryKey)
[27/37] gora git commit: Add tests for avro
http://git-wip-us.apache.org/repos/asf/gora/blob/a9a3ad49/gora-cassandra-cql/src/test/conf/gora.properties -- diff --git a/gora-cassandra-cql/src/test/conf/gora.properties b/gora-cassandra-cql/src/test/conf/gora.properties index a109759..fb98d63 100644 --- a/gora-cassandra-cql/src/test/conf/gora.properties +++ b/gora-cassandra-cql/src/test/conf/gora.properties @@ -19,9 +19,7 @@ gora.cassandrastore.cluster=Gora Cassandra Test Cluster gora.cassandrastore.host=localhost:9160 # property is annotated in CassandraClient#checkKeyspace() # options are ANY, ONE, TWO, THREE, LOCAL_QUORUM, EACH_QUORUM, QUORUM and ALL. -gora.cassandrastore.cf.consistency.level=ONE -gora.cassandrastore.read.consistency.level=QUORUM -gora.cassandrastore.write.consistency.level=ONE + http://git-wip-us.apache.org/repos/asf/gora/blob/a9a3ad49/gora-cassandra-cql/src/test/conf/nativeUDT/gora-cassandra-mapping.xml -- diff --git a/gora-cassandra-cql/src/test/conf/nativeUDT/gora-cassandra-mapping.xml b/gora-cassandra-cql/src/test/conf/nativeUDT/gora-cassandra-mapping.xml new file mode 100644 index 000..d6d99bf --- /dev/null +++ b/gora-cassandra-cql/src/test/conf/nativeUDT/gora-cassandra-mapping.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/gora/blob/a9a3ad49/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/GoraCassandraTestDriver.java -- diff --git a/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/GoraCassandraTestDriver.java b/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/GoraCassandraTestDriver.java index a091721..1d454b4 100644 --- a/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/GoraCassandraTestDriver.java +++ b/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/GoraCassandraTestDriver.java @@ -118,7 +118,7 @@ public class GoraCassandraTestDriver extends GoraTestDriver { */ @Override public void setUpClass() { -/*log.info("Starting embedded Cassandra Server..."); +log.info("Starting embedded Cassandra Server..."); try { cleanupDirectoriesFailover(); FileUtils.createDirectory(baseDirectory); @@ -147,7 +147,7 @@ public class GoraCassandraTestDriver extends GoraTestDriver { // cleanup tearDownClass(); -}*/ +} } /** @@ -158,9 +158,9 @@ public class GoraCassandraTestDriver extends GoraTestDriver { @Override public void tearDownClass() { log.info("Shutting down Embedded Cassandra server..."); - /* if (cassandraThread != null) { +if (cassandraThread != null) { cassandraDaemon.stop(); cassandraDaemon.destroy(); -}*/ +} } } http://git-wip-us.apache.org/repos/asf/gora/blob/a9a3ad49/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestAvroSerializationWithUDT.java -- diff --git a/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestAvroSerializationWithUDT.java b/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestAvroSerializationWithUDT.java new file mode 100644 index 000..8dfae6b --- /dev/null +++ b/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestAvroSerializationWithUDT.java @@ -0,0 +1,91 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.gora.cassandra.store; + +import org.apache.avro.util.Utf8; +import org.apache.gora.cassandra.GoraCassandraTestDriver; +import org.apache.gora.examples.generated.Metadata; +import org.apache.gora.examples.generated.WebPage; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.nio.ByteBuffer; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Map; +import java.util.Properties; + +public class TestAvroSerializationWithUDT { + + private static
[18/37] gora git commit: Add avro serialization support
http://git-wip-us.apache.org/repos/asf/gora/blob/a51b719c/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroCassandraUtils.java -- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroCassandraUtils.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroCassandraUtils.java new file mode 100644 index 000..70e0ecf --- /dev/null +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroCassandraUtils.java @@ -0,0 +1,274 @@ +package org.apache.gora.cassandra.serializers; + +import org.apache.avro.Schema; +import org.apache.avro.specific.SpecificData; +import org.apache.avro.util.Utf8; +import org.apache.gora.cassandra.bean.CassandraKey; +import org.apache.gora.cassandra.bean.Field; +import org.apache.gora.cassandra.store.CassandraMapping; +import org.apache.gora.persistency.Persistent; +import org.apache.gora.persistency.impl.DirtyListWrapper; +import org.apache.gora.persistency.impl.DirtyMapWrapper; +import org.apache.gora.persistency.impl.PersistentBase; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * This class is Utils class for Avro serialization. + */ +public class AvroCassandraUtils { + + /** + * Default schema index with value "0" used when AVRO Union data types are stored. + */ + private static final int DEFAULT_UNION_SCHEMA = 0; + + private static final Logger LOG = LoggerFactory.getLogger(AvroCassandraUtils.class); + + static void processKeys(CassandraMapping cassandraMapping, Object key, List keys, List values) { +CassandraKey cassandraKey = cassandraMapping.getCassandraKey(); +if (cassandraMapping.isPartitionKeyDefined()) { + if (cassandraKey != null) { +if (key instanceof PersistentBase) { + PersistentBase keyBase = (PersistentBase) key; + for (Schema.Field field : keyBase.getSchema().getFields()) { +if (cassandraMapping.getFieldFromFieldName(field.name()) != null) { + keys.add(field.name()); + Object value = keyBase.get(field.pos()); + value = getFieldValueFromAvroBean(field.schema(), field.schema().getType(), value); + values.add(value); +} else { + LOG.debug("Ignoring field {}, Since field couldn't find in the {} mapping", new Object[]{field.name(), cassandraMapping.getPersistentClass()}); +} + } +} else { + LOG.error("Key bean isn't extended by {} .", new Object[]{cassandraMapping.getKeyClass(), PersistentBase.class}); +} + } else { +for (Field field : cassandraMapping.getInlinedDefinedPartitionKeys()) { + keys.add(field.getFieldName()); + values.add(key); +} + } +} else { + keys.add(cassandraMapping.getDefaultCassandraKey().getFieldName()); + values.add(key.toString()); +} + } + + /** + * For every field within an object, we pass in a field schema, Type and value. + * This enables us to process fields (based on their characteristics) + * preparing them for persistence. + * + * @param fieldSchema the associated field schema + * @param typethe field type + * @param fieldValue the field value. + * @return + */ + static Object getFieldValueFromAvroBean(Schema fieldSchema, Schema.Type type, Object fieldValue) { +switch (type) { + case RECORD: +PersistentBase persistent = (PersistentBase) fieldValue; +PersistentBase newRecord = (PersistentBase) SpecificData.get().newRecord(persistent, persistent.getSchema()); +for (Schema.Field member : fieldSchema.getFields()) { + if (member.pos() == 0 || !persistent.isDirty()) { +continue; + } + Schema memberSchema = member.schema(); + Schema.Type memberType = memberSchema.getType(); + Object memberValue = persistent.get(member.pos()); + newRecord.put(member.pos(), getFieldValueFromAvroBean(memberSchema, memberType, memberValue)); +} +fieldValue = newRecord; +break; + case MAP: +Schema valueSchema = fieldSchema.getValueType(); +Schema.Type valuetype = valueSchema.getType(); +HashMapmap = new HashMap<>(); +for (Map.Entry e : ((Map ) fieldValue).entrySet()) { + String mapKey = e.getKey().toString(); + Object mapValue = e.getValue(); + mapValue = getFieldValueFromAvroBean(valueSchema, valuetype, mapValue); + map.put(mapKey, mapValue); +} +fieldValue = map; +break; + case ARRAY: +valueSchema = fieldSchema.getElementType(); +valuetype
[17/37] gora git commit: Add optional codecs to support all the datatypes for native serialization
Add optional codecs to support all the datatypes for native serialization Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/43439820 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/43439820 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/43439820 Branch: refs/heads/master Commit: 434398203b50c8bc4a71b116ebfa99ef6d0de8a2 Parents: cc452f8 Author: madhawaAuthored: Wed Jul 12 20:46:02 2017 +0530 Committer: madhawa Committed: Wed Jul 12 20:46:02 2017 +0530 -- .../nativeSerialization/ComplexTypes.java | 102 ++ .../generated/nativeSerialization/User.java | 3 - .../gora/cassandra/store/CassandraClient.java | 134 ++- .../store/CassandraMappingBuilder.java | 4 +- .../gora/cassandra/store/CassandraStore.java| 2 +- .../gora-cassandra-mapping.xml | 19 ++- .../conf/nativeSerialization/gora.properties| 6 +- ...stCassandraStoreWithNativeSerialization.java | 43 ++ 8 files changed, 297 insertions(+), 16 deletions(-) -- http://git-wip-us.apache.org/repos/asf/gora/blob/43439820/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java -- diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java new file mode 100644 index 000..ac8de28 --- /dev/null +++ b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java @@ -0,0 +1,102 @@ +package org.apache.gora.cassandra.example.generated.nativeSerialization; + +import com.datastax.driver.mapping.annotations.Column; +import com.datastax.driver.mapping.annotations.PartitionKey; +import com.datastax.driver.mapping.annotations.Table; +import org.apache.gora.cassandra.persistent.CassandraNativePersistent; + +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + +/** + * Sample class for test native cassandra persistent. + */ +@Table(keyspace = "nativeTestKeySpace", name = "documents", +readConsistency = "QUORUM", +writeConsistency = "QUORUM", +caseSensitiveKeyspace = false, +caseSensitiveTable = true) +public class ComplexTypes extends CassandraNativePersistent { + + @Column + private List listDataType; + @Column + private Map mapDataType; + @Column + private String[] stringArrayDataType; + @Column + private int[] intArrayDataType; + @Column + private Set setDataType; + @PartitionKey + @Column + private String id; + @Column + private List listUUIDDataType; + + public List getListUUIDDataType() { +return listUUIDDataType; + } + + public void setListUUIDDataType(List listUUIDDataType) { +this.listUUIDDataType = listUUIDDataType; + } + + + public ComplexTypes(String id) { +this.id = id; + } + + public List getListDataType() { +return listDataType; + } + + public void setListDataType(List listDataType) { +this.listDataType = listDataType; + } + + public Map getMapDataType() { +return mapDataType; + } + + public void setMapDataType(Map mapDataType) { +this.mapDataType = mapDataType; + } + + public ComplexTypes() { + } + + public String[] getStringArrayDataType() { +return stringArrayDataType; + } + + public void setStringArrayDataType(String[] stringArrayDataType) { +this.stringArrayDataType = stringArrayDataType; + } + + public int[] getIntArrayDataType() { +return intArrayDataType; + } + + public void setIntArrayDataType(int[] intArrayDataType) { +this.intArrayDataType = intArrayDataType; + } + + public Set getSetDataType() { +return setDataType; + } + + public void setSetDataType(Set setDataType) { +this.setDataType = setDataType; + } + + public String getId() { +return id; + } + + public void setId(String id) { +this.id = id; + } +} http://git-wip-us.apache.org/repos/asf/gora/blob/43439820/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java -- diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java index 105dfb7..2b60429 100644 ---