You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ca...@codespot.com on 2012/07/02 05:27:46 UTC

[cassandra-jdbc] push by wfs...@gmail.com - Added version support to CassandraDataSource... on 2012-07-02 03:27 GMT

Revision: 1987674439de
Author:   David Alves <da...@datastax.com>
Date:     Sun Jul  1 20:22:16 2012
Log:      Added version support to CassandraDataSource

  o added a getter for the connectionParameter property to
CassandraConnection
  o support for cql version to CassandraDataSource
  o added Apache header to CassandraDataSource (wfs)
  o added a test case to DataSourceTest
http://code.google.com/a/apache-extras.org/p/cassandra-jdbc/source/detail?r=1987674439de

Modified:
  /src/main/java/org/apache/cassandra/cql/jdbc/CassandraConnection.java
  /src/main/java/org/apache/cassandra/cql/jdbc/CassandraDataSource.java
  /src/test/java/org/apache/cassandra/cql/jdbc/DataSourceTest.java

=======================================
--- /src/main/java/org/apache/cassandra/cql/jdbc/CassandraConnection.java	 
Tue Feb  7 13:58:37 2012
+++ /src/main/java/org/apache/cassandra/cql/jdbc/CassandraConnection.java	 
Sun Jul  1 20:22:16 2012
@@ -216,6 +216,11 @@
          checkNotClosed();
          return autoCommit;
      }
+
+    public Properties getConnectionProps()
+    {
+        return connectionProps;
+    }

      public String getCatalog() throws SQLException
      {
=======================================
--- /src/main/java/org/apache/cassandra/cql/jdbc/CassandraDataSource.java	 
Thu Oct 13 00:45:22 2011
+++ /src/main/java/org/apache/cassandra/cql/jdbc/CassandraDataSource.java	 
Sun Jul  1 20:22:16 2012
@@ -1,14 +1,35 @@
+/*
+ *
+ * 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.cassandra.cql.jdbc;

  import static org.apache.cassandra.cql.jdbc.Utils.HOST_REQUIRED;
-import static org.apache.cassandra.cql.jdbc.Utils.NO_INTERFACE;
  import static org.apache.cassandra.cql.jdbc.Utils.NOT_SUPPORTED;
+import static org.apache.cassandra.cql.jdbc.Utils.NO_INTERFACE;
  import static org.apache.cassandra.cql.jdbc.Utils.PROTOCOL;
-import static org.apache.cassandra.cql.jdbc.Utils.TAG_SERVER_NAME;
+import static org.apache.cassandra.cql.jdbc.Utils.TAG_CQL_VERSION;
  import static org.apache.cassandra.cql.jdbc.Utils.TAG_DATABASE_NAME;
  import static org.apache.cassandra.cql.jdbc.Utils.TAG_PASSWORD;
  import static org.apache.cassandra.cql.jdbc.Utils.TAG_PORT_NUMBER;
+import static org.apache.cassandra.cql.jdbc.Utils.TAG_SERVER_NAME;
  import static org.apache.cassandra.cql.jdbc.Utils.TAG_USER;
  import static org.apache.cassandra.cql.jdbc.Utils.createSubName;

@@ -18,8 +39,8 @@
  import java.sql.SQLException;
  import java.sql.SQLFeatureNotSupportedException;
  import java.sql.SQLNonTransientConnectionException;
-import java.util.logging.Logger;
  import java.util.Properties;
+import java.util.logging.Logger;

  import javax.sql.DataSource;

@@ -50,10 +71,13 @@

      protected String password;

-    public CassandraDataSource(String host, int port, String keyspace,  
String user, String password)
+    protected String version = null;
+
+    public CassandraDataSource(String host, int port, String keyspace,  
String user, String password, String version)
      {
          if (host != null) setServerName(host);
          if (port != -1) setPortNumber(port);
+        if (version != null) setVersion(version);
          setDatabaseName(keyspace);
          setUser(user);
          setPassword(password);
@@ -73,6 +97,16 @@
      {
          this.serverName = serverName;
      }
+
+    public String getVersion()
+    {
+        return version;
+    }
+
+    public void setVersion(String version)
+    {
+        this.version = version;
+    }

      public int getPortNumber()
      {
@@ -132,6 +166,7 @@
          if (this.databaseName!=null) props.setProperty(TAG_DATABASE_NAME,  
this.databaseName);
          if (user!=null) props.setProperty(TAG_USER, user);
          if (password!=null) props.setProperty(TAG_PASSWORD, password);
+        if (this.version != null) props.setProperty(TAG_CQL_VERSION,  
version);

          String url = PROTOCOL+createSubName(props);
          return DriverManager.getConnection(url, props);
=======================================
--- /src/test/java/org/apache/cassandra/cql/jdbc/DataSourceTest.java	Tue  
Feb  7 13:58:37 2012
+++ /src/test/java/org/apache/cassandra/cql/jdbc/DataSourceTest.java	Sun  
Jul  1 20:22:16 2012
@@ -20,9 +20,11 @@
   */
  package org.apache.cassandra.cql.jdbc;

-import static org.junit.Assert.*;
-
-import java.io.PrintWriter;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
  import java.sql.DriverManager;
  import java.sql.SQLFeatureNotSupportedException;
  import java.sql.Statement;
@@ -41,6 +43,7 @@
      private static final String KEYSPACE = "TestKS";
      private static final String USER = "JohnDoe";
      private static final String PASSWORD = "secret";
+    private static final String VERSION = "2.0.0";

      private static java.sql.Connection con = null;

@@ -73,14 +76,15 @@
      @Test
      public void testConstructor() throws Exception
      {
-        CassandraDataSource cds = new  
CassandraDataSource(HOST,PORT,KEYSPACE,USER,PASSWORD);
+        CassandraDataSource cds = new  
CassandraDataSource(HOST,PORT,KEYSPACE,USER,PASSWORD,VERSION);
          assertEquals(HOST,cds.getServerName());
          assertEquals(PORT,cds.getPortNumber());
          assertEquals(KEYSPACE,cds.getDatabaseName());
          assertEquals(USER,cds.getUser());
          assertEquals(PASSWORD,cds.getPassword());
-
-        DataSource ds = new  
CassandraDataSource(HOST,PORT,KEYSPACE,USER,PASSWORD);
+        assertEquals(VERSION, cds.getVersion());
+
+        DataSource ds = new  
CassandraDataSource(HOST,PORT,KEYSPACE,USER,PASSWORD,VERSION);
          assertNotNull(ds);

          // null username and password
@@ -93,6 +97,7 @@
          cnx = ds.getConnection();
          assertFalse(cnx.isClosed());
          ds.setLoginTimeout(5);
+        assertEquals("2.0.0", ((CassandraConnection)  
cnx).getConnectionProps().get(Utils.TAG_CQL_VERSION));
          assertEquals(5, ds.getLoginTimeout());
      }

@@ -100,7 +105,7 @@
      @Test
      public void testIsWrapperFor() throws Exception
      {
-        DataSource ds = new  
CassandraDataSource(HOST,PORT,KEYSPACE,USER,PASSWORD);
+        DataSource ds = new  
CassandraDataSource(HOST,PORT,KEYSPACE,USER,PASSWORD,VERSION);

          boolean isIt = false;

@@ -116,7 +121,7 @@
      @Test(expected=SQLFeatureNotSupportedException.class)
      public void testUnwrap() throws Exception
      {
-        DataSource ds = new  
CassandraDataSource(HOST,PORT,KEYSPACE,USER,PASSWORD);
+        DataSource ds = new  
CassandraDataSource(HOST,PORT,KEYSPACE,USER,PASSWORD,VERSION);

          // it is a wrapper for DataSource
          DataSource newds = ds.unwrap(DataSource.class);