http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/functions/TimeFcts.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/functions/TimeFcts.java 
b/src/java/org/apache/cassandra/cql3/functions/TimeFcts.java
index 79ebfaf..e682dcd 100644
--- a/src/java/org/apache/cassandra/cql3/functions/TimeFcts.java
+++ b/src/java/org/apache/cassandra/cql3/functions/TimeFcts.java
@@ -27,6 +27,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.cassandra.db.marshal.*;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.UUIDGen;
 
@@ -52,7 +53,7 @@ public abstract class TimeFcts
 
     public static final Function nowFct = new NativeScalarFunction("now", 
TimeUUIDType.instance)
     {
-        public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+        public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
         {
             return ByteBuffer.wrap(UUIDGen.getTimeUUIDBytes());
         }
@@ -60,7 +61,7 @@ public abstract class TimeFcts
 
     public static final Function minTimeuuidFct = new 
NativeScalarFunction("mintimeuuid", TimeUUIDType.instance, 
TimestampType.instance)
     {
-        public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+        public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
         {
             ByteBuffer bb = parameters.get(0);
             if (bb == null)
@@ -72,7 +73,7 @@ public abstract class TimeFcts
 
     public static final Function maxTimeuuidFct = new 
NativeScalarFunction("maxtimeuuid", TimeUUIDType.instance, 
TimestampType.instance)
     {
-        public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+        public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
         {
             ByteBuffer bb = parameters.get(0);
             if (bb == null)
@@ -90,7 +91,7 @@ public abstract class TimeFcts
     {
         private volatile boolean hasLoggedDeprecationWarning;
 
-        public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+        public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
         {
             if (!hasLoggedDeprecationWarning)
             {
@@ -116,7 +117,7 @@ public abstract class TimeFcts
     {
         private volatile boolean hasLoggedDeprecationWarning;
 
-        public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+        public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
         {
             if (!hasLoggedDeprecationWarning)
             {
@@ -138,7 +139,7 @@ public abstract class TimeFcts
      */
     public static final NativeScalarFunction timeUuidtoDate = new 
NativeScalarFunction("todate", SimpleDateType.instance, TimeUUIDType.instance)
     {
-        public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+        public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
         {
             ByteBuffer bb = parameters.get(0);
             if (bb == null)
@@ -154,7 +155,7 @@ public abstract class TimeFcts
      */
     public static final NativeScalarFunction timeUuidToTimestamp = new 
NativeScalarFunction("totimestamp", TimestampType.instance, 
TimeUUIDType.instance)
     {
-        public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+        public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
         {
             ByteBuffer bb = parameters.get(0);
             if (bb == null)
@@ -170,7 +171,7 @@ public abstract class TimeFcts
      */
     public static final NativeScalarFunction timeUuidToUnixTimestamp = new 
NativeScalarFunction("tounixtimestamp", LongType.instance, 
TimeUUIDType.instance)
     {
-        public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+        public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
         {
             ByteBuffer bb = parameters.get(0);
             if (bb == null)
@@ -185,7 +186,7 @@ public abstract class TimeFcts
      */
     public static final NativeScalarFunction timestampToUnixTimestamp = new 
NativeScalarFunction("tounixtimestamp", LongType.instance, 
TimestampType.instance)
     {
-        public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+        public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
         {
             ByteBuffer bb = parameters.get(0);
             if (bb == null)
@@ -201,7 +202,7 @@ public abstract class TimeFcts
     */
    public static final NativeScalarFunction timestampToDate = new 
NativeScalarFunction("todate", SimpleDateType.instance, TimestampType.instance)
    {
-       public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+       public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
        {
            ByteBuffer bb = parameters.get(0);
            if (bb == null)
@@ -217,7 +218,7 @@ public abstract class TimeFcts
     */
    public static final NativeScalarFunction dateToTimestamp = new 
NativeScalarFunction("totimestamp", TimestampType.instance, 
SimpleDateType.instance)
    {
-       public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+       public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
        {
            ByteBuffer bb = parameters.get(0);
            if (bb == null)
@@ -233,7 +234,7 @@ public abstract class TimeFcts
     */
    public static final NativeScalarFunction dateToUnixTimestamp = new 
NativeScalarFunction("tounixtimestamp", LongType.instance, 
SimpleDateType.instance)
    {
-       public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+       public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
        {
            ByteBuffer bb = parameters.get(0);
            if (bb == null)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/functions/ToJsonFct.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/functions/ToJsonFct.java 
b/src/java/org/apache/cassandra/cql3/functions/ToJsonFct.java
index c7391da..d0f2b0b 100644
--- a/src/java/org/apache/cassandra/cql3/functions/ToJsonFct.java
+++ b/src/java/org/apache/cassandra/cql3/functions/ToJsonFct.java
@@ -20,6 +20,7 @@ package org.apache.cassandra.cql3.functions;
 import org.apache.cassandra.db.marshal.AbstractType;
 import org.apache.cassandra.db.marshal.UTF8Type;
 import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 import java.nio.ByteBuffer;
@@ -53,7 +54,7 @@ public class ToJsonFct extends NativeScalarFunction
         super("tojson", UTF8Type.instance, argType);
     }
 
-    public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters) throws InvalidRequestException
+    public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters) throws InvalidRequestException
     {
         assert parameters.size() == 1 : "Expected 1 argument for toJson(), but 
got " + parameters.size();
         ByteBuffer parameter = parameters.get(0);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/functions/TokenFct.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/functions/TokenFct.java 
b/src/java/org/apache/cassandra/cql3/functions/TokenFct.java
index 283ac0b..1907641 100644
--- a/src/java/org/apache/cassandra/cql3/functions/TokenFct.java
+++ b/src/java/org/apache/cassandra/cql3/functions/TokenFct.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.config.ColumnDefinition;
 import org.apache.cassandra.db.CBuilder;
 import org.apache.cassandra.db.marshal.AbstractType;
 import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 public class TokenFct extends NativeScalarFunction
 {
@@ -45,7 +46,7 @@ public class TokenFct extends NativeScalarFunction
         return types;
     }
 
-    public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters) throws InvalidRequestException
+    public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters) throws InvalidRequestException
     {
         CBuilder builder = 
CBuilder.create(cfm.getKeyValidatorAsClusteringComparator());
         for (int i = 0; i < parameters.size(); i++)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/functions/UDAggregate.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/functions/UDAggregate.java 
b/src/java/org/apache/cassandra/cql3/functions/UDAggregate.java
index 6570ba8..87c955f 100644
--- a/src/java/org/apache/cassandra/cql3/functions/UDAggregate.java
+++ b/src/java/org/apache/cassandra/cql3/functions/UDAggregate.java
@@ -29,6 +29,7 @@ import org.apache.cassandra.db.marshal.AbstractType;
 import org.apache.cassandra.exceptions.InvalidRequestException;
 import org.apache.cassandra.schema.Functions;
 import org.apache.cassandra.tracing.Tracing;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 /**
  * Base class for user-defined-aggregates.
@@ -158,7 +159,7 @@ public class UDAggregate extends AbstractFunction 
implements AggregateFunction
             private Object state;
             private boolean needsInit = true;
 
-            public void addInput(int protocolVersion, List<ByteBuffer> values) 
throws InvalidRequestException
+            public void addInput(ProtocolVersion protocolVersion, 
List<ByteBuffer> values) throws InvalidRequestException
             {
                 if (needsInit)
                 {
@@ -183,7 +184,7 @@ public class UDAggregate extends AbstractFunction 
implements AggregateFunction
                 stateFunctionDuration += (System.nanoTime() - startTime) / 
1000;
             }
 
-            public ByteBuffer compute(int protocolVersion) throws 
InvalidRequestException
+            public ByteBuffer compute(ProtocolVersion protocolVersion) throws 
InvalidRequestException
             {
                 assert !needsInit;
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/functions/UDFByteCodeVerifier.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/functions/UDFByteCodeVerifier.java 
b/src/java/org/apache/cassandra/cql3/functions/UDFByteCodeVerifier.java
index 7d28fcd..234aed9 100644
--- a/src/java/org/apache/cassandra/cql3/functions/UDFByteCodeVerifier.java
+++ b/src/java/org/apache/cassandra/cql3/functions/UDFByteCodeVerifier.java
@@ -101,18 +101,18 @@ public final class UDFByteCodeVerifier
                     // allowed constructor - JavaUDF(TypeCodec returnCodec, 
TypeCodec[] argCodecs)
                     return new ConstructorVisitor(errors);
                 }
-                if ("executeImpl".equals(name) && 
"(ILjava/util/List;)Ljava/nio/ByteBuffer;".equals(desc))
+                if ("executeImpl".equals(name) && 
"(Lorg/apache/cassandra/transport/ProtocolVersion;Ljava/util/List;)Ljava/nio/ByteBuffer;".equals(desc))
                 {
                     if (Opcodes.ACC_PROTECTED != access)
                         errors.add("executeImpl not protected");
-                    // the executeImpl method - ByteBuffer executeImpl(int 
protocolVersion, List<ByteBuffer> params)
+                    // the executeImpl method - ByteBuffer 
executeImpl(ProtocolVersion protocolVersion, List<ByteBuffer> params)
                     return new ExecuteImplVisitor(errors);
                 }
-                if ("executeAggregateImpl".equals(name) && 
"(ILjava/lang/Object;Ljava/util/List;)Ljava/lang/Object;".equals(desc))
+                if ("executeAggregateImpl".equals(name) && 
"(Lorg/apache/cassandra/transport/ProtocolVersion;Ljava/lang/Object;Ljava/util/List;)Ljava/lang/Object;".equals(desc))
                 {
                     if (Opcodes.ACC_PROTECTED != access)
                         errors.add("executeAggregateImpl not protected");
-                    // the executeImpl method - ByteBuffer executeImpl(int 
protocolVersion, List<ByteBuffer> params)
+                    // the executeImpl method - ByteBuffer 
executeImpl(ProtocolVersion protocolVersion, List<ByteBuffer> params)
                     return new ExecuteImplVisitor(errors);
                 }
                 if ("<clinit>".equals(name))

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/functions/UDFunction.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/functions/UDFunction.java 
b/src/java/org/apache/cassandra/cql3/functions/UDFunction.java
index 70d459f..f8af619 100644
--- a/src/java/org/apache/cassandra/cql3/functions/UDFunction.java
+++ b/src/java/org/apache/cassandra/cql3/functions/UDFunction.java
@@ -55,6 +55,7 @@ import org.apache.cassandra.schema.KeyspaceMetadata;
 import org.apache.cassandra.service.ClientWarn;
 import org.apache.cassandra.service.MigrationManager;
 import org.apache.cassandra.tracing.Tracing;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.JVMStabilityInspector;
 
@@ -113,6 +114,7 @@ public abstract class UDFunction extends AbstractFunction 
implements ScalarFunct
     "org/apache/cassandra/cql3/functions/JavaUDF.class",
     "org/apache/cassandra/cql3/functions/UDFContext.class",
     "org/apache/cassandra/exceptions/",
+    "org/apache/cassandra/transport/ProtocolVersion.class"
     };
     // Only need to blacklist a pattern, if it would otherwise be allowed via 
whitelistedPatterns
     private static final String[] blacklistedPatterns =
@@ -259,12 +261,12 @@ public abstract class UDFunction extends AbstractFunction 
implements ScalarFunct
                 return Executors.newSingleThreadExecutor();
             }
 
-            protected Object executeAggregateUserDefined(int protocolVersion, 
Object firstParam, List<ByteBuffer> parameters)
+            protected Object executeAggregateUserDefined(ProtocolVersion 
protocolVersion, Object firstParam, List<ByteBuffer> parameters)
             {
                 throw broken();
             }
 
-            public ByteBuffer executeUserDefined(int protocolVersion, 
List<ByteBuffer> parameters)
+            public ByteBuffer executeUserDefined(ProtocolVersion 
protocolVersion, List<ByteBuffer> parameters)
             {
                 throw broken();
             }
@@ -279,7 +281,7 @@ public abstract class UDFunction extends AbstractFunction 
implements ScalarFunct
         };
     }
 
-    public final ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+    public final ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
     {
         assertUdfsEnabled(language);
 
@@ -313,12 +315,12 @@ public abstract class UDFunction extends AbstractFunction 
implements ScalarFunct
     }
 
     /**
-     * Like {@link #execute(int, List)} but the first parameter is already in 
non-serialized form.
+     * Like {@link ScalarFunction#execute(ProtocolVersion, List)} but the 
first parameter is already in non-serialized form.
      * Remaining parameters (2nd paramters and all others) are in {@code 
parameters}.
      * This is used to prevent superfluous (de)serialization of the state of 
aggregates.
      * Means: scalar functions of aggregates are called using this variant.
      */
-    public final Object executeForAggregate(int protocolVersion, Object 
firstParam, List<ByteBuffer> parameters)
+    public final Object executeForAggregate(ProtocolVersion protocolVersion, 
Object firstParam, List<ByteBuffer> parameters)
     {
         assertUdfsEnabled(language);
 
@@ -389,7 +391,7 @@ public abstract class UDFunction extends AbstractFunction 
implements ScalarFunct
         }
     }
 
-    private ByteBuffer executeAsync(int protocolVersion, List<ByteBuffer> 
parameters)
+    private ByteBuffer executeAsync(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
     {
         ThreadIdAndCpuTime threadIdAndCpuTime = new ThreadIdAndCpuTime();
 
@@ -405,7 +407,7 @@ public abstract class UDFunction extends AbstractFunction 
implements ScalarFunct
      * This is used to prevent superfluous (de)serialization of the state of 
aggregates.
      * Means: scalar functions of aggregates are called using this variant.
      */
-    private Object executeAggregateAsync(int protocolVersion, Object 
firstParam, List<ByteBuffer> parameters)
+    private Object executeAggregateAsync(ProtocolVersion protocolVersion, 
Object firstParam, List<ByteBuffer> parameters)
     {
         ThreadIdAndCpuTime threadIdAndCpuTime = new ThreadIdAndCpuTime();
 
@@ -513,9 +515,9 @@ public abstract class UDFunction extends AbstractFunction 
implements ScalarFunct
         return true;
     }
 
-    protected abstract ByteBuffer executeUserDefined(int protocolVersion, 
List<ByteBuffer> parameters);
+    protected abstract ByteBuffer executeUserDefined(ProtocolVersion 
protocolVersion, List<ByteBuffer> parameters);
 
-    protected abstract Object executeAggregateUserDefined(int protocolVersion, 
Object firstParam, List<ByteBuffer> parameters);
+    protected abstract Object executeAggregateUserDefined(ProtocolVersion 
protocolVersion, Object firstParam, List<ByteBuffer> parameters);
 
     public boolean isAggregate()
     {
@@ -555,12 +557,12 @@ public abstract class UDFunction extends AbstractFunction 
implements ScalarFunct
      * @param protocolVersion the native protocol version used for 
serialization
      * @param argIndex        index of the UDF input argument
      */
-    protected Object compose(int protocolVersion, int argIndex, ByteBuffer 
value)
+    protected Object compose(ProtocolVersion protocolVersion, int argIndex, 
ByteBuffer value)
     {
         return compose(argCodecs, protocolVersion, argIndex, value);
     }
 
-    protected static Object compose(TypeCodec<Object>[] codecs, int 
protocolVersion, int argIndex, ByteBuffer value)
+    protected static Object compose(TypeCodec<Object>[] codecs, 
ProtocolVersion protocolVersion, int argIndex, ByteBuffer value)
     {
         return value == null ? null : UDHelper.deserialize(codecs[argIndex], 
protocolVersion, value);
     }
@@ -572,12 +574,12 @@ public abstract class UDFunction extends AbstractFunction 
implements ScalarFunct
      *
      * @param protocolVersion the native protocol version used for 
serialization
      */
-    protected ByteBuffer decompose(int protocolVersion, Object value)
+    protected ByteBuffer decompose(ProtocolVersion protocolVersion, Object 
value)
     {
         return decompose(returnCodec, protocolVersion, value);
     }
 
-    protected static ByteBuffer decompose(TypeCodec<Object> codec, int 
protocolVersion, Object value)
+    protected static ByteBuffer decompose(TypeCodec<Object> codec, 
ProtocolVersion protocolVersion, Object value)
     {
         return value == null ? null : UDHelper.serialize(codec, 
protocolVersion, value);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/functions/UDHelper.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/functions/UDHelper.java 
b/src/java/org/apache/cassandra/cql3/functions/UDHelper.java
index 86cb89d..ddeae41 100644
--- a/src/java/org/apache/cassandra/cql3/functions/UDHelper.java
+++ b/src/java/org/apache/cassandra/cql3/functions/UDHelper.java
@@ -27,12 +27,11 @@ import com.google.common.reflect.TypeToken;
 
 import com.datastax.driver.core.CodecRegistry;
 import com.datastax.driver.core.DataType;
-import com.datastax.driver.core.ProtocolVersion;
 import com.datastax.driver.core.TypeCodec;
 import com.datastax.driver.core.exceptions.InvalidTypeException;
 import org.apache.cassandra.cql3.CQL3Type;
 import org.apache.cassandra.db.marshal.AbstractType;
-import org.apache.cassandra.transport.Server;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 /**
  * Helper class for User Defined Functions, Types and Aggregates.
@@ -47,7 +46,7 @@ public final class UDHelper
         try
         {
             Class<?> cls = 
Class.forName("com.datastax.driver.core.DataTypeClassNameParser");
-            Method m = cls.getDeclaredMethod("parseOne", String.class, 
ProtocolVersion.class, CodecRegistry.class);
+            Method m = cls.getDeclaredMethod("parseOne", String.class, 
com.datastax.driver.core.ProtocolVersion.class, CodecRegistry.class);
             m.setAccessible(true);
             methodParseOne = MethodHandles.lookup().unreflect(m);
             codecRegistry = new CodecRegistry();
@@ -138,7 +137,7 @@ public final class UDHelper
         try
         {
             return (DataType) methodParseOne.invoke(abstractTypeDef,
-                                                    
ProtocolVersion.fromInt(Server.CURRENT_VERSION),
+                                                    
com.datastax.driver.core.ProtocolVersion.fromInt(ProtocolVersion.CURRENT.asInt()),
                                                     codecRegistry);
         }
         catch (RuntimeException | Error e)
@@ -152,17 +151,17 @@ public final class UDHelper
         }
     }
 
-    public static Object deserialize(TypeCodec<?> codec, int protocolVersion, 
ByteBuffer value)
+    public static Object deserialize(TypeCodec<?> codec, ProtocolVersion 
protocolVersion, ByteBuffer value)
     {
-        return codec.deserialize(value, 
ProtocolVersion.fromInt(protocolVersion));
+        return codec.deserialize(value, 
com.datastax.driver.core.ProtocolVersion.fromInt(protocolVersion.asInt()));
     }
 
-    public static ByteBuffer serialize(TypeCodec<?> codec, int 
protocolVersion, Object value)
+    public static ByteBuffer serialize(TypeCodec<?> codec, ProtocolVersion 
protocolVersion, Object value)
     {
         if 
(!codec.getJavaType().getRawType().isAssignableFrom(value.getClass()))
             throw new InvalidTypeException("Invalid value for CQL type " + 
codec.getCqlType().getName().toString());
 
-        return ((TypeCodec)codec).serialize(value, 
ProtocolVersion.fromInt(protocolVersion));
+        return ((TypeCodec)codec).serialize(value, 
com.datastax.driver.core.ProtocolVersion.fromInt(protocolVersion.asInt()));
     }
 
     public static Class<?> asJavaClass(TypeCodec<?> codec)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/functions/UuidFcts.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/functions/UuidFcts.java 
b/src/java/org/apache/cassandra/cql3/functions/UuidFcts.java
index 32adbdc..3d82ece 100644
--- a/src/java/org/apache/cassandra/cql3/functions/UuidFcts.java
+++ b/src/java/org/apache/cassandra/cql3/functions/UuidFcts.java
@@ -22,6 +22,7 @@ import java.util.*;
 
 import org.apache.cassandra.db.marshal.UUIDType;
 import org.apache.cassandra.serializers.UUIDSerializer;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 public abstract class UuidFcts
 {
@@ -32,7 +33,7 @@ public abstract class UuidFcts
 
     public static final Function uuidFct = new NativeScalarFunction("uuid", 
UUIDType.instance)
     {
-        public ByteBuffer execute(int protocolVersion, List<ByteBuffer> 
parameters)
+        public ByteBuffer execute(ProtocolVersion protocolVersion, 
List<ByteBuffer> parameters)
         {
             return UUIDSerializer.instance.serialize(UUID.randomUUID());
         }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/selection/AggregateFunctionSelector.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/selection/AggregateFunctionSelector.java 
b/src/java/org/apache/cassandra/cql3/selection/AggregateFunctionSelector.java
index d768665..e3e5328 100644
--- 
a/src/java/org/apache/cassandra/cql3/selection/AggregateFunctionSelector.java
+++ 
b/src/java/org/apache/cassandra/cql3/selection/AggregateFunctionSelector.java
@@ -24,6 +24,7 @@ import org.apache.cassandra.cql3.functions.AggregateFunction;
 import org.apache.cassandra.cql3.functions.Function;
 import org.apache.cassandra.cql3.selection.Selection.ResultSetBuilder;
 import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 final class AggregateFunctionSelector extends 
AbstractFunctionSelector<AggregateFunction>
 {
@@ -34,7 +35,7 @@ final class AggregateFunctionSelector extends 
AbstractFunctionSelector<Aggregate
         return true;
     }
 
-    public void addInput(int protocolVersion, ResultSetBuilder rs) throws 
InvalidRequestException
+    public void addInput(ProtocolVersion protocolVersion, ResultSetBuilder rs) 
throws InvalidRequestException
     {
         // Aggregation of aggregation is not supported
         for (int i = 0, m = argSelectors.size(); i < m; i++)
@@ -47,7 +48,7 @@ final class AggregateFunctionSelector extends 
AbstractFunctionSelector<Aggregate
         this.aggregate.addInput(protocolVersion, args());
     }
 
-    public ByteBuffer getOutput(int protocolVersion) throws 
InvalidRequestException
+    public ByteBuffer getOutput(ProtocolVersion protocolVersion) throws 
InvalidRequestException
     {
         return aggregate.compute(protocolVersion);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/selection/FieldSelector.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/selection/FieldSelector.java 
b/src/java/org/apache/cassandra/cql3/selection/FieldSelector.java
index 687b4c7..d4b74ae 100644
--- a/src/java/org/apache/cassandra/cql3/selection/FieldSelector.java
+++ b/src/java/org/apache/cassandra/cql3/selection/FieldSelector.java
@@ -25,6 +25,7 @@ import 
org.apache.cassandra.cql3.selection.Selection.ResultSetBuilder;
 import org.apache.cassandra.db.marshal.AbstractType;
 import org.apache.cassandra.db.marshal.UserType;
 import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 final class FieldSelector extends Selector
 {
@@ -63,12 +64,12 @@ final class FieldSelector extends Selector
         };
     }
 
-    public void addInput(int protocolVersion, ResultSetBuilder rs) throws 
InvalidRequestException
+    public void addInput(ProtocolVersion protocolVersion, ResultSetBuilder rs) 
throws InvalidRequestException
     {
         selected.addInput(protocolVersion, rs);
     }
 
-    public ByteBuffer getOutput(int protocolVersion) throws 
InvalidRequestException
+    public ByteBuffer getOutput(ProtocolVersion protocolVersion) throws 
InvalidRequestException
     {
         ByteBuffer value = selected.getOutput(protocolVersion);
         if (value == null)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/selection/ScalarFunctionSelector.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/selection/ScalarFunctionSelector.java 
b/src/java/org/apache/cassandra/cql3/selection/ScalarFunctionSelector.java
index 50175c1..c05cdaa 100644
--- a/src/java/org/apache/cassandra/cql3/selection/ScalarFunctionSelector.java
+++ b/src/java/org/apache/cassandra/cql3/selection/ScalarFunctionSelector.java
@@ -24,6 +24,7 @@ import org.apache.cassandra.cql3.functions.Function;
 import org.apache.cassandra.cql3.functions.ScalarFunction;
 import org.apache.cassandra.cql3.selection.Selection.ResultSetBuilder;
 import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 final class ScalarFunctionSelector extends 
AbstractFunctionSelector<ScalarFunction>
 {
@@ -36,7 +37,7 @@ final class ScalarFunctionSelector extends 
AbstractFunctionSelector<ScalarFuncti
         return argSelectors.get(0).isAggregate();
     }
 
-    public void addInput(int protocolVersion, ResultSetBuilder rs) throws 
InvalidRequestException
+    public void addInput(ProtocolVersion protocolVersion, ResultSetBuilder rs) 
throws InvalidRequestException
     {
         for (int i = 0, m = argSelectors.size(); i < m; i++)
         {
@@ -49,7 +50,7 @@ final class ScalarFunctionSelector extends 
AbstractFunctionSelector<ScalarFuncti
     {
     }
 
-    public ByteBuffer getOutput(int protocolVersion) throws 
InvalidRequestException
+    public ByteBuffer getOutput(ProtocolVersion protocolVersion) throws 
InvalidRequestException
     {
         for (int i = 0, m = argSelectors.size(); i < m; i++)
         {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/selection/Selection.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/selection/Selection.java 
b/src/java/org/apache/cassandra/cql3/selection/Selection.java
index f43cb94..0d76b4e 100644
--- a/src/java/org/apache/cassandra/cql3/selection/Selection.java
+++ b/src/java/org/apache/cassandra/cql3/selection/Selection.java
@@ -37,6 +37,7 @@ import org.apache.cassandra.db.context.CounterContext;
 import org.apache.cassandra.db.marshal.UTF8Type;
 import org.apache.cassandra.db.rows.Cell;
 import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public abstract class Selection
@@ -267,7 +268,7 @@ public abstract class Selection
                           .toString();
     }
 
-    public static List<ByteBuffer> rowToJson(List<ByteBuffer> row, int 
protocolVersion, ResultSet.ResultMetadata metadata)
+    public static List<ByteBuffer> rowToJson(List<ByteBuffer> row, 
ProtocolVersion protocolVersion, ResultSet.ResultMetadata metadata)
     {
         StringBuilder sb = new StringBuilder("{");
         for (int i = 0; i < metadata.names.size(); i++)
@@ -296,7 +297,7 @@ public abstract class Selection
     public class ResultSetBuilder
     {
         private final ResultSet resultSet;
-        private final int protocolVersion;
+        private final ProtocolVersion protocolVersion;
 
         /**
          * As multiple thread can access a <code>Selection</code> instance 
each <code>ResultSetBuilder</code> will use
@@ -439,12 +440,13 @@ public abstract class Selection
         /**
          * Adds the current row of the specified <code>ResultSetBuilder</code>.
          *
+         * @param protocolVersion
          * @param rs the <code>ResultSetBuilder</code>
          * @throws InvalidRequestException
          */
-        public void addInputRow(int protocolVersion, ResultSetBuilder rs) 
throws InvalidRequestException;
+        public void addInputRow(ProtocolVersion protocolVersion, 
ResultSetBuilder rs) throws InvalidRequestException;
 
-        public List<ByteBuffer> getOutputRow(int protocolVersion) throws 
InvalidRequestException;
+        public List<ByteBuffer> getOutputRow(ProtocolVersion protocolVersion) 
throws InvalidRequestException;
 
         public void reset();
     }
@@ -495,12 +497,12 @@ public abstract class Selection
                     current = null;
                 }
 
-                public List<ByteBuffer> getOutputRow(int protocolVersion)
+                public List<ByteBuffer> getOutputRow(ProtocolVersion 
protocolVersion)
                 {
                     return current;
                 }
 
-                public void addInputRow(int protocolVersion, ResultSetBuilder 
rs) throws InvalidRequestException
+                public void addInputRow(ProtocolVersion protocolVersion, 
ResultSetBuilder rs) throws InvalidRequestException
                 {
                     current = rs.current;
                 }
@@ -582,7 +584,7 @@ public abstract class Selection
                     return factories.doesAggregation();
                 }
 
-                public List<ByteBuffer> getOutputRow(int protocolVersion) 
throws InvalidRequestException
+                public List<ByteBuffer> getOutputRow(ProtocolVersion 
protocolVersion) throws InvalidRequestException
                 {
                     List<ByteBuffer> outputRow = new 
ArrayList<>(selectors.size());
 
@@ -592,7 +594,7 @@ public abstract class Selection
                     return outputRow;
                 }
 
-                public void addInputRow(int protocolVersion, ResultSetBuilder 
rs) throws InvalidRequestException
+                public void addInputRow(ProtocolVersion protocolVersion, 
ResultSetBuilder rs) throws InvalidRequestException
                 {
                     for (Selector selector : selectors)
                         selector.addInput(protocolVersion, rs);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/selection/Selector.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/selection/Selector.java 
b/src/java/org/apache/cassandra/cql3/selection/Selector.java
index b38dcbd..922b57f 100644
--- a/src/java/org/apache/cassandra/cql3/selection/Selector.java
+++ b/src/java/org/apache/cassandra/cql3/selection/Selector.java
@@ -28,6 +28,7 @@ import org.apache.cassandra.cql3.functions.Function;
 import org.apache.cassandra.cql3.selection.Selection.ResultSetBuilder;
 import org.apache.cassandra.db.marshal.AbstractType;
 import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 /**
  * A <code>Selector</code> is used to convert the data returned by the storage 
engine into the data requested by the
@@ -152,7 +153,7 @@ public abstract class Selector
      * @param rs the <code>ResultSetBuilder</code>
      * @throws InvalidRequestException if a problem occurs while add the input 
value
      */
-    public abstract void addInput(int protocolVersion, ResultSetBuilder rs) 
throws InvalidRequestException;
+    public abstract void addInput(ProtocolVersion protocolVersion, 
ResultSetBuilder rs) throws InvalidRequestException;
 
     /**
      * Returns the selector output.
@@ -161,7 +162,7 @@ public abstract class Selector
      * @return the selector output
      * @throws InvalidRequestException if a problem occurs while computing the 
output value
      */
-    public abstract ByteBuffer getOutput(int protocolVersion) throws 
InvalidRequestException;
+    public abstract ByteBuffer getOutput(ProtocolVersion protocolVersion) 
throws InvalidRequestException;
 
     /**
      * Returns the <code>Selector</code> output type.

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/selection/SimpleSelector.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/selection/SimpleSelector.java 
b/src/java/org/apache/cassandra/cql3/selection/SimpleSelector.java
index e14cd5c..8d5a305 100644
--- a/src/java/org/apache/cassandra/cql3/selection/SimpleSelector.java
+++ b/src/java/org/apache/cassandra/cql3/selection/SimpleSelector.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.cql3.QueryOptions;
 import org.apache.cassandra.cql3.selection.Selection.ResultSetBuilder;
 import org.apache.cassandra.db.marshal.AbstractType;
 import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 public final class SimpleSelector extends Selector
 {
@@ -70,7 +71,7 @@ public final class SimpleSelector extends Selector
     }
 
     @Override
-    public void addInput(int protocolVersion, ResultSetBuilder rs) throws 
InvalidRequestException
+    public void addInput(ProtocolVersion protocolVersion, ResultSetBuilder rs) 
throws InvalidRequestException
     {
         if (!isSet)
         {
@@ -80,7 +81,7 @@ public final class SimpleSelector extends Selector
     }
 
     @Override
-    public ByteBuffer getOutput(int protocolVersion) throws 
InvalidRequestException
+    public ByteBuffer getOutput(ProtocolVersion protocolVersion) throws 
InvalidRequestException
     {
         return current;
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/selection/TermSelector.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/selection/TermSelector.java 
b/src/java/org/apache/cassandra/cql3/selection/TermSelector.java
index 539826a..2b0e975 100644
--- a/src/java/org/apache/cassandra/cql3/selection/TermSelector.java
+++ b/src/java/org/apache/cassandra/cql3/selection/TermSelector.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.cql3.QueryOptions;
 import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.db.marshal.AbstractType;
 import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 /**
  * Selector representing a simple term (literals or bound variables).
@@ -69,11 +70,11 @@ public class TermSelector extends Selector
         this.type = type;
     }
 
-    public void addInput(int protocolVersion, Selection.ResultSetBuilder rs) 
throws InvalidRequestException
+    public void addInput(ProtocolVersion protocolVersion, 
Selection.ResultSetBuilder rs) throws InvalidRequestException
     {
     }
 
-    public ByteBuffer getOutput(int protocolVersion) throws 
InvalidRequestException
+    public ByteBuffer getOutput(ProtocolVersion protocolVersion) throws 
InvalidRequestException
     {
         return value;
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/selection/WritetimeOrTTLSelector.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/selection/WritetimeOrTTLSelector.java 
b/src/java/org/apache/cassandra/cql3/selection/WritetimeOrTTLSelector.java
index 78380d7..939f8c2 100644
--- a/src/java/org/apache/cassandra/cql3/selection/WritetimeOrTTLSelector.java
+++ b/src/java/org/apache/cassandra/cql3/selection/WritetimeOrTTLSelector.java
@@ -26,6 +26,7 @@ import 
org.apache.cassandra.cql3.selection.Selection.ResultSetBuilder;
 import org.apache.cassandra.db.marshal.AbstractType;
 import org.apache.cassandra.db.marshal.Int32Type;
 import org.apache.cassandra.db.marshal.LongType;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 final class WritetimeOrTTLSelector extends Selector
@@ -72,7 +73,7 @@ final class WritetimeOrTTLSelector extends Selector
         };
     }
 
-    public void addInput(int protocolVersion, ResultSetBuilder rs)
+    public void addInput(ProtocolVersion protocolVersion, ResultSetBuilder rs)
     {
         if (isSet)
             return;
@@ -91,7 +92,7 @@ final class WritetimeOrTTLSelector extends Selector
         }
     }
 
-    public ByteBuffer getOutput(int protocolVersion)
+    public ByteBuffer getOutput(ProtocolVersion protocolVersion)
     {
         return current;
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/statements/CreateAggregateStatement.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/CreateAggregateStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/CreateAggregateStatement.java
index 98e2433..eaba03b 100644
--- 
a/src/java/org/apache/cassandra/cql3/statements/CreateAggregateStatement.java
+++ 
b/src/java/org/apache/cassandra/cql3/statements/CreateAggregateStatement.java
@@ -36,7 +36,7 @@ import org.apache.cassandra.service.MigrationManager;
 import org.apache.cassandra.service.QueryState;
 import org.apache.cassandra.thrift.ThriftValidation;
 import org.apache.cassandra.transport.Event;
-import org.apache.cassandra.transport.Server;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 /**
  * A {@code CREATE AGGREGATE} statement parsed from a CQL query.
@@ -129,7 +129,7 @@ public final class CreateAggregateStatement extends 
SchemaAlteringStatement
             }
 
             // Sanity check that converts the initcond to a CQL literal and 
parse it back to avoid getting in CASSANDRA-11064.
-            String initcondAsCql = 
stateType.asCQL3Type().toCQLLiteral(initcond, Server.CURRENT_VERSION);
+            String initcondAsCql = 
stateType.asCQL3Type().toCQLLiteral(initcond, ProtocolVersion.CURRENT);
             assert Objects.equals(initcond, 
Terms.asBytes(functionName.keyspace, initcondAsCql, stateType));
 
             if (Constants.NULL_LITERAL != ival && 
UDHelper.isNullOrEmpty(stateType, initcond))

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index 6229383..038d4bd 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -56,6 +56,7 @@ import 
org.apache.cassandra.service.pager.AggregationQueryPager;
 import org.apache.cassandra.service.pager.PagingState;
 import org.apache.cassandra.service.pager.QueryPager;
 import org.apache.cassandra.thrift.ThriftValidation;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.transport.messages.ResultMessage;
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.FBUtilities;
@@ -785,7 +786,7 @@ public class SelectStatement implements CQLStatement
     void processPartition(RowIterator partition, QueryOptions options, 
Selection.ResultSetBuilder result, int nowInSec)
     throws InvalidRequestException
     {
-        int protocolVersion = options.getProtocolVersion();
+        ProtocolVersion protocolVersion = options.getProtocolVersion();
 
         ByteBuffer[] keyComponents = getComponents(cfm, 
partition.partitionKey());
 
@@ -842,7 +843,7 @@ public class SelectStatement implements CQLStatement
         }
     }
 
-    private static void addValue(Selection.ResultSetBuilder result, 
ColumnDefinition def, Row row, int nowInSec, int protocolVersion)
+    private static void addValue(Selection.ResultSetBuilder result, 
ColumnDefinition def, Row row, int nowInSec, ProtocolVersion protocolVersion)
     {
         if (def.isComplex())
         {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/PartitionRangeReadCommand.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/PartitionRangeReadCommand.java 
b/src/java/org/apache/cassandra/db/PartitionRangeReadCommand.java
index 9e7a9d0..50b568e 100644
--- a/src/java/org/apache/cassandra/db/PartitionRangeReadCommand.java
+++ b/src/java/org/apache/cassandra/db/PartitionRangeReadCommand.java
@@ -46,6 +46,7 @@ import org.apache.cassandra.service.StorageProxy;
 import org.apache.cassandra.service.pager.*;
 import org.apache.cassandra.thrift.ThriftResultsMerger;
 import org.apache.cassandra.tracing.Tracing;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.FBUtilities;
 
 /**
@@ -184,7 +185,7 @@ public class PartitionRangeReadCommand extends ReadCommand
         return StorageProxy.getRangeSlice(this, consistency, 
queryStartNanoTime);
     }
 
-    public QueryPager getPager(PagingState pagingState, int protocolVersion)
+    public QueryPager getPager(PagingState pagingState, ProtocolVersion 
protocolVersion)
     {
             return new PartitionRangeQueryPager(this, pagingState, 
protocolVersion);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/ReadQuery.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ReadQuery.java 
b/src/java/org/apache/cassandra/db/ReadQuery.java
index c6b2b3e..409cbdb 100644
--- a/src/java/org/apache/cassandra/db/ReadQuery.java
+++ b/src/java/org/apache/cassandra/db/ReadQuery.java
@@ -23,6 +23,7 @@ import 
org.apache.cassandra.exceptions.RequestExecutionException;
 import org.apache.cassandra.service.ClientState;
 import org.apache.cassandra.service.pager.QueryPager;
 import org.apache.cassandra.service.pager.PagingState;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 /**
  * Generic abstraction for read queries.
@@ -63,7 +64,7 @@ public interface ReadQuery
             return DataLimits.cqlLimits(0);
         }
 
-        public QueryPager getPager(PagingState state, int protocolVersion)
+        public QueryPager getPager(PagingState state, ProtocolVersion 
protocolVersion)
         {
             return QueryPager.EMPTY;
         }
@@ -127,7 +128,7 @@ public interface ReadQuery
      *
      * @return a pager for the query.
      */
-    public QueryPager getPager(PagingState pagingState, int protocolVersion);
+    public QueryPager getPager(PagingState pagingState, ProtocolVersion 
protocolVersion);
 
     /**
      * The limits for the query.

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java 
b/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java
index 02f6be8..d87d277 100644
--- a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java
+++ b/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java
@@ -54,6 +54,7 @@ import org.apache.cassandra.service.StorageProxy;
 import org.apache.cassandra.service.pager.*;
 import org.apache.cassandra.thrift.ThriftResultsMerger;
 import org.apache.cassandra.tracing.Tracing;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.FBUtilities;
 import org.apache.cassandra.utils.SearchIterator;
 import org.apache.cassandra.utils.btree.BTreeSet;
@@ -351,12 +352,12 @@ public class SinglePartitionReadCommand extends 
ReadCommand
         return StorageProxy.read(Group.one(this), consistency, clientState, 
queryStartNanoTime);
     }
 
-    public SinglePartitionPager getPager(PagingState pagingState, int 
protocolVersion)
+    public SinglePartitionPager getPager(PagingState pagingState, 
ProtocolVersion protocolVersion)
     {
         return getPager(this, pagingState, protocolVersion);
     }
 
-    private static SinglePartitionPager getPager(SinglePartitionReadCommand 
command, PagingState pagingState, int protocolVersion)
+    private static SinglePartitionPager getPager(SinglePartitionReadCommand 
command, PagingState pagingState, ProtocolVersion protocolVersion)
     {
         return new SinglePartitionPager(command, pagingState, protocolVersion);
     }
@@ -1051,7 +1052,7 @@ public class SinglePartitionReadCommand extends 
ReadCommand
             return 
UnfilteredPartitionIterators.concat(partitions.stream().map(p -> 
p.getRight()).collect(Collectors.toList()));
         }
 
-        public QueryPager getPager(PagingState pagingState, int 
protocolVersion)
+        public QueryPager getPager(PagingState pagingState, ProtocolVersion 
protocolVersion)
         {
             if (commands.size() == 1)
                 return SinglePartitionReadCommand.getPager(commands.get(0), 
pagingState, protocolVersion);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/SystemKeyspace.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/SystemKeyspace.java 
b/src/java/org/apache/cassandra/db/SystemKeyspace.java
index 05b7ac9..7f6b6ab 100644
--- a/src/java/org/apache/cassandra/db/SystemKeyspace.java
+++ b/src/java/org/apache/cassandra/db/SystemKeyspace.java
@@ -61,7 +61,7 @@ import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.service.paxos.Commit;
 import org.apache.cassandra.service.paxos.PaxosState;
 import org.apache.cassandra.thrift.cassandraConstants;
-import org.apache.cassandra.transport.Server;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.*;
 
 import static java.util.Collections.emptyMap;
@@ -518,7 +518,7 @@ public final class SystemKeyspace
                             FBUtilities.getReleaseVersionString(),
                             QueryProcessor.CQL_VERSION.toString(),
                             cassandraConstants.VERSION,
-                            String.valueOf(Server.CURRENT_VERSION),
+                            String.valueOf(ProtocolVersion.CURRENT.asInt()),
                             
snitch.getDatacenter(FBUtilities.getBroadcastAddress()),
                             snitch.getRack(FBUtilities.getBroadcastAddress()),
                             
DatabaseDescriptor.getPartitioner().getClass().getName(),

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/AbstractCompositeType.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/db/marshal/AbstractCompositeType.java 
b/src/java/org/apache/cassandra/db/marshal/AbstractCompositeType.java
index e0b365f..9eb5d82 100644
--- a/src/java/org/apache/cassandra/db/marshal/AbstractCompositeType.java
+++ b/src/java/org/apache/cassandra/db/marshal/AbstractCompositeType.java
@@ -27,6 +27,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.BytesSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 /**
@@ -251,7 +252,7 @@ public abstract class AbstractCompositeType extends 
AbstractType<ByteBuffer>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         throw new UnsupportedOperationException();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/AbstractType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/AbstractType.java 
b/src/java/org/apache/cassandra/db/marshal/AbstractType.java
index 8cd40cb..37a1959 100644
--- a/src/java/org/apache/cassandra/db/marshal/AbstractType.java
+++ b/src/java/org/apache/cassandra/db/marshal/AbstractType.java
@@ -39,6 +39,7 @@ import org.apache.cassandra.exceptions.SyntaxException;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.MarshalException;
 
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.FastByteOperations;
 import org.github.jamm.Unmetered;
 import org.apache.cassandra.io.util.DataOutputPlus;
@@ -141,7 +142,7 @@ public abstract class AbstractType<T> implements 
Comparator<ByteBuffer>, Assignm
     public abstract Term fromJSONObject(Object parsed) throws MarshalException;
 
     /** Converts a value to a JSON string. */
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return '"' + getSerializer().deserialize(buffer).toString() + '"';
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/AsciiType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/AsciiType.java 
b/src/java/org/apache/cassandra/db/marshal/AsciiType.java
index 69b2b01..089e388 100644
--- a/src/java/org/apache/cassandra/db/marshal/AsciiType.java
+++ b/src/java/org/apache/cassandra/db/marshal/AsciiType.java
@@ -31,6 +31,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.MarshalException;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.AsciiSerializer;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class AsciiType extends AbstractType<String>
@@ -79,7 +80,7 @@ public class AsciiType extends AbstractType<String>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         try
         {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/BooleanType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/BooleanType.java 
b/src/java/org/apache/cassandra/db/marshal/BooleanType.java
index 24d0632..1dbd1af 100644
--- a/src/java/org/apache/cassandra/db/marshal/BooleanType.java
+++ b/src/java/org/apache/cassandra/db/marshal/BooleanType.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.BooleanSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -80,7 +81,7 @@ public class BooleanType extends AbstractType<Boolean>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return getSerializer().deserialize(buffer).toString();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/ByteType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/ByteType.java 
b/src/java/org/apache/cassandra/db/marshal/ByteType.java
index 6bcf7cb..55aea8f 100644
--- a/src/java/org/apache/cassandra/db/marshal/ByteType.java
+++ b/src/java/org/apache/cassandra/db/marshal/ByteType.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.ByteSerializer;
 import org.apache.cassandra.serializers.MarshalException;
 import org.apache.cassandra.serializers.TypeSerializer;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class ByteType extends AbstractType<Byte>
@@ -71,7 +72,7 @@ public class ByteType extends AbstractType<Byte>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return getSerializer().deserialize(buffer).toString();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/BytesType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/BytesType.java 
b/src/java/org/apache/cassandra/db/marshal/BytesType.java
index cec20f4..cabd007 100644
--- a/src/java/org/apache/cassandra/db/marshal/BytesType.java
+++ b/src/java/org/apache/cassandra/db/marshal/BytesType.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.BytesSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.Hex;
 
@@ -64,7 +65,7 @@ public class BytesType extends AbstractType<ByteBuffer>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return "\"0x" + ByteBufferUtil.bytesToHex(buffer) + '"';
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/CollectionType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/CollectionType.java 
b/src/java/org/apache/cassandra/db/marshal/CollectionType.java
index 2f5cbb6..6e7d5d7 100644
--- a/src/java/org/apache/cassandra/db/marshal/CollectionType.java
+++ b/src/java/org/apache/cassandra/db/marshal/CollectionType.java
@@ -33,6 +33,7 @@ import org.apache.cassandra.io.util.DataInputPlus;
 import org.apache.cassandra.io.util.DataOutputPlus;
 import org.apache.cassandra.serializers.CollectionSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 /**
@@ -144,7 +145,7 @@ public abstract class CollectionType<T> extends 
AbstractType<T>
         return values.size();
     }
 
-    public ByteBuffer serializeForNativeProtocol(Iterator<Cell> cells, int 
version)
+    public ByteBuffer serializeForNativeProtocol(Iterator<Cell> cells, 
ProtocolVersion version)
     {
         assert isMultiCell();
         List<ByteBuffer> values = serializedValues(cells);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/ColumnToCollectionType.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/db/marshal/ColumnToCollectionType.java 
b/src/java/org/apache/cassandra/db/marshal/ColumnToCollectionType.java
index 96efa24..de50446 100644
--- a/src/java/org/apache/cassandra/db/marshal/ColumnToCollectionType.java
+++ b/src/java/org/apache/cassandra/db/marshal/ColumnToCollectionType.java
@@ -29,6 +29,7 @@ import org.apache.cassandra.exceptions.SyntaxException;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.BytesSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 /*
@@ -103,7 +104,7 @@ public class ColumnToCollectionType extends 
AbstractType<ByteBuffer>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         throw new UnsupportedOperationException();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/CounterColumnType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/CounterColumnType.java 
b/src/java/org/apache/cassandra/db/marshal/CounterColumnType.java
index 18ff256..8bb1a25 100644
--- a/src/java/org/apache/cassandra/db/marshal/CounterColumnType.java
+++ b/src/java/org/apache/cassandra/db/marshal/CounterColumnType.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.db.context.CounterContext;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.CounterSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class CounterColumnType extends AbstractType<Long>
@@ -78,7 +79,7 @@ public class CounterColumnType extends AbstractType<Long>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return CounterSerializer.instance.deserialize(buffer).toString();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/DateType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/DateType.java 
b/src/java/org/apache/cassandra/db/marshal/DateType.java
index dee800e..87b2cad 100644
--- a/src/java/org/apache/cassandra/db/marshal/DateType.java
+++ b/src/java/org/apache/cassandra/db/marshal/DateType.java
@@ -29,6 +29,7 @@ import org.apache.cassandra.cql3.CQL3Type;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.TimestampSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 /**
@@ -77,7 +78,7 @@ public class DateType extends AbstractType<Date>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return '"' + 
TimestampSerializer.getJsonDateFormatter().format(TimestampSerializer.instance.deserialize(buffer))
 + '"';
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/DecimalType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/DecimalType.java 
b/src/java/org/apache/cassandra/db/marshal/DecimalType.java
index 17d91d3..f1586e0 100644
--- a/src/java/org/apache/cassandra/db/marshal/DecimalType.java
+++ b/src/java/org/apache/cassandra/db/marshal/DecimalType.java
@@ -26,6 +26,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.DecimalSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class DecimalType extends AbstractType<BigDecimal>
@@ -80,7 +81,7 @@ public class DecimalType extends AbstractType<BigDecimal>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return getSerializer().deserialize(buffer).toString();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/DoubleType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/DoubleType.java 
b/src/java/org/apache/cassandra/db/marshal/DoubleType.java
index a84bdec..d2309ee 100644
--- a/src/java/org/apache/cassandra/db/marshal/DoubleType.java
+++ b/src/java/org/apache/cassandra/db/marshal/DoubleType.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.DoubleSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class DoubleType extends AbstractType<Double>
@@ -83,7 +84,7 @@ public class DoubleType extends AbstractType<Double>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return getSerializer().deserialize(buffer).toString();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/DurationType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/DurationType.java 
b/src/java/org/apache/cassandra/db/marshal/DurationType.java
index e6e1415..e29265a 100644
--- a/src/java/org/apache/cassandra/db/marshal/DurationType.java
+++ b/src/java/org/apache/cassandra/db/marshal/DurationType.java
@@ -26,6 +26,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.DurationSerializer;
 import org.apache.cassandra.serializers.MarshalException;
 import org.apache.cassandra.serializers.TypeSerializer;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 /**
@@ -70,7 +71,7 @@ public class DurationType extends AbstractType<Duration>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return getSerializer().deserialize(buffer).toString();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java 
b/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java
index 52a1626..d314bd9 100644
--- a/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java
+++ b/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java
@@ -30,6 +30,7 @@ import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.exceptions.SyntaxException;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 /*
@@ -382,7 +383,7 @@ public class DynamicCompositeType extends 
AbstractCompositeType
         }
 
         @Override
-        public String toJSONString(ByteBuffer buffer, int protocolVersion)
+        public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
         {
             throw new UnsupportedOperationException();
         }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/FloatType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/FloatType.java 
b/src/java/org/apache/cassandra/db/marshal/FloatType.java
index 86164b0..5445bbc 100644
--- a/src/java/org/apache/cassandra/db/marshal/FloatType.java
+++ b/src/java/org/apache/cassandra/db/marshal/FloatType.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.FloatSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 
@@ -82,7 +83,7 @@ public class FloatType extends AbstractType<Float>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return getSerializer().deserialize(buffer).toString();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/FrozenType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/FrozenType.java 
b/src/java/org/apache/cassandra/db/marshal/FrozenType.java
index 261e789..6cabb53 100644
--- a/src/java/org/apache/cassandra/db/marshal/FrozenType.java
+++ b/src/java/org/apache/cassandra/db/marshal/FrozenType.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.exceptions.SyntaxException;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 /**
  * A fake type that is only used for parsing type strings that include frozen 
types.
@@ -61,7 +62,7 @@ public class FrozenType extends AbstractType<Void>
         throw new UnsupportedOperationException();
     }
 
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         throw new UnsupportedOperationException();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/InetAddressType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/InetAddressType.java 
b/src/java/org/apache/cassandra/db/marshal/InetAddressType.java
index 7ffb9c7..052986c 100644
--- a/src/java/org/apache/cassandra/db/marshal/InetAddressType.java
+++ b/src/java/org/apache/cassandra/db/marshal/InetAddressType.java
@@ -26,6 +26,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.InetAddressSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class InetAddressType extends AbstractType<InetAddress>
@@ -74,7 +75,7 @@ public class InetAddressType extends AbstractType<InetAddress>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return '"' + getSerializer().deserialize(buffer).getHostAddress() + 
'"';
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/Int32Type.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/Int32Type.java 
b/src/java/org/apache/cassandra/db/marshal/Int32Type.java
index 770a76d..1c8c93e 100644
--- a/src/java/org/apache/cassandra/db/marshal/Int32Type.java
+++ b/src/java/org/apache/cassandra/db/marshal/Int32Type.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.Int32Serializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class Int32Type extends AbstractType<Integer>
@@ -95,7 +96,7 @@ public class Int32Type extends AbstractType<Integer>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return getSerializer().deserialize(buffer).toString();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/IntegerType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/IntegerType.java 
b/src/java/org/apache/cassandra/db/marshal/IntegerType.java
index 8f4ba44..944a231 100644
--- a/src/java/org/apache/cassandra/db/marshal/IntegerType.java
+++ b/src/java/org/apache/cassandra/db/marshal/IntegerType.java
@@ -26,6 +26,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.IntegerSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public final class IntegerType extends AbstractType<BigInteger>
@@ -163,7 +164,7 @@ public final class IntegerType extends 
AbstractType<BigInteger>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return getSerializer().deserialize(buffer).toString();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/ListType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/ListType.java 
b/src/java/org/apache/cassandra/db/marshal/ListType.java
index b2d5005..e4c20e2 100644
--- a/src/java/org/apache/cassandra/db/marshal/ListType.java
+++ b/src/java/org/apache/cassandra/db/marshal/ListType.java
@@ -29,6 +29,7 @@ import org.apache.cassandra.exceptions.SyntaxException;
 import org.apache.cassandra.serializers.CollectionSerializer;
 import org.apache.cassandra.serializers.MarshalException;
 import org.apache.cassandra.serializers.ListSerializer;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -162,13 +163,13 @@ public class ListType<T> extends CollectionType<List<T>>
         ByteBuffer bb1 = o1.duplicate();
         ByteBuffer bb2 = o2.duplicate();
 
-        int size1 = CollectionSerializer.readCollectionSize(bb1, 3);
-        int size2 = CollectionSerializer.readCollectionSize(bb2, 3);
+        int size1 = CollectionSerializer.readCollectionSize(bb1, 
ProtocolVersion.V3);
+        int size2 = CollectionSerializer.readCollectionSize(bb2, 
ProtocolVersion.V3);
 
         for (int i = 0; i < Math.min(size1, size2); i++)
         {
-            ByteBuffer v1 = CollectionSerializer.readValue(bb1, 3);
-            ByteBuffer v2 = CollectionSerializer.readValue(bb2, 3);
+            ByteBuffer v1 = CollectionSerializer.readValue(bb1, 
ProtocolVersion.V3);
+            ByteBuffer v2 = CollectionSerializer.readValue(bb2, 
ProtocolVersion.V3);
             int cmp = elementsComparator.compare(v1, v2);
             if (cmp != 0)
                 return cmp;
@@ -223,7 +224,7 @@ public class ListType<T> extends CollectionType<List<T>>
         return new Lists.DelayedValue(terms);
     }
 
-    public static String setOrListToJsonString(ByteBuffer buffer, AbstractType 
elementsType, int protocolVersion)
+    public static String setOrListToJsonString(ByteBuffer buffer, AbstractType 
elementsType, ProtocolVersion protocolVersion)
     {
         StringBuilder sb = new StringBuilder("[");
         int size = CollectionSerializer.readCollectionSize(buffer, 
protocolVersion);
@@ -237,7 +238,7 @@ public class ListType<T> extends CollectionType<List<T>>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return setOrListToJsonString(buffer, elements, protocolVersion);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/LongType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/LongType.java 
b/src/java/org/apache/cassandra/db/marshal/LongType.java
index 8a1528a..c852461 100644
--- a/src/java/org/apache/cassandra/db/marshal/LongType.java
+++ b/src/java/org/apache/cassandra/db/marshal/LongType.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.LongSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class LongType extends AbstractType<Long>
@@ -97,7 +98,7 @@ public class LongType extends AbstractType<Long>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return getSerializer().deserialize(buffer).toString();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/MapType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/MapType.java 
b/src/java/org/apache/cassandra/db/marshal/MapType.java
index 542a330..48e90a0 100644
--- a/src/java/org/apache/cassandra/db/marshal/MapType.java
+++ b/src/java/org/apache/cassandra/db/marshal/MapType.java
@@ -29,7 +29,7 @@ import org.apache.cassandra.exceptions.SyntaxException;
 import org.apache.cassandra.serializers.CollectionSerializer;
 import org.apache.cassandra.serializers.MarshalException;
 import org.apache.cassandra.serializers.MapSerializer;
-import org.apache.cassandra.transport.Server;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.Pair;
 
 public class MapType<K, V> extends CollectionType<Map<K, V>>
@@ -170,7 +170,7 @@ public class MapType<K, V> extends CollectionType<Map<K, V>>
         ByteBuffer bb1 = o1.duplicate();
         ByteBuffer bb2 = o2.duplicate();
 
-        int protocolVersion = Server.VERSION_3;
+        ProtocolVersion protocolVersion = ProtocolVersion.V3;
         int size1 = CollectionSerializer.readCollectionSize(bb1, 
protocolVersion);
         int size2 = CollectionSerializer.readCollectionSize(bb2, 
protocolVersion);
 
@@ -256,7 +256,7 @@ public class MapType<K, V> extends CollectionType<Map<K, V>>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         StringBuilder sb = new StringBuilder("{");
         int size = CollectionSerializer.readCollectionSize(buffer, 
protocolVersion);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/PartitionerDefinedOrder.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/db/marshal/PartitionerDefinedOrder.java 
b/src/java/org/apache/cassandra/db/marshal/PartitionerDefinedOrder.java
index 02f01ae..397c3be 100644
--- a/src/java/org/apache/cassandra/db/marshal/PartitionerDefinedOrder.java
+++ b/src/java/org/apache/cassandra/db/marshal/PartitionerDefinedOrder.java
@@ -26,6 +26,7 @@ import org.apache.cassandra.db.PartitionPosition;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.MarshalException;
 import org.apache.cassandra.dht.IPartitioner;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.FBUtilities;
 
@@ -82,7 +83,7 @@ public class PartitionerDefinedOrder extends 
AbstractType<ByteBuffer>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         throw new UnsupportedOperationException();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/ReversedType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/ReversedType.java 
b/src/java/org/apache/cassandra/db/marshal/ReversedType.java
index 82a1895..0eb0046 100644
--- a/src/java/org/apache/cassandra/db/marshal/ReversedType.java
+++ b/src/java/org/apache/cassandra/db/marshal/ReversedType.java
@@ -28,6 +28,7 @@ import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.exceptions.SyntaxException;
 import org.apache.cassandra.serializers.MarshalException;
 import org.apache.cassandra.serializers.TypeSerializer;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 public class ReversedType<T> extends AbstractType<T>
 {
@@ -94,7 +95,7 @@ public class ReversedType<T> extends AbstractType<T>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return baseType.toJSONString(buffer, protocolVersion);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/SetType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/SetType.java 
b/src/java/org/apache/cassandra/db/marshal/SetType.java
index 98f9f7e..fdd29ec 100644
--- a/src/java/org/apache/cassandra/db/marshal/SetType.java
+++ b/src/java/org/apache/cassandra/db/marshal/SetType.java
@@ -28,6 +28,7 @@ import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.exceptions.SyntaxException;
 import org.apache.cassandra.serializers.MarshalException;
 import org.apache.cassandra.serializers.SetSerializer;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 public class SetType<T> extends CollectionType<Set<T>>
 {
@@ -187,7 +188,7 @@ public class SetType<T> extends CollectionType<Set<T>>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return ListType.setOrListToJsonString(buffer, elements, 
protocolVersion);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/ShortType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/ShortType.java 
b/src/java/org/apache/cassandra/db/marshal/ShortType.java
index 482fd81..7645ec6 100644
--- a/src/java/org/apache/cassandra/db/marshal/ShortType.java
+++ b/src/java/org/apache/cassandra/db/marshal/ShortType.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.MarshalException;
 import org.apache.cassandra.serializers.ShortSerializer;
 import org.apache.cassandra.serializers.TypeSerializer;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class ShortType extends AbstractType<Short>
@@ -75,7 +76,7 @@ public class ShortType extends AbstractType<Short>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return getSerializer().deserialize(buffer).toString();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/SimpleDateType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/SimpleDateType.java 
b/src/java/org/apache/cassandra/db/marshal/SimpleDateType.java
index 92b2dbd..9db5e36 100644
--- a/src/java/org/apache/cassandra/db/marshal/SimpleDateType.java
+++ b/src/java/org/apache/cassandra/db/marshal/SimpleDateType.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.MarshalException;
 import org.apache.cassandra.serializers.SimpleDateSerializer;
 import org.apache.cassandra.serializers.TypeSerializer;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class SimpleDateType extends AbstractType<Integer>
@@ -69,7 +70,7 @@ public class SimpleDateType extends AbstractType<Integer>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return '"' + 
SimpleDateSerializer.instance.toString(SimpleDateSerializer.instance.deserialize(buffer))
 + '"';
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/TimeType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/TimeType.java 
b/src/java/org/apache/cassandra/db/marshal/TimeType.java
index 9992a06..99f4f67 100644
--- a/src/java/org/apache/cassandra/db/marshal/TimeType.java
+++ b/src/java/org/apache/cassandra/db/marshal/TimeType.java
@@ -25,6 +25,7 @@ import org.apache.cassandra.serializers.TimeSerializer;
 import org.apache.cassandra.cql3.CQL3Type;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.transport.ProtocolVersion;
 
 /**
  * Nanosecond resolution time values
@@ -59,7 +60,7 @@ public class TimeType extends AbstractType<Long>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return '"' + 
TimeSerializer.instance.toString(TimeSerializer.instance.deserialize(buffer)) + 
'"';
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/TimestampType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/TimestampType.java 
b/src/java/org/apache/cassandra/db/marshal/TimestampType.java
index 45b08d9..953ae1b 100644
--- a/src/java/org/apache/cassandra/db/marshal/TimestampType.java
+++ b/src/java/org/apache/cassandra/db/marshal/TimestampType.java
@@ -28,6 +28,7 @@ import org.apache.cassandra.cql3.CQL3Type;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.MarshalException;
 import org.apache.cassandra.serializers.TimestampSerializer;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 /**
@@ -88,7 +89,7 @@ public class TimestampType extends AbstractType<Date>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         return '"' + 
TimestampSerializer.getJsonDateFormatter().format(TimestampSerializer.instance.deserialize(buffer))
 + '"';
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/TupleType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/TupleType.java 
b/src/java/org/apache/cassandra/db/marshal/TupleType.java
index f5e7867..60a63aa 100644
--- a/src/java/org/apache/cassandra/db/marshal/TupleType.java
+++ b/src/java/org/apache/cassandra/db/marshal/TupleType.java
@@ -32,6 +32,7 @@ import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.exceptions.InvalidRequestException;
 import org.apache.cassandra.exceptions.SyntaxException;
 import org.apache.cassandra.serializers.*;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 /**
@@ -330,7 +331,7 @@ public class TupleType extends AbstractType<ByteBuffer>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         StringBuilder sb = new StringBuilder("[");
         for (int i = 0; i < types.size(); i++)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0adc166/src/java/org/apache/cassandra/db/marshal/UTF8Type.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/UTF8Type.java 
b/src/java/org/apache/cassandra/db/marshal/UTF8Type.java
index 7c18ce5..1da6629 100644
--- a/src/java/org/apache/cassandra/db/marshal/UTF8Type.java
+++ b/src/java/org/apache/cassandra/db/marshal/UTF8Type.java
@@ -29,6 +29,7 @@ import org.apache.cassandra.cql3.Term;
 import org.apache.cassandra.serializers.MarshalException;
 import org.apache.cassandra.serializers.TypeSerializer;
 import org.apache.cassandra.serializers.UTF8Serializer;
+import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class UTF8Type extends AbstractType<String>
@@ -58,7 +59,7 @@ public class UTF8Type extends AbstractType<String>
     }
 
     @Override
-    public String toJSONString(ByteBuffer buffer, int protocolVersion)
+    public String toJSONString(ByteBuffer buffer, ProtocolVersion 
protocolVersion)
     {
         try
         {

Reply via email to