You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by el...@apache.org on 2013/03/15 11:46:05 UTC

svn commit: r1456879 - /labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/

Author: elecharny
Date: Fri Mar 15 10:46:04 2013
New Revision: 1456879

URL: http://svn.apache.org/r1456879
Log:
Added deserializers that take a ByteBuffer as an input.

Modified:
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/BooleanSerializer.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/BufferHandler.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteArraySerializer.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteSerializer.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/CharSerializer.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ElementSerializer.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/IntSerializer.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/LongArraySerializer.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/LongSerializer.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ShortSerializer.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/StringSerializer.java

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/BooleanSerializer.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/BooleanSerializer.java?rev=1456879&r1=1456878&r2=1456879&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/BooleanSerializer.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/BooleanSerializer.java Fri Mar 15 10:46:04 2013
@@ -21,6 +21,7 @@ package org.apache.mavibot.btree.seriali
 
 
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.Comparator;
 
 import org.apache.mavibot.btree.comparator.BooleanComparator;
@@ -77,6 +78,15 @@ public class BooleanSerializer implement
     /**
      * {@inheritDoc}
      */
+    public Boolean deserialize( ByteBuffer buffer ) throws IOException
+    {
+        return buffer.get() == 0x01;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public Boolean deserialize( BufferHandler bufferHandler ) throws IOException
     {

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/BufferHandler.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/BufferHandler.java?rev=1456879&r1=1456878&r2=1456879&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/BufferHandler.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/BufferHandler.java Fri Mar 15 10:46:04 2013
@@ -75,6 +75,16 @@ public class BufferHandler
     }
 
 
+    public byte[] getBuffer()
+    {
+        byte[] bytes = new byte[buffer.capacity()];
+
+        buffer.get( bytes );
+
+        return bytes;
+    }
+
+
     /**
      * Read a buffer containing the given number of bytes
      * @param len The number of bytes to read

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteArraySerializer.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteArraySerializer.java?rev=1456879&r1=1456878&r2=1456879&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteArraySerializer.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteArraySerializer.java Fri Mar 15 10:46:04 2013
@@ -21,6 +21,7 @@ package org.apache.mavibot.btree.seriali
 
 
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.Comparator;
 
 import org.apache.mavibot.btree.comparator.ByteArrayComparator;
@@ -126,6 +127,32 @@ public class ByteArraySerializer impleme
     /**
      * {@inheritDoc}
      */
+    public byte[] deserialize( ByteBuffer buffer ) throws IOException
+    {
+        int len = buffer.getInt();
+
+        switch ( len )
+        {
+            case 0:
+                return new byte[]
+                    {};
+
+            case -1:
+                return null;
+
+            default:
+                byte[] bytes = new byte[len];
+
+                buffer.get( bytes );
+
+                return bytes;
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public int compare( byte[] type1, byte[] type2 )
     {

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteSerializer.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteSerializer.java?rev=1456879&r1=1456878&r2=1456879&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteSerializer.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteSerializer.java Fri Mar 15 10:46:04 2013
@@ -21,6 +21,7 @@ package org.apache.mavibot.btree.seriali
 
 
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.Comparator;
 
 import org.apache.mavibot.btree.comparator.ByteComparator;
@@ -77,6 +78,15 @@ public class ByteSerializer implements E
     /**
      * {@inheritDoc}
      */
+    public Byte deserialize( ByteBuffer buffer ) throws IOException
+    {
+        return buffer.get();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
     public Byte deserialize( BufferHandler bufferHandler ) throws IOException
     {
         byte[] in = bufferHandler.read( 1 );

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/CharSerializer.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/CharSerializer.java?rev=1456879&r1=1456878&r2=1456879&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/CharSerializer.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/CharSerializer.java Fri Mar 15 10:46:04 2013
@@ -21,6 +21,7 @@ package org.apache.mavibot.btree.seriali
 
 
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.Comparator;
 
 import org.apache.mavibot.btree.comparator.CharComparator;
@@ -81,6 +82,15 @@ public class CharSerializer implements E
     /**
      * {@inheritDoc}
      */
+    public Character deserialize( ByteBuffer buffer ) throws IOException
+    {
+        return buffer.getChar();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
     public Character deserialize( BufferHandler bufferHandler ) throws IOException
     {
         byte[] in = bufferHandler.read( 2 );

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ElementSerializer.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ElementSerializer.java?rev=1456879&r1=1456878&r2=1456879&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ElementSerializer.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ElementSerializer.java Fri Mar 15 10:46:04 2013
@@ -21,6 +21,7 @@ package org.apache.mavibot.btree.seriali
 
 
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.Comparator;
 
 
@@ -45,7 +46,7 @@ public interface ElementSerializer<T>
     /**
      * Deserialize an element from a byte[]
      * 
-     * @param in The incoming bufferHandler
+     * @param bufferHandler The incoming bufferHandler
      * @return The deserialized element
      * @throws IOException If the deserialization failed
      */
@@ -53,6 +54,16 @@ public interface ElementSerializer<T>
 
 
     /**
+     * Deserialize an element from a byte[]
+     * 
+     * @param buffer The incoming bufferHandler
+     * @return The deserialized element
+     * @throws IOException If the deserialization failed
+     */
+    T deserialize( ByteBuffer buffer ) throws IOException;
+
+
+    /**
      * Returns the comparison of two types. <br/>
      * <ul>
      * <li>If type1 < type2, return -1</li>

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/IntSerializer.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/IntSerializer.java?rev=1456879&r1=1456878&r2=1456879&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/IntSerializer.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/IntSerializer.java Fri Mar 15 10:46:04 2013
@@ -21,6 +21,7 @@ package org.apache.mavibot.btree.seriali
 
 
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.Comparator;
 
 import org.apache.mavibot.btree.comparator.IntComparator;
@@ -93,6 +94,15 @@ public class IntSerializer implements El
     /**
      * {@inheritDoc}
      */
+    public Integer deserialize( ByteBuffer buffer ) throws IOException
+    {
+        return buffer.getInt();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
     public Integer deserialize( BufferHandler bufferHandler ) throws IOException
     {
         byte[] in = bufferHandler.read( 4 );

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/LongArraySerializer.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/LongArraySerializer.java?rev=1456879&r1=1456878&r2=1456879&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/LongArraySerializer.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/LongArraySerializer.java Fri Mar 15 10:46:04 2013
@@ -21,6 +21,7 @@ package org.apache.mavibot.btree.seriali
 
 
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.Comparator;
 
 import org.apache.mavibot.btree.comparator.LongArrayComparator;
@@ -153,6 +154,35 @@ public class LongArraySerializer impleme
     /**
      * {@inheritDoc}
      */
+    public long[] deserialize( ByteBuffer buffer ) throws IOException
+    {
+        int len = buffer.getInt();
+
+        switch ( len )
+        {
+            case 0:
+                return new long[]
+                    {};
+
+            case -1:
+                return null;
+
+            default:
+                long[] longs = new long[len];
+
+                for ( int i = 0; i < len; i++ )
+                {
+                    longs[i] = buffer.getLong();
+                }
+
+                return longs;
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public int compare( long[] type1, long[] type2 )
     {

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/LongSerializer.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/LongSerializer.java?rev=1456879&r1=1456878&r2=1456879&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/LongSerializer.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/LongSerializer.java Fri Mar 15 10:46:04 2013
@@ -21,6 +21,7 @@ package org.apache.mavibot.btree.seriali
 
 
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.Comparator;
 
 import org.apache.mavibot.btree.comparator.LongComparator;
@@ -116,6 +117,15 @@ public class LongSerializer implements E
     /**
      * {@inheritDoc}
      */
+    public Long deserialize( ByteBuffer buffer ) throws IOException
+    {
+        return buffer.getLong();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public int compare( Long type1, Long type2 )
     {

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ShortSerializer.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ShortSerializer.java?rev=1456879&r1=1456878&r2=1456879&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ShortSerializer.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ShortSerializer.java Fri Mar 15 10:46:04 2013
@@ -21,6 +21,7 @@ package org.apache.mavibot.btree.seriali
 
 
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.Comparator;
 
 import org.apache.mavibot.btree.comparator.ShortComparator;
@@ -80,6 +81,15 @@ public class ShortSerializer implements 
     /**
      * {@inheritDoc}
      */
+    public Short deserialize( ByteBuffer buffer ) throws IOException
+    {
+        return buffer.getShort();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
     public Short deserialize( BufferHandler bufferHandler ) throws IOException
     {
         byte[] in = bufferHandler.read( 2 );

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/StringSerializer.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/StringSerializer.java?rev=1456879&r1=1456878&r2=1456879&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/StringSerializer.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/StringSerializer.java Fri Mar 15 10:46:04 2013
@@ -22,9 +22,11 @@ package org.apache.mavibot.btree.seriali
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
 import java.util.Comparator;
 
 import org.apache.mavibot.btree.comparator.StringComparator;
+import org.apache.mavinot.btree.utils.Strings;
 
 
 /**
@@ -110,6 +112,7 @@ public class StringSerializer implements
 
     /**
      * {@inheritDoc}
+     * @throws IOException 
      */
     public String deserialize( BufferHandler bufferHandler ) throws IOException
     {
@@ -126,17 +129,31 @@ public class StringSerializer implements
                 return null;
 
             default:
-                try
-                {
-                    in = bufferHandler.read( len );
+                in = bufferHandler.read( len );
 
-                    return new String( in, 0, len, "UTF-8" );
-                }
-                catch ( UnsupportedEncodingException uee )
-                {
-                    // if this happens something is really strange
-                    throw new RuntimeException( uee );
-                }
+                return Strings.utf8ToString( in );
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String deserialize( ByteBuffer buffer ) throws IOException
+    {
+        int len = buffer.getInt();
+
+        switch ( len )
+        {
+            case 0:
+                return "";
+
+            default:
+                byte[] bytes = new byte[len];
+
+                buffer.get( bytes );
+
+                return Strings.utf8ToString( bytes );
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org