diff --git a/connectors/cassandra/connector-cassandra/src/main/java/org/teiid/resource/adapter/cassandra/CassandraConnectionImpl.java b/connectors/cassandra/connector-cassandra/src/main/java/org/teiid/resource/adapter/cassandra/CassandraConnectionImpl.java index 5f28803f2d..bf89e525e1 100644 --- a/connectors/cassandra/connector-cassandra/src/main/java/org/teiid/resource/adapter/cassandra/CassandraConnectionImpl.java +++ b/connectors/cassandra/connector-cassandra/src/main/java/org/teiid/resource/adapter/cassandra/CassandraConnectionImpl.java @@ -23,6 +23,7 @@ package org.teiid.resource.adapter.cassandra; import java.util.List; +import java.util.Set; import javax.resource.ResourceException; @@ -41,7 +42,7 @@ public class CassandraConnectionImpl extends BasicConnection implements Cassandr private Cluster cluster = null; private Session session = null; private Metadata metadata = null; - private ProtocolVersion version; + private VersionNumber version; public CassandraConnectionImpl(CassandraManagedConnectionFactory config, Metadata metadata) { this.config = config; @@ -67,7 +68,11 @@ public CassandraConnectionImpl(CassandraManagedConnectionFactory config) { this.session = cluster.connect(config.getKeyspace()); - this.version = this.session.getCluster().getConfiguration().getProtocolOptions().getProtocolVersion(); + Set allHosts = cluster.getMetadata().getAllHosts(); + if (!allHosts.isEmpty()) { + Host host = allHosts.iterator().next(); + this.version = host.getCassandraVersion(); + } } @Override @@ -125,7 +130,7 @@ public KeyspaceMetadata keyspaceInfo() throws ResourceException { } @Override - public ProtocolVersion getVersion() { + public VersionNumber getVersion() { return version; } diff --git a/connectors/cassandra/translator-cassandra/pom.xml b/connectors/cassandra/translator-cassandra/pom.xml index 83678b071c..ae2fc2bb95 100644 --- a/connectors/cassandra/translator-cassandra/pom.xml +++ b/connectors/cassandra/translator-cassandra/pom.xml @@ -136,7 +136,7 @@ guava - com.codahale.metrics + io.dropwizard.metrics metrics-core diff --git a/connectors/cassandra/translator-cassandra/src/main/java/org/teiid/translator/cassandra/CassandraConnection.java b/connectors/cassandra/translator-cassandra/src/main/java/org/teiid/translator/cassandra/CassandraConnection.java index cbb695fa8d..007d255ebe 100644 --- a/connectors/cassandra/translator-cassandra/src/main/java/org/teiid/translator/cassandra/CassandraConnection.java +++ b/connectors/cassandra/translator-cassandra/src/main/java/org/teiid/translator/cassandra/CassandraConnection.java @@ -28,8 +28,8 @@ import javax.resource.cci.Connection; import com.datastax.driver.core.KeyspaceMetadata; -import com.datastax.driver.core.ProtocolVersion; import com.datastax.driver.core.ResultSetFuture; +import com.datastax.driver.core.VersionNumber; /** * Connection to Cassandra NoSql database. @@ -64,9 +64,9 @@ public interface CassandraConnection extends Connection{ ResultSetFuture executeBatch(String update, List values); /** - * Get the protocol version in use for this connection + * Get the version in use for this connection * @return */ - ProtocolVersion getVersion(); + VersionNumber getVersion(); } diff --git a/connectors/cassandra/translator-cassandra/src/main/java/org/teiid/translator/cassandra/CassandraExecutionFactory.java b/connectors/cassandra/translator-cassandra/src/main/java/org/teiid/translator/cassandra/CassandraExecutionFactory.java index 52f529cb52..c965f08469 100644 --- a/connectors/cassandra/translator-cassandra/src/main/java/org/teiid/translator/cassandra/CassandraExecutionFactory.java +++ b/connectors/cassandra/translator-cassandra/src/main/java/org/teiid/translator/cassandra/CassandraExecutionFactory.java @@ -44,18 +44,21 @@ import org.teiid.translator.TranslatorException; import org.teiid.translator.UpdateExecution; -import com.datastax.driver.core.ProtocolVersion; +import com.datastax.driver.core.VersionNumber; @Translator(name = "cassandra", description = "A translator for Cassandra NoSql database") public class CassandraExecutionFactory extends ExecutionFactory { - public static final BundleUtil UTIL = BundleUtil.getBundleUtil(CassandraExecutionFactory.class); + private static final VersionNumber DEFAULT_VERSION = VersionNumber.parse("1.2.0"); //$NON-NLS-1$ + private static final VersionNumber V2 = VersionNumber.parse("2.0.0"); //$NON-NLS-1$ + private static final VersionNumber V2_2 = VersionNumber.parse("2.2.0"); //$NON-NLS-1$ + public static final BundleUtil UTIL = BundleUtil.getBundleUtil(CassandraExecutionFactory.class); public static enum Event implements BundleUtil.Event { TEIID22000 } - private boolean isV2; + private VersionNumber version; @Override public void start() throws TranslatorException { @@ -136,34 +139,34 @@ public boolean supportsRowLimit() { @Override public boolean supportsBulkUpdate() { - return isV2; + return version.compareTo(V2) >= 0; } @Override public boolean supportsBatchedUpdates() { - return isV2; - } - /* - @Override - public boolean supportsAggregatesSum() { - return true; - } - - @Override - public boolean supportsAggregatesAvg() { - return true; - } - - @Override - public boolean supportsAggregatesMin() { - return true; - } - - @Override - public boolean supportsAggregatesMax() { - return true; - } - */ + return version.compareTo(V2) >= 0; + } + + @Override + public boolean supportsAggregatesSum() { + return version.compareTo(V2_2) >= 0; + } + + @Override + public boolean supportsAggregatesAvg() { + return version.compareTo(V2_2) >= 0; + } + + @Override + public boolean supportsAggregatesMin() { + return version.compareTo(V2_2) >= 0; + } + + @Override + public boolean supportsAggregatesMax() { + return version.compareTo(V2_2) >= 0; + } + @Override public boolean returnsSingleUpdateCount() { return true; @@ -175,8 +178,9 @@ public void initCapabilities(CassandraConnection connection) if (connection == null) { return; } - if (connection.getVersion().compareTo(ProtocolVersion.V2) >= 0) { - this.isV2 = true; + this.version = connection.getVersion(); + if (this.version == null) { + this.version = DEFAULT_VERSION; } } diff --git a/pom.xml b/pom.xml index ab390b07be..ff5089fe09 100644 --- a/pom.xml +++ b/pom.xml @@ -76,7 +76,7 @@ 5.1.5 2.4.4 1.3.152 - 3.0.2 + 3.1.2 1.46.0 2.5.0 4.3.0 @@ -1267,9 +1267,9 @@ ${version.cassandra-driver-core} - com.codahale.metrics + io.dropwizard.metrics metrics-core - ${version.com.codahale.metrics.metrics-core} + ${version.io.dropwizard.metrics.metrics-core}