Copied: 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/ConfStoreConnectionHib.java
 (from r469994, 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/dao/ConfStoreConnectionHib.java)
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/ConfStoreConnectionHib.java?view=diff&rev=480340&p1=incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/dao/ConfStoreConnectionHib.java&r1=469994&p2=incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/ConfStoreConnectionHib.java&r2=480340
==============================================================================
--- 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/dao/ConfStoreConnectionHib.java
 (original)
+++ 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/ConfStoreConnectionHib.java
 Tue Nov 28 18:30:54 2006
@@ -1,226 +1,89 @@
-package org.apache.ode.store.dao;
+package org.apache.ode.store.hib;
+
+import java.util.Collection;
+import java.util.Date;
+
+import javax.xml.namespace.QName;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.ode.bpel.iapi.BpelEngineException;
+import org.apache.ode.store.ConfStoreConnection;
+import org.apache.ode.store.DeploymentUnitDAO;
 import org.apache.ode.store.Messages;
-import org.apache.ode.store.hobj.HProcessConf;
-import org.apache.ode.store.hobj.HProcessProperty;
+import org.apache.ode.store.ProcessConfDAO;
 import org.apache.ode.utils.msg.MessageBundle;
 import org.hibernate.Criteria;
 import org.hibernate.HibernateException;
-import org.hibernate.MappingException;
-import org.hibernate.SessionFactory;
-import org.hibernate.cfg.Configuration;
-import org.hibernate.cfg.Environment;
-import org.hibernate.connection.ConnectionProvider;
-import org.hibernate.criterion.Expression;
-import org.hibernate.dialect.Dialect;
-import org.hibernate.dialect.DialectFactory;
-
-import javax.sql.DataSource;
-import javax.xml.namespace.QName;
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.SQLException;
-import java.util.*;
+import org.hibernate.Transaction;
+import org.hibernate.Session;
 
 /**
+ * Connection to a Hibernate data store. Essentially a thin wrapper around 
Hibernate's
+ * [EMAIL PROTECTED] org.hibernate.Session} interface.
  * @author mriou <mriou at apache dot org>
  */
 public class ConfStoreConnectionHib implements ConfStoreConnection {
 
     private static final Log __log = 
LogFactory.getLog(ConfStoreConnectionHib.class);
-    private static final Messages __msgs = 
MessageBundle.getMessages(Messages.class);
-
-    private static DataSource _ds;
-    private final SessionFactory _sessionFactory;
-
-    public ConfStoreConnectionHib(DataSource _ds, File appRoot) {
-        org.apache.ode.store.dao.ConfStoreConnectionHib._ds = _ds;
-        Properties properties = new Properties();
-        properties.put(Environment.CONNECTION_PROVIDER, 
DataSourceConnectionProvider.class.getName());
-        properties.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
-
-        try {
-            properties.put(Environment.DIALECT, guessDialect(_ds));
-        } catch (Exception ex) {
-            String errmsg = __msgs.msgOdeInitHibernateDialectDetectFailed();
-            __log.error(errmsg,ex);
-            throw new BpelEngineException(errmsg,ex);
-        }
-
-        File hibernatePropFile;
-        String confDir = System.getProperty("org.apache.ode.configDir");
-        if (confDir != null) hibernatePropFile = new File(confDir, 
"hibernate.properties");
-        else hibernatePropFile = new File(appRoot, "conf" + File.separatorChar 
+ "hibernate.properties");
-
-        if (hibernatePropFile.exists()) {
-            FileInputStream fis;
-            try {
-                fis = new FileInputStream(hibernatePropFile);
-                properties.load(new BufferedInputStream(fis));
-            } catch (IOException e) {
-                String errmsg = __msgs
-                        
.msgOdeInitHibernateErrorReadingHibernateProperties(hibernatePropFile);
-                __log.error(errmsg, e);
-                throw new BpelEngineException(errmsg, e);
-            }
-        } else {
-            
__log.info(__msgs.msgOdeInitHibernatePropertiesNotFound(hibernatePropFile));
-        }
-
-        _sessionFactory = 
getDefaultConfiguration().setProperties(properties).buildSessionFactory();
+    private Session _session;
+    private Transaction _tx;
 
+    static final ThreadLocal<Session> _current = new ThreadLocal<Session>();
+    
+    public ConfStoreConnectionHib(Session session) {
+        _session = session;
+        _current.set(session);
     }
 
-    public ProcessConfDAO getProcessConf(QName pid) {
+    public ProcessConfDAO getProcess(QName pid) {
         try {
-            Criteria criteria = 
_sessionFactory.getCurrentSession().createCriteria(HProcessConf.class);
-            criteria.add(Expression.eq("processId", pid.toString()));
-            // For the moment we are expecting only one result.
-            HProcessConf hprocess = (HProcessConf) criteria.uniqueResult();
-            return hprocess == null ? null : new 
ProcessConfDAOHib(_sessionFactory, hprocess);
+            return (ProcessConfDaoImpl) 
_session.get(ProcessConfDaoImpl.class,pid.toString());
         } catch (HibernateException e) {
             __log.error("DbError", e);
             throw e;
         }
     }
 
-    public List<ProcessConfDAO> getActiveProcesses() {
+
+    public DeploymentUnitDAO createDeploymentUnit(String name) {
+        DeploymentUnitDaoImpl du = new DeploymentUnitDaoImpl();
+        du.setName(name);
+        du.setDeployDate(new Date());
+        _session.save(du);
+        return du;
+    }
+
+    public DeploymentUnitDAO getDeploymentUnit(String name) {
         try {
-            Criteria criteria = 
_sessionFactory.getCurrentSession().createCriteria(HProcessConf.class);
-            criteria.add(Expression.eq("active", Boolean.TRUE));
-            // For the moment we are expecting only one result.
-            List hprocesses = criteria.list();
-            ArrayList<ProcessConfDAO> result = new 
ArrayList<ProcessConfDAO>(hprocesses.size());
-            for (Object hprocess : hprocesses) {
-                HProcessConf hpc = (HProcessConf)hprocess;
-                result.add(new ProcessConfDAOHib(_sessionFactory, hpc));
-            }
-            return result;
+            DeploymentUnitDaoImpl du = (DeploymentUnitDaoImpl) 
_session.get(DeploymentUnitDaoImpl.class,name);
+            return du;
         } catch (HibernateException e) {
             __log.error("DbError", e);
             throw e;
         }
     }
 
-    public ProcessConfDAO createProcess(QName pid, QName type) {
-        HProcessConf process = new HProcessConf();
-        process.setProcessId(pid.toString());
-        process.setTypeName(type.getLocalPart());
-        process.setTypeNamespace(type.getNamespaceURI());
-        process.setDeployDate(new Date());
-        _sessionFactory.getCurrentSession().save(process);
-        return new ProcessConfDAOHib(_sessionFactory, process);
+    @SuppressWarnings("unchecked")
+    public Collection<DeploymentUnitDAO> getDeploymentUnits() {
+        Criteria c = _session.createCriteria(DeploymentUnitDaoImpl.class);
+        return c.list();
     }
 
-
-    public static Configuration getDefaultConfiguration() throws 
MappingException {
-        return new 
Configuration().addClass(HProcessConf.class).addClass(HProcessProperty.class);
-    }
-
-    private String guessDialect(DataSource dataSource) throws Exception {
-        String dialect = null;
-        // Open a connection and use that connection to figure out database
-        // product name/version number in order to decide which Hibernate
-        // dialect to use.
-        Connection conn = dataSource.getConnection();
-        try {
-            DatabaseMetaData metaData = conn.getMetaData();
-            if (metaData != null) {
-                String dbProductName = metaData.getDatabaseProductName();
-                int dbMajorVer = metaData.getDatabaseMajorVersion();
-                __log.info("Using database " + dbProductName + " major version 
"
-                        + dbMajorVer);
-                DialectFactory.DatabaseDialectMapper mapper = 
HIBERNATE_DIALECTS.get(dbProductName);
-                if (mapper != null) {
-                    dialect = mapper.getDialectClass(dbMajorVer);
-                } else {
-                    Dialect hbDialect = 
DialectFactory.determineDialect(dbProductName, dbMajorVer);
-                    if (hbDialect != null)
-                        dialect = hbDialect.getClass().getName();
-                }
-            }
-        } finally {
-            conn.close();
-        }
-
-        if (dialect == null) {
-            __log
-                    .info("Cannot determine hibernate dialect for this 
database: using the default one.");
-            dialect = DEFAULT_HIBERNATE_DIALECT;
-        }
-
-        return dialect;
-
+    public void close() {
+        _session.close();
     }
 
-    public static class DataSourceConnectionProvider implements 
ConnectionProvider {
-        public DataSourceConnectionProvider() {
-        }
-
-        public void configure(Properties props) throws HibernateException {
-        }
-
-        public Connection getConnection() throws SQLException {
-            return _ds.getConnection();
-        }
-
-        public void closeConnection(Connection arg0) throws SQLException {
-            arg0.close();
-        }
-
-        public void close() throws HibernateException {
-        }
-
-        public boolean supportsAggressiveRelease() {
-            return true;
-        }
+    public void begin() {
+        _tx=_session.beginTransaction();
     }
 
-    private static final String DEFAULT_HIBERNATE_DIALECT = 
"org.hibernate.dialect.DerbyDialect";
-    private static final HashMap<String, 
DialectFactory.VersionInsensitiveMapper> HIBERNATE_DIALECTS = new 
HashMap<String, DialectFactory.VersionInsensitiveMapper>();
+    public void commit() {
+        _tx.commit();
+    }
 
-    static {
-        // Hibernate has a nice table that resolves the dialect from the 
database
-        // product name,
-        // but doesn't include all the drivers. So this is supplementary, and 
some
-        // day in the
-        // future they'll add more drivers and we can get rid of this.
-        // Drivers already recognized by Hibernate:
-        // HSQL Database Engine
-        // DB2/NT
-        // MySQL
-        // PostgreSQL
-        // Microsoft SQL Server Database, Microsoft SQL Server
-        // Sybase SQL Server
-        // Informix Dynamic Server
-        // Oracle 8 and Oracle >8
-        HIBERNATE_DIALECTS.put("Apache Derby",
-                new DialectFactory.VersionInsensitiveMapper(
-                        "org.hibernate.dialect.DerbyDialect"));
-    }
-
-    /**
-     * Execute a self-contained database transaction.
-     * @param callable database transaction
-     * @return callable result
-     */
-    public <T> T exec(final Callable<T> callable) throws Exception {
-        try {
-            _sessionFactory.getCurrentSession().beginTransaction();
-            T result =  callable.run();
-            _sessionFactory.getCurrentSession().getTransaction().commit();
-            return result;
-        } catch (Exception e) {
-            _sessionFactory.getCurrentSession().getTransaction().rollback();
-            throw e;
-        }
+    public void rollback() {
+        _tx.rollback();
+        
     }
 
 }

Added: 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java?view=auto&rev=480340
==============================================================================
--- 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java
 (added)
+++ 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java
 Tue Nov 28 18:30:54 2006
@@ -0,0 +1,158 @@
+package org.apache.ode.store.hib;
+
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.sql.DataSource;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ode.bpel.iapi.BpelEngineException;
+import org.apache.ode.store.Messages;
+import org.apache.ode.utils.GUID;
+import org.apache.ode.utils.msg.MessageBundle;
+import org.hibernate.HibernateException;
+import org.hibernate.MappingException;
+import org.hibernate.SessionFactory;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.cfg.Environment;
+import org.hibernate.connection.ConnectionProvider;
+import org.hibernate.dialect.Dialect;
+import org.hibernate.dialect.DialectFactory;
+
+public class DbConfStoreConnectionFactory implements 
ConfStoreConnectionFactory {
+    private static final Log __log = 
LogFactory.getLog(DbConfStoreConnectionFactory.class);
+
+    private static final Messages __msgs = 
MessageBundle.getMessages(Messages.class);
+
+    private static final String DEFAULT_HIBERNATE_DIALECT = 
"org.hibernate.dialect.DerbyDialect";
+
+    private static final HashMap<String, 
DialectFactory.VersionInsensitiveMapper> HIBERNATE_DIALECTS = new 
HashMap<String, DialectFactory.VersionInsensitiveMapper>();
+
+    private static final String _guid = new GUID().toString();
+
+    private static final Map<String, DataSource> _dataSources = new 
ConcurrentHashMap<String, DataSource>();
+
+    static {
+        // Hibernate has a nice table that resolves the dialect from the 
database
+        // product name,
+        // but doesn't include all the drivers. So this is supplementary, and 
some
+        // day in the
+        // future they'll add more drivers and we can get rid of this.
+        // Drivers already recognized by Hibernate:
+        // HSQL Database Engine
+        // DB2/NT
+        // MySQL
+        // PostgreSQL
+        // Microsoft SQL Server Database, Microsoft SQL Server
+        // Sybase SQL Server
+        // Informix Dynamic Server
+        // Oracle 8 and Oracle >8
+        HIBERNATE_DIALECTS.put("Apache Derby", new 
DialectFactory.VersionInsensitiveMapper("org.hibernate.dialect.DerbyDialect"));
+    }
+
+    private final DataSource _ds;
+
+    final SessionFactory _sessionFactory;
+
+    public DbConfStoreConnectionFactory(DataSource ds, boolean auto) {
+        _ds = ds;
+
+        Properties properties = new Properties();
+
+        __log.debug("using data source: " + ds);
+        _dataSources.put(_guid, ds);
+        properties.put("guid", _guid);
+        properties.put(Environment.CONNECTION_PROVIDER, 
DataSourceConnectionProvider.class.getName());
+        
+        try {
+            properties.put(Environment.DIALECT, guessDialect(_ds));
+        } catch (Exception ex) {
+            String errmsg = __msgs.msgOdeInitHibernateDialectDetectFailed();
+            __log.error(errmsg, ex);
+            throw new BpelEngineException(errmsg, ex);
+        }
+        
+        if (auto) {
+            properties.put(Environment.HBM2DDL_AUTO, "create-drop");
+        }
+
+        _sessionFactory = 
getDefaultConfiguration().setProperties(properties).buildSessionFactory();
+
+    }
+
+    public ConfStoreConnectionHib getConnection() {
+        return new ConfStoreConnectionHib(_sessionFactory.openSession());
+    }
+
+    private String guessDialect(DataSource dataSource) throws Exception {
+
+        String dialect = null;
+        // Open a connection and use that connection to figure out database
+        // product name/version number in order to decide which Hibernate
+        // dialect to use.
+        Connection conn = dataSource.getConnection();
+        try {
+            DatabaseMetaData metaData = conn.getMetaData();
+            if (metaData != null) {
+                String dbProductName = metaData.getDatabaseProductName();
+                int dbMajorVer = metaData.getDatabaseMajorVersion();
+                __log.info("Using database " + dbProductName + " major version 
" + dbMajorVer);
+                DialectFactory.DatabaseDialectMapper mapper = 
HIBERNATE_DIALECTS.get(dbProductName);
+                if (mapper != null) {
+                    dialect = mapper.getDialectClass(dbMajorVer);
+                } else {
+                    Dialect hbDialect = 
DialectFactory.determineDialect(dbProductName, dbMajorVer);
+                    if (hbDialect != null)
+                        dialect = hbDialect.getClass().getName();
+                }
+            }
+        } finally {
+            conn.close();
+        }
+
+        if (dialect == null) {
+            __log.info("Cannot determine hibernate dialect for this database: 
using the default one.");
+            dialect = DEFAULT_HIBERNATE_DIALECT;
+        }
+
+        return dialect;
+
+    }
+
+    static Configuration getDefaultConfiguration() throws MappingException {
+        return new 
Configuration().addClass(ProcessConfDaoImpl.class).addClass(DeploymentUnitDaoImpl.class);
+    }
+
+    public static class DataSourceConnectionProvider implements 
ConnectionProvider {
+        private String _guid;
+
+        public DataSourceConnectionProvider() {
+        }
+
+        public void configure(Properties props) throws HibernateException {
+            _guid = props.getProperty("guid");
+        }
+
+        public Connection getConnection() throws SQLException {
+            return _dataSources.get(_guid).getConnection();
+        }
+
+        public void closeConnection(Connection arg0) throws SQLException {
+            arg0.close();
+        }
+
+        public void close() throws HibernateException {
+        }
+
+        public boolean supportsAggressiveRelease() {
+            return true;
+        }
+    }
+
+}

Added: 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/DeploymentUnitDaoImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/DeploymentUnitDaoImpl.java?view=auto&rev=480340
==============================================================================
--- 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/DeploymentUnitDaoImpl.java
 (added)
+++ 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/DeploymentUnitDaoImpl.java
 Tue Nov 28 18:30:54 2006
@@ -0,0 +1,128 @@
+package org.apache.ode.store.hib;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.iapi.ProcessState;
+import org.apache.ode.store.DeploymentUnitDAO;
+import org.apache.ode.store.ProcessConfDAO;
+import org.apache.ode.utils.stl.CollectionsX;
+import org.apache.ode.utils.stl.MemberOfFunction;
+
+/**
+ * @author mriou <mriou at apache dot org>
+ * @hibernate.class table="STORE_DU"
+ */
+public class DeploymentUnitDaoImpl extends HibObj implements DeploymentUnitDAO 
{
+
+    private Collection<ProcessConfDaoImpl> _processes = new 
HashSet<ProcessConfDaoImpl>();
+
+    /** User that deployed the process. */
+    private String _deployer;
+
+    /** Date of last deployment. */
+    private Date _deployDate;
+
+    private String _dir;
+
+    private String _name;
+
+    /**
+     * @hibernate.bag
+     *  lazy="false"
+     *  inverse="true"
+     *  cascade="all"
+     *  role="store_processes"
+     * @hibernate.collection-key
+     *  column="DU"
+     * @hibernate.collection-one-to-many
+     *  class="org.apache.ode.store.hib.ProcessConfDaoImpl"
+     */
+    public Collection<? extends ProcessConfDAO> getProcesses() {
+        return _processes;
+    }
+    
+   
+    public void setProcesses(Collection<ProcessConfDaoImpl> processes) {
+        _processes = processes;
+    }
+    
+    /**
+     * The user that deployed the process.
+     * @hibernate.property
+     *    column="deployer"
+     */
+    public String getDeployer() {
+        return _deployer;
+    }
+
+    public void setDeployer(String deployer) {
+        _deployer = deployer;
+    }
+
+    /**
+     * The date the process was deployed.
+     * @hibernate.property
+     *    column="DEPLOYDT"
+     */
+    public Date getDeployDate() {
+        return _deployDate;
+    }
+
+    public void setDeployDate(Date deployDate) {
+        _deployDate = deployDate;
+    }
+
+    /**
+     * @hibernate.id generator-class="assigned"
+     * @hibernate.column name="NAME"
+     */
+    public String getName() {
+        return _name;
+    }
+
+    public void setName(String name) {
+        _name = name;
+    }
+    
+    /**
+     * @hibernate.property column="DIR"
+     */
+    public String getDeploymentUnitDir() {
+        return _dir;
+    }
+    
+    public void setDeploymentUnitDir(String dir) {
+        _dir = dir;
+    }
+
+    public void delete() {
+        super.delete();
+    }
+    
+    public ProcessConfDAO createProcess(QName pid, QName type) {
+        ProcessConfDaoImpl p = new ProcessConfDaoImpl();
+        p.setPID(pid);
+        p.setType(type);
+        p.setDeploymentUnit(this);
+        p.setState(ProcessState.ACTIVE);
+        getSession().save(p);
+        _processes.add(p);
+        return p;
+    }
+
+    public ProcessConfDAO getProcess(final QName pid) {
+        return CollectionsX.find_if(_processes,new 
MemberOfFunction<ProcessConfDAO>() {
+            @Override
+            public boolean isMember(ProcessConfDAO o) {
+                return o.getPID().equals(pid);
+            }
+            
+        });
+    }
+ }
+

Added: 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/HibObj.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/HibObj.java?view=auto&rev=480340
==============================================================================
--- 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/HibObj.java
 (added)
+++ 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/HibObj.java
 Tue Nov 28 18:30:54 2006
@@ -0,0 +1,15 @@
+package org.apache.ode.store.hib;
+
+import org.hibernate.Session;
+
+
+public class HibObj  {
+
+    Session getSession() {
+        return ConfStoreConnectionHib._current.get();
+    }
+    
+    protected void delete() {
+        getSession().delete(this);
+    }
+}

Added: 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/ProcessConfDaoImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/ProcessConfDaoImpl.java?view=auto&rev=480340
==============================================================================
--- 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/ProcessConfDaoImpl.java
 (added)
+++ 
incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/hib/ProcessConfDaoImpl.java
 Tue Nov 28 18:30:54 2006
@@ -0,0 +1,168 @@
+package org.apache.ode.store.hib;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.iapi.ProcessState;
+import org.apache.ode.store.ProcessConfDAO;
+import org.apache.ode.utils.stl.CollectionsX;
+import org.apache.ode.utils.stl.UnaryFunction;
+
+/**
+ * @author mriou <mriou at apache dot org>
+ * @hibernate.class table="STORE_PROCESS"
+ */
+public class ProcessConfDaoImpl extends HibObj implements ProcessConfDAO {
+
+    private DeploymentUnitDaoImpl _du;
+    
+    /** [EMAIL PROTECTED] HProcessProperty}s for this process. */
+    private Map<String,String> _properties = new HashMap<String,String>();
+
+    /** Simple name of the process. */
+    private String _processId;
+
+    /** Process type. */
+    private String _type;
+
+    
+    /** Process version. */
+    private int _version;
+
+    /** Process state.*/
+    private String _state;
+
+
+    /**
+     * @hibernate.many-to-one 
+     * @hibernate.column name="DU"
+     */
+    public DeploymentUnitDaoImpl getDeploymentUnit() {
+        return _du;
+    }
+    
+    public void setDeploymentUnit(DeploymentUnitDaoImpl du) {
+        _du = du;
+    }
+    /**
+     * @hibernate.map table="STORE_PROCESS_PROP" role="properties_"
+     * @hibernate.collection-key column="propId" 
+     * @hibernate.collection-index column="name" type="string" 
+     * @hibernate.collection-element column="value" type="string"
+     */
+    public Map<String,String> getProperties_() {
+        return _properties;
+    }
+
+    public void setProperties_(Map<String,String> properties) {
+        _properties = properties;
+    }
+
+    /**
+     *
+     * @hibernate.id generator-class="assigned"
+     * @hibernate.column
+     *  name="PID"
+     *  not-null="true"
+     */
+    public String getPID_() {
+        return _processId;
+    }
+
+    public void setPID_(String processId) {
+        _processId = processId;
+    }
+
+
+    /**
+     * The type of the process (BPEL process definition name).
+     * @hibernate.property
+     *     column="TYPE"
+     */
+    public String getType_() {
+        return _type;
+    }
+
+    public void setType_(String type) {
+        _type = type;
+    }
+
+
+    /**
+     * The process version.
+     * @hibernate.property
+     *    column="version"
+     */
+    public int getVersion() {
+        return _version;
+    }
+
+    public void setVersion(int version) {
+        _version = version;
+    }
+
+    /**
+     * The process state.
+     * @hibernate.property
+     *    column="STATE"
+     */
+    public String getState_() {
+        return _state;
+    }
+
+    public void setState_(String state) {
+        _state = state;
+    }
+
+
+    public QName getPID() {
+        return QName.valueOf(getPID_());
+    }
+
+    public void setPID(QName pid) {
+        setPID_(pid.toString());
+    }
+    
+    public void setState(ProcessState state) {
+        setState_(state.toString());
+    }
+
+    public void setProperty(QName name, String content) {
+        _properties.put(name.toString(),content);
+    }
+
+    public void delete() {
+        super.delete();
+    }
+
+    public QName getType() {
+        return QName.valueOf(getType_());
+    }
+
+    public void setType(QName type) {
+        setType_(type.toString());
+    }
+
+    public ProcessState getState() {
+        return ProcessState.valueOf(getState_());
+    }
+   
+    public String getProperty(QName name) {
+        return _properties.get(name.toString());
+    }
+
+    public Collection<QName> getPropertyNames() {
+        return CollectionsX.transform(new ArrayList<QName>(), 
_properties.keySet(),new UnaryFunction<String,QName>() {
+            public QName apply(String x) {
+                return QName.valueOf(x);
+            }
+            
+        });
+    }
+
+
+}

Added: 
incubator/ode/trunk/bpel-store/src/test/java/org/apache/ode/store/ProcessStoreTest.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/test/java/org/apache/ode/store/ProcessStoreTest.java?view=auto&rev=480340
==============================================================================
--- 
incubator/ode/trunk/bpel-store/src/test/java/org/apache/ode/store/ProcessStoreTest.java
 (added)
+++ 
incubator/ode/trunk/bpel-store/src/test/java/org/apache/ode/store/ProcessStoreTest.java
 Tue Nov 28 18:30:54 2006
@@ -0,0 +1,63 @@
+package org.apache.ode.store;
+
+import java.io.File;
+import java.net.URL;
+import java.util.Collection;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+import org.apache.ode.bpel.iapi.ProcessConf;
+
+public class ProcessStoreTest extends TestCase {
+
+    ProcessStoreImpl _ps;
+    private File _testdd;
+    
+    public void setUp() throws Exception {
+        _ps = new ProcessStoreImpl(null);
+        _ps.loadAll();
+        URL tdd= getClass().getResource("/testdd/deploy.xml");
+        _testdd = new File(tdd.getPath()).getParentFile();
+    } 
+    
+    public void tearDown() throws Exception {
+        _ps.shutdown();
+    }
+     
+    public void testSanity() {
+        assertEquals(0,_ps.getProcesses().size());
+        assertEquals(0,_ps.getPackages().size());
+        assertNull(_ps.listProcesses("foobar"));
+    }
+    
+    public void testDeploy() {
+        Collection<QName> deployed = _ps.deploy(_testdd);
+        assertNotNull(deployed);
+        assertEquals(1,deployed.size());
+    }
+    
+    public void testGetProcess() {
+        Collection<QName> deployed = _ps.deploy(_testdd);
+        QName pname = deployed.iterator().next();
+        assertNotNull(deployed);
+        assertEquals(1,deployed.size());
+        ProcessConf pconf = _ps.getProcessConfiguration(pname);
+        assertNotNull(pconf);
+        assertEquals(_testdd.getName(),pconf.getPackage());
+        assertEquals(pname, pconf.getProcessId());
+    } 
+    
+    public void testGetProcesses() {
+        Collection<QName> deployed = _ps.deploy(_testdd);
+        QName pname = deployed.iterator().next();
+        assertNotNull(deployed);
+        assertEquals(1,deployed.size());
+        List<QName> pconfs = _ps.getProcesses();
+        assertEquals(pname,pconfs.get(0));
+    }
+    
+    
+}

Added: 
incubator/ode/trunk/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java?view=auto&rev=480340
==============================================================================
--- 
incubator/ode/trunk/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
 (added)
+++ 
incubator/ode/trunk/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
 Tue Nov 28 18:30:54 2006
@@ -0,0 +1,178 @@
+package org.apache.ode.store.hib;
+
+import javax.xml.namespace.QName;
+
+import org.apache.ode.store.ConfStoreConnection;
+import org.apache.ode.store.DeploymentUnitDAO;
+import org.apache.ode.store.ProcessConfDAO;
+import org.hsqldb.jdbc.jdbcDataSource;
+
+import junit.framework.TestCase;
+
+public class DaoTest extends TestCase {
+    jdbcDataSource hsqlds;
+
+    ConfStoreConnectionFactory cf;
+
+    public void setUp() throws Exception {
+        hsqlds = new jdbcDataSource();
+        hsqlds.setDatabase("jdbc:hsqldb:mem:test");
+        hsqlds.setUser("sa");
+        hsqlds.setPassword("");
+
+        cf = new DbConfStoreConnectionFactory(hsqlds, true);
+    }
+
+    public void tearDown() throws Exception {
+        hsqlds.getConnection().createStatement().execute("SHUTDOWN");
+    }
+
+    public void testEmpty() {
+        ConfStoreConnection conn = cf.getConnection();
+        conn.begin();
+        assertEquals(0, conn.getDeploymentUnits().size());
+        assertNull(conn.getDeploymentUnit("foobar"));
+        conn.commit();
+        conn.close();
+    }
+
+    public void testCreateDU() {
+        ConfStoreConnection conn = cf.getConnection();
+        conn.begin();
+        try {
+            DeploymentUnitDAO du = conn.createDeploymentUnit("foo");
+            assertNotNull(du);
+            assertEquals("foo", du.getName());
+            assertNotNull(du.getDeployDate());
+        } finally {
+            conn.commit();
+            conn.close();
+        }
+
+        conn = cf.getConnection();
+        conn.begin();
+        try {
+            DeploymentUnitDAO du = conn.getDeploymentUnit("foo");
+            assertNotNull(du);
+            assertEquals("foo", du.getName());
+        } finally {
+            conn.commit();
+        }
+
+    }
+
+    public void testRollback() {
+        ConfStoreConnection conn = cf.getConnection();
+        conn.begin();
+        try {
+            DeploymentUnitDAO du = conn.createDeploymentUnit("foo");
+            assertNotNull(du);
+            assertEquals("foo", du.getName());
+            assertNotNull(du.getDeployDate());
+        } finally {
+            conn.rollback();
+            conn.close();
+        }
+
+        conn = cf.getConnection();
+        conn.begin();
+        try {
+            DeploymentUnitDAO du = conn.getDeploymentUnit("foo");
+            assertNull(du);
+        } finally {
+            conn.commit();
+        }
+
+    }
+    
+    public void testGetDeploymentUnits() {
+        ConfStoreConnection conn = cf.getConnection();
+        conn.begin();
+        try {
+            conn.createDeploymentUnit("foo1");
+            conn.createDeploymentUnit("foo2");
+            conn.createDeploymentUnit("foo3");
+            conn.createDeploymentUnit("foo4");
+        } finally {
+            conn.commit();
+            conn.close();
+        }
+        conn = cf.getConnection();
+        conn.begin();
+        try {
+            assertNotNull(conn.getDeploymentUnit("foo1"));
+            assertNotNull(conn.getDeploymentUnit("foo2"));
+            assertNotNull(conn.getDeploymentUnit("foo3"));
+            assertNotNull(conn.getDeploymentUnit("foo4"));
+            assertNull(conn.getDeploymentUnit("foo5"));
+        } finally {
+            conn.commit();
+        }
+    }
+    
+    
+    public void testCreateProcess() {
+        QName foobar = new QName("foo","bar");
+        ConfStoreConnection conn = cf.getConnection();
+        conn.begin();
+        try {
+            DeploymentUnitDAO du = conn.createDeploymentUnit("foo1");
+            ProcessConfDAO p = du.createProcess(foobar,foobar);
+            assertEquals(foobar,p.getPID());
+            assertEquals(foobar,p.getType());
+            assertNotNull(p.getDeploymentUnit());
+            assertEquals("foo1", p.getDeploymentUnit().getName());
+        } finally {
+            conn.commit();
+            conn.close();
+        }
+        
+        conn = cf.getConnection();
+        conn.begin();
+        try {
+            DeploymentUnitDAO du = conn.getDeploymentUnit("foo1");
+            ProcessConfDAO p = du.getProcess(foobar);
+            assertNotNull(p);
+            assertNotNull(du.getProcesses());
+            
+            assertEquals(foobar,p.getPID());
+            assertEquals(foobar,p.getType());
+
+        } finally {
+            conn.commit();
+            conn.close();
+        }
+        
+    }
+    
+    public void testProcessProperties() {
+        QName foobar = new QName("foo","bar");
+        ConfStoreConnection conn = cf.getConnection();
+        conn.begin();
+        try {
+            DeploymentUnitDAO du = conn.createDeploymentUnit("foo1");
+            ProcessConfDAO p = du.createProcess(foobar,foobar);
+            p.setProperty(foobar,"baz");
+        } finally {
+            conn.commit();
+            conn.close();
+        }
+        
+        conn = cf.getConnection();
+        conn.begin();
+        try {
+            DeploymentUnitDAO du = conn.getDeploymentUnit("foo1");
+            ProcessConfDAO p = du.getProcess(foobar);
+            assertNotNull(p.getProperty(foobar));
+            assertEquals("baz", p.getProperty(foobar));
+            assertNotNull(p.getPropertyNames());
+            assertTrue(p.getPropertyNames().contains(foobar));
+        } finally {
+            conn.commit();
+            conn.close();
+        }
+        
+        
+    }
+    
+}

Added: incubator/ode/trunk/bpel-store/src/test/resources/log4j.properties
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/test/resources/log4j.properties?view=auto&rev=480340
==============================================================================
--- incubator/ode/trunk/bpel-store/src/test/resources/log4j.properties (added)
+++ incubator/ode/trunk/bpel-store/src/test/resources/log4j.properties Tue Nov 
28 18:30:54 2006
@@ -0,0 +1,19 @@
+# Set root logger level to WARN and its only appender to CONSOLE
+log4j.rootLogger=WARN, CONSOLE
+
+# log4j properties to work with commandline tools.
+log4j.category.org.mortbay=ERROR
+log4j.category.org.hibernate.type=WARN
+log4j.category.org.objectweb=ERROR
+#log4j.category.org.apache.ode.axis2=DEBUG
+log4j.category.org.apache.ode.bpel.engine=DEBUG
+log4j.category.org.apache.ode.bpel.engine.DebuggerSupport=WARN
+log4j.category.org.apache.ode.bpel.runtime.DebuggerSupport=WARN
+log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=TRACE
+
+#log4j.category.org.apache.ode.bpel.epr=INFO
+
+# Console appender
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%p - %C{1}.%M(%L) | %m%n

Added: incubator/ode/trunk/bpel-store/src/test/resources/testdd/HelloWorld2.bpel
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/test/resources/testdd/HelloWorld2.bpel?view=auto&rev=480340
==============================================================================
--- incubator/ode/trunk/bpel-store/src/test/resources/testdd/HelloWorld2.bpel 
(added)
+++ incubator/ode/trunk/bpel-store/src/test/resources/testdd/HelloWorld2.bpel 
Tue Nov 28 18:30:54 2006
@@ -0,0 +1,49 @@
+<process name="HelloWorld2"
+    targetNamespace="http://ode/bpel/unit-test"; 
+    xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/";
+    xmlns="http://schemas.xmlsoap.org/ws/2004/03/business-process/";
+    xmlns:tns="http://ode/bpel/unit-test";
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+    xmlns:test="http://ode/bpel/unit-test.wsdl";>
+
+  <import location="HelloWorld2.wsdl"
+     namespace="http://ode/bpel/unit-test.wsdl";
+     importType="http://schemas.xmlsoap.org/wsdl/"; />
+
+   <partnerLinks>
+      <partnerLink name="helloPartnerLink" 
+         partnerLinkType="test:HelloPartnerLinkType" 
+         myRole="me" />
+   </partnerLinks>
+    
+   <variables>
+     <variable name="myVar" messageType="test:HelloMessage"/>
+     <variable name="tmpVar" type="xsd:string"/>
+   </variables>
+        
+   <sequence>   
+       <receive 
+          name="start"
+          partnerLink="helloPartnerLink"
+          portType="test:HelloPortType"
+          operation="hello"
+          variable="myVar"
+          createInstance="yes"/>
+
+      <assign name="assign1">
+         <copy>
+            <from variable="myVar" part="TestPart"/>
+            <to variable="tmpVar"/>
+         </copy>
+         <copy>
+             <from>concat($tmpVar,' World')"</from>
+             <to variable="myVar" part="TestPart"/>
+         </copy>
+      </assign>
+       <reply name="end"  
+              partnerLink="helloPartnerLink"
+              portType="test:HelloPortType" 
+              operation="hello"
+              variable="myVar"/>
+   </sequence>
+</process>

Added: incubator/ode/trunk/bpel-store/src/test/resources/testdd/HelloWorld2.wsdl
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/test/resources/testdd/HelloWorld2.wsdl?view=auto&rev=480340
==============================================================================
--- incubator/ode/trunk/bpel-store/src/test/resources/testdd/HelloWorld2.wsdl 
(added)
+++ incubator/ode/trunk/bpel-store/src/test/resources/testdd/HelloWorld2.wsdl 
Tue Nov 28 18:30:54 2006
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8" ?>
+
+<wsdl:definitions 
+    targetNamespace="http://ode/bpel/unit-test.wsdl";
+    xmlns="http://schemas.xmlsoap.org/wsdl/";
+    xmlns:tns="http://ode/bpel/unit-test.wsdl";
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
+    xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/";
+    xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/";>
+    
+    <wsdl:message name="HelloMessage">
+        <wsdl:part name="TestPart" type="xsd:string"/>
+    </wsdl:message>
+    
+    <wsdl:portType name="HelloPortType">
+        <wsdl:operation name="hello">
+            <wsdl:input message="tns:HelloMessage" name="TestIn"/>
+            <wsdl:output message="tns:HelloMessage" name="TestOut"/>
+        </wsdl:operation>    
+    </wsdl:portType>
+    
+     <wsdl:binding name="HelloSoapBinding" type="tns:HelloPortType">
+        <soap:binding style="rpc" 
transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="hello">
+            <soap:operation soapAction="" style="rpc"/>
+            <wsdl:input>
+                <soap:body
+                    namespace="http://ode/bpel/unit-test.wsdl";
+                    use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body
+                    namespace="http://ode/bpel/unit-test.wsdl"; 
+                    use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:service name="HelloService">
+               <wsdl:port name="HelloPort" binding="tns:HelloSoapBinding">
+               <soap:address 
location="http://localhost:8080/ode/processes/helloWorld"/>
+               </wsdl:port>
+    </wsdl:service>
+    
+   <plnk:partnerLinkType name="HelloPartnerLinkType">
+       <plnk:role name="me" portType="tns:HelloPortType"/>
+       <plnk:role name="you" portType="tns:HelloPortType"/>
+   </plnk:partnerLinkType>
+</wsdl:definitions>
+

Added: incubator/ode/trunk/bpel-store/src/test/resources/testdd/deploy.xml
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/test/resources/testdd/deploy.xml?view=auto&rev=480340
==============================================================================
--- incubator/ode/trunk/bpel-store/src/test/resources/testdd/deploy.xml (added)
+++ incubator/ode/trunk/bpel-store/src/test/resources/testdd/deploy.xml Tue Nov 
28 18:30:54 2006
@@ -0,0 +1,12 @@
+<deploy xmlns="http://ode.fivesight.com/schemas/2006/06/27/dd"; 
+       xmlns:pns="http://ode/bpel/unit-test"; 
+       xmlns:wns="http://ode/bpel/unit-test.wsdl";>
+
+
+       <process name="pns:HelloWorld2">
+               <active>true</active>
+               <provide partnerLink="helloPartnerLink">
+                       <service name="wns:HelloService" port="HelloPort"/>
+               </provide>
+       </process>
+</deploy>


Reply via email to