You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by aj...@apache.org on 2005/04/19 07:31:59 UTC

svn commit: r161844 - in webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om: FactoryFinder.java OMFactory.java

Author: ajith
Date: Mon Apr 18 22:31:59 2005
New Revision: 161844

URL: http://svn.apache.org/viewcvs?view=rev&rev=161844
Log:
Updated the factory finder. Now the actual factory implementation is picked up by a system property as well.

Modified:
    webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/FactoryFinder.java
    webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/OMFactory.java

Modified: webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/FactoryFinder.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/FactoryFinder.java?view=diff&r1=161843&r2=161844
==============================================================================
--- webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/FactoryFinder.java (original)
+++ webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/FactoryFinder.java Mon Apr 18 22:31:59 2005
@@ -19,29 +19,48 @@
  * Class FactoryFinder
  */
 class FactoryFinder {
-    /**
-     * Field DEFAULT_CLASS_NAME
-     */
     private static final String DEFAULT_CLASS_NAME =
             "org.apache.axis.om.impl.llom.factory.OMLinkedListImplFactory";
+    private static final String OM_FACTORY_NAME_PROPERTY = "om.factory";
 
     /**
-     * This needs to be improved. Currently the factory is loaded only from the default implementation
-     * However provisions should be made to load a custom factory depending on the users setting
-     * Say an environment variable
+     * Returns a factory using the default class loader
+     * @see #findFactory(ClassLoader)
+     * @return
+     * @throws OMFactoryException
+     */
+    public static OMFactory findFactory()
+                throws OMFactoryException {
+        return findFactory(null);
+    }
+    /**
+     * The searching for the factory class happens in the following order
+     *  1. look for a system property called <b>om.factory</b>. this can be set by passing the
+     *     -Dom.factory="classname"
+     *  2. Pick the default factory class. it is the class hardcoded at the constant
+     *     DEFAULT_CLASS_NAME
      *
      * @param loader
      * @return
      * @throws OMFactoryException
      */
+
+
     public static OMFactory findFactory(ClassLoader loader)
             throws OMFactoryException {
+
+        String factoryClassName = DEFAULT_CLASS_NAME;
+        //first look for a java system property
+       if (System.getProperty(OM_FACTORY_NAME_PROPERTY)!=null){
+           factoryClassName = OM_FACTORY_NAME_PROPERTY;
+       };
+
         Object factory = null;
         try {
             if (loader == null) {
-                factory = Class.forName(DEFAULT_CLASS_NAME).newInstance();
+                factory = Class.forName(factoryClassName).newInstance();
             } else {
-                factory = loader.loadClass(DEFAULT_CLASS_NAME).newInstance();
+                factory = loader.loadClass(factoryClassName).newInstance();
             }
         } catch (Exception e) {
             throw new OMFactoryException(e);

Modified: webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/OMFactory.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/OMFactory.java?view=diff&r1=161843&r2=161844
==============================================================================
--- webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/OMFactory.java (original)
+++ webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/OMFactory.java Mon Apr 18 22:31:59 2005
@@ -177,7 +177,7 @@
      * @return
      */
     public static OMFactory newInstance() {
-        return FactoryFinder.findFactory(null);
+        return FactoryFinder.findFactory();
     }
 
     /**