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: madhawa <madhaw...@gmail.com>
Authored: Fri Jun 23 18:18:46 2017 +0530
Committer: madhawa <madhaw...@gmail.com>
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 <K> key class
  * @param <T> persistent class
  */
-public class CassandraStore<K, T extends PersistentBase> extends 
DataStoreBase<K, T> {
+public class CassandraStore<K, T extends Persistent> implements DataStore<K, 
T> {
 
   private static final String DEFAULT_MAPPING_FILE = 
"gora-cassandra-mapping.xml";
 
   public static final Logger LOG = 
LoggerFactory.getLogger(CassandraStore.class);
 
+  private BeanFactory<K, T> beanFactory;
+
   private Cluster cluster;
 
+  private Class keyClass;
+
+  private Class persistentClass;
+
   private CassandraMapping mapping;
 
   private boolean isUseCassandraMappingManager;
@@ -70,7 +74,7 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
   }
 
   /**
-   * {@inheritDoc}
+   *
    * In initializing the cassandra datastore, read the mapping file, creates 
the basic connection to cassandra cluster,
    * according to the gora properties
    *
@@ -78,15 +82,15 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
    * @param persistentClass persistent class
    * @param properties      properties
    */
-  @Override
   public void initialize(Class<K> keyClass, Class<T> 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<K, T extends PersistentBase> 
extends DataStoreBase<K
                 persistentClass.getCanonicalName())) {
 
           classMatched = true;
-          String tableName = getSchemaName(
-                  classElement.getAttributeValue("table"), persistentClass);
+          String tableName = classElement.getAttributeValue("table");
           map.setCoreName(tableName);
 
           List classAttributes = classElement.getAttributes();
@@ -298,7 +301,7 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
                   keyField.setColumnName(attributeValue);
                   break;
                 case "order":
-                  
keyField.setOrder(ClusterKeyField.Order.valueOf(attributeValue.toUpperCase()));
+                  
keyField.setOrder(ClusterKeyField.Order.valueOf(attributeValue.toUpperCase(Locale.ENGLISH)));
                   break;
                 default:
                   keyField.addProperty(attributeName, attributeValue);
@@ -317,39 +320,39 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
   }
 
   private void populateSettings(Cluster.Builder builder, Properties 
properties) {
-    String serversParam = properties.getProperty(Constants.CASSANDRA_SERVERS);
+    String serversParam = 
properties.getProperty(CassandraStoreParameters.CASSANDRA_SERVERS);
     String[] servers = serversParam.split(",");
     for (String server : servers) {
       builder = builder.addContactPoint(server);
     }
-    String portProp = properties.getProperty(Constants.PORT);
+    String portProp = properties.getProperty(CassandraStoreParameters.PORT);
     if (portProp != null) {
       builder = builder.withPort(Integer.parseInt(portProp));
     }
-    String clusterNameProp = properties.getProperty(Constants.CLUSTER_NAME);
+    String clusterNameProp = 
properties.getProperty(CassandraStoreParameters.CLUSTER_NAME);
     if (clusterNameProp != null) {
       builder = builder.withClusterName(clusterNameProp);
     }
-    String compressionProp = properties.getProperty(Constants.COMPRESSION);
+    String compressionProp = 
properties.getProperty(CassandraStoreParameters.COMPRESSION);
     if (compressionProp != null) {
       builder = 
builder.withCompression(ProtocolOptions.Compression.valueOf(compressionProp));
     }
     builder = this.populateCredentials(properties, builder);
     builder = this.populateLoadBalancingProp(properties, builder);
-    String enableJMXProp = 
properties.getProperty(Constants.ENABLE_JMX_REPORTING);
+    String enableJMXProp = 
properties.getProperty(CassandraStoreParameters.ENABLE_JMX_REPORTING);
     if (enableJMXProp != null) {
       if (!Boolean.parseBoolean(enableJMXProp)) {
         builder = builder.withoutJMXReporting();
       }
     }
-    String enableMetricsProp = 
properties.getProperty(Constants.ENABLE_METRICS);
+    String enableMetricsProp = 
properties.getProperty(CassandraStoreParameters.ENABLE_METRICS);
     if (enableMetricsProp != null) {
       if (!Boolean.parseBoolean(enableMetricsProp)) {
         builder = builder.withoutMetrics();
       }
     }
     builder = this.populatePoolingSettings(properties, builder);
-    String versionProp = properties.getProperty(Constants.PROTOCOL_VERSION);
+    String versionProp = 
properties.getProperty(CassandraStoreParameters.PROTOCOL_VERSION);
     if (versionProp != null) {
       builder = 
builder.withProtocolVersion(ProtocolVersion.fromInt(Integer.parseInt(versionProp)));
     }
@@ -357,7 +360,7 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
     builder = this.populateReconnectPolicy(properties, builder);
     builder = this.populateRetrytPolicy(properties, builder);
     builder = this.populateSocketOptions(properties, builder);
-    String enableSSLProp = properties.getProperty(Constants.ENABLE_SSL);
+    String enableSSLProp = 
properties.getProperty(CassandraStoreParameters.ENABLE_SSL);
     if (enableSSLProp != null) {
       if (Boolean.parseBoolean(enableSSLProp)) {
         builder = builder.withSSL();
@@ -367,7 +370,7 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
 
 
   private Cluster.Builder populateLoadBalancingProp(Properties properties, 
Cluster.Builder builder) {
-    String loadBalancingProp = 
properties.getProperty(Constants.LOAD_BALANCING_POLICY);
+    String loadBalancingProp = 
properties.getProperty(CassandraStoreParameters.LOAD_BALANCING_POLICY);
     if (loadBalancingProp != null) {
       switch (loadBalancingProp) {
         case "LatencyAwareRoundRobinPolicy":
@@ -377,9 +380,9 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
           builder = builder.withLoadBalancingPolicy(new RoundRobinPolicy());
           break;
         case "DCAwareRoundRobinPolicy": {
-          String dataCenter = properties.getProperty(Constants.DATA_CENTER);
+          String dataCenter = 
properties.getProperty(CassandraStoreParameters.DATA_CENTER);
           boolean allowRemoteDCsForLocalConsistencyLevel = 
Boolean.parseBoolean(
-                  
properties.getProperty(Constants.ALLOW_REMOTE_DCS_FOR_LOCAL_CONSISTENCY_LEVEL));
+                  
properties.getProperty(CassandraStoreParameters.ALLOW_REMOTE_DCS_FOR_LOCAL_CONSISTENCY_LEVEL));
           if (dataCenter != null && !dataCenter.isEmpty()) {
             if (allowRemoteDCsForLocalConsistencyLevel) {
               builder = builder.withLoadBalancingPolicy(
@@ -403,9 +406,9 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
           builder = builder.withLoadBalancingPolicy(new TokenAwarePolicy(new 
RoundRobinPolicy()));
           break;
         case "TokenAwareDCAwareRoundRobinPolicy": {
-          String dataCenter = properties.getProperty(Constants.DATA_CENTER);
+          String dataCenter = 
properties.getProperty(CassandraStoreParameters.DATA_CENTER);
           boolean allowRemoteDCsForLocalConsistencyLevel = 
Boolean.parseBoolean(
-                  
properties.getProperty(Constants.ALLOW_REMOTE_DCS_FOR_LOCAL_CONSISTENCY_LEVEL));
+                  
properties.getProperty(CassandraStoreParameters.ALLOW_REMOTE_DCS_FOR_LOCAL_CONSISTENCY_LEVEL));
           if (dataCenter != null && !dataCenter.isEmpty()) {
             if (allowRemoteDCsForLocalConsistencyLevel) {
               builder = builder.withLoadBalancingPolicy(new TokenAwarePolicy(
@@ -435,8 +438,8 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
   }
 
   private Cluster.Builder populateCredentials(Properties properties, 
Cluster.Builder builder) {
-    String usernameProp = properties.getProperty(Constants.USERNAME);
-    String passwordProp = properties.getProperty(Constants.PASSWORD);
+    String usernameProp = 
properties.getProperty(CassandraStoreParameters.USERNAME);
+    String passwordProp = 
properties.getProperty(CassandraStoreParameters.PASSWORD);
     if (usernameProp != null) {
       builder = builder.withCredentials(usernameProp, passwordProp);
     }
@@ -444,14 +447,14 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
   }
 
   private Cluster.Builder populatePoolingSettings(Properties properties, 
Cluster.Builder builder) {
-    String localCoreConnectionsPerHost = 
properties.getProperty(Constants.LOCAL_CORE_CONNECTIONS_PER_HOST);
-    String remoteCoreConnectionsPerHost = 
properties.getProperty(Constants.REMOTE_CORE_CONNECTIONS_PER_HOST);
-    String localMaxConnectionsPerHost = 
properties.getProperty(Constants.LOCAL_MAX_CONNECTIONS_PER_HOST);
-    String remoteMaxConnectionsPerHost = 
properties.getProperty(Constants.REMOTE_MAX_CONNECTIONS_PER_HOST);
-    String localNewConnectionThreshold = 
properties.getProperty(Constants.LOCAL_NEW_CONNECTION_THRESHOLD);
-    String remoteNewConnectionThreshold = 
properties.getProperty(Constants.REMOTE_NEW_CONNECTION_THRESHOLD);
-    String localMaxRequestsPerConnection = 
properties.getProperty(Constants.LOCAL_MAX_REQUESTS_PER_CONNECTION);
-    String remoteMaxRequestsPerConnection = 
properties.getProperty(Constants.REMOTE_MAX_REQUESTS_PER_CONNECTION);
+    String localCoreConnectionsPerHost = 
properties.getProperty(CassandraStoreParameters.LOCAL_CORE_CONNECTIONS_PER_HOST);
+    String remoteCoreConnectionsPerHost = 
properties.getProperty(CassandraStoreParameters.REMOTE_CORE_CONNECTIONS_PER_HOST);
+    String localMaxConnectionsPerHost = 
properties.getProperty(CassandraStoreParameters.LOCAL_MAX_CONNECTIONS_PER_HOST);
+    String remoteMaxConnectionsPerHost = 
properties.getProperty(CassandraStoreParameters.REMOTE_MAX_CONNECTIONS_PER_HOST);
+    String localNewConnectionThreshold = 
properties.getProperty(CassandraStoreParameters.LOCAL_NEW_CONNECTION_THRESHOLD);
+    String remoteNewConnectionThreshold = 
properties.getProperty(CassandraStoreParameters.REMOTE_NEW_CONNECTION_THRESHOLD);
+    String localMaxRequestsPerConnection = 
properties.getProperty(CassandraStoreParameters.LOCAL_MAX_REQUESTS_PER_CONNECTION);
+    String remoteMaxRequestsPerConnection = 
properties.getProperty(CassandraStoreParameters.REMOTE_MAX_REQUESTS_PER_CONNECTION);
     PoolingOptions options = new PoolingOptions();
     if (localCoreConnectionsPerHost != null) {
       options.setCoreConnectionsPerHost(HostDistance.LOCAL, 
Integer.parseInt(localCoreConnectionsPerHost));
@@ -482,9 +485,9 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
   }
 
   private Cluster.Builder populateQueryOptions(Properties properties, 
Cluster.Builder builder) {
-    String consistencyLevelProp = 
properties.getProperty(Constants.CONSISTENCY_LEVEL);
-    String serialConsistencyLevelProp = 
properties.getProperty(Constants.SERIAL_CONSISTENCY_LEVEL);
-    String fetchSize = properties.getProperty(Constants.FETCH_SIZE);
+    String consistencyLevelProp = 
properties.getProperty(CassandraStoreParameters.CONSISTENCY_LEVEL);
+    String serialConsistencyLevelProp = 
properties.getProperty(CassandraStoreParameters.SERIAL_CONSISTENCY_LEVEL);
+    String fetchSize = 
properties.getProperty(CassandraStoreParameters.FETCH_SIZE);
     QueryOptions options = new QueryOptions();
     if (consistencyLevelProp != null) {
       
options.setConsistencyLevel(ConsistencyLevel.valueOf(consistencyLevelProp));
@@ -499,19 +502,18 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
   }
 
   private Cluster.Builder populateReconnectPolicy(Properties properties, 
Cluster.Builder builder) {
-    String reconnectionPolicy = 
properties.getProperty(Constants.RECONNECTION_POLICY);
+    String reconnectionPolicy = 
properties.getProperty(CassandraStoreParameters.RECONNECTION_POLICY);
     if (reconnectionPolicy != null) {
       switch (reconnectionPolicy) {
         case "ConstantReconnectionPolicy": {
-          String constantReconnectionPolicyDelay = 
properties.getProperty(Constants.CONSTANT_RECONNECTION_POLICY_DELAY);
-
+          String constantReconnectionPolicyDelay = 
properties.getProperty(CassandraStoreParameters.CONSTANT_RECONNECTION_POLICY_DELAY);
           ConstantReconnectionPolicy policy = new 
ConstantReconnectionPolicy(Long.parseLong(constantReconnectionPolicyDelay));
           builder = builder.withReconnectionPolicy(policy);
           break;
         }
         case "ExponentialReconnectionPolicy": {
-          String exponentialReconnectionPolicyBaseDelay = 
properties.getProperty(Constants.EXPONENTIAL_RECONNECTION_POLICY_BASE_DELAY);
-          String exponentialReconnectionPolicyMaxDelay = 
properties.getProperty(Constants.EXPONENTIAL_RECONNECTION_POLICY_MAX_DELAY);
+          String exponentialReconnectionPolicyBaseDelay = 
properties.getProperty(CassandraStoreParameters.EXPONENTIAL_RECONNECTION_POLICY_BASE_DELAY);
+          String exponentialReconnectionPolicyMaxDelay = 
properties.getProperty(CassandraStoreParameters.EXPONENTIAL_RECONNECTION_POLICY_MAX_DELAY);
 
           ExponentialReconnectionPolicy policy = new 
ExponentialReconnectionPolicy(Long.parseLong(exponentialReconnectionPolicyBaseDelay),
                   Long.parseLong(exponentialReconnectionPolicyMaxDelay));
@@ -526,7 +528,7 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
   }
 
   private Cluster.Builder populateRetrytPolicy(Properties properties, 
Cluster.Builder builder) {
-    String retryPolicy = properties.getProperty(Constants.RETRY_POLICY);
+    String retryPolicy = 
properties.getProperty(CassandraStoreParameters.RETRY_POLICY);
     if (retryPolicy != null) {
       switch (retryPolicy) {
         case "DefaultRetryPolicy":
@@ -556,14 +558,14 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
   }
 
   private Cluster.Builder populateSocketOptions(Properties properties, 
Cluster.Builder builder) {
-    String connectionTimeoutMillisProp = 
properties.getProperty(Constants.CONNECTION_TIMEOUT_MILLIS);
-    String keepAliveProp = properties.getProperty(Constants.KEEP_ALIVE);
-    String readTimeoutMillisProp = 
properties.getProperty(Constants.READ_TIMEOUT_MILLIS);
-    String receiveBufferSizeProp = 
properties.getProperty(Constants.RECEIVER_BUFFER_SIZE);
-    String reuseAddress = properties.getProperty(Constants.REUSE_ADDRESS);
-    String sendBufferSize = properties.getProperty(Constants.SEND_BUFFER_SIZE);
-    String soLinger = properties.getProperty(Constants.SO_LINGER);
-    String tcpNoDelay = properties.getProperty(Constants.TCP_NODELAY);
+    String connectionTimeoutMillisProp = 
properties.getProperty(CassandraStoreParameters.CONNECTION_TIMEOUT_MILLIS);
+    String keepAliveProp = 
properties.getProperty(CassandraStoreParameters.KEEP_ALIVE);
+    String readTimeoutMillisProp = 
properties.getProperty(CassandraStoreParameters.READ_TIMEOUT_MILLIS);
+    String receiveBufferSizeProp = 
properties.getProperty(CassandraStoreParameters.RECEIVER_BUFFER_SIZE);
+    String reuseAddress = 
properties.getProperty(CassandraStoreParameters.REUSE_ADDRESS);
+    String sendBufferSize = 
properties.getProperty(CassandraStoreParameters.SEND_BUFFER_SIZE);
+    String soLinger = 
properties.getProperty(CassandraStoreParameters.SO_LINGER);
+    String tcpNoDelay = 
properties.getProperty(CassandraStoreParameters.TCP_NODELAY);
     SocketOptions options = new SocketOptions();
     if (connectionTimeoutMillisProp != null) {
       
options.setConnectTimeoutMillis(Integer.parseInt(connectionTimeoutMillisProp));
@@ -594,12 +596,12 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
 
   @Override
   public void setPersistentClass(Class<T> persistentClass) {
-    super.setPersistentClass(persistentClass);
+    this.persistentClass = persistentClass;
   }
 
   @Override
   public Class<T> getPersistentClass() {
-    return super.getPersistentClass();
+    return this.persistentClass;
   }
 
   @Override
@@ -619,32 +621,37 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
 
   @Override
   public Class<K> getKeyClass() {
-    return super.getKeyClass();
+    return this.keyClass;
   }
 
   @Override
   public void setKeyClass(Class<K> keyClass) {
-    super.setKeyClass(keyClass);
+    this.keyClass = keyClass;
   }
 
   @Override
   public K newKey() {
-    return super.newKey();
+    try {
+      return beanFactory.newKey();
+    } catch (Exception ex) {
+      LOG.error(ex.getMessage(), ex);
+      return null;
+    }
   }
 
   @Override
   public T newPersistent() {
-    return super.newPersistent();
+    return this.beanFactory.newPersistent();
   }
 
   @Override
   public void setBeanFactory(BeanFactory<K, T> beanFactory) {
-    super.setBeanFactory(beanFactory);
+    this.beanFactory = beanFactory;
   }
 
   @Override
   public BeanFactory<K, T> getBeanFactory() {
-    return super.getBeanFactory();
+    return this.beanFactory;
   }
 
   @Override
@@ -657,7 +664,7 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
     if (isUseCassandraMappingManager) {
       return mapper.get(key);
     } else {
-      return super.get(key);
+      return null;
     }
   }
 
@@ -671,7 +678,7 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
     if (isUseCassandraMappingManager) {
       mapper.save(obj);
     } else {
-      super.get(key);
+
     }
   }
 
@@ -711,48 +718,12 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
   }
 
   @Override
-  protected String[] getFieldsToQuery(String[] fields) {
-    return super.getFieldsToQuery(fields);
-  }
-
-  @Override
-  protected String[] getFields() {
-    return super.getFields();
-  }
-
-  @Override
-  public Configuration getConf() {
-    return super.getConf();
-  }
-
-  @Override
-  public void setConf(Configuration conf) {
-    super.setConf(conf);
-  }
-
-  @Override
-  protected Configuration getOrCreateConf() {
-    return super.getOrCreateConf();
-  }
-
-  @Override
-  public void readFields(DataInput in) {
-    super.readFields(in);
-  }
-
-  @Override
-  public void write(DataOutput out) {
-    super.write(out);
-  }
-
-  @Override
   public boolean equals(Object obj) {
     return super.equals(obj);
   }
 
   @Override
   public void truncateSchema() {
-    super.truncateSchema();
   }
 
   @Override
@@ -760,8 +731,4 @@ public class CassandraStore<K, T extends PersistentBase> 
extends DataStoreBase<K
     return false;
   }
 
-  @Override
-  protected String getSchemaName(String mappingSchemaName, Class<?> 
persistentClass) {
-    return super.getSchemaName(mappingSchemaName, persistentClass);
-  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/gora/blob/516f366c/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStoreParameters.java
----------------------------------------------------------------------
diff --git 
a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStoreParameters.java
 
b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStoreParameters.java
new file mode 100644
index 0000000..bd60a15
--- /dev/null
+++ 
b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/CassandraStoreParameters.java
@@ -0,0 +1,222 @@
+/*
+ *  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;
+
+/**
+ * Configuration Properties.
+ */
+public class CassandraStoreParameters {
+
+  /**
+   * Property pointing to cassandra db contact points.
+   * string (multiple values with comma separated)
+   */
+  public static final String CASSANDRA_SERVERS = 
"gora.cassandra.store.cassandraServers";
+  /**
+   *Property pointing to the Cassandra keyspace.
+   * string
+   */
+  public static final String KEYSPACE = "gora.cassandra.store.keyspace";
+  /**
+   *  Property pointing to the port to use to connect to the Cassandra hosts.
+   *  integer
+   */
+  public static final String PORT = "gora.cassandra.store.port";
+
+  /**
+   * Property pointing to the Cassandra cluster name.
+   * string
+   */
+  public static final String CLUSTER_NAME = "gora.cassandra.store.clusterName";
+  /**
+   * Property pointing to set compression to use for the transport.
+   * "LZ4", "SNAPPY", "NONE"
+   */
+  public static final String COMPRESSION = "gora.cassandra.store.compression";
+  /**
+   * Property pointing to the username to connect to the server.
+   * string
+   */
+  public static final String USERNAME = "gora.cassandra.store.username";
+  /**
+   * Property pointing to the password to connect to the server.
+   * string
+   */
+  public static final String PASSWORD = "gora.cassandra.store.password";
+  /**
+   * Property pointing to set load balancing policy.
+   * "RoundRobinPolicy", "LatencyAwareRoundRobinPolicy", 
"TokenAwareRoundRobinPolicy"
+   */
+  public static final String LOAD_BALANCING_POLICY = 
"gora.cassandra.store.loadBalancingPolicy";
+  /**
+   * Property pointing to enable/disable JMX reporting.
+   * boolean
+   */
+  public static final String ENABLE_JMX_REPORTING = 
"gora.cassandra.store.enableJMXReporting";
+  /**
+   * Property pointing to enable/disable metrics.
+   * boolean
+   */
+  public static final String ENABLE_METRICS = 
"gora.cassandra.store.enableMetrics";
+  /**
+   * Property pointing to set local host core connections size.
+   * integer
+   */
+  public static final String LOCAL_CORE_CONNECTIONS_PER_HOST = 
"gora.cassandra.store.localCoreConnectionsPerHost";
+  /**
+   * Property pointing to set remote host core connections size.
+   * integer
+   */
+  public static final String REMOTE_CORE_CONNECTIONS_PER_HOST = 
"gora.cassandra.store.remoteCoreConnectionsPerHost";
+  /**
+   * Property pointing to set local host max connections size.
+   * integer
+   */
+  public static final String LOCAL_MAX_CONNECTIONS_PER_HOST = 
"gora.cassandra.store.localMaxConnectionsPerHost";
+  /**
+   * Property pointing to set remote host max connections size.
+   * integer
+   */
+  public static final String REMOTE_MAX_CONNECTIONS_PER_HOST = 
"gora.cassandra.store.remoteMaxConnectionsPerHost";
+  /**
+   * Property pointing to set local host new connection threshold.
+   * integer
+   */
+  public static final String LOCAL_NEW_CONNECTION_THRESHOLD= 
"gora.cassandra.store.localNewConnectionThreshold";
+  /**
+   * Property pointing to set remote host new connection threshold.
+   * integer
+   */
+  public static final String REMOTE_NEW_CONNECTION_THRESHOLD = 
"gora.cassandra.store.remoteNewConnectionThreshold";
+  /**
+   * Property pointing to set local host max requests per connection.
+   * integer
+   */
+  public static final String LOCAL_MAX_REQUESTS_PER_CONNECTION = 
"gora.cassandra.store.localMaxRequestsPerConnection";
+  /**
+   * Property pointing to set remote host max requests per connection.
+   * integer
+   */
+  public static final String REMOTE_MAX_REQUESTS_PER_CONNECTION = 
"gora.cassandra.store.remoteMaxRequestsPerConnection";
+  /**
+   * Property pointing to set CQL Protocol version.
+   * integer
+   */
+  public static final String PROTOCOL_VERSION = 
"gora.cassandra.store.protocolVersion";
+  /**
+   * Property pointing to set consistency level in Cassandra Query Options.
+   * "ALL", "ANY", "EACH_QUORUM", "LOCAL_ONE", "LOCAL_QUORUM", "LOCAL_SERIAL", 
"ONE", "QUORUM", "SERIAL", "THREE", "TWO"
+   */
+  public static final String CONSISTENCY_LEVEL = 
"gora.cassandra.store.consistencyLevel";
+  /**
+   * Property pointing to set fetchsize in Cassandra Query Options.
+   * integer
+   */
+  public static final String FETCH_SIZE = "fetchSize";
+  /**
+   * Property pointing to set serial consistency level in Cassandra Query 
Options.
+   * "ALL", "ANY", "EACH_QUORUM", "LOCAL_ONE", "LOCAL_QUORUM", "LOCAL_SERIAL", 
"ONE", "QUORUM", "SERIAL", "THREE", "TWO"
+   */
+  public static final String SERIAL_CONSISTENCY_LEVEL = 
"gora.cassandra.store.serialConsistencyLevel";
+  /**
+   * Property pointing to set reconnection policy
+   * "ConstantReconnectionPolicy", "ExponentialReconnectionPolicy",
+   */
+  public static final String RECONNECTION_POLICY = 
"gora.cassandra.store.reconnectionPolicy";
+  /**
+   * Property pointing to set the delay in constant reconnection policy.
+   * long
+   */
+  public static final String CONSTANT_RECONNECTION_POLICY_DELAY = 
"gora.cassandra.store.constantReconnectionPolicyDelay";
+  /**
+   * Property pointing to set the delay in exponential reconnection policy.
+   * long
+   */
+  public static final String EXPONENTIAL_RECONNECTION_POLICY_BASE_DELAY = 
"gora.cassandra.store.exponentialReconnectionPolicyBaseDelay";
+  /**
+   * Property pointing to set the max delay in exponential reconnection policy.
+   * long
+   */
+  public static final String EXPONENTIAL_RECONNECTION_POLICY_MAX_DELAY = 
"gora.cassandra.store.exponentialReconnectionPolicyMaxDelay";
+  /**
+   * Property pointing to set the retry policy.
+   * "DefaultRetryPolicy", "DowngradingConsistencyRetryPolicy", 
"FallthroughRetryPolicy",
+   * "LoggingDefaultRetryPolicy", "LoggingDowngradingConsistencyRetryPolicy", 
"LoggingFallthroughRetryPolicy"
+   */
+  public static final String RETRY_POLICY = "gora.cassandra.store.retryPolicy";
+  /**
+   * Property pointing to set the connection time out in Cassandra Socket 
Options.
+   * integer
+   */
+  public static final String CONNECTION_TIMEOUT_MILLIS = 
"gora.cassandra.store.connectionTimeoutMillis";
+  /**
+   * Property pointing to set the keep alive in Cassandra Socket Options.
+   * boolean
+   */
+  public static final String KEEP_ALIVE = "gora.cassandra.store.keepAlive";
+  /**
+   * Property pointing to set the read time out in Cassandra Socket Options.
+   * integer
+   */
+  public static final String READ_TIMEOUT_MILLIS = 
"gora.cassandra.store.readTimeoutMillis";
+  /**
+   * Property pointing to set the receiver buffer size in Cassandra Socket 
Options.
+   * integer
+   */
+  public static final String RECEIVER_BUFFER_SIZE = 
"gora.cassandra.store.receiverBufferSize";
+  /**
+   * Property pointing to set the reuse address in Cassandra Socket Options.
+   * boolean
+   */
+  public static final String REUSE_ADDRESS = 
"gora.cassandra.store.reuseAddress";
+  /**
+   * Property pointing to set the sender buffer size in Cassandra Socket 
Options.
+   * integer
+   */
+  public static final String SEND_BUFFER_SIZE = 
"gora.cassandra.store.sendBufferSize";
+  /**
+   * Property pointing to set the soLinger in Cassandra Socket Options.
+   * integer
+   */
+  public static final String SO_LINGER = "gora.cassandra.store.soLinger";
+  /**
+   * Property pointing to set the no tcp delay in Cassandra Socket Options.
+   * boolean
+   */
+  public static final String TCP_NODELAY = "gora.cassandra.store.tcpNoDelay";
+  /**
+   * Property pointing to enable SSL.
+   * boolean
+   */
+  public static final String ENABLE_SSL = "gora.cassandra.store.enableSSL";
+  /**
+   * Property pointing to set aware local data center.
+   * string
+   */
+  public static final String DATA_CENTER = "gora.cassandra.store.dataCenter";
+  /**
+   * Property pointing to enable/disable remote data centers for local 
consistency level.
+   * string
+   */
+  public static final String ALLOW_REMOTE_DCS_FOR_LOCAL_CONSISTENCY_LEVEL = 
"gora.cassandra.store.allowRemoteDCsForLocalConsistencyLevel";
+  /**
+   * Property pointing to use Native Cassandra Native Serialization.
+   * boolean
+   */
+  public static final String USE_CASSANDRA_NATIVE_SERIALIZATION = 
"gora.cassandra.store.useCassandraNativeSerialization";
+}

http://git-wip-us.apache.org/repos/asf/gora/blob/516f366c/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/Constants.java
----------------------------------------------------------------------
diff --git 
a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/Constants.java
 
b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/Constants.java
deleted file mode 100644
index c79301a..0000000
--- 
a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/store/Constants.java
+++ /dev/null
@@ -1,101 +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;
-
-public class Constants {
-
-  /* string (multiple values with comma separated) */
-  public static final String CASSANDRA_SERVERS = 
"gora.cassandra.store.cassandraServers";
-  /* string */
-  public static final String KEYSPACE = "gora.cassandra.store.keyspace";
-  /* integer */
-  public static final String PORT = "gora.cassandra.store.port";
-  /* string */
-  public static final String CLUSTER_NAME = "gora.cassandra.store.clusterName";
-  /* "LZ4", "SNAPPY", "NONE" */
-  public static final String COMPRESSION = "gora.cassandra.store.compression";
-  /* string */
-  public static final String USERNAME = "gora.cassandra.store.username";
-  /* string */
-  public static final String PASSWORD = "gora.cassandra.store.password";
-  /* "RoundRobinPolicy", "LatencyAwareRoundRobinPolicy", 
"TokenAwareRoundRobinPolicy" */
-  public static final String LOAD_BALANCING_POLICY = 
"gora.cassandra.store.loadBalancingPolicy";
-  /* boolean */
-  public static final String ENABLE_JMX_REPORTING = 
"gora.cassandra.store.enableJMXReporting";
-  /* boolean */
-  public static final String ENABLE_METRICS = 
"gora.cassandra.store.enableMetrics";
-  /* inter */
-  public static final String LOCAL_CORE_CONNECTIONS_PER_HOST = 
"gora.cassandra.store.localCoreConnectionsPerHost";
-  /* integer */
-  public static final String REMOTE_CORE_CONNECTIONS_PER_HOST = 
"gora.cassandra.store.remoteCoreConnectionsPerHost";
-  /* integer */
-  public static final String LOCAL_MAX_CONNECTIONS_PER_HOST = 
"gora.cassandra.store.localMaxConnectionsPerHost";
-  /* integer */
-  public static final String REMOTE_MAX_CONNECTIONS_PER_HOST = 
"gora.cassandra.store.remoteMaxConnectionsPerHost";
-  /* integer */
-  public static final String LOCAL_NEW_CONNECTION_THRESHOLD= 
"gora.cassandra.store.localNewConnectionThreshold";
-  /* integer */
-  public static final String REMOTE_NEW_CONNECTION_THRESHOLD = 
"gora.cassandra.store.remoteNewConnectionThreshold";
-  /* integer */
-  public static final String LOCAL_MAX_REQUESTS_PER_CONNECTION = 
"gora.cassandra.store.localMaxRequestsPerConnection";
-  /* integer */
-  public static final String REMOTE_MAX_REQUESTS_PER_CONNECTION = 
"gora.cassandra.store.remoteMaxRequestsPerConnection";
-  /* integer */
-  public static final String PROTOCOL_VERSION = 
"gora.cassandra.store.protocolVersion";
-  /* "ALL", "ANY", "EACH_QUORUM", "LOCAL_ONE", "LOCAL_QUORUM", "LOCAL_SERIAL", 
"ONE", "QUORUM", "SERIAL", "THREE", "TWO" */
-  public static final String CONSISTENCY_LEVEL = 
"gora.cassandra.store.consistencyLevel";
-  /* integer */
-  public static final String FETCH_SIZE = "fetchSize";
-  /* "ALL", "ANY", "EACH_QUORUM", "LOCAL_ONE", "LOCAL_QUORUM", "LOCAL_SERIAL", 
"ONE", "QUORUM", "SERIAL", "THREE", "TWO" */
-  public static final String SERIAL_CONSISTENCY_LEVEL = 
"gora.cassandra.store.serialConsistencyLevel";
-  /* "ConstantReconnectionPolicy", "ExponentialReconnectionPolicy",  */
-  public static final String RECONNECTION_POLICY = 
"gora.cassandra.store.reconnectionPolicy";
-  /* long */
-  public static final String CONSTANT_RECONNECTION_POLICY_DELAY = 
"gora.cassandra.store.constantReconnectionPolicyDelay";
-  /* long */
-  public static final String EXPONENTIAL_RECONNECTION_POLICY_BASE_DELAY = 
"gora.cassandra.store.exponentialReconnectionPolicyBaseDelay";
-  /* long */
-  public static final String EXPONENTIAL_RECONNECTION_POLICY_MAX_DELAY = 
"gora.cassandra.store.exponentialReconnectionPolicyMaxDelay";
-  /* "DefaultRetryPolicy", "DowngradingConsistencyRetryPolicy", 
"FallthroughRetryPolicy",
-   * "LoggingDefaultRetryPolicy", "LoggingDowngradingConsistencyRetryPolicy", 
"LoggingFallthroughRetryPolicy" */
-  public static final String RETRY_POLICY = "gora.cassandra.store.retryPolicy";
-  /* integer */
-  public static final String CONNECTION_TIMEOUT_MILLIS = 
"gora.cassandra.store.connectionTimeoutMillis";
-  /* boolean */
-  public static final String KEEP_ALIVE = "gora.cassandra.store.keepAlive";
-  /* integer */
-  public static final String READ_TIMEOUT_MILLIS = 
"gora.cassandra.store.readTimeoutMillis";
-  /* integer */
-  public static final String RECEIVER_BUFFER_SIZE = 
"gora.cassandra.store.receiverBufferSize";
-  /* boolean */
-  public static final String REUSE_ADDRESS = 
"gora.cassandra.store.reuseAddress";
-  /* integer */
-  public static final String SEND_BUFFER_SIZE = 
"gora.cassandra.store.sendBufferSize";
-  /* integer */
-  public static final String SO_LINGER = "gora.cassandra.store.soLinger";
-  /* boolean */
-  public static final String TCP_NODELAY = "gora.cassandra.store.tcpNoDelay";
-  /* boolean */
-  public static final String ENABLE_SSL = "gora.cassandra.store.enableSSL";
-  /* string */
-  public static final String DATA_CENTER = "gora.cassandra.store.dataCenter";
-  /* boolean */
-  public static final String ALLOW_REMOTE_DCS_FOR_LOCAL_CONSISTENCY_LEVEL = 
"gora.cassandra.store.allowRemoteDCsForLocalConsistencyLevel";
-
-  public static final String USE_CASSANDRA_MAPPING_MANAGER = 
"gora.cassandra.store.useCassandraMappingManager";
-}

http://git-wip-us.apache.org/repos/asf/gora/blob/516f366c/gora-cassandra-cql/src/test/conf/mappingManager/gora-cassandra-mapping.xml
----------------------------------------------------------------------
diff --git 
a/gora-cassandra-cql/src/test/conf/mappingManager/gora-cassandra-mapping.xml 
b/gora-cassandra-cql/src/test/conf/mappingManager/gora-cassandra-mapping.xml
new file mode 100644
index 0000000..5f59ba8
--- /dev/null
+++ b/gora-cassandra-cql/src/test/conf/mappingManager/gora-cassandra-mapping.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  ~  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.
+  -->
+
+<!--
+   The value of 'host' attribute of keyspace tag should match exactly what is 
in
+   gora.properties file. Essentially this means that if you are using port 
number, you should
+   use it every where regardless of whether it is the default port or not.
+   At runtime Gora will otherwise try to connect to localhost
+   https://issues.apache.org/jira/browse/GORA-269
+
+   The values of 'replication_factor' and 'placement_strategy' attribute of 
keyspace tag
+   only apply if gora create the kyespace. they have no effect if this is 
being used against 
+   an existing keyspace. the default value for 'replication_factor' is '1'
+   
+   The value of 'placement_strategy' should be a fully qualifed class name 
that is known to
+   the cassansra cluster, not the application or gora. As of this writing, the 
classes that ship
+   with cassandra are:
+   'org.apache.cassandra.locator.SimpleStrategy'
+   'org.apache.cassandra.locator.NetworkTopologyStrategy'
+   gora cassandra would use SimpleStrategy by default if no value for this 
attribute is specified
+   
+   The default value of 'gc_grace_seconds' is '0' which is ONLY VIABLE FOR 
SINGLE NODE
+   CLUSTER. you should update this value according to your cluster 
configuration. 
+   https://wiki.apache.org/cassandra/StorageConfiguration
+
+   The value of 'ttl' (time to live) attribute of field tag should most likely 
always
+   be zero unless you want Cassandra to create Tombstones and delete portions 
of your
+   data once this period expires. Any positive value is read and bound to the 
number
+   of seconds after which the value for that field will disappear. The default 
value of ttl
+   is '0'
+
+   More information on gora-cassandra configuration and mapping's can be found
+   at http://gora.apache.org/current/gora-cassandra.html
+-->
+
+
+<gora-otd>
+    <keyspace name="EmployeeSpace" durableWrite="false">
+        <placementStrategy name="SimpleStrategy" replication_factor="1"/>
+    </keyspace>
+
+    <keyspace name="WebPage" durableWrite="true">
+        <placementStrategy name="NetworkTopologyStrategy">
+            <datacenter name="dc1" replication_factor="1"/>
+            <datacenter name="dc2" replication_factor="1"/>
+        </placementStrategy>
+    </keyspace>
+
+    <class name="org.apache.gora.examples.generated.Employee1" 
keyClass="java.lang.String" keyspace="EmployeeSpace"
+           table="Employee" compactStorage="true" id="31323131">
+        <field name="lname" column="name" type="text" ttl="10" static="true"/>
+        <field name="fname" column="name" type="text" ttl="10"/>
+        <field name="srilankan" column="srilankan" type="boolean" ttl="10"/>
+        <field name="age" column="srilankan" type="int" ttl="10"/>
+        <field name="id" column="srilankan" type="uuid" ttl="10"/>
+    </class>
+
+    <class name="org.apache.gora.examples.generated.Employee" 
keyClass="org.apache.gora.examples.generated.WebPage" keyspace="WebPage"
+           compactStorage="true" id="31323131">
+        <field name="lname" column="name" type="text" ttl="10" 
primarykey="true"/>
+        <field name="fname" column="name" type="text" ttl="10"/>
+        <field name="srilankan" column="srilankan" type="boolean" ttl="10"/>
+        <field name="age" column="srilankan" type="int" ttl="10"/>
+        <field name="id" column="srilankan" type="uuid" ttl="10"/>
+    </class>
+
+    <cassandraKey name="org.apache.gora.examples.generated.WebPage">
+        <partitionKey>
+            <compositeField>
+                <field name="id" type=""/>
+                <field name="name" type=""/>
+            </compositeField>
+            <field name="sensorId" type="UTF8Type"/>
+            <field name="year" type="IntegerType"/>
+        </partitionKey>
+        <clusterKey>
+            <field name="date" type="LongType" order="desc"/>
+        </clusterKey>
+    </cassandraKey>
+
+</gora-otd>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/gora/blob/516f366c/gora-cassandra-cql/src/test/conf/mappingManager/gora.properties
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/test/conf/mappingManager/gora.properties 
b/gora-cassandra-cql/src/test/conf/mappingManager/gora.properties
new file mode 100644
index 0000000..012ac08
--- /dev/null
+++ b/gora-cassandra-cql/src/test/conf/mappingManager/gora.properties
@@ -0,0 +1,30 @@
+#
+#  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.
+#
+
+gora.datastore.default=org.apache.gora.cassandra.CassandraStore
+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/516f366c/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 ccb9b97..979156b 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
@@ -22,18 +22,22 @@
 
 package org.apache.gora.cassandra;
 
-import org.apache.gora.GoraTestDriver;
-
-import java.io.File;
-
 import org.apache.cassandra.io.util.FileUtils;
 import org.apache.cassandra.service.CassandraDaemon;
-
-// Logging imports
+import org.apache.gora.GoraTestDriver;
 import org.apache.gora.cassandra.store.CassandraStore;
+import org.apache.gora.persistency.Persistent;
+import org.apache.gora.store.DataStore;
+import org.apache.gora.store.DataStoreFactory;
+import org.apache.gora.util.GoraException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.File;
+import java.util.Properties;
+
+// Logging imports
+
 /**
  * Helper class for third party tests using gora-cassandra backend. 
  * @see GoraTestDriver for test specifics.
@@ -52,6 +56,17 @@ public class GoraCassandraTestDriver extends GoraTestDriver {
 
   private Thread cassandraThread;
 
+  private Properties properties;
+
+  public void setParameters(Properties parameters) {
+    this.properties = parameters;
+  }
+
+  @Override
+  public <K, T extends Persistent> DataStore<K, T> createDataStore(Class<K> 
keyClass, Class<T> persistentClass) throws GoraException {
+    return DataStoreFactory.createDataStore(CassandraStore.class, keyClass, 
persistentClass , conf, properties, null);
+  }
+
   /**
    * @return temporary base directory of running cassandra instance
    */

http://git-wip-us.apache.org/repos/asf/gora/blob/516f366c/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 44c54b9..0000000
--- 
a/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestCassandraStore.java
+++ /dev/null
@@ -1,89 +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.
- */
-
-/**
- * Testing class for all standard gora-cassandra functionality.
- * We extend DataStoreTestBase enabling us to run the entire base test
- * suite for Gora. 
- */
-package org.apache.gora.cassandra.store;
-
-import org.apache.gora.cassandra.GoraCassandraTestDriver;
-import org.apache.gora.store.DataStoreTestBase;
-import org.apache.hadoop.conf.Configuration;
-import org.junit.Before;
-import org.junit.Ignore;
-
-import java.io.IOException;
-
-/**
- * Test for CassandraStore.
- */
-public class TestCassandraStore extends DataStoreTestBase{
-
-  private Configuration conf;
-
-
-  static {
-    setTestDriver(new GoraCassandraTestDriver());
-  }
-
-  @Before
-  public void setUp() throws Exception {
-    super.setUp();
-  }
-
-  public GoraCassandraTestDriver getTestDriver() {
-    return (GoraCassandraTestDriver) testDriver;
-  }
-
-
-  @Ignore("GORA-299 o.a.g.cassandra.CassandraStore#newQuery() should not use 
query.setFields(getFieldsToQuery(null));")
-  @Override
-  public void testQuery() throws IOException {}
-  @Ignore("GORA-299 o.a.g.cassandra.CassandraStore#newQuery() should not use 
query.setFields(getFieldsToQuery(null));")
-  @Override
-  public void testQueryStartKey() throws IOException {}
-  @Ignore("GORA-299 o.a.g.cassandra.CassandraStore#newQuery() should not use 
query.setFields(getFieldsToQuery(null));")
-  @Override
-  public void testQueryEndKey() throws IOException {}
-  @Ignore("GORA-299 o.a.g.cassandra.CassandraStore#newQuery() should not use 
query.setFields(getFieldsToQuery(null));")
-  @Override
-  public void testQueryKeyRange() throws IOException {}
-  @Ignore("GORA-299 o.a.g.cassandra.CassandraStore#newQuery() should not use 
query.setFields(getFieldsToQuery(null));")
-  @Override
-  public void testQueryWebPageSingleKey() throws IOException {}
-  @Ignore("GORA-299 o.a.g.cassandra.CassandraStore#newQuery() should not use 
query.setFields(getFieldsToQuery(null));")
-  @Override
-  public void testQueryWebPageSingleKeyDefaultFields() throws IOException {}
-  @Ignore("GORA-299 o.a.g.cassandra.CassandraStore#newQuery() should not use 
query.setFields(getFieldsToQuery(null));")
-  @Override
-  public void testQueryWebPageQueryEmptyResults() throws IOException {}
-  @Ignore("GORA-154 delete() and deleteByQuery() methods are not implemented 
at CassandraStore, and always returns false or 0")
-  @Override
-  public void testDelete() throws IOException {}
-  @Ignore("GORA-154 delete() and deleteByQuery() methods are not implemented 
at CassandraStore, and always returns false or 0")
-  @Override
-  public void testDeleteByQuery() throws IOException {}
-  @Ignore("GORA-154 delete() and deleteByQuery() methods are not implemented 
at CassandraStore, and always returns false or 0")
-  @Override
-  public void testDeleteByQueryFields() throws IOException {}
-  @Ignore("GORA-298 Implement CassandraStore#getPartitions")
-  @Override
-  public void testGetPartitions() throws IOException {}
-}

http://git-wip-us.apache.org/repos/asf/gora/blob/516f366c/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestCassandraStoreWithNativeSerialization.java
----------------------------------------------------------------------
diff --git 
a/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestCassandraStoreWithNativeSerialization.java
 
b/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestCassandraStoreWithNativeSerialization.java
new file mode 100644
index 0000000..f302cd5
--- /dev/null
+++ 
b/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestCassandraStoreWithNativeSerialization.java
@@ -0,0 +1,57 @@
+package org.apache.gora.cassandra.store;
+
+import org.apache.gora.cassandra.GoraCassandraTestDriver;
+import org.apache.gora.cassandra.test.nativeSerialization.User;
+import org.apache.gora.store.DataStore;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.time.Instant;
+import java.util.Date;
+import java.util.Properties;
+import java.util.UUID;
+
+/**
+ * This class tests Cassandra Store functionality with Cassandra Native 
Serialization
+ */
+public class TestCassandraStoreWithNativeSerialization {
+  private static GoraCassandraTestDriver testDriver = new 
GoraCassandraTestDriver();
+  private static DataStore<UUID, User> userDataStore;
+  private static Properties parameter;
+
+  @BeforeClass
+  public static void setUpClass() throws Exception {
+    setProperties();
+    testDriver.setParameters(parameter);
+    testDriver.setUpClass();
+    userDataStore = testDriver.createDataStore(UUID.class, User.class);
+
+  }
+
+  private static void setProperties() {
+    parameter = new Properties();
+    
parameter.setProperty(CassandraStoreParameters.CASSANDRA_SERVERS,"localhost");
+    parameter.setProperty(CassandraStoreParameters.PORT,"9160");
+    
parameter.setProperty(CassandraStoreParameters.USE_CASSANDRA_NATIVE_SERIALIZATION,
 "true");
+  }
+
+
+  @After
+  public void tearDown() throws Exception {
+    testDriver.tearDown();
+  }
+
+  @AfterClass
+  public static void tearDownClass() throws Exception {
+    testDriver.tearDownClass();
+  }
+
+  @Test
+  public void testCreate() {
+    UUID id = UUID.randomUUID();
+    User user1 = new User(id, "madhawa", Date.from(Instant.now()));
+    userDataStore.put(id, user1);
+  }
+}

http://git-wip-us.apache.org/repos/asf/gora/blob/516f366c/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/test/nativeSerialization/User.java
----------------------------------------------------------------------
diff --git 
a/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/test/nativeSerialization/User.java
 
b/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/test/nativeSerialization/User.java
new file mode 100644
index 0000000..760fa30
--- /dev/null
+++ 
b/gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/test/nativeSerialization/User.java
@@ -0,0 +1,122 @@
+package org.apache.gora.cassandra.test.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.avro.Schema;
+import org.apache.gora.persistency.Persistent;
+import org.apache.gora.persistency.Tombstone;
+import org.apache.gora.persistency.impl.PersistentBase;
+
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * Created by madhawa on 6/23/17.
+ */
+
+@Table(keyspace = "ks", name = "users",
+        readConsistency = "QUORUM",
+        writeConsistency = "QUORUM",
+        caseSensitiveKeyspace = false,
+        caseSensitiveTable = false)
+public class User implements Persistent {
+  @PartitionKey
+  @Column(name = "user_id")
+  private UUID userId;
+  @Column(name = "name")
+  private String name;
+  @Column(name = "dob")
+  private Date dateOfBirth;
+
+  public User () {
+
+  }
+  public User(UUID userId, String name, Date dateOfBirth) {
+    this.userId = userId;
+    this.name = name;
+    this.dateOfBirth = dateOfBirth;
+  }
+
+
+  public void setUserId(UUID userId) {
+    this.userId = userId;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public void setDateOfBirth(Date dateOfBirth) {
+    this.dateOfBirth = dateOfBirth;
+  }
+
+  @Override
+  public void clear() {
+  }
+
+  @Override
+  public boolean isDirty(int fieldIndex) {
+    return false;
+  }
+
+  @Override
+  public boolean isDirty(String field) {
+    return false;
+  }
+
+  @Override
+  public void setDirty() {
+
+  }
+
+  @Override
+  public void setDirty(int fieldIndex) {
+
+  }
+
+  @Override
+  public void setDirty(String field) {
+
+  }
+
+  @Override
+  public void clearDirty(int fieldIndex) {
+
+  }
+
+  @Override
+  public void clearDirty(String field) {
+
+  }
+
+
+
+
+
+  @Override
+  public Tombstone getTombstone() {
+    return null;
+  }
+
+  @Override
+  public List<Schema.Field> getUnmanagedFields() {
+    return null;
+  }
+
+  @Override
+  public Persistent newInstance() {
+    return new User();
+  }
+
+  @Override
+  public boolean isDirty() {
+    return false;
+  }
+
+  @Override
+  public void clearDirty() {
+
+  }
+}

http://git-wip-us.apache.org/repos/asf/gora/blob/516f366c/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index bef6928..7c66dcf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -750,7 +750,7 @@
     <amazon.version>1.10.55</amazon.version>
     <!-- Cassandra Dependencies -->
     <cassandra-driver.version>3.1.3</cassandra-driver.version>
-    <cassandra.version>2.0.2</cassandra.version>
+    <cassandra.version>3.10</cassandra.version>
     <hector.version>1.1-4</hector.version>
     <!-- Solr Dependencies -->
     <lucene-solr.version>6.5.1</lucene-solr.version>

Reply via email to