[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