You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directmemory.apache.org by si...@apache.org on 2012/02/21 08:30:17 UTC

svn commit: r1291626 - /incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/serialization/SerializerFactory.java

Author: simonetripodi
Date: Tue Feb 21 07:30:16 2012
New Revision: 1291626

URL: http://svn.apache.org/viewvc?rev=1291626&view=rev
Log:
check class assignment using java.util.Class APIs
Class.forName() dropped in favor of ClassLoader.loadClass()
DRY calling existing method

Modified:
    incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/serialization/SerializerFactory.java

Modified: incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/serialization/SerializerFactory.java
URL: http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/serialization/SerializerFactory.java?rev=1291626&r1=1291625&r2=1291626&view=diff
==============================================================================
--- incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/serialization/SerializerFactory.java (original)
+++ incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/serialization/SerializerFactory.java Tue Feb 21 07:30:16 2012
@@ -58,7 +58,7 @@ public final class SerializerFactory
             try
             {
                 Serializer next = serializers.next();
-                if ( next.getClass().getName().equals( serializer.getName() ) )
+                if ( serializer.isInstance( next ) )
                 {
                     return serializer.cast( next );
                 }
@@ -74,37 +74,27 @@ public final class SerializerFactory
 
     public static Serializer createNewSerializer( String serializerClassName )
     {
-        Class<?> serializerClass;
+        return createNewSerializer( serializerClassName, SerializerFactory.class.getClassLoader() );
+    }
+
+    public static Serializer createNewSerializer( String serializerClassName, ClassLoader classLoader )
+    {
+        Class<?> anonSerializerClass;
         try
         {
-            serializerClass = Class.forName( serializerClassName );
+            anonSerializerClass = classLoader.loadClass( serializerClassName );
         }
         catch ( ClassNotFoundException e )
         {
             return null;
         }
 
-        if ( serializerClass.isAssignableFrom( Serializer.class ) )
+        if ( anonSerializerClass.isAssignableFrom( Serializer.class ) )
         {
-            Iterator<Serializer> serializers = load( Serializer.class ).iterator();
+            @SuppressWarnings( "unchecked" ) // the assignment is guarded by
+            Class<? extends Serializer> serializerClass = (Class<? extends Serializer>) anonSerializerClass;
 
-            // iterate over all found services
-            while ( serializers.hasNext() )
-            {
-                // try getting the current service and return
-                try
-                {
-                    Serializer next = serializers.next();
-                    if ( next.getClass().getName().equals( serializerClassName ) )
-                    {
-                        return next;
-                    }
-                }
-                catch ( Throwable t )
-                {
-                    // just ignore, skip and try getting the next
-                }
-            }
+            return createNewSerializer( serializerClass );
         }
 
         return null;