Skip to content

Commit

Permalink
Rename CassandraVersion to Version
Browse files Browse the repository at this point in the history
  • Loading branch information
olim7t committed May 7, 2018
1 parent 9a9b055 commit 1ebde65
Show file tree
Hide file tree
Showing 17 changed files with 102 additions and 109 deletions.
Expand Up @@ -21,7 +21,7 @@ public interface MavenCoordinates {

String getArtifactId();

CassandraVersion getVersion();
Version getVersion();

String getName();
}
Expand Up @@ -24,7 +24,7 @@
import net.jcip.annotations.Immutable;

/**
* The version of a Cassandra release.
* A structured version number.
*
* <p>It is in the form X.Y.Z, with optional pre-release labels and build metadata.
*
Expand All @@ -34,15 +34,15 @@
* are ignored for sorting versions.
*/
@Immutable
public class CassandraVersion implements Comparable<CassandraVersion> {
public class Version implements Comparable<Version> {

private static final String VERSION_REGEXP =
"(\\d+)\\.(\\d+)(\\.\\d+)?(\\.\\d+)?([~\\-]\\w[.\\w]*(?:\\-\\w[.\\w]*)*)?(\\+[.\\w]+)?";
private static final Pattern pattern = Pattern.compile(VERSION_REGEXP);

public static final CassandraVersion V2_1_0 = parse("2.1.0");
public static final CassandraVersion V2_2_0 = parse("2.2.0");
public static final CassandraVersion V3_0_0 = parse("3.0.0");
public static final Version V2_1_0 = parse("2.1.0");
public static final Version V2_2_0 = parse("2.2.0");
public static final Version V3_0_0 = parse("3.0.0");

private final int major;
private final int minor;
Expand All @@ -52,7 +52,7 @@ public class CassandraVersion implements Comparable<CassandraVersion> {
private final String[] preReleases;
private final String build;

private CassandraVersion(
private Version(
int major, int minor, int patch, int dsePatch, String[] preReleases, String build) {
this.major = major;
this.minor = minor;
Expand All @@ -74,7 +74,7 @@ private CassandraVersion(
* @return the parsed version number.
* @throws IllegalArgumentException if the provided string does not represent a valid version.
*/
public static CassandraVersion parse(String version) {
public static Version parse(String version) {
if (version == null) {
return null;
}
Expand Down Expand Up @@ -112,7 +112,7 @@ public static CassandraVersion parse(String version) {
String bl = matcher.group(6);
String build = bl == null || bl.isEmpty() ? null : bl.substring(1); // drop the initial '+'

return new CassandraVersion(major, minor, patch, dsePatch, preReleases, build);
return new Version(major, minor, patch, dsePatch, preReleases, build);
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Invalid version number: " + version);
}
Expand Down Expand Up @@ -188,12 +188,12 @@ public String getBuildLabel() {
*
* @return the next stable version.
*/
public CassandraVersion nextStable() {
return new CassandraVersion(major, minor, patch, dsePatch, null, null);
public Version nextStable() {
return new Version(major, minor, patch, dsePatch, null, null);
}

@Override
public int compareTo(CassandraVersion other) {
public int compareTo(Version other) {
if (major < other.major) {
return -1;
}
Expand Down Expand Up @@ -256,8 +256,8 @@ public int compareTo(CassandraVersion other) {
public boolean equals(Object other) {
if (other == this) {
return true;
} else if (other instanceof CassandraVersion) {
CassandraVersion that = (CassandraVersion) other;
} else if (other instanceof Version) {
Version that = (Version) other;
return this.major == that.major
&& this.minor == that.minor
&& this.patch == that.patch
Expand Down
Expand Up @@ -15,7 +15,7 @@
*/
package com.datastax.oss.driver.api.core.metadata;

import com.datastax.oss.driver.api.core.CassandraVersion;
import com.datastax.oss.driver.api.core.Version;
import com.datastax.oss.driver.api.core.addresstranslation.AddressTranslator;
import com.datastax.oss.driver.api.core.loadbalancing.LoadBalancingPolicy;
import com.datastax.oss.driver.api.core.loadbalancing.NodeDistance;
Expand Down Expand Up @@ -62,7 +62,7 @@ public interface Node {

String getRack();

CassandraVersion getCassandraVersion();
Version getCassandraVersion();

/**
* An additional map of free-form properties.
Expand Down
Expand Up @@ -15,10 +15,10 @@
*/
package com.datastax.oss.driver.internal.core;

import com.datastax.oss.driver.api.core.CassandraVersion;
import com.datastax.oss.driver.api.core.DefaultProtocolVersion;
import com.datastax.oss.driver.api.core.ProtocolVersion;
import com.datastax.oss.driver.api.core.UnsupportedProtocolVersionException;
import com.datastax.oss.driver.api.core.Version;
import com.datastax.oss.driver.api.core.metadata.Node;
import com.datastax.oss.driver.internal.core.context.DefaultDriverContext;
import com.datastax.oss.driver.shaded.guava.common.base.Preconditions;
Expand Down Expand Up @@ -124,33 +124,32 @@ public ProtocolVersion highestCommon(Collection<Node> nodes) {
// The C*<=>protocol mapping is hardcoded in the code below, I don't see a need to be more
// sophisticated right now.
for (Node node : nodes) {
CassandraVersion cassandraVersion = node.getCassandraVersion();
if (cassandraVersion == null) {
Version version = node.getCassandraVersion();
if (version == null) {
LOG.warn(
"[{}] Node {} reports null Cassandra version, "
+ "ignoring it from optimal protocol version computation",
logPrefix,
node.getConnectAddress());
continue;
}
cassandraVersion = cassandraVersion.nextStable();
if (cassandraVersion.compareTo(CassandraVersion.V2_1_0) < 0) {
version = version.nextStable();
if (version.compareTo(Version.V2_1_0) < 0) {
throw new UnsupportedProtocolVersionException(
node.getConnectAddress(),
String.format(
"Node %s reports Cassandra version %s, "
+ "but the driver only supports 2.1.0 and above",
node.getConnectAddress(), cassandraVersion),
node.getConnectAddress(), version),
ImmutableList.of(DefaultProtocolVersion.V3, DefaultProtocolVersion.V4));
}

LOG.debug(
"[{}] Node {} reports Cassandra version {}",
logPrefix,
node.getConnectAddress(),
cassandraVersion);
if (cassandraVersion.compareTo(CassandraVersion.V2_2_0) < 0
&& candidates.remove(DefaultProtocolVersion.V4)) {
version);
if (version.compareTo(Version.V2_2_0) < 0 && candidates.remove(DefaultProtocolVersion.V4)) {
LOG.debug("[{}] Excluding protocol V4", logPrefix);
}
}
Expand Down
Expand Up @@ -15,8 +15,8 @@
*/
package com.datastax.oss.driver.internal.core;

import com.datastax.oss.driver.api.core.CassandraVersion;
import com.datastax.oss.driver.api.core.MavenCoordinates;
import com.datastax.oss.driver.api.core.Version;
import io.netty.buffer.ByteBuf;
import java.io.IOException;
import java.io.InputStreamReader;
Expand Down Expand Up @@ -52,8 +52,7 @@ public static DefaultMavenCoordinates buildFromResource(URL resource) {
if (ByteBuf.class.getPackage().getName().contains("com.datastax.oss.driver.shaded")) {
version += "-shaded";
}
return new DefaultMavenCoordinates(
name, groupId, artifactId, CassandraVersion.parse(version));
return new DefaultMavenCoordinates(name, groupId, artifactId, Version.parse(version));
} catch (IOException e) {
throw new UncheckedIOException(e);
}
Expand All @@ -62,10 +61,9 @@ public static DefaultMavenCoordinates buildFromResource(URL resource) {
private final String name;
private final String groupId;
private final String artifactId;
private final CassandraVersion version;
private final Version version;

public DefaultMavenCoordinates(
String name, String groupId, String artifactId, CassandraVersion version) {
public DefaultMavenCoordinates(String name, String groupId, String artifactId, Version version) {
this.name = name;
this.groupId = groupId;
this.artifactId = artifactId;
Expand All @@ -88,7 +86,7 @@ public String getArtifactId() {
}

@Override
public CassandraVersion getVersion() {
public Version getVersion() {
return version;
}

Expand Down
Expand Up @@ -15,7 +15,7 @@
*/
package com.datastax.oss.driver.internal.core.metadata;

import com.datastax.oss.driver.api.core.CassandraVersion;
import com.datastax.oss.driver.api.core.Version;
import com.datastax.oss.driver.api.core.loadbalancing.NodeDistance;
import com.datastax.oss.driver.api.core.metadata.Node;
import com.datastax.oss.driver.api.core.metadata.NodeState;
Expand Down Expand Up @@ -44,7 +44,7 @@ public class DefaultNode implements Node {
volatile Optional<InetAddress> listenAddress;
volatile String datacenter;
volatile String rack;
volatile CassandraVersion cassandraVersion;
volatile Version cassandraVersion;
// Keep a copy of the raw tokens, to detect if they have changed when we refresh the node
volatile Set<String> rawTokens;
volatile Map<String, Object> extras;
Expand Down Expand Up @@ -95,7 +95,7 @@ public String getRack() {
}

@Override
public CassandraVersion getCassandraVersion() {
public Version getCassandraVersion() {
return cassandraVersion;
}

Expand Down
Expand Up @@ -15,7 +15,7 @@
*/
package com.datastax.oss.driver.internal.core.metadata;

import com.datastax.oss.driver.api.core.CassandraVersion;
import com.datastax.oss.driver.api.core.Version;
import com.datastax.oss.driver.internal.core.metadata.token.TokenFactory;
import com.datastax.oss.driver.shaded.guava.common.collect.ImmutableMap;
import java.util.Collections;
Expand All @@ -42,7 +42,7 @@ protected static boolean copyInfos(
node.schemaVersion = nodeInfo.getSchemaVersion();
String versionString = nodeInfo.getCassandraVersion();
try {
node.cassandraVersion = CassandraVersion.parse(versionString);
node.cassandraVersion = Version.parse(versionString);
} catch (IllegalArgumentException e) {
LOG.warn(
"[{}] Error converting Cassandra version '{}' for {}",
Expand Down
Expand Up @@ -15,7 +15,7 @@
*/
package com.datastax.oss.driver.internal.core.metadata.schema.queries;

import com.datastax.oss.driver.api.core.CassandraVersion;
import com.datastax.oss.driver.api.core.Version;
import com.datastax.oss.driver.api.core.config.DriverConfigProfile;
import com.datastax.oss.driver.api.core.metadata.Metadata;
import com.datastax.oss.driver.api.core.metadata.Node;
Expand Down Expand Up @@ -53,23 +53,22 @@ public SchemaQueries newInstance(CompletableFuture<Metadata> refreshFuture) {
+ channel.remoteAddress()
+ ", aborting schema refresh");
}
CassandraVersion cassandraVersion = node.getCassandraVersion();
if (cassandraVersion == null) {
Version version = node.getCassandraVersion();
if (version == null) {
LOG.warn(
"[{}] Cassandra version missing for {}, defaulting to {}",
logPrefix,
node,
CassandraVersion.V3_0_0);
cassandraVersion = CassandraVersion.V3_0_0;
Version.V3_0_0);
version = Version.V3_0_0;
} else {
cassandraVersion = cassandraVersion.nextStable();
version = version.nextStable();
}
DriverConfigProfile config = context.config().getDefaultProfile();
LOG.debug(
"[{}] Sending schema queries to {} with version {}", logPrefix, node, cassandraVersion);
if (cassandraVersion.compareTo(CassandraVersion.V2_2_0) < 0) {
LOG.debug("[{}] Sending schema queries to {} with version {}", logPrefix, node, version);
if (version.compareTo(Version.V2_2_0) < 0) {
return new Cassandra21SchemaQueries(channel, refreshFuture, config, logPrefix);
} else if (cassandraVersion.compareTo(CassandraVersion.V3_0_0) < 0) {
} else if (version.compareTo(Version.V3_0_0) < 0) {
return new Cassandra22SchemaQueries(channel, refreshFuture, config, logPrefix);
} else {
return new Cassandra3SchemaQueries(channel, refreshFuture, config, logPrefix);
Expand Down
8 changes: 4 additions & 4 deletions core/src/test/java/com/datastax/oss/driver/Assertions.java
Expand Up @@ -15,8 +15,8 @@
*/
package com.datastax.oss.driver;

import com.datastax.oss.driver.api.core.CassandraVersion;
import com.datastax.oss.driver.api.core.CassandraVersionAssert;
import com.datastax.oss.driver.api.core.Version;
import com.datastax.oss.driver.api.core.VersionAssert;
import com.datastax.oss.driver.api.core.config.DriverConfig;
import com.datastax.oss.driver.api.core.metadata.token.TokenRange;
import com.datastax.oss.driver.internal.core.CompletionStageAssert;
Expand Down Expand Up @@ -44,8 +44,8 @@ public static <V> CompletionStageAssert<V> assertThat(CompletionStage<V> actual)
return new CompletionStageAssert<>(actual);
}

public static CassandraVersionAssert assertThat(CassandraVersion actual) {
return new CassandraVersionAssert(actual);
public static VersionAssert assertThat(Version actual) {
return new VersionAssert(actual);
}

public static TokenRangeAssert assertThat(TokenRange actual) {
Expand Down
Expand Up @@ -20,47 +20,46 @@
import org.assertj.core.api.AbstractComparableAssert;
import org.assertj.core.api.Assertions;

public class CassandraVersionAssert
extends AbstractComparableAssert<CassandraVersionAssert, CassandraVersion> {
public class VersionAssert extends AbstractComparableAssert<VersionAssert, Version> {

public CassandraVersionAssert(CassandraVersion actual) {
super(actual, CassandraVersionAssert.class);
public VersionAssert(Version actual) {
super(actual, VersionAssert.class);
}

public CassandraVersionAssert hasMajorMinorPatch(int major, int minor, int patch) {
public VersionAssert hasMajorMinorPatch(int major, int minor, int patch) {
Assertions.assertThat(actual.getMajor()).isEqualTo(major);
Assertions.assertThat(actual.getMinor()).isEqualTo(minor);
Assertions.assertThat(actual.getPatch()).isEqualTo(patch);
return this;
}

public CassandraVersionAssert hasDsePatch(int dsePatch) {
public VersionAssert hasDsePatch(int dsePatch) {
Assertions.assertThat(actual.getDSEPatch()).isEqualTo(dsePatch);
return this;
}

public CassandraVersionAssert hasPreReleaseLabels(String... labels) {
public VersionAssert hasPreReleaseLabels(String... labels) {
Assertions.assertThat(actual.getPreReleaseLabels()).containsExactly(labels);
return this;
}

public CassandraVersionAssert hasNoPreReleaseLabels() {
public VersionAssert hasNoPreReleaseLabels() {
Assertions.assertThat(actual.getPreReleaseLabels()).isNull();
return this;
}

public CassandraVersionAssert hasBuildLabel(String label) {
public VersionAssert hasBuildLabel(String label) {
Assertions.assertThat(actual.getBuildLabel()).isEqualTo(label);
return this;
}

public CassandraVersionAssert hasNextStable(String version) {
assertThat(actual.nextStable()).isEqualTo(CassandraVersion.parse(version));
public VersionAssert hasNextStable(String version) {
assertThat(actual.nextStable()).isEqualTo(Version.parse(version));
return this;
}

@Override
public CassandraVersionAssert hasToString(String string) {
public VersionAssert hasToString(String string) {
Assertions.assertThat(actual.toString()).isEqualTo(string);
return this;
}
Expand Down

0 comments on commit 1ebde65

Please sign in to comment.