[jboss-cvs] JBossAS SVN: r76501 - projects/jboss-man/trunk/metatype/src/main/org/jboss/metatype/plugins/values.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jul 31 00:49:01 EDT 2008
Author: scott.stark at jboss.org
Date: 2008-07-31 00:49:00 -0400 (Thu, 31 Jul 2008)
New Revision: 76501
Modified:
projects/jboss-man/trunk/metatype/src/main/org/jboss/metatype/plugins/values/MetaValueFactoryBuilder.java
Log:
JBMAN-2, externalize the MetaValueFactory implementation using the org.jboss.metatype.api.values.MetaValueFactory system property.
Modified: projects/jboss-man/trunk/metatype/src/main/org/jboss/metatype/plugins/values/MetaValueFactoryBuilder.java
===================================================================
--- projects/jboss-man/trunk/metatype/src/main/org/jboss/metatype/plugins/values/MetaValueFactoryBuilder.java 2008-07-31 04:31:39 UTC (rev 76500)
+++ projects/jboss-man/trunk/metatype/src/main/org/jboss/metatype/plugins/values/MetaValueFactoryBuilder.java 2008-07-31 04:49:00 UTC (rev 76501)
@@ -21,20 +21,70 @@
*/
package org.jboss.metatype.plugins.values;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
import org.jboss.metatype.api.values.MetaValueFactory;
/**
* MetaValueFactoryBuilder.
*
- * 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.metatype.api.values.MetaValueFactory 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 MetaValueFactoryBuilder
{
/** The singleton */
- private static final MetaValueFactory singleton = new DefaultMetaValueFactory();
-
+ private static final MetaValueFactory singleton;
+
+ static
+ {
+ singleton = AccessController.doPrivileged(new PrivilegedAction<MetaValueFactory>()
+ {
+ public MetaValueFactory run()
+ {
+ MetaValueFactory mvf = null;
+ String defaultMVF = DefaultMetaValueFactory.class.getName();
+ // The system property for the MetaValueFactory class to use
+ String className = System.getProperty(MetaValueFactory.class.getName(), defaultMVF);
+ 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();
+ mvf = MetaValueFactory.class.cast(result);
+ }
+ catch (RuntimeException e)
+ {
+ throw e;
+ }
+ catch (Exception e)
+ {
+ throw new Error("Unexpected error loading MetaValueFactory " + className, e);
+ }
+
+ return mvf;
+ }
+ });
+ }
+
/**
* Create the factory
*
Property changes on: projects/jboss-man/trunk/metatype/src/main/org/jboss/metatype/plugins/values/MetaValueFactoryBuilder.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
More information about the jboss-cvs-commits
mailing list