[jboss-cvs] JBossAS SVN: r76499 - projects/jboss-man/trunk/managed/src/main/org/jboss/managed/plugins/factory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jul 30 23:54:18 EDT 2008


Author: scott.stark at jboss.org
Date: 2008-07-30 23:54:18 -0400 (Wed, 30 Jul 2008)
New Revision: 76499

Modified:
   projects/jboss-man/trunk/managed/src/main/org/jboss/managed/plugins/factory/ManagedObjectFactoryBuilder.java
Log:
JBMAN-2, externalize the ManagedObjectFactory implementation using the org.jboss.managed.api.factory.ManagedObjectFactory system property.
 

Modified: projects/jboss-man/trunk/managed/src/main/org/jboss/managed/plugins/factory/ManagedObjectFactoryBuilder.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/org/jboss/managed/plugins/factory/ManagedObjectFactoryBuilder.java	2008-07-31 01:41:58 UTC (rev 76498)
+++ projects/jboss-man/trunk/managed/src/main/org/jboss/managed/plugins/factory/ManagedObjectFactoryBuilder.java	2008-07-31 03:54:18 UTC (rev 76499)
@@ -21,20 +21,71 @@
 */
 package org.jboss.managed.plugins.factory;
 
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
 import org.jboss.managed.api.factory.ManagedObjectFactory;
 
 /**
- * ManagedObjectFactoryBuilder
+ * ManagedObjectFactoryBuilder factory for ManagedObjectFactory. 
  * 
- * TODO this class only creates a singleton fixed implementation for now
+ * TODO this class only creates a singleton implementation for now, configurable
+ * via the org.jboss.managed.api.factory.ManagedObjectFactory system property.
+ * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
  */
 public class ManagedObjectFactoryBuilder
 {
    /** The singleton */
-   private static final ManagedObjectFactory singleton = new AbstractManagedObjectFactory();
-   
+   private static final ManagedObjectFactory singleton;
+
+   static
+   {
+      singleton = AccessController.doPrivileged(new PrivilegedAction<ManagedObjectFactory>()
+         {
+            public ManagedObjectFactory run()
+            {
+               ManagedObjectFactory mof = null;
+               String defaultMOF = AbstractManagedObjectFactory.class.getName();
+               // The system property for the ManagedObjectFactory class to use
+               String className = System.getProperty(ManagedObjectFactory.class.getName(), defaultMOF);
+               try
+               {
+                  Class<?> clazz;
+                  try
+                  {
+                     clazz = Thread.currentThread().getContextClassLoader().loadClass(className);
+                  }
+                  catch (ClassNotFoundException e)
+                  {
+                     try
+                     {
+                        clazz = getClass().getClassLoader().loadClass(className);
+                     }
+                     catch (ClassNotFoundException ignored)
+                     {
+                        throw e;
+                     }
+                  }
+                  Object result = clazz.newInstance();
+                  mof = ManagedObjectFactory.class.cast(result);
+               }
+               catch (RuntimeException e)
+               {
+                  throw e;
+               }
+               catch (Exception e)
+               {
+                  throw new Error("Unexpected error loading JDKChecker " + className, e);
+               }
+
+               return mof;
+            }
+         });
+   }
+
    /**
     * Create the factory
     * 


Property changes on: projects/jboss-man/trunk/managed/src/main/org/jboss/managed/plugins/factory/ManagedObjectFactoryBuilder.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision




More information about the jboss-cvs-commits mailing list