You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ee...@apache.org on 2011/09/02 22:27:03 UTC
svn commit: r1164694 - in /cassandra/trunk/src/java/org/apache/cassandra:
cql/term/ db/marshal/
Author: eevans
Date: Fri Sep 2 20:27:03 2011
New Revision: 1164694
URL: http://svn.apache.org/viewvc?rev=1164694&view=rev
Log:
make better reuse of new classes
Patch by eevans; reviewed by Rick Shaw for CASSANDRA-2936
Modified:
cassandra/trunk/src/java/org/apache/cassandra/cql/term/DateTerm.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AsciiType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BooleanType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BytesType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/DateType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/DoubleType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/FloatType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/IntegerType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UTF8Type.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UUIDType.java
Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/term/DateTerm.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/term/DateTerm.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/term/DateTerm.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/term/DateTerm.java Fri Sep 2 20:27:03 2011
@@ -30,7 +30,7 @@ import org.apache.cassandra.utils.ByteBu
public class DateTerm extends AbstractTerm<Date>
{
- static final String[] iso8601Patterns = new String[] {
+ public static final String[] iso8601Patterns = new String[] {
"yyyy-MM-dd HH:mm",
"yyyy-MM-dd HH:mm:ss",
"yyyy-MM-dd HH:mmZ",
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AsciiType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AsciiType.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AsciiType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AsciiType.java Fri Sep 2 20:27:03 2011
@@ -27,6 +27,7 @@ import java.sql.Types;
import com.google.common.base.Charsets;
+import org.apache.cassandra.cql.term.AsciiTerm;
import org.apache.cassandra.utils.ByteBufferUtil;
public class AsciiType extends AbstractType<String>
@@ -39,17 +40,17 @@ public class AsciiType extends AbstractT
{
try
{
- return ByteBufferUtil.string(bytes, Charsets.US_ASCII);
+ return AsciiTerm.instance.getString(bytes);
}
- catch (CharacterCodingException e)
+ catch (org.apache.cassandra.cql.term.MarshalException e)
{
- throw new MarshalException("Invalid ascii bytes " + ByteBufferUtil.bytesToHex(bytes));
+ throw new MarshalException(e.getMessage());
}
}
public String toString(String s)
{
- return s;
+ return AsciiTerm.instance.toString(s);
}
public int compare(ByteBuffer o1, ByteBuffer o2)
@@ -59,7 +60,7 @@ public class AsciiType extends AbstractT
public String compose(ByteBuffer bytes)
{
- return getString(bytes);
+ return AsciiTerm.instance.getString(bytes);
}
public ByteBuffer decompose(String value)
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BooleanType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BooleanType.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BooleanType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BooleanType.java Fri Sep 2 20:27:03 2011
@@ -23,6 +23,7 @@ package org.apache.cassandra.db.marshal;
import java.nio.ByteBuffer;
import java.sql.Types;
+import org.apache.cassandra.cql.term.BooleanTerm;
import org.apache.cassandra.utils.ByteBufferUtil;
public class BooleanType extends AbstractType<Boolean>
@@ -33,8 +34,7 @@ public class BooleanType extends Abstrac
public Boolean compose(ByteBuffer bytes)
{
- byte value = bytes.get(bytes.position());
- return Boolean.valueOf(value ==0 ? false:true);
+ return BooleanTerm.instance.compose(bytes);
}
public ByteBuffer decompose(Boolean value)
@@ -56,22 +56,19 @@ public class BooleanType extends Abstrac
public String getString(ByteBuffer bytes)
{
- if (bytes.remaining() == 0)
+ try
{
- return Boolean.FALSE.toString();
+ return BooleanTerm.instance.getString(bytes);
}
- if (bytes.remaining() != 1)
+ catch (org.apache.cassandra.cql.term.MarshalException e)
{
- throw new MarshalException("A boolean is stored in exactly 1 byte: "+bytes.remaining());
+ throw new MarshalException(e.getMessage());
}
- byte value = bytes.get(bytes.position());
-
- return value ==0 ? Boolean.FALSE.toString(): Boolean.TRUE.toString();
}
public String toString(Boolean b)
{
- return b.toString();
+ return BooleanTerm.instance.toString(b);
}
public ByteBuffer fromString(String source) throws MarshalException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BytesType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BytesType.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BytesType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BytesType.java Fri Sep 2 20:27:03 2011
@@ -24,6 +24,7 @@ package org.apache.cassandra.db.marshal;
import java.nio.ByteBuffer;
import java.sql.Types;
+import org.apache.cassandra.cql.term.BytesTerm;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.FBUtilities;
@@ -35,7 +36,7 @@ public class BytesType extends AbstractT
public ByteBuffer compose(ByteBuffer bytes)
{
- return bytes.duplicate();
+ return BytesTerm.instance.compose(bytes);
}
public ByteBuffer decompose(ByteBuffer value)
@@ -60,12 +61,12 @@ public class BytesType extends AbstractT
public String getString(ByteBuffer bytes)
{
- return ByteBufferUtil.bytesToHex(bytes);
+ return BytesTerm.instance.getString(bytes);
}
public String toString(ByteBuffer byteBuffer)
{
- return getString(byteBuffer);
+ return BytesTerm.instance.toString(byteBuffer);
}
public ByteBuffer fromString(String source)
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/DateType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/DateType.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/DateType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/DateType.java Fri Sep 2 20:27:03 2011
@@ -19,14 +19,14 @@ package org.apache.cassandra.db.marshal;
* under the License.
*
*/
-import static org.apache.cassandra.db.marshal.TimeUUIDType.iso8601Patterns;
+import static org.apache.cassandra.cql.term.DateTerm.iso8601Patterns;
import java.nio.ByteBuffer;
-import java.sql.Types;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
+import org.apache.cassandra.cql.term.DateTerm;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.commons.lang.time.DateUtils;
@@ -42,7 +42,7 @@ public class DateType extends AbstractTy
public Date compose(ByteBuffer bytes)
{
- return new Date(ByteBufferUtil.toLong(bytes));
+ return DateTerm.instance.compose(bytes);
}
public ByteBuffer decompose(Date value)
@@ -68,23 +68,19 @@ public class DateType extends AbstractTy
public String getString(ByteBuffer bytes)
{
- if (bytes.remaining() == 0)
+ try
{
- return "";
+ return DateTerm.instance.getString(bytes);
}
- if (bytes.remaining() != 8)
+ catch (org.apache.cassandra.cql.term.MarshalException e)
{
- throw new MarshalException("A date is exactly 8 bytes (stored as a long): "+bytes.remaining());
+ throw new MarshalException(e.getMessage());
}
-
- // uses ISO-8601 formatted string
- return FORMATTER.format(new Date(bytes.getLong(bytes.position())));
}
public String toString(Date d)
{
- // uses ISO-8601 formatted string
- return FORMATTER.format(d);
+ return DateTerm.instance.toString(d);
}
public ByteBuffer fromString(String source) throws MarshalException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/DoubleType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/DoubleType.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/DoubleType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/DoubleType.java Fri Sep 2 20:27:03 2011
@@ -23,6 +23,7 @@ package org.apache.cassandra.db.marshal;
import java.nio.ByteBuffer;
import java.sql.Types;
+import org.apache.cassandra.cql.term.DoubleTerm;
import org.apache.cassandra.utils.ByteBufferUtil;
public class DoubleType extends AbstractType<Double>
@@ -33,7 +34,7 @@ public class DoubleType extends Abstract
public Double compose(ByteBuffer bytes)
{
- return ByteBufferUtil.toDouble(bytes);
+ return DoubleTerm.instance.compose(bytes);
}
public ByteBuffer decompose(Double value)
@@ -57,22 +58,20 @@ public class DoubleType extends Abstract
}
public String getString(ByteBuffer bytes)
- {
- if (bytes.remaining() == 0)
+ {
+ try
{
- return "";
+ return DoubleTerm.instance.getString(bytes);
}
- if (bytes.remaining() != 8)
+ catch (org.apache.cassandra.cql.term.MarshalException e)
{
- throw new MarshalException("A double is exactly 8 bytes : "+bytes.remaining());
+ throw new MarshalException(e.getMessage());
}
-
- return compose(bytes).toString();
}
public String toString(Double d)
{
- return d.toString();
+ return DoubleTerm.instance.toString(d);
}
public ByteBuffer fromString(String source) throws MarshalException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/FloatType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/FloatType.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/FloatType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/FloatType.java Fri Sep 2 20:27:03 2011
@@ -23,6 +23,7 @@ package org.apache.cassandra.db.marshal;
import java.nio.ByteBuffer;
import java.sql.Types;
+import org.apache.cassandra.cql.term.FloatTerm;
import org.apache.cassandra.utils.ByteBufferUtil;
@@ -34,7 +35,7 @@ public class FloatType extends AbstractT
public Float compose(ByteBuffer bytes)
{
- return ByteBufferUtil.toFloat(bytes);
+ return FloatTerm.instance.compose(bytes);
}
public ByteBuffer decompose(Float value)
@@ -59,21 +60,19 @@ public class FloatType extends AbstractT
public String getString(ByteBuffer bytes)
{
- if (bytes.remaining() == 0)
+ try
{
- return "";
+ return FloatTerm.instance.getString(bytes);
}
- if (bytes.remaining() != 4)
+ catch (org.apache.cassandra.cql.term.MarshalException e)
{
- throw new MarshalException("A float is exactly 4 bytes : "+bytes.remaining());
+ throw new MarshalException(e.getMessage());
}
-
- return compose(bytes).toString();
}
public String toString(Float d)
{
- return d.toString();
+ return FloatTerm.instance.toString(d);
}
public ByteBuffer fromString(String source) throws MarshalException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/IntegerType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/IntegerType.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/IntegerType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/IntegerType.java Fri Sep 2 20:27:03 2011
@@ -23,6 +23,7 @@ import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.sql.Types;
+import org.apache.cassandra.cql.term.IntegerTerm;
import org.apache.cassandra.utils.ByteBufferUtil;
public final class IntegerType extends AbstractType<BigInteger>
@@ -59,7 +60,7 @@ public final class IntegerType extends A
public BigInteger compose(ByteBuffer bytes)
{
- return new BigInteger(ByteBufferUtil.getArray(bytes));
+ return IntegerTerm.instance.compose(bytes);
}
public ByteBuffer decompose(BigInteger value)
@@ -127,17 +128,12 @@ public final class IntegerType extends A
public String getString(ByteBuffer bytes)
{
- if (bytes == null)
- return "null";
- if (bytes.remaining() == 0)
- return "empty";
-
- return new java.math.BigInteger(ByteBufferUtil.getArray(bytes)).toString(10);
+ return IntegerTerm.instance.getString(bytes);
}
public String toString(BigInteger bi)
{
- return bi.toString();
+ return IntegerTerm.instance.toString(bi);
}
public ByteBuffer fromString(String source) throws MarshalException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java Fri Sep 2 20:27:03 2011
@@ -24,6 +24,7 @@ package org.apache.cassandra.db.marshal;
import java.nio.ByteBuffer;
import java.util.UUID;
+import org.apache.cassandra.cql.term.LexicalUUIDTerm;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.UUIDGen;
@@ -35,7 +36,7 @@ public class LexicalUUIDType extends Abs
public UUID compose(ByteBuffer bytes)
{
- return UUIDGen.getUUID(bytes);
+ return LexicalUUIDTerm.instance.compose(bytes);
}
public ByteBuffer decompose(UUID value)
@@ -59,20 +60,19 @@ public class LexicalUUIDType extends Abs
public String getString(ByteBuffer bytes)
{
- if (bytes.remaining() == 0)
+ try
{
- return "";
+ return LexicalUUIDTerm.instance.getString(bytes);
}
- if (bytes.remaining() != 16)
+ catch (org.apache.cassandra.cql.term.MarshalException e)
{
- throw new MarshalException("UUIDs must be exactly 16 bytes");
+ throw new MarshalException(e.getMessage());
}
- return UUIDGen.getUUID(bytes).toString();
}
public String toString(UUID uuid)
{
- return uuid.toString();
+ return LexicalUUIDTerm.instance.toString(uuid);
}
public ByteBuffer fromString(String source) throws MarshalException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java Fri Sep 2 20:27:03 2011
@@ -24,6 +24,7 @@ package org.apache.cassandra.db.marshal;
import java.nio.ByteBuffer;
import java.sql.Types;
+import org.apache.cassandra.cql.term.LongTerm;
import org.apache.cassandra.utils.ByteBufferUtil;
public class LongType extends AbstractType<Long>
@@ -34,7 +35,7 @@ public class LongType extends AbstractTy
public Long compose(ByteBuffer bytes)
{
- return ByteBufferUtil.toLong(bytes);
+ return LongTerm.instance.compose(bytes);
}
public ByteBuffer decompose(Long value)
@@ -63,21 +64,19 @@ public class LongType extends AbstractTy
public String getString(ByteBuffer bytes)
{
- if (bytes.remaining() == 0)
+ try
{
- return "";
+ return LongTerm.instance.getString(bytes);
}
- if (bytes.remaining() != 8)
+ catch (org.apache.cassandra.cql.term.MarshalException e)
{
- throw new MarshalException("A long is exactly 8 bytes: "+bytes.remaining());
+ throw new MarshalException(e.getMessage());
}
-
- return String.valueOf(bytes.getLong(bytes.position()));
}
public String toString(Long l)
{
- return l.toString();
+ return LongTerm.instance.toString(l);
}
public ByteBuffer fromString(String source) throws MarshalException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java Fri Sep 2 20:27:03 2011
@@ -26,34 +26,25 @@ import java.text.ParseException;
import java.util.UUID;
import java.util.regex.Pattern;
+import org.apache.cassandra.cql.term.TimeUUIDTerm;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.UUIDGen;
import org.apache.commons.lang.time.DateUtils;
+import static org.apache.cassandra.cql.term.DateTerm.iso8601Patterns;
+
public class TimeUUIDType extends AbstractType<UUID>
{
public static final TimeUUIDType instance = new TimeUUIDType();
static final Pattern regexPattern = Pattern.compile("[A-Fa-f0-9]{8}\\-[A-Fa-f0-9]{4}\\-[A-Fa-f0-9]{4}\\-[A-Fa-f0-9]{4}\\-[A-Fa-f0-9]{12}");
- static final String[] iso8601Patterns = new String[] {
- "yyyy-MM-dd HH:mm",
- "yyyy-MM-dd HH:mm:ss",
- "yyyy-MM-dd HH:mmZ",
- "yyyy-MM-dd HH:mm:ssZ",
- "yyyy-MM-dd'T'HH:mm",
- "yyyy-MM-dd'T'HH:mmZ",
- "yyyy-MM-dd'T'HH:mm:ss",
- "yyyy-MM-dd'T'HH:mm:ssZ",
- "yyyy-MM-dd",
- "yyyy-MM-ddZ"
- };
TimeUUIDType() {} // singleton
public UUID compose(ByteBuffer bytes)
{
- return UUIDGen.getUUID(bytes);
+ return TimeUUIDTerm.instance.compose(bytes);
}
public ByteBuffer decompose(UUID value)
@@ -108,25 +99,19 @@ public class TimeUUIDType extends Abstra
public String getString(ByteBuffer bytes)
{
- if (bytes.remaining() == 0)
- {
- return "";
- }
- if (bytes.remaining() != 16)
+ try
{
- throw new MarshalException("UUIDs must be exactly 16 bytes");
+ return TimeUUIDTerm.instance.getString(bytes);
}
- UUID uuid = UUIDGen.getUUID(bytes);
- if (uuid.version() != 1)
+ catch (org.apache.cassandra.cql.term.MarshalException e)
{
- throw new MarshalException("TimeUUID only makes sense with version 1 UUIDs");
+ throw new MarshalException(e.getMessage());
}
- return uuid.toString();
}
public String toString(UUID uuid)
{
- return uuid.toString();
+ return TimeUUIDTerm.instance.toString(uuid);
}
public ByteBuffer fromString(String source) throws MarshalException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UTF8Type.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UTF8Type.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UTF8Type.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UTF8Type.java Fri Sep 2 20:27:03 2011
@@ -21,10 +21,10 @@ package org.apache.cassandra.db.marshal;
*/
import java.nio.ByteBuffer;
-import java.nio.charset.CharacterCodingException;
-import java.sql.Types;
import com.google.common.base.Charsets;
+
+import org.apache.cassandra.cql.term.UTF8Term;
import org.apache.cassandra.utils.ByteBufferUtil;
public class UTF8Type extends AbstractType<String>
@@ -35,7 +35,7 @@ public class UTF8Type extends AbstractTy
public String compose(ByteBuffer bytes)
{
- return getString(bytes);
+ return UTF8Term.instance.compose(bytes);
}
public ByteBuffer decompose(String value)
@@ -52,17 +52,17 @@ public class UTF8Type extends AbstractTy
{
try
{
- return ByteBufferUtil.string(bytes);
+ return UTF8Term.instance.getString(bytes);
}
- catch (CharacterCodingException e)
+ catch (org.apache.cassandra.cql.term.MarshalException e)
{
- throw new MarshalException("invalid UTF8 bytes " + ByteBufferUtil.bytesToHex(bytes));
+ throw new MarshalException(e.getMessage());
}
}
public String toString(String s)
{
- return s;
+ return UTF8Term.instance.toString(s);
}
public ByteBuffer fromString(String source)
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UUIDType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UUIDType.java?rev=1164694&r1=1164693&r2=1164694&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UUIDType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UUIDType.java Fri Sep 2 20:27:03 2011
@@ -25,11 +25,14 @@ import java.nio.ByteBuffer;
import java.text.ParseException;
import java.util.UUID;
+import org.apache.cassandra.cql.term.UUIDTerm;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.UUIDGen;
import org.apache.commons.lang.time.DateUtils;
+import static org.apache.cassandra.cql.term.DateTerm.iso8601Patterns;
+
/**
* Compares UUIDs using the following criteria:<br>
* - if count of supplied bytes is less than 16, compare counts<br>
@@ -159,15 +162,12 @@ public class UUIDType extends AbstractTy
public UUID compose(ByteBuffer bytes)
{
- bytes = bytes.slice();
- if (bytes.remaining() < 16)
- return new UUID(0, 0);
- return new UUID(bytes.getLong(), bytes.getLong());
+ return UUIDTerm.instance.compose(bytes);
}
public String toString(UUID uuid)
{
- return uuid.toString();
+ return UUIDTerm.instance.toString(uuid);
}
public void validate(ByteBuffer bytes)
@@ -180,16 +180,14 @@ public class UUIDType extends AbstractTy
public String getString(ByteBuffer bytes)
{
- if (bytes.remaining() == 0)
+ try
{
- return "";
+ return UUIDTerm.instance.getString(bytes);
}
- if (bytes.remaining() != 16)
+ catch (org.apache.cassandra.cql.term.MarshalException e)
{
- throw new MarshalException("UUIDs must be exactly 16 bytes");
+ throw new MarshalException(e.getMessage());
}
- UUID uuid = compose(bytes);
- return uuid.toString();
}
public ByteBuffer decompose(UUID value)
@@ -241,7 +239,7 @@ public class UUIDType extends AbstractTy
{
try
{
- long timestamp = DateUtils.parseDate(source, TimeUUIDType.iso8601Patterns).getTime();
+ long timestamp = DateUtils.parseDate(source, iso8601Patterns).getTime();
idBytes = ByteBuffer.wrap(UUIDGen.getTimeUUIDBytes(timestamp));
}
catch (ParseException e1)