You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ms...@apache.org on 2007/02/16 23:58:25 UTC

svn commit: r508640 - in /incubator/ode/trunk: axis2/src/main/java/org/apache/ode/axis2/ bpel-epr/src/main/java/org/apache/ode/il/config/ bpel-epr/src/main/java/org/apache/ode/il/dbutil/ bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ bpel-stor...

Author: mszefler
Date: Fri Feb 16 14:58:22 2007
New Revision: 508640

URL: http://svn.apache.org/viewvc?view=rev&rev=508640
Log:
Further refactor of datastore config.

Modified:
    incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
    incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java
    incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Database.java
    incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Messages.java
    incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
    incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
    incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConfigProperties.java
    incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java

Modified: incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java?view=diff&rev=508640&r1=508639&r2=508640
==============================================================================
--- incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java (original)
+++ incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java Fri Feb 16 14:58:22 2007
@@ -19,12 +19,8 @@
 
 package org.apache.ode.axis2;
 
-import java.io.BufferedInputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Properties;
 import java.util.StringTokenizer;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -50,7 +46,6 @@
 import org.apache.ode.axis2.service.ManagementService;
 import org.apache.ode.bpel.connector.BpelServerConnector;
 import org.apache.ode.bpel.dao.BpelDAOConnectionFactory;
-import org.apache.ode.bpel.dao.BpelDAOConnectionFactoryJDBC;
 import org.apache.ode.bpel.engine.BpelServerImpl;
 import org.apache.ode.bpel.engine.CountLRUDehydrationPolicy;
 import org.apache.ode.bpel.iapi.BpelEventListener;
@@ -95,6 +90,8 @@
 
     protected Scheduler _scheduler;
 
+    protected Database _db;
+
     private DeploymentPoller _poller;
 
     private MultiKeyMap _services = new MultiKeyMap();
@@ -103,7 +100,6 @@
 
     private BpelServerConnector _connector;
 
-    private Database _db;
 
     public void init(ServletConfig config, AxisConfiguration axisConf) throws ServletException {
         boolean success = false;
@@ -408,30 +404,15 @@
      * @throws ServletException
      */
     protected void initDAO() throws ServletException {
-        Properties properties = new Properties();
-        File daoPropFile;
-        String confDir = System.getProperty("org.apache.ode.configDir");
-        daoPropFile = new File((confDir != null) ? new File(confDir) : _appRoot, "bpel-dao.properties");
-
-        if (daoPropFile.exists()) {
-            FileInputStream fis;
-            try {
-                fis = new FileInputStream(daoPropFile);
-                properties.load(new BufferedInputStream(fis));
-            } catch (IOException e) {
-                String errmsg = __msgs.msgOdeInitDAOErrorReadingProperties(daoPropFile);
-                __log.error(errmsg, e);
-                throw new ServletException(errmsg, e);
-            }
-        } else {
-            __log.info(__msgs.msgOdeInitHibernatePropertiesNotFound(daoPropFile));
+        __log.info(__msgs.msgOdeUsingDAOImpl(_odeConfig.getDAOConnectionFactory()));
+        try {
+            _daoCF = _db.createDaoCF();
+        } catch (Exception ex) {
+            String errmsg = __msgs.msgDAOInstantiationFailed(_odeConfig.getDAOConnectionFactory());
+            __log.error(errmsg, ex);
+            throw new ServletException(errmsg, ex);
+            
         }
-
-        BpelDAOConnectionFactoryJDBC cf = createDaoCF();
-        cf.setDataSource(_db.getDataSource());
-        cf.setTransactionManager(_txMgr);
-        cf.init(properties);
-        _daoCF = cf;
     }
 
     protected void initProcessStore() {
@@ -441,7 +422,7 @@
     }
 
     protected ProcessStoreImpl createProcessStore(DataSource ds) {
-        return new ProcessStoreImpl(ds);
+        return new ProcessStoreImpl(ds, _odeConfig.getDAOConnectionFactory(),false);
     }
 
     protected Scheduler createScheduler() {
@@ -525,32 +506,6 @@
         default:
             __log.debug("Ignoring store event: " + pse);
         }
-    }
-
-    private BpelDAOConnectionFactoryJDBC createDaoCF() throws ServletException {
-        String pClassName = "org.apache.ode.dao.jpa.ojpa.BPELDAOConnectionFactoryImpl";
-        String persistenceType = System.getProperty("ode.persistence");
-        if (persistenceType != null) {
-            if ("hibernate".equalsIgnoreCase(persistenceType))
-                pClassName = "org.apache.ode.daohib.bpel.BpelDAOConnectionFactoryImpl";
-            else if ("jpa".equalsIgnoreCase(persistenceType))
-                pClassName = "org.apache.ode.dao.jpa.ojpa.BPELDAOConnectionFactoryImpl";
-            else
-                pClassName = persistenceType;
-        }
-
-        __log.info(__msgs.msgOdeUsingDAOImpl(pClassName));
-
-        BpelDAOConnectionFactoryJDBC cf;
-        try {
-            cf = (BpelDAOConnectionFactoryJDBC) Class.forName(pClassName).newInstance();
-        } catch (Exception ex) {
-            String errmsg = __msgs.msgDAOInstantiationFailed(pClassName);
-            __log.error(errmsg, ex);
-            throw new ServletException(errmsg, ex);
-        }
-
-        return cf;
     }
 
 }

Modified: incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java?view=diff&rev=508640&r1=508639&r2=508640
==============================================================================
--- incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java (original)
+++ incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java Fri Feb 16 14:58:22 2007
@@ -51,8 +51,6 @@
 
     private static final String PROP_DB_LOGGING = "db.logging";
 
-    private static final String PROP_DB_DAO = "db.dao";
-
     private static final String PROP_TX_FACTORY_CLASS = "tx.factory.class";
 
     private static final String PROP_POOL_MAX = "db.pool.max";
@@ -71,12 +69,29 @@
 
     private static final String PROP_PROCESS_DEHYDRATION = "process.dehydration";
 
+    private static final String PROP_DAOCF = "dao.factory";
+
+
     private File _cfgFile;
 
     private String _prefix;
 
     private Properties _props;
 
+    /** Default defaults for the database embedded name and dao connection factory class. */
+    private static String __dbEmbName = "jpadb";
+    private static String __daoCfClass = "org.apache.ode.dao.jpa.ojpa.BPELDAOConnectionFactoryImpl";
+
+    static {
+        String odep = System.getProperty("ode.persistence");
+        if (odep != null && 
+                "hibernate".equalsIgnoreCase(odep)) {
+            __log.debug("Using HIBERNATE due to system property override!");
+            __dbEmbName = "hibdb";
+            __daoCfClass = "org.apache.ode.daohib.bpel.BpelDAOConnectionFactoryImpl";
+            
+        }
+    }
     /**
      * Possible database modes.
      */
@@ -91,10 +106,6 @@
         EMBEDDED
     }
 
-    public enum DaoType {
-        JPA, HIBERNATE
-    }
-
     public OdeConfigProperties(File cfgFile, String prefix) {
         _cfgFile = cfgFile;
         _prefix = prefix;
@@ -131,10 +142,19 @@
      * 
      * @return db mode
      */
+    public String getDbEmbeddedName() {
+        return getProperty(OdeConfigProperties.PROP_DB_EMBEDDED_NAME, __dbEmbName); 
+                
+    }  
+    
     public DatabaseMode getDbMode() {
         return DatabaseMode.valueOf(getProperty(OdeConfigProperties.PROP_DB_MODE, DatabaseMode.EMBEDDED.toString()).trim()
                 .toUpperCase());
     }
+    
+    public String getDAOConnectionFactory() {
+        return getProperty(PROP_DAOCF, __daoCfClass);        
+    }
 
     public String getDbDataSource() {
         return getProperty(OdeConfigProperties.PROP_DB_EXTERNAL_DS, "java:comp/env/jdbc/ode-ds");
@@ -193,19 +213,6 @@
         return Boolean.valueOf(getProperty(OdeConfigProperties.PROP_DB_LOGGING, "false"));
     }
 
-    public DaoType getDbDaoImpl() {
-        try {
-            String persistenceType = System.getProperty("ode.persistence");
-            if (persistenceType != null) {
-                return DaoType.valueOf(persistenceType.toUpperCase());
-            }
-        } catch (Throwable t) {
-            __log.debug("error reading system property override for DAO type.", t);
-            // fall through, and use the default mechanism
-        }
-       
-        return DaoType.valueOf(_props.getProperty(PROP_DB_DAO, DaoType.JPA.toString()));
-    }
 
     protected String getProperty(String pname) {
         return _props.getProperty(_prefix + pname);
@@ -213,6 +220,10 @@
 
     protected String getProperty(String key, String dflt) {
         return _props.getProperty(_prefix + key, dflt);
+    }
+
+    public Properties getProperties() {
+        return _props;
     }
 
 }

Modified: incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Database.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Database.java?view=diff&rev=508640&r1=508639&r2=508640
==============================================================================
--- incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Database.java (original)
+++ incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Database.java Fri Feb 16 14:58:22 2007
@@ -11,6 +11,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.derby.jdbc.EmbeddedDriver;
+import org.apache.ode.bpel.dao.BpelDAOConnectionFactoryJDBC;
 import org.apache.ode.il.config.OdeConfigProperties;
 import org.apache.ode.utils.LoggingDataSourceWrapper;
 import org.opentools.minerva.MinervaPool;
@@ -175,19 +176,7 @@
      */
     private void initEmbeddedDb() throws DatabaseConfigException {
 
-        String db;
-        switch (_odeConfig.getDbDaoImpl()) {
-        case HIBERNATE:
-            db = "hibdb";
-            break;
-        case JPA:
-            db = "jpadb";
-            break;
-        default:
-            String errmsg = __msgs.msgUnrecoginizedDaoType(_odeConfig.getDbDaoImpl());
-            __log.error(errmsg);
-            throw new DatabaseConfigException(errmsg, null);
-        }
+        String db = _odeConfig.getDbEmbeddedName();
 
         String url = "jdbc:derby:" + _workRoot + "/" + db ;
         __log.info("Using Embedded Derby: " + url);
@@ -216,6 +205,26 @@
         } finally {
             Thread.currentThread().setContextClassLoader(old);
         }
+    }
+
+    public BpelDAOConnectionFactoryJDBC createDaoCF() throws DatabaseConfigException  {
+        String pClassName = _odeConfig.getDAOConnectionFactory();
+
+        __log.info(__msgs.msgOdeUsingDAOImpl(pClassName));
+
+        BpelDAOConnectionFactoryJDBC cf;
+        try {
+            cf = (BpelDAOConnectionFactoryJDBC) Class.forName(pClassName).newInstance();
+        } catch (Exception ex) {
+            String errmsg = __msgs.msgDAOInstantiationFailed(pClassName);
+            __log.error(errmsg, ex);
+            throw new DatabaseConfigException(errmsg, ex);
+        }
+
+        cf.setDataSource(_datasource);
+        cf.setTransactionManager(_txm);
+        cf.init(_odeConfig.getProperties());
+        return cf;
     }
 
 }

Modified: incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Messages.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Messages.java?view=diff&rev=508640&r1=508639&r2=508640
==============================================================================
--- incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Messages.java (original)
+++ incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Messages.java Fri Feb 16 14:58:22 2007
@@ -2,7 +2,6 @@
 
 import java.io.File;
 
-import org.apache.ode.il.config.OdeConfigProperties.DaoType;
 import org.apache.ode.utils.msg.MessageBundle;
 
 public class Messages extends MessageBundle {
@@ -39,10 +38,6 @@
     public String msgDAOInstantiationFailed(String className) {
         return format("Error instantiating DAO Connection Factory class {0}.", className);
 
-    }
-
-    public String msgUnrecoginizedDaoType(DaoType dbDaoImpl) {
-        return format("Unsupported/Unrecoginized DAO type {0}. ", dbDaoImpl);
     }
 
 }

Modified: incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java?view=diff&rev=508640&r1=508639&r2=508640
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java Fri Feb 16 14:58:22 2007
@@ -88,7 +88,7 @@
             if (_scheduler == null)
                 throw new RuntimeException("No scheduler");
             //_store = new ProcessStoreImpl(new File("."), _dataSource, _txManager);
-            _store = new ProcessStoreImpl(_dataSource);
+            _store = new ProcessStoreImpl(_dataSource,"jpa", true);
             _server.setScheduler(_scheduler);
             _server.setEndpointReferenceContext(createEndpointReferenceContext());
             _server.setMessageExchangeContext(createMessageExchangeContext());

Modified: incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java?view=diff&rev=508640&r1=508639&r2=508640
==============================================================================
--- incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java (original)
+++ incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java Fri Feb 16 14:58:22 2007
@@ -81,20 +81,13 @@
     private DataSource _inMemDs;
 
     public ProcessStoreImpl() {
-        this(null);
+        this(null, "", true);
     }
-
-    public ProcessStoreImpl(DataSource ds) {
-        this(ds, false);
-    }
-
-    public ProcessStoreImpl(DataSource ds, boolean auto) {
-        this(ds, System.getProperty("ode.persistence"), auto);
-    }
-
+    
     public ProcessStoreImpl(DataSource ds, String persistenceType, boolean auto) {
         if (ds != null) {
-            if ("hibernate".equalsIgnoreCase(persistenceType))
+            // ugly hack
+            if (persistenceType.toLowerCase().indexOf("hib") != -1)
                 _cf = new org.apache.ode.store.hib.DbConfStoreConnectionFactory(ds, auto);
             else
                 _cf = new org.apache.ode.store.jpa.DbConfStoreConnectionFactory(ds, auto);

Modified: incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConfigProperties.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConfigProperties.java?view=diff&rev=508640&r1=508639&r2=508640
==============================================================================
--- incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConfigProperties.java (original)
+++ incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConfigProperties.java Fri Feb 16 14:58:22 2007
@@ -34,8 +34,6 @@
 
     private static final String PROP_ALLOW_INCOMPLETE_DEPLOYMENT = "allowIncompleteDeployment";
    
-    private static final String PROP_DAOCF = "dao.factory";
-
     private static final String PROP_MSGMAPPER = "messageMapper";
 
 
@@ -70,7 +68,4 @@
         return getProperty(PROP_MSGMAPPER, JbiWsdl11WrapperMapper.class.getName());
     }
 
-    public String getDAOConnectionFactory() {
-        return getProperty(PROP_DAOCF, "org.apache.ode.dao.jpa.ojpa.BPELDAOConnectionFactoryImpl");        
-    }
  }

Modified: incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java?view=diff&rev=508640&r1=508639&r2=508640
==============================================================================
--- incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java (original)
+++ incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java Fri Feb 16 14:58:22 2007
@@ -19,12 +19,8 @@
 
 package org.apache.ode.jbi;
 
-import java.io.BufferedInputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Properties;
 import java.util.concurrent.Executors;
 
 import javax.jbi.JBIException;
@@ -42,6 +38,7 @@
 import org.apache.ode.bpel.engine.BpelServerImpl;
 import org.apache.ode.bpel.scheduler.quartz.QuartzSchedulerImpl;
 import org.apache.ode.il.dbutil.Database;
+import org.apache.ode.il.dbutil.DatabaseConfigException;
 import org.apache.ode.jbi.msgmap.Mapper;
 import org.apache.ode.store.ProcessStoreImpl;
 import org.apache.ode.utils.fs.TempFileManager;
@@ -196,7 +193,7 @@
         _ode._scheduler.setDataSource(_ode._dataSource);
         _ode._scheduler.init();
 
-        _ode._store = new ProcessStoreImpl(_ode._dataSource, _ode._config.getDbDaoImpl().toString(), false);
+        _ode._store = new ProcessStoreImpl(_ode._dataSource, _ode._config.getDAOConnectionFactory(), false);
         _ode._store.loadAll();
 
         _ode._server.setInMemDaoConnectionFactory(new org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl());
@@ -216,31 +213,13 @@
      * @throws JBIException
      */
     private void initDao() throws JBIException {
-
-        Properties properties = new Properties();
-        File daoPropFile;
-        String confDir = _ode.getContext().getInstallRoot();
-        daoPropFile = new File((confDir != null) ? new File(confDir) : new File(""), "bpel-dao.properties");
-
-        if (daoPropFile.exists()) {
-            FileInputStream fis;
-            try {
-                fis = new FileInputStream(daoPropFile);
-                properties.load(new BufferedInputStream(fis));
-            } catch (IOException e) {
-                String errmsg = __msgs.msgOdeInitDAOErrorReadingProperties(daoPropFile);
-                __log.error(errmsg, e);
-                throw new JBIException(errmsg, e);
-            }
-        } else {
-            __log.info(__msgs.msgOdeInitDAOPropertiesNotFound(daoPropFile));
+        BpelDAOConnectionFactoryJDBC cf;
+        try {
+            cf = _db.createDaoCF();
+        } catch (DatabaseConfigException e) {
+            String errmsg = __msgs.msgDAOInstantiationFailed(_ode._config.getDAOConnectionFactory());
+            throw new JBIException(errmsg,e);
         }
-
-        BpelDAOConnectionFactoryJDBC cf = createDaoCF();
-        cf.setDataSource(_ode._dataSource);
-        cf.setTransactionManager(_ode.getTransactionManager());
-        cf.init(properties);
-
         _ode._daocf = cf;
     }
 
@@ -265,22 +244,7 @@
         }
     }
 
-    private BpelDAOConnectionFactoryJDBC createDaoCF() throws JBIException {
-        String pClassName = _ode._config.getDAOConnectionFactory();
-
-        __log.info(__msgs.msgOdeUsingDAOImpl(pClassName));
-
-        BpelDAOConnectionFactoryJDBC cf;
-        try {
-            cf = (BpelDAOConnectionFactoryJDBC) Class.forName(pClassName).newInstance();
-        } catch (Exception ex) {
-            String errmsg = __msgs.msgDAOInstantiationFailed(pClassName);
-            __log.error(errmsg, ex);
-            throw new JBIException(errmsg, ex);
-        }
-
-        return cf;
-    }
+ 
 
     public synchronized void start() throws JBIException {
         if (_started)