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;