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 2012/08/05 08:24:46 UTC

svn commit: r1369526 - in /labs/mavibot/trunk/mavibot/src: main/java/org/apache/mavibot/btree/serializer/ByteArraySerializer.java test/java/org/apache/mavibot/btree/serializer/ByteArraySerializerTest.java

Author: elecharny
Date: Sun Aug  5 06:24:46 2012
New Revision: 1369526

URL: http://svn.apache.org/viewvc?rev=1369526&view=rev
Log:
Added the ByteArraySeralizer class and test

Added:
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteArraySerializer.java
    labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/serializer/ByteArraySerializerTest.java

Added: 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=1369526&view=auto
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteArraySerializer.java (added)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/serializer/ByteArraySerializer.java Sun Aug  5 06:24:46 2012
@@ -0,0 +1,108 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+package org.apache.mavibot.btree.serializer;
+
+
+import java.io.IOException;
+
+
+/**
+ * A serializer for a byte[].
+ * 
+ * @author <a href="mailto:labs@labs.apache.org">Mavibot labs Project</a>
+ */
+public class ByteArraySerializer implements ElementSerializer<byte[]>
+{
+    /**
+     * {@inheritDoc}
+     */
+    public byte[] serialize( byte[] element )
+    {
+        int len = -1;
+
+        if ( element != null )
+        {
+            len = element.length;
+        }
+
+        byte[] bytes = null;
+
+        switch ( len )
+        {
+            case 0:
+                bytes = new byte[4];
+
+                bytes[0] = 0x00;
+                bytes[1] = 0x00;
+                bytes[2] = 0x00;
+                bytes[3] = 0x00;
+
+                break;
+
+            case -1:
+                bytes = new byte[4];
+
+                bytes[0] = ( byte ) 0xFF;
+                bytes[1] = ( byte ) 0xFF;
+                bytes[2] = ( byte ) 0xFF;
+                bytes[3] = ( byte ) 0xFF;
+
+                break;
+
+            default:
+                bytes = new byte[len + 4];
+
+                System.arraycopy( element, 0, bytes, 4, len );
+
+                bytes[0] = ( byte ) ( len >>> 24 );
+                bytes[1] = ( byte ) ( len >>> 16 );
+                bytes[2] = ( byte ) ( len >>> 8 );
+                bytes[3] = ( byte ) ( len );
+        }
+
+        return bytes;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public byte[] deserialize( BufferHandler bufferHandler ) throws IOException
+    {
+        byte[] in = bufferHandler.read( 4 );
+
+        int len = IntSerializer.deserialize( in );
+
+        switch ( len )
+        {
+            case 0:
+                return new byte[]
+                    {};
+
+            case -1:
+                return null;
+
+            default:
+                in = bufferHandler.read( len );
+
+                return in;
+        }
+    }
+}

Added: labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/serializer/ByteArraySerializerTest.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/serializer/ByteArraySerializerTest.java?rev=1369526&view=auto
==============================================================================
--- labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/serializer/ByteArraySerializerTest.java (added)
+++ labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/serializer/ByteArraySerializerTest.java Sun Aug  5 06:24:46 2012
@@ -0,0 +1,85 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+package org.apache.mavibot.btree.serializer;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.Arrays;
+
+import org.junit.Test;
+
+
+/**
+ * Test the BytesSerializer class
+ * 
+ * @author <a href="mailto:labs@labs.apache.org">Mavibot labs Project</a>
+ */
+public class ByteArraySerializerTest
+{
+    private static ByteArraySerializer serializer = new ByteArraySerializer();
+
+
+    @Test
+    public void testBytesSerializer() throws IOException
+    {
+        byte[] value = null;
+        byte[] result = serializer.serialize( value );
+
+        assertEquals( 4, result.length );
+        assertEquals( ( byte ) 0xFF, result[0] );
+        assertEquals( ( byte ) 0xFF, result[1] );
+        assertEquals( ( byte ) 0xFF, result[2] );
+        assertEquals( ( byte ) 0xFF, result[3] );
+
+        assertEquals( value, serializer.deserialize( new BufferHandler( result ) ) );
+
+        // ------------------------------------------------------------------
+        value = new byte[]
+            {};
+        result = serializer.serialize( value );
+
+        assertEquals( 4, result.length );
+        assertEquals( ( byte ) 0x00, result[0] );
+        assertEquals( ( byte ) 0x00, result[1] );
+        assertEquals( ( byte ) 0x00, result[2] );
+        assertEquals( ( byte ) 0x00, result[3] );
+
+        assertTrue( Arrays.equals( value, serializer.deserialize( new BufferHandler( result ) ) ) );
+
+        // ------------------------------------------------------------------
+        value = "test".getBytes();
+        result = serializer.serialize( value );
+
+        assertEquals( 8, result.length );
+        assertEquals( ( byte ) 0x00, result[0] );
+        assertEquals( ( byte ) 0x00, result[1] );
+        assertEquals( ( byte ) 0x00, result[2] );
+        assertEquals( ( byte ) 0x04, result[3] );
+        assertEquals( 't', result[4] );
+        assertEquals( 'e', result[5] );
+        assertEquals( 's', result[6] );
+        assertEquals( 't', result[7] );
+
+        assertTrue( Arrays.equals( value, serializer.deserialize( new BufferHandler( result ) ) ) );
+    }
+}



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