You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2013/10/05 08:42:08 UTC

svn commit: r1529392 - in /directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer: AbstractElementSerializer.java ElementSerializer.java LongArraySerializer.java

Author: elecharny
Date: Sat Oct  5 06:42:08 2013
New Revision: 1529392

URL: http://svn.apache.org/r1529392
Log:
Injected the type into the serializers

Modified:
    directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/AbstractElementSerializer.java
    directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/ElementSerializer.java
    directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/LongArraySerializer.java

Modified: directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/AbstractElementSerializer.java
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/AbstractElementSerializer.java?rev=1529392&r1=1529391&r2=1529392&view=diff
==============================================================================
--- directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/AbstractElementSerializer.java (original)
+++ directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/AbstractElementSerializer.java Sat Oct  5 06:42:08 2013
@@ -20,6 +20,8 @@
 package org.apache.directory.mavibot.btree.serializer;
 
 
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
 import java.util.Comparator;
 
 
@@ -35,13 +37,34 @@ public abstract class AbstractElementSer
     /** The associated comparator */
     private final Comparator<T> comparator;
 
+    /** The type which is being serialized */
+    private Class<?> type;
+
 
     /**
-     * Create a new instance of BooleanSerializer
+     * Create a new instance of Serializer
      */
     public AbstractElementSerializer( Comparator<T> comparator )
     {
         this.comparator = comparator;
+
+        // We will extract the Type to use for values, using the serializer for that
+        Class<?> valueSerializerClass = comparator.getClass();
+        Type[] types = valueSerializerClass.getGenericInterfaces();
+
+        if ( types[0] instanceof Class )
+        {
+            type = ( Class<?> ) types[0];
+        }
+        else
+        {
+            Type[] argumentTypes = ( ( ParameterizedType ) types[0] ).getActualTypeArguments();
+
+            if ( ( argumentTypes != null ) && ( argumentTypes.length > 0 ) && ( argumentTypes[0] instanceof Class<?> ) )
+            {
+                type = ( Class<?> ) argumentTypes[0];
+            }
+        }
     }
 
 
@@ -62,4 +85,14 @@ public abstract class AbstractElementSer
     {
         return comparator;
     }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Class<?> getType()
+    {
+        return type;
+    }
 }

Modified: directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/ElementSerializer.java
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/ElementSerializer.java?rev=1529392&r1=1529391&r2=1529392&view=diff
==============================================================================
--- directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/ElementSerializer.java (original)
+++ directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/ElementSerializer.java Sat Oct  5 06:42:08 2013
@@ -82,4 +82,10 @@ public interface ElementSerializer<T>
      * @return the comparator for the used type
      */
     Comparator<T> getComparator();
+
+
+    /**
+     * @return the type being serialized
+     */
+    Class<?> getType();
 }

Modified: directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/LongArraySerializer.java
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/LongArraySerializer.java?rev=1529392&r1=1529391&r2=1529392&view=diff
==============================================================================
--- directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/LongArraySerializer.java (original)
+++ directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/serializer/LongArraySerializer.java Sat Oct  5 06:42:08 2013
@@ -22,7 +22,6 @@ package org.apache.directory.mavibot.btr
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
-import java.util.Comparator;
 
 import org.apache.directory.mavibot.btree.comparator.LongArrayComparator;
 
@@ -32,18 +31,14 @@ import org.apache.directory.mavibot.btre
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class LongArraySerializer implements ElementSerializer<long[]>
+public class LongArraySerializer extends AbstractElementSerializer<long[]>
 {
-    /** The associated comparator */
-    private final Comparator<long[]> comparator;
-
-
     /**
      * Create a new instance of LongSerializer
      */
     public LongArraySerializer()
     {
-        comparator = new LongArrayComparator();
+        super( new LongArrayComparator() );
     }
 
 
@@ -261,14 +256,4 @@ public class LongArraySerializer impleme
             }
         }
     }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public Comparator<long[]> getComparator()
-    {
-        return comparator;
-    }
 }