Modified: incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java?view=diff&rev=512456&r1=512455&r2=512456 ============================================================================== --- incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java (original) +++ incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java Tue Feb 27 14:30:33 2007 @@ -21,121 +21,68 @@ import org.apache.ode.bpel.common.BpelEventFilter; import org.apache.ode.bpel.common.InstanceFilter; -import org.apache.ode.bpel.common.ProcessFilter; -import org.apache.ode.bpel.dao.*; +import org.apache.ode.bpel.dao.BpelDAOConnection; +import org.apache.ode.bpel.dao.MessageExchangeDAO; +import org.apache.ode.bpel.dao.ProcessDAO; +import org.apache.ode.bpel.dao.ProcessInstanceDAO; +import org.apache.ode.bpel.dao.ScopeDAO; import org.apache.ode.bpel.evt.BpelEvent; import org.apache.ode.bpel.evt.ScopeEvent; -import javax.persistence.*; +import javax.persistence.EntityManager; import javax.xml.namespace.QName; import java.sql.Timestamp; -import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; [EMAIL PROTECTED] [EMAIL PROTECTED](name="ODE_ROOT") public class BPELDAOConnectionImpl implements BpelDAOConnection { - - @Transient private EntityManager _em; - - @Id @Column(name="ROOT_ID") - private Long _id; - - @OneToMany(fetch=FetchType.LAZY,mappedBy="_connection",cascade={CascadeType.ALL}) - private Collection<ProcessDAOImpl> _processes = new ArrayList<ProcessDAOImpl>(); - - @OneToMany(fetch=FetchType.LAZY,mappedBy="_connection",cascade={CascadeType.ALL}) - private Collection<ProcessInstanceDAOImpl> _instances = new ArrayList<ProcessInstanceDAOImpl>(); - - @OneToMany(fetch=FetchType.LAZY,mappedBy="_connection",cascade={CascadeType.ALL}) - private Collection<MessageExchangeDAOImpl> _messageEx = new ArrayList<MessageExchangeDAOImpl>(); - - @OneToMany(fetch=FetchType.LAZY,mappedBy="_connection",cascade={CascadeType.ALL}) - private Collection<ScopeDAOImpl> _scopes = new ArrayList<ScopeDAOImpl>(); + + EntityManager _em; public BPELDAOConnectionImpl(EntityManager em) { - _id = 0L; _em = em; } public List<BpelEvent> bpelEventQuery(InstanceFilter ifilter, BpelEventFilter efilter) { - // TODO Auto-generated method stub - //return null; + // TODO throw new UnsupportedOperationException(); - //System.out.println(ifilter.toString()); - //System.out.println(efilter.toString()); - //return null; } public List<Date> bpelEventTimelineQuery(InstanceFilter ifilter, BpelEventFilter efilter) { - // TODO Auto-generated method stub - //return null; + // TODO throw new UnsupportedOperationException(); } + + public ProcessInstanceDAO getInstance(Long iid) { + return _em.find(ProcessInstanceDAOImpl.class, iid); + } public void close() { _em = null; - } public MessageExchangeDAO createMessageExchange(char dir) { - MessageExchangeDAOImpl ret = new MessageExchangeDAOImpl(dir,this); - _messageEx.add(ret); + MessageExchangeDAOImpl ret = new MessageExchangeDAOImpl(dir); + _em.persist(ret); return ret; } public ProcessDAO createProcess(QName pid, QName type, String guid, long version) { ProcessDAOImpl ret = new ProcessDAOImpl(pid,type,guid,this,version); - - _processes.add(ret); + System.out.println("########## " + _em.contains(ret)); + _em.persist(ret); return ret; } - void addInstance(ProcessInstanceDAOImpl inst) { - _instances.add(inst); - } - void addScope(ScopeDAOImpl scope) { - _scopes.add(scope); - } - public Long getID() { - return _id; - } - public void setID(Long id) { - _id = id; - } - - public ProcessInstanceDAO getInstance(Long iid) { - // TODO: may need a map or DB lookup here for performance - for (ProcessInstanceDAO inst : _instances) { - if (inst.getInstanceId().equals(iid) ) return inst; - } - return null; - } - - public MessageExchangeDAO getMessageExchange(String mexid) { - // TODO: may need a map or DB lookup here for performance - for ( MessageExchangeDAOImpl mex : _messageEx ) { - if ( mex.getMessageExchangeId().equals(mexid)) return mex; - } - return null; - } - public ProcessDAO getProcess(QName processId) { - List daos = _em.createQuery("select p from ProcessDAOImpl p").getResultList(); - if (daos.size() > 0) return (ProcessDAO) daos.get(0); - else return null; + return _em.find(ProcessDAOImpl.class, processId.toString()); } public ScopeDAO getScope(Long siidl) { - // TODO: May need a map or DB lookup here for performance - for ( ScopeDAOImpl s : _scopes ) { - if ( s.getScopeInstanceId().equals(siidl) ) return s; - } - return null; + return _em.find(ScopeDAOImpl.class, siidl); } public void insertBpelEvent(BpelEvent event, ProcessDAO process, ProcessInstanceDAO instance) { @@ -151,39 +98,35 @@ eventDao.setScopeId(((ScopeEvent) event).getScopeId()); eventDao.setEvent(event); _em.persist(eventDao); - } + } + @SuppressWarnings("unchecked") public Collection<ProcessInstanceDAO> instanceQuery(InstanceFilter criteria) { - // TODO: Implement me - return new ArrayList<ProcessInstanceDAO>(_instances); - } + // TODO + return _em.createQuery("select x from ProcessInstanceDAOImpl as x").getResultList(); + } + + + public Collection<ProcessInstanceDAO> instanceQuery(String expression) { + return instanceQuery(new InstanceFilter(expression)); + } + + public void setEntityManger(EntityManager em) { + _em = em; + } + + void removeProcess(ProcessDAOImpl p) { + if ( _em != null ) { + _em.remove(p); + _em.flush(); + } + } - public Collection<ProcessInstanceDAO> instanceQuery(String expression) { - // TODO: Implement me - return new ArrayList<ProcessInstanceDAO>(_instances); - } - - public Collection<ProcessDAO> processQuery(ProcessFilter criteria) { - // TODO: Implement me - return new ArrayList<ProcessDAO>(_processes); + public MessageExchangeDAO getMessageExchange(String mexid) { + return _em.find(MessageExchangeDAOImpl.class, mexid); } public EntityManager getEntityManager() { return _em; } - - public void setEntityManger(EntityManager em) { - _em = em; - } - - void removeProcess(ProcessDAOImpl p) { - _processes.remove(p); - - if ( _em != null ) { - _em.remove(p); - _em.flush(); - } - - } - }
Added: incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java?view=auto&rev=512456 ============================================================================== --- incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java (added) +++ incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java Tue Feb 27 14:30:33 2007 @@ -0,0 +1,42 @@ +package org.apache.ode.dao.jpa; + +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +/** + * @author Matthieu Riou <mriou at apache dot org> + */ [EMAIL PROTECTED] [EMAIL PROTECTED](name="ODE_CORSET_PROP") +public class CorrSetProperty { + @Basic + @Column(name="PROP_KEY") + private String propertyKey; + @Basic @Column(name="PROP_VALUE") + private String propertyValue; + + public CorrSetProperty() { + } + public CorrSetProperty(String propertyKey, String propertyValue) { + this.propertyKey = propertyKey; + this.propertyValue = propertyValue; + } + + public String getPropertyKey() { + return propertyKey; + } + + public void setPropertyKey(String propertyKey) { + this.propertyKey = propertyKey; + } + + public String getPropertyValue() { + return propertyValue; + } + + public void setPropertyValue(String propertyValue) { + this.propertyValue = propertyValue; + } +} Modified: incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java?view=diff&rev=512456&r1=512455&r2=512456 ============================================================================== --- incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java (original) +++ incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java Tue Feb 27 14:30:33 2007 @@ -19,8 +19,9 @@ package org.apache.ode.dao.jpa; -import java.util.HashMap; -import java.util.Map; +import org.apache.ode.bpel.common.CorrelationKey; +import org.apache.ode.bpel.dao.CorrelationSetDAO; +import org.apache.ode.bpel.dao.ScopeDAO; import javax.persistence.Basic; import javax.persistence.CascadeType; @@ -31,13 +32,14 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Version; import javax.xml.namespace.QName; - -import org.apache.ode.bpel.common.CorrelationKey; -import org.apache.ode.bpel.dao.CorrelationSetDAO; -import org.apache.ode.bpel.dao.ScopeDAO; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; @Entity @Table(name="ODE_CORRELATION_SET") @@ -47,14 +49,16 @@ @GeneratedValue(strategy=GenerationType.AUTO) private Long _correlationSetId; @Basic @Column(name="NAME") private String _name; - @Basic @Column(name="PROPERTIES") private HashMap<QName,String> _props = new HashMap<QName,String>(); - @Basic @Column(name="CORRELATION_KEY") private CorrelationKey _correlationKey; - @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) - @Column(name="SCOPE_ID") - private ScopeDAOImpl _scope; + @Basic @Column(name="CORRELATION_KEY") private String _correlationKey; @Version @Column(name="VERSION") private long _version; - - public CorrelationSetDAOImpl() {} + + @OneToMany(cascade={CascadeType.ALL}) + private Collection<CorrSetProperty> _props = new ArrayList<CorrSetProperty>(); + @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) + @Column(name="SCOPE_ID") + private ScopeDAOImpl _scope; + + public CorrelationSetDAOImpl() {} public CorrelationSetDAOImpl(ScopeDAOImpl scope, String name) { _name = name; _scope = scope; @@ -69,7 +73,11 @@ } public Map<QName, String> getProperties() { - return _props; + HashMap<QName, String> map = new HashMap<QName, String>(); + for (CorrSetProperty prop : _props) { + map.put(QName.valueOf(prop.getPropertyKey()), prop.getPropertyValue()); + } + return map; } public ScopeDAO getScope() { @@ -77,14 +85,13 @@ } public CorrelationKey getValue() { - return _correlationKey; + return new CorrelationKey(_correlationKey); } public void setValue(QName[] names, CorrelationKey values) { - _correlationKey = values; + _correlationKey = values.toCanonicalString(); for (int m = 0; m < names.length; m++) { - _props.put(names[m], values.getValues()[m]); + _props.add(new CorrSetProperty(names[m].toString(), values.getValues()[m])); } } - } Modified: incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java?view=diff&rev=512456&r1=512455&r2=512456 ============================================================================== --- incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java (original) +++ incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java Tue Feb 27 14:30:33 2007 @@ -21,7 +21,17 @@ import org.apache.ode.bpel.evt.BpelEvent; -import javax.persistence.*; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.ManyToOne; +import javax.persistence.Table; import java.sql.Timestamp; /** @@ -31,10 +41,12 @@ @Table(name="ODE_EVENT") public class EventDAOImpl { - @Id @Column(name="EVENT_ID") + @Id + @Column(name="EVENT_ID") @GeneratedValue(strategy= GenerationType.AUTO) private Long _id; - @Basic @Column(name="TSTAMP") + @Basic + @Column(name="TSTAMP") private Timestamp _tstamp; @Basic @Column(name="TYPE") private String _type; @@ -48,10 +60,11 @@ @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="PROCESS_ID") private ProcessDAOImpl _process; - @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) + @ManyToOne(fetch= FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="INSTANCE_ID") private ProcessInstanceDAOImpl _instance; - @Lob @Column(name="DATA") + @Lob + @Column(name="DATA") private BpelEvent _event; public BpelEvent getEvent() { Modified: incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java?view=diff&rev=512456&r1=512455&r2=512456 ============================================================================== --- incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java (original) +++ incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java Tue Feb 27 14:30:33 2007 @@ -19,40 +19,36 @@ package org.apache.ode.dao.jpa; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; -import java.util.Set; +import org.apache.ode.bpel.common.CorrelationKey; +import org.apache.ode.bpel.dao.MessageDAO; +import org.apache.ode.bpel.dao.MessageExchangeDAO; +import org.apache.ode.bpel.dao.PartnerLinkDAO; +import org.apache.ode.bpel.dao.ProcessDAO; +import org.apache.ode.bpel.dao.ProcessInstanceDAO; +import org.apache.ode.utils.DOMUtils; +import org.apache.ode.utils.uuid.UUID; +import org.w3c.dom.Element; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Transient; import javax.persistence.Version; import javax.xml.namespace.QName; - -import org.apache.ode.bpel.common.CorrelationKey; -import org.apache.ode.bpel.dao.MessageDAO; -import org.apache.ode.bpel.dao.MessageExchangeDAO; -import org.apache.ode.bpel.dao.PartnerLinkDAO; -import org.apache.ode.bpel.dao.ProcessDAO; -import org.apache.ode.bpel.dao.ProcessInstanceDAO; -import org.apache.ode.utils.DOMUtils; -import org.apache.ode.utils.uuid.UUID; -import org.w3c.dom.Element; - +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.HashSet; +import java.util.Set; +import java.util.StringTokenizer; @Entity @Table(name="ODE_MESSAGE_EXCHANGE") @@ -76,9 +72,11 @@ @Basic @Column(name="PORT_TYPE") private QName _portType; @Basic @Column(name="PROPAGATE_TRANS") private boolean _propagateTransactionFlag; @Basic @Column(name="STATUS") private String _status; - @Basic @Column(name="PROPERTIES") private HashMap<String,String> _props = new HashMap<String,String>(); - @Basic @Column(name="CORRELATION_KEYS") - private ArrayList<CorrelationKey> _correlationKeys = new ArrayList<CorrelationKey>(); + @Basic @Column(name="CORRELATION_KEYS") private String _correlationKeys; + @Basic @Column(name="PIPED_ID") private String _pipedMessageExchangeId; + + @OneToMany(cascade={CascadeType.ALL}) + private Collection<MexProperty> _props = new ArrayList<MexProperty>(); @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="PROCESS_INSTANCE_ID") private ProcessInstanceDAOImpl _processInst; @@ -95,14 +93,11 @@ @Column(name="RESPONSE_MESSAGE_ID") private MessageDAOImpl _response; @Version @Column(name="VERSION") private long _version; - @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) - @Column(name="CONNECTION_ID") - private BPELDAOConnectionImpl _connection; - + public MessageExchangeDAOImpl() {} - public MessageExchangeDAOImpl(char direction, BPELDAOConnectionImpl connection){ + + public MessageExchangeDAOImpl(char direction){ _direction = direction; - _connection = connection; _id = new UUID().toString(); } @@ -192,11 +187,18 @@ } public String getProperty(String key) { - return _props.get(key); + for (MexProperty prop : _props) { + if (prop.getPropertyKey().equals(key)) return prop.getPropertyValue(); + } + return null; } public Set<String> getPropertyNames() { - return _props.keySet(); + HashSet<String> propNames = new HashSet<String>(); + for (MexProperty prop : _props) { + propNames.add(prop.getPropertyKey()); + } + return propNames; } public MessageDAO getRequest() { @@ -242,7 +244,6 @@ public void setInstance(ProcessInstanceDAO dao) { _processInst = (ProcessInstanceDAOImpl)dao; - } public void setOperation(String opname) { @@ -251,7 +252,6 @@ public void setPartnerLink(PartnerLinkDAO plinkDAO) { _partnerLink = (PartnerLinkDAOImpl)plinkDAO; - } public void setPartnerLinkModelId(int modelId) { @@ -268,35 +268,51 @@ public void setProcess(ProcessDAO process) { _process = (ProcessDAOImpl)process; - } public void setProperty(String key, String value) { - _props.put(key, value); - + _props.add(new MexProperty(key, value)); } public void setRequest(MessageDAO msg) { _request = (MessageDAOImpl)msg; - } public void setResponse(MessageDAO msg) { _response = (MessageDAOImpl)msg; - } public void setStatus(String status) { _status = status; } - - public void addCorrelationKey(CorrelationKey correlationKey) { - _correlationKeys.add(correlationKey); + + public String getPipedMessageExchangeId() { + return _pipedMessageExchangeId; + } + + public void setPipedMessageExchangeId(String pipedMessageExchangeId) { + _pipedMessageExchangeId = pipedMessageExchangeId; + } + + public void addCorrelationKey(CorrelationKey correlationKey) { + if (_correlationKeys == null) + _correlationKeys = correlationKey.toCanonicalString(); + else + _correlationKeys = _correlationKeys + "^" + correlationKey.toCanonicalString(); } - + public Collection<CorrelationKey> getCorrelationKeys() { - return _correlationKeys; - } + ArrayList<CorrelationKey> correlationKeys = new ArrayList<CorrelationKey>(); + if (_correlationKeys.indexOf("^") > 0) { + for (StringTokenizer tokenizer = new StringTokenizer(_correlationId, "^"); tokenizer.hasMoreTokens();) { + String corrStr = tokenizer.nextToken(); + correlationKeys.add(new CorrelationKey(corrStr)); + } + return correlationKeys; + } else correlationKeys.add(new CorrelationKey(_correlationKeys)); + return correlationKeys; + } + public void release() { // no-op for now, could be used to do some cleanup Added: incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java?view=auto&rev=512456 ============================================================================== --- incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java (added) +++ incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java Tue Feb 27 14:30:33 2007 @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ode.dao.jpa; + +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +/** + * @author Matthieu Riou <mriou at apache dot org> + */ [EMAIL PROTECTED] [EMAIL PROTECTED](name="ODE_MEX_PROP") +public class MexProperty { + @Basic @Column(name="PROP_KEY") + private String propertyKey; + @Basic @Column(name="PROP_VALUE") + private String propertyValue; + + public MexProperty() { + } + public MexProperty(String propertyKey, String propertyValue) { + this.propertyKey = propertyKey; + this.propertyValue = propertyValue; + } + + public String getPropertyKey() { + return propertyKey; + } + + public void setPropertyKey(String propertyKey) { + this.propertyKey = propertyKey; + } + + public String getPropertyValue() { + return propertyValue; + } + + public void setPropertyValue(String propertyValue) { + this.propertyValue = propertyValue; + } +} Modified: incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java?view=diff&rev=512456&r1=512455&r2=512456 ============================================================================== --- incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java (original) +++ incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java Tue Feb 27 14:30:33 2007 @@ -20,123 +20,123 @@ package org.apache.ode.dao.jpa; import org.apache.ode.bpel.common.CorrelationKey; -import org.apache.ode.bpel.dao.*; -import org.apache.openjpa.persistence.jdbc.ElementJoinColumn; - -import javax.persistence.*; +import org.apache.ode.bpel.dao.CorrelatorDAO; +import org.apache.ode.bpel.dao.ProcessDAO; +import org.apache.ode.bpel.dao.ProcessInstanceDAO; + +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EntityManager; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; +import javax.persistence.Table; +import javax.persistence.Transient; +import javax.persistence.Version; import javax.xml.namespace.QName; import java.util.ArrayList; import java.util.Collection; @Entity @Table(name="ODE_PROCESS") [EMAIL PROTECTED]({ + @NamedQuery(name="InstanceById", query="SELECT i FROM ProcessInstanceDAOImpl as i WHERE i.instanceId = :iid"), + @NamedQuery(name="InstanceByCKey", query="SELECT cs._scope._instance FROM CorrelationSetDAOImpl as cs WHERE cs._correlationKey = :ckey") +}) public class ProcessDAOImpl implements ProcessDAO { + @PersistenceContext private EntityManager _em; + @Id @Column(name="PROCESS_ID") - @GeneratedValue(strategy=GenerationType.AUTO) - private Long _id; - @Basic @Column(name="NUMBER_OF_INSTANCES") private int _numInstances; - @Basic @Column(name="PROCESS_KEY") private QName _processKey; - @Basic @Column(name="PROCESS_TYPE") private QName _processType; - @Basic @Column(name="GUID") private String _guid; - @Version @Column(name="VERSION") private long _version; - - @OneToMany(targetEntity=ProcessInstanceDAOImpl.class,mappedBy="_process",fetch=FetchType.LAZY,cascade={CascadeType.ALL}) - private Collection<ProcessInstanceDAO> _instances = new ArrayList<ProcessInstanceDAO>(); - @OneToMany(fetch=FetchType.LAZY,cascade={CascadeType.ALL}) - @ElementJoinColumn(name="PROC_ID", referencedColumnName="CORR_ID") - private Collection<CorrelatorDAOImpl> _correlators = new ArrayList<CorrelatorDAOImpl>(); - @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) - @Column(name="CONNECTION_ID") - private BPELDAOConnectionImpl _connection; - - public ProcessDAOImpl() {} - public ProcessDAOImpl(QName key, QName type, String guid, BPELDAOConnectionImpl connection, long version) { - _processKey = key; - _processType = type; - _connection = connection; - _guid = guid; + private String _id; + + @Basic @Column(name="NUMBER_OF_INSTANCES") private int _numInstances; + @Basic @Column(name="PROCESS_TYPE") private String _processType; + @Basic @Column(name="GUID") private String _guid; + @Version @Column(name="VERSION") private long _version; + + @OneToMany(fetch=FetchType.LAZY,cascade={CascadeType.ALL}) + private Collection<CorrelatorDAOImpl> _correlators = new ArrayList<CorrelatorDAOImpl>(); + + @Transient + transient private BPELDAOConnectionImpl _connection; + + public ProcessDAOImpl() {} + public ProcessDAOImpl(QName pid, QName type, String guid, BPELDAOConnectionImpl connection, long version) { + _id = pid.toString(); + _processType = type.toString(); + _connection = connection; + _guid = guid; _version = version; } + + public void addCorrelator(String correlator) { + CorrelatorDAOImpl corr = new CorrelatorDAOImpl(correlator); + _correlators.add(corr); + } - public void addCorrelator(String correlator) { - CorrelatorDAOImpl corr = new CorrelatorDAOImpl(correlator); - _correlators.add(corr); + public CorrelatorDAO getCorrelator(String correlatorId) { + return null; } public ProcessInstanceDAO createInstance( - CorrelatorDAO instantiatingCorrelator) { - ProcessInstanceDAOImpl inst = new ProcessInstanceDAOImpl((CorrelatorDAOImpl)instantiatingCorrelator, this,_connection); - _connection.getEntityManager().persist(inst); - _instances.add(inst); - _numInstances++; - - return inst; - } + CorrelatorDAO instantiatingCorrelator) { + ProcessInstanceDAOImpl inst = new ProcessInstanceDAOImpl((CorrelatorDAOImpl)instantiatingCorrelator, this,_connection); + _em.persist(inst); + _numInstances++; + + return inst; + } + + @SuppressWarnings("unchecked") + public Collection<ProcessInstanceDAO> findInstance(CorrelationKey ckey) { + Query qry = _em.createNamedQuery("InstanceByCKey"); + qry.setParameter("ckey", ckey.toCanonicalString()); + return qry.getResultList(); + } + + public ProcessInstanceDAO getInstance(Long iid) { + return _connection.getInstance(iid); + } + + public QName getProcessId() { + return QName.valueOf(_id); + } + + public QName getType() { + return QName.valueOf(_processType); + } public void delete() { _connection.removeProcess(this); } - public Collection<ProcessInstanceDAO> findInstance(CorrelationKey cckey) { - Collection<ProcessInstanceDAO> ret = new ArrayList<ProcessInstanceDAO>(); - - for (ProcessInstanceDAO pi : _instances) { - scope_block:for (ScopeDAO s : pi.getScopes()) { - for (CorrelationSetDAO c : s.getCorrelationSets()) { - if (c.getValue().equals(cckey)) ret.add(pi); - break scope_block; - } - } - } - return ret; - } - - public CorrelatorDAO getCorrelator(String correlatorId) { - for ( CorrelatorDAO c : _correlators ) { - if ( c.getCorrelatorId().equals(correlatorId) ) return c; - } - return null; - } - - public ProcessInstanceDAO getInstance(Long iid) { - for (ProcessInstanceDAO pi : _instances) { - if ( pi.getInstanceId().equals(iid) ) return pi; - } - return null; - } - public int getNumInstances() { return _numInstances; } - public QName getProcessId() { - return _processKey; - } - - public QName getType() { - return _processType; - } - public long getVersion() { return _version; } public void instanceCompleted(ProcessInstanceDAO instance) { - // TODO Auto-generated method stub - String tmp = "complete"; - + // nothing to do here (yet?) } public void removeRoutes(String routeId, ProcessInstanceDAO target) { for (CorrelatorDAO c : _correlators) { ((CorrelatorDAOImpl)c).removeLocalRoutes(routeId, target); } - } + public String getGuid() { return _guid; } - } Modified: incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java?view=diff&rev=512456&r1=512455&r2=512456 ============================================================================== --- incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java (original) +++ incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java Tue Feb 27 14:30:33 2007 @@ -20,20 +20,51 @@ package org.apache.ode.dao.jpa; import org.apache.ode.bpel.common.ProcessState; -import org.apache.ode.bpel.dao.*; +import org.apache.ode.bpel.dao.ActivityRecoveryDAO; +import org.apache.ode.bpel.dao.BpelDAOConnection; +import org.apache.ode.bpel.dao.CorrelationSetDAO; +import org.apache.ode.bpel.dao.CorrelatorDAO; +import org.apache.ode.bpel.dao.FaultDAO; +import org.apache.ode.bpel.dao.ProcessDAO; +import org.apache.ode.bpel.dao.ProcessInstanceDAO; +import org.apache.ode.bpel.dao.ScopeDAO; +import org.apache.ode.bpel.dao.ScopeStateEnum; +import org.apache.ode.bpel.dao.XmlDataDAO; import org.apache.ode.bpel.evt.ProcessInstanceEvent; import org.apache.openjpa.persistence.jdbc.ElementJoinColumn; import org.w3c.dom.Element; -import javax.persistence.*; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Transient; import javax.xml.namespace.QName; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; @Entity @Table(name="ODE_PROCESS_INSTANCE") public class ProcessInstanceDAOImpl implements ProcessInstanceDAO { - @Id @Column(name="PROCESS_INSTANCE_ID") + @Transient + private BPELDAOConnectionImpl _connection; + + @Id @Column(name="PROCESS_INSTANCE_ID") @GeneratedValue(strategy=GenerationType.AUTO) private Long _instanceId; @Basic @Column(name="LAST_RECOVERY_DATE") private Date _lastRecovery; @@ -58,9 +89,6 @@ @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="PROCESS_ID") private ProcessDAOImpl _process; - @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) - @Column(name="CONNECTION_ID") - private BPELDAOConnectionImpl _connection; @OneToOne(fetch=FetchType.LAZY,cascade={CascadeType.ALL}) @Column(name="INSTANTIATING_CORRELATOR_ID") private CorrelatorDAOImpl _instantiatingCorrelator; @@ -69,7 +97,6 @@ public ProcessInstanceDAOImpl(CorrelatorDAOImpl correlator, ProcessDAOImpl process, BPELDAOConnectionImpl connection) { _instantiatingCorrelator = correlator; _connection = connection; - _connection.addInstance(this); _process = process; } @@ -84,7 +111,7 @@ public ScopeDAO createScope(ScopeDAO parentScope, String name, int scopeModelId) { - ScopeDAOImpl ret = new ScopeDAOImpl((ScopeDAOImpl)parentScope,name,scopeModelId,this,_connection); + ScopeDAOImpl ret = new ScopeDAOImpl((ScopeDAOImpl)parentScope,name,scopeModelId,this); ret.setState(ScopeStateEnum.ACTIVE); _scopes.add(ret); @@ -119,7 +146,6 @@ // make sure we have completed. assert (ProcessState.isFinished(this.getState())); // let our process know that we've done our work. - this.getProcess().instanceCompleted(this); } public long genMonotonic() { Modified: incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java?view=diff&rev=512456&r1=512455&r2=512456 ============================================================================== --- incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java (original) +++ incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java Tue Feb 27 14:30:33 2007 @@ -20,11 +20,29 @@ package org.apache.ode.dao.jpa; import org.apache.ode.bpel.common.BpelEventFilter; -import org.apache.ode.bpel.dao.*; +import org.apache.ode.bpel.dao.CorrelationSetDAO; +import org.apache.ode.bpel.dao.PartnerLinkDAO; +import org.apache.ode.bpel.dao.ProcessInstanceDAO; +import org.apache.ode.bpel.dao.ScopeDAO; +import org.apache.ode.bpel.dao.ScopeStateEnum; +import org.apache.ode.bpel.dao.XmlDataDAO; import org.apache.ode.bpel.evt.BpelEvent; import org.apache.openjpa.persistence.jdbc.ElementJoinColumn; -import javax.persistence.*; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EntityManager; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.PersistenceContext; +import javax.persistence.Table; +import javax.persistence.Version; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -32,14 +50,20 @@ @Entity @Table(name="ODE_SCOPE") public class ScopeDAOImpl implements ScopeDAO { + + @PersistenceContext private EntityManager _em; - @Id @Column(name="SCOPE_ID") - @GeneratedValue(strategy=GenerationType.AUTO) + @Id + @Column(name="SCOPE_ID") + @GeneratedValue(strategy= GenerationType.AUTO) private Long _scopeInstanceId; - @Basic @Column(name="MODEL_ID") private int _modelId; + + @Basic + @Column(name="MODEL_ID") private int _modelId; @Basic @Column(name="SCOPE_NAME") private String _name; @Basic @Column(name="SCOPE_STATE") private String _scopeState; - @Version @Column(name="VERSION") private long _version; + @Version + @Column(name="VERSION") private long _version; @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="PARENT_SCOPE_ID") @@ -49,7 +73,7 @@ private Collection<ScopeDAO> _childScopes = new ArrayList<ScopeDAO>(); @OneToMany(targetEntity=CorrelationSetDAOImpl.class,mappedBy="_scope",fetch=FetchType.LAZY,cascade={CascadeType.ALL}) private Collection<CorrelationSetDAO> _correlationSets = new ArrayList<CorrelationSetDAO>(); - @OneToMany(targetEntity=PartnerLinkDAOImpl.class,fetch=FetchType.LAZY,cascade={CascadeType.ALL}) + @OneToMany(targetEntity=PartnerLinkDAOImpl.class,fetch= FetchType.LAZY,cascade={CascadeType.ALL}) @ElementJoinColumn(name="SCOPE_ID", referencedColumnName="PLINK_ID") private Collection<PartnerLinkDAO> _partnerLinks = new ArrayList<PartnerLinkDAO>(); @OneToMany(targetEntity=XmlDataDAOImpl.class,mappedBy="_scope",fetch=FetchType.LAZY,cascade={CascadeType.ALL}) @@ -58,18 +82,12 @@ @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="PROCESS_INSTANCE_ID") private ProcessInstanceDAOImpl _processInstance; - - @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) - @Column(name="CONNECTION_ID") - private BPELDAOConnectionImpl _connection; public ScopeDAOImpl() {} - public ScopeDAOImpl(ScopeDAOImpl parentScope, String name, int scopeModelId, ProcessInstanceDAOImpl pi, BPELDAOConnectionImpl connection) { + public ScopeDAOImpl(ScopeDAOImpl parentScope, String name, int scopeModelId, ProcessInstanceDAOImpl pi) { _parentScope = parentScope; _name = name; _modelId = scopeModelId; - _connection = connection; - _connection.addScope(this); _processInstance = pi; } @@ -100,7 +118,7 @@ ret = new CorrelationSetDAOImpl(this,corrSetName); // Persist the new correlation set to generate an ID - _connection.getEntityManager().persist(ret); + _em.persist(ret); _correlationSets.add(ret); } Added: incubator/ode/trunk/dao-jpa/src/main/resources/META-INF/persistence.xml URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/resources/META-INF/persistence.xml?view=auto&rev=512456 ============================================================================== --- incubator/ode/trunk/dao-jpa/src/main/resources/META-INF/persistence.xml (added) +++ incubator/ode/trunk/dao-jpa/src/main/resources/META-INF/persistence.xml Tue Feb 27 14:30:33 2007 @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<persistence xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + version="1.0"> + <persistence-unit name="ode-dao"> + <!-- + This properties file is used specifically by the + OpenJPA Enhancer. + --> + <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> + <class>org.apache.ode.dao.jpa.ActivityRecoveryDAOImpl</class> + <class>org.apache.ode.dao.jpa.CorrelationSetDAOImpl</class> + <class>org.apache.ode.dao.jpa.CorrelatorDAOImpl</class> + <class>org.apache.ode.dao.jpa.EventDAOImpl</class> + <class>org.apache.ode.dao.jpa.FaultDAOImpl</class> + <class>org.apache.ode.dao.jpa.MessageDAOImpl</class> + <class>org.apache.ode.dao.jpa.MessageExchangeDAOImpl</class> + <class>org.apache.ode.dao.jpa.MessageRouteDAOImpl</class> + <class>org.apache.ode.dao.jpa.PartnerLinkDAOImpl</class> + <class>org.apache.ode.dao.jpa.ProcessDAOImpl</class> + <class>org.apache.ode.dao.jpa.ProcessInstanceDAOImpl</class> + <class>org.apache.ode.dao.jpa.ScopeDAOImpl</class> + <class>org.apache.ode.dao.jpa.XmlDataDAOImpl</class> + </persistence-unit> +</persistence> \ No newline at end of file Modified: incubator/ode/trunk/distro-axis2/src/examples/DynPartner/deploy.xml URL: http://svn.apache.org/viewvc/incubator/ode/trunk/distro-axis2/src/examples/DynPartner/deploy.xml?view=diff&rev=512456&r1=512455&r2=512456 ============================================================================== --- incubator/ode/trunk/distro-axis2/src/examples/DynPartner/deploy.xml (original) +++ incubator/ode/trunk/distro-axis2/src/examples/DynPartner/deploy.xml Tue Feb 27 14:30:33 2007 @@ -13,6 +13,7 @@ </invoke> </process> <process name="resp:DynPartnerResponder"> + <in-memory>true</in-memory> <type>resp:DynPartnerResponder</type> <provide partnerLink="mainPartnerLink"> <service name="rws:DynResponderService" port="DynResponderPort"/> Modified: incubator/ode/trunk/jbi/pom.xml URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jbi/pom.xml?view=diff&rev=512456&r1=512455&r2=512456 ============================================================================== --- incubator/ode/trunk/jbi/pom.xml (original) +++ incubator/ode/trunk/jbi/pom.xml Tue Feb 27 14:30:33 2007 @@ -57,7 +57,7 @@ <dependency> <groupId>org.apache.ode</groupId> - <artifactId>ode-dao-jpa-ojpa</artifactId> + <artifactId>ode-dao-jpa</artifactId> </dependency> <dependency> <groupId>org.apache.ode</groupId> Modified: incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java?view=diff&rev=512456&r1=512455&r2=512456 ============================================================================== --- incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java (original) +++ incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java Tue Feb 27 14:30:33 2007 @@ -22,7 +22,6 @@ import org.apache.commons.logging.LogFactory; import org.apache.ode.bpel.iapi.Endpoint; import org.apache.ode.bpel.iapi.Message; -import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern; import org.apache.ode.bpel.iapi.MessageExchange.Status; import org.apache.ode.bpel.iapi.MyRoleMessageExchange; import org.apache.ode.jbi.msgmap.Mapper; @@ -219,7 +218,6 @@ odeMex = _ode._server.getEngine().createMessageExchange(jbiMex.getExchangeId(), _endpoint.serviceName, jbiMex.getOperation().getLocalPart()); - MessageExchangePattern pattern = null; if (odeMex.getOperation() != null) { copyMexProperties(odeMex, jbiMex); javax.wsdl.Message msgdef = odeMex.getOperation().getInput().getMessage(); @@ -236,8 +234,6 @@ mapper.toODE(odeRequest, request, msgdef); odeMex.invoke(odeRequest); - pattern = odeMex.getMessageExchangePattern(); - // Handle the response if it is immediately available. if (odeMex.getStatus() != Status.ASYNC) { __log.debug("ODE MEX " + odeMex + " completed SYNCHRONOUSLY."); @@ -253,8 +249,8 @@ success = true; // For one-way invocation we do not need to maintain the association - if (pattern == null || pattern != MessageExchangePattern.REQUEST_RESPONSE) { - __log.debug("Consuming non Req/Res MEX tracker " + jbiMex.getExchangeId()); + if (jbiMex.getPattern().equals(org.apache.ode.jbi.MessageExchangePattern.IN_ONLY)) { + __log.debug("Consuming non Req/Res MEX tracker " + jbiMex.getExchangeId() + " with pattern " + jbiMex.getPattern()); _jbiMexTracker.consume(jbiMex.getExchangeId()); } Modified: incubator/ode/trunk/pom.xml URL: http://svn.apache.org/viewvc/incubator/ode/trunk/pom.xml?view=diff&rev=512456&r1=512455&r2=512456 ============================================================================== --- incubator/ode/trunk/pom.xml (original) +++ incubator/ode/trunk/pom.xml Tue Feb 27 14:30:33 2007 @@ -142,7 +142,7 @@ <module>bpel-scheduler-quartz</module> <module>dao-jpa</module> - <module>dao-jpa-ojpa</module> + <!--module>dao-jpa-ojpa</module--> <module>dao-jpa-ojpa-derby</module> <!-- If you want a distro, build it explicitly. --> @@ -1047,11 +1047,6 @@ <dependency> <groupId>org.apache.ode</groupId> <artifactId>ode-dao-jpa</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-dao-jpa-ojpa</artifactId> <version>${project.version}</version> </dependency> <dependency>
