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)