Author: chirino
Date: Tue Nov 16 17:08:16 2010
New Revision: 1035697

URL: http://svn.apache.org/viewvc?rev=1035697&view=rev
Log:
Support loading scala objects as the factory provider impl.

Modified:
    
activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/ClassFinder.scala

Modified: 
activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/ClassFinder.scala
URL: 
http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/ClassFinder.scala?rev=1035697&r1=1035696&r2=1035697&view=diff
==============================================================================
--- 
activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/ClassFinder.scala
 (original)
+++ 
activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/ClassFinder.scala
 Tue Nov 16 17:08:16 2010
@@ -64,7 +64,16 @@ class ClassFinder[T](val path:String, va
       try {
         t += clazz.newInstance.asInstanceOf[T]
       } catch {
-        case e: Throwable => e.printStackTrace
+        case e: Throwable =>
+          // It may be a scala object.. check for a module class
+          try {
+            val moduleField = clazz.getClassLoader.loadClass(clazz.getName + 
"$").getDeclaredField("MODULE$")
+            val instance = moduleField.get(null).asInstanceOf[T]
+            t += instance
+          } catch {
+            case e2: Throwable =>
+              e.printStackTrace
+          }
       }
     }
     t.toList


Reply via email to