Author: jeff.yuchang
Date: 2008-07-12 13:45:12 -0400 (Sat, 12 Jul 2008)
New Revision: 141
Removed:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/PersistentTest.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ConversationActionException.java
Modified:
cdl/trunk/runtime/jbossesb/pom.xml
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/HibernateUtil.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/Identity.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/JoinState.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/ScheduleItem.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/Session.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/SessionManager.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ConversationAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/CreateSessionAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/IfAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/MessageRouterAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ParallelAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/PerformAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ReceiveMessageAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/RetrieveSessionAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ScheduleStateAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/SendMessageAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/SetVariableAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/SwitchAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/WhenAction.java
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/WhileAction.java
Log:
* Updating the jbossesb-rosetta 4.3GA release.
* Make the hibernate transacation demarcation is 'Action' based unit.
* Remove ConversationActionException, throw Exception directly. otherwise, the standalone
client also need to have this dependency.
Modified: cdl/trunk/runtime/jbossesb/pom.xml
===================================================================
--- cdl/trunk/runtime/jbossesb/pom.xml 2008-07-12 17:38:10 UTC (rev 140)
+++ cdl/trunk/runtime/jbossesb/pom.xml 2008-07-12 17:45:12 UTC (rev 141)
@@ -30,7 +30,7 @@
<dependency>
<groupId>org.jboss.jbossesb</groupId>
<artifactId>rosetta</artifactId>
- <version>4.2.1</version>
+ <version>4.3</version>
</dependency>
<dependency>
<groupId>org.jboss.jbossesb</groupId>
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/HibernateUtil.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/HibernateUtil.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/HibernateUtil.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -19,6 +19,8 @@
*/
package org.jboss.soa.overlord.conversation;
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
@@ -27,11 +29,12 @@
private static SessionFactory sessionFactory;
+ private static final ThreadLocal<Session> session = new
ThreadLocal<Session>();
+
static {
try {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable t) {
- t.printStackTrace();
throw new ExceptionInInitializerError(t);
}
}
@@ -45,5 +48,22 @@
getSessionFactory().close();
}
}
+
+ public static synchronized Session currentSession() throws HibernateException {
+ Session s = session.get();
+ if (s == null) {
+ s = sessionFactory.openSession();
+ session.set(s);
+ }
+ return s;
+ }
+
+ public static void closeSession() throws HibernateException {
+ Session s = session.get();
+ if (s!= null) {
+ s.close();
+ }
+ session.set(null);
+ }
}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/Identity.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/Identity.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/Identity.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -19,7 +19,6 @@
*/
package org.jboss.soa.overlord.conversation;
-import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@@ -43,7 +42,7 @@
@Entity
@Table(name="T_IDENTITY")
-public class Identity implements Serializable {
+public class Identity implements HibernateObject {
private static final long serialVersionUID = 1112L;
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/JoinState.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/JoinState.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/JoinState.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -19,8 +19,6 @@
*/
package org.jboss.soa.overlord.conversation;
-import java.io.Serializable;
-
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
@@ -35,7 +33,7 @@
*/
@Entity
@Table(name="T_JOIN_STATES")
-public class JoinState implements Serializable {
+public class JoinState implements HibernateObject {
private static final long serialVersionUID = 1113L;
Deleted:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/PersistentTest.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/PersistentTest.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/PersistentTest.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -1,75 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, JBoss Inc., and others contributors as indicated
- * by the @authors tag. All rights reserved.
- * See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License, v. 2.1.
- * This program is distributed in the hope that it will be useful, but WITHOUT A
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public License,
- * v.2.1 along with this distribution; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- *
- * (C) 2008,
- */
-package org.jboss.soa.overlord.conversation;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.hibernate.HibernateException;
-import org.hibernate.SessionFactory;
-import org.hibernate.Transaction;
-
-/**
- * @author jeffyu
- *
- */
-public class PersistentTest {
-
-
- public static void main(String[] args) throws Exception{
- Session s =
SessionManager.createSession("com.acme.services.broker.PurchaseGoods");
- Identity id = new Identity();
- id.setSession(s);
- id.setServiceName(s.getServiceName());
- id.setType(IdentityType.Primary);
-
- Map<String, String> properties = new HashMap<String, String>();
- properties.put("id", "8");
-
- id.setProperties(properties);
-
- SessionManager.saveObject(id);
-
- Session newSession = SessionManager.getSession(id);
- System.out.println("================================");
- System.out.println(newSession.getServiceName());
- System.out.println(newSession.getPojoClass());
- }
-
- public static void testScheduleItem() {
- try {
- SessionFactory sf = HibernateUtil.getSessionFactory();
- org.hibernate.Session session = sf.openSession();
- Transaction transaction= session.getTransaction();
- transaction.begin();
-
- ScheduleItem si = new ScheduleItem("PurchasingBroker",
"creditagency");
- session.save(si);
- transaction.commit();
- session.close();
- sf.close();
-
- } catch (HibernateException e) {
- System.out.println("=========ERROR==============");
- e.printStackTrace();
- }
- }
-
-}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/ScheduleItem.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/ScheduleItem.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/ScheduleItem.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -19,8 +19,6 @@
*/
package org.jboss.soa.overlord.conversation;
-import java.io.Serializable;
-
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
@@ -32,7 +30,7 @@
@Entity
@Table(name="T_SCHEDULE_ITEM")
-public class ScheduleItem implements Serializable {
+public class ScheduleItem implements HibernateObject {
private static final long serialVersionUID = 1114L;
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/Session.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/Session.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/Session.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -19,7 +19,6 @@
*/
package org.jboss.soa.overlord.conversation;
-import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@@ -44,7 +43,7 @@
@Entity
@Table(name="T_SESSION")
-public class Session implements Serializable {
+public class Session implements HibernateObject {
private static final long serialVersionUID = 1115L;
@@ -108,7 +107,7 @@
return this.status;
}
- public void setEPR(String name, EPR epr) {
+ public void setEPR(String name, EPR epr) throws Exception{
try {
EPRWrapper theEPRWrapper = null;
for(EPRWrapper eprWrapper : eprWrappers) {
@@ -129,8 +128,7 @@
eprWrappers.add(eprWrapper);
SessionManager.saveObject(eprWrapper);
} catch (Exception e) {
- e.printStackTrace();
- throw new RuntimeException("Error in storing EPR!!");
+ throw new Exception("Error in storing EPR!!" + e, e);
}
}
@@ -146,28 +144,27 @@
return null;
}
- public void schedule(String category, String name, boolean immediate,
- Message message) throws Exception {
+ public void schedule(String category, String name, Message message) throws Exception {
- logger.info("Schedule '"+category+"/"+name+"'
immediate="+immediate);
-
ScheduleItem si=new ScheduleItem(category, name);
si.setSession(this);
+ logger.info("Scheduling: " + si + " by thread of " +
Thread.currentThread().getName());
+
synchronized(joinStates) {
JoinState joinState = getJoinStateByScheduleItem(si);
if (joinState != null) {
joinState.join();
SessionManager.updateObject(joinState);
- System.out.println("---<><><>----" +
getJoinStateByScheduleItem(si).getSpawnPath());
+ logger.debug("Join State is: " + joinState);
if (joinState.getSpawnPath() <= 0) {
joinStates.remove(joinState);
SessionManager.removeObject(joinState);
- logger.info("About to schedule joined state: "+joinState);
+
ServiceInvoker invoker= new ServiceInvoker(category, name);
invoker.deliverAsync(message);
} else {
- logger.info("Don't join yet: "+si);
+ logger.info("Don't join yet: "+ joinState);
return;
}
}
@@ -176,24 +173,20 @@
synchronized(scheduleItems) {
// Check if already exists
if (scheduleItems.contains(si)) {
- logger.error("Schedule already contains item for " + si);
+ throw new Exception("Schedule already contains item for " + si);
}
scheduleItems.add(si);
SessionManager.saveObject(si);
- logger.info("Scheduled: "+si);
-
- if (immediate) {
- ServiceInvoker invoker= new ServiceInvoker(category, name);
- invoker.deliverAsync(message);
- }
+
+ logger.info("Finished scheduling "+si);
}
}
public void unschedule(String category, String name) throws Exception {
- logger.info("Unschedule
'"+category+"/"+name+"'");
+ logger.info("Unscheduling: '"+category+"/"+name+"' by
thread of " + Thread.currentThread().getName() );
synchronized(joinStates) {
if (isScheduleItemInJoinState(category, name)) {
@@ -203,13 +196,13 @@
synchronized(scheduleItems) {
ScheduleItem si = getScheduleItem(category, name);
- if (scheduleItems.remove(si) == false) {
- logger.error("Unable to unschedule: "+si);
- throw new Exception("Unable to unschedule item : "+si);
- } else {
- SessionManager.removeObject(si);
- logger.info("Successfully Unscheduled: "+si);
+ if (si.getId() == 0) {
+ throw new Exception("The scheduleItem of " + si + " is not existed
!");
}
+
+ scheduleItems.remove(si);
+ SessionManager.removeObject(si);
+ logger.info("Finished unscheduling: " + si);
}
}
@@ -223,7 +216,7 @@
}
- protected JoinState getJoinStateByScheduleItem(ScheduleItem si) {
+ protected synchronized JoinState getJoinStateByScheduleItem(ScheduleItem si) {
for(JoinState joinState : joinStates) {
if (si.getName().equals(joinState.getName()) &&
si.getCategory().equals(joinState.getCategory())) {
return joinState;
@@ -239,18 +232,20 @@
return si;
}
}
- return new ScheduleItem(category, name);
+ ScheduleItem item = new ScheduleItem(category, name);
+ item.setSession(this);
+ return item;
}
public void join(String category, String name, int count) throws Exception {
JoinState joinState=new JoinState(category, name, count);
joinState.setSession(this);
if (joinStates.contains(joinState)) {
- logger.error("Join already exists for '"+category+
"/"+name+"'");
+ throw new Exception("The '"+category+ "/"+name+"' of
JoinState is already existed.");
}
joinStates.add(joinState);
SessionManager.saveObject(joinState);
- logger.info("Added Join State: " + joinState);
+ logger.debug("Added Join State: " + joinState);
}
public void assimulateIdentities(java.util.List<Identity> ids) throws Exception {
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/SessionManager.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/SessionManager.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/conversation/SessionManager.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -25,9 +25,7 @@
import java.util.Map;
import org.apache.log4j.Logger;
-import org.hibernate.Transaction;
import org.jboss.soa.esb.message.Message;
-import org.jboss.soa.overlord.jbossesb.actions.ConversationActionException;
import org.jboss.soa.overlord.jbossesb.actions.MessageProperties;
import org.jboss.soa.overlord.jbossesb.actions.Service;
import org.mvel.MVEL;
@@ -42,93 +40,64 @@
public static Session createSession(String sessionName) throws Exception {
- org.hibernate.Session hibernateSession =
HibernateUtil.getSessionFactory().openSession();
- Transaction transaction = null;
- try {
-
- Class<?> pojoclass= ClassLoaderUtil.loadClass(sessionName);
- Object businessState = pojoclass.newInstance();
-
- transaction = hibernateSession.beginTransaction();
- hibernateSession.save(businessState);
-
- Session conversationSession = new Session();
- conversationSession.setPojoClass(sessionName);
- conversationSession.setStatus(SessionStatus.Active);
- if (businessState instanceof HibernateObject) {
- HibernateObject ho = (HibernateObject) businessState;
- conversationSession.setPojoID(ho.getId());
- logger.debug("Set Business State Object ID : " + ho.getId());
- }
- conversationSession.setBusinessObject(businessState);
-
- Service service = pojoclass.getAnnotation(Service.class);
- if (service != null) {
- conversationSession.setServiceName(service.name());
- conversationSession.setConversationType(service.conversationType());
- }
-
- hibernateSession.save(conversationSession);
-
- transaction.commit();
-
- return conversationSession;
-
- }catch (Exception e) {
- if (transaction != null) {
- transaction.rollback();
- }
- throw new Exception (e);
- } finally {
- hibernateSession.close();
+ org.hibernate.Session hibernateSession = HibernateUtil.currentSession();
+ Class<?> pojoclass= ClassLoaderUtil.loadClass(sessionName);
+ Object businessState = pojoclass.newInstance();
+ hibernateSession.save(businessState);
+
+ Session conversationSession = new Session();
+ conversationSession.setPojoClass(sessionName);
+ conversationSession.setStatus(SessionStatus.Active);
+ if (businessState instanceof HibernateObject) {
+ HibernateObject ho = (HibernateObject) businessState;
+ conversationSession.setPojoID(ho.getId());
+ logger.debug("Set Business State Object ID : " + ho.getId());
}
+ conversationSession.setBusinessObject(businessState);
+
+ Service service = pojoclass.getAnnotation(Service.class);
+ if (service != null) {
+ conversationSession.setServiceName(service.name());
+ conversationSession.setConversationType(service.conversationType());
+ }
+
+ hibernateSession.save(conversationSession);
+
+ return conversationSession;
}
@SuppressWarnings("unchecked")
public static Session createSubSession(String sessionName, String sessionKey, Message
message) throws Exception {
- org.hibernate.Session hibernateSession =
HibernateUtil.getSessionFactory().openSession();
- Transaction transaction = null;
- try {
- Session parentSession = (Session)hibernateSession.load(Session.class,
Long.valueOf(sessionKey));
- Class<?> pojoclass= ClassLoaderUtil.loadClass(sessionName);
- Object businessState = pojoclass.newInstance();
-
- transaction = hibernateSession.beginTransaction();
-
- Map<String, Object> boundVariables = (Map<String,
Object>)message.getProperties().
- getProperty(MessageProperties.BOUND_VARIABLE_KEY);
- for(String key : boundVariables.keySet()) {
- MVEL.setProperty(businessState, key, boundVariables.get(key));
- logger.info("bound to " + key);
- }
-
- hibernateSession.save(businessState);
-
- Session conversationSession = new Session();
- conversationSession.setPojoClass(sessionName);
- conversationSession.setStatus(SessionStatus.Active);
- if (businessState instanceof HibernateObject) {
- HibernateObject ho = (HibernateObject) businessState;
- conversationSession.setPojoID(ho.getId());
- logger.debug("Set Business State Object ID : " + ho.getId());
- }
- conversationSession.setBusinessObject(businessState);
- conversationSession.setParent(parentSession);
- conversationSession.setServiceName(parentSession.getServiceName());
-
- hibernateSession.save(conversationSession);
- transaction.commit();
-
- return conversationSession;
- } catch (Exception e) {
- if (transaction != null) {
- transaction.rollback();
- }
- throw new ConversationActionException (e);
- } finally {
- hibernateSession.close();
+ org.hibernate.Session hibernateSession = HibernateUtil.currentSession();
+ Session parentSession = (Session)hibernateSession.load(Session.class,
Long.valueOf(sessionKey));
+ Class<?> pojoclass= ClassLoaderUtil.loadClass(sessionName);
+ Object businessState = pojoclass.newInstance();
+
+ Map<String, Object> boundVariables = (Map<String,
Object>)message.getProperties().
+ getProperty(MessageProperties.BOUND_VARIABLE_KEY);
+ for(String key : boundVariables.keySet()) {
+ MVEL.setProperty(businessState, key, boundVariables.get(key));
+ logger.info("bound to " + key);
}
+
+ hibernateSession.save(businessState);
+
+ Session conversationSession = new Session();
+ conversationSession.setPojoClass(sessionName);
+ conversationSession.setStatus(SessionStatus.Active);
+ if (businessState instanceof HibernateObject) {
+ HibernateObject ho = (HibernateObject) businessState;
+ conversationSession.setPojoID(ho.getId());
+ logger.debug("Set Business State Object ID : " + ho.getId());
+ }
+ conversationSession.setBusinessObject(businessState);
+ conversationSession.setParent(parentSession);
+ conversationSession.setServiceName(parentSession.getServiceName());
+
+ hibernateSession.save(conversationSession);
+
+ return conversationSession;
}
public static Session retrieveSession(String sessionKey, java.util.List<Identity>
ids) throws Exception {
@@ -138,26 +107,18 @@
}
if (sessionKey != null) {
- org.hibernate.Session hibernateSession =
HibernateUtil.getSessionFactory().openSession();
- Session session = null;
- try {
- session = (Session) hibernateSession.load(Session.class, Long.valueOf(sessionKey));
- Class<?> pojoClass = ClassLoaderUtil.loadClass(session.getPojoClass());
- Object pojo = hibernateSession.load(pojoClass, Long.valueOf(session.getPojoID()));
- session.setBusinessObject(pojo);
- session.getScheduleItems().size();
- session.getIdentities().size();
- session.getJoinStates().size();
- session.getEprWrappers().size();
- } finally {
- hibernateSession.close();
- }
+ org.hibernate.Session hibernateSession = HibernateUtil.currentSession();
+ Session session = (Session) hibernateSession.load(Session.class,
Long.valueOf(sessionKey));
+ Class<?> pojoClass = ClassLoaderUtil.loadClass(session.getPojoClass());
+ Object pojo = hibernateSession.load(pojoClass, Long.valueOf(session.getPojoID()));
+ session.setBusinessObject(pojo);
+
return session;
}
for (Identity id : ids) {
if (IdentityType.Primary.equals(id.getType())) {
- return getSession(id);
+ return getSessionByIdentity(id);
}
}
@@ -165,108 +126,58 @@
}
public static Object saveObject(Object obj) throws Exception {
- org.hibernate.Session hibernateSession =
HibernateUtil.getSessionFactory().openSession();
- Transaction transaction = null;
- try {
- transaction = hibernateSession.beginTransaction();
- hibernateSession.save(obj);
- transaction.commit();
- } catch (Exception e) {
- if (transaction != null) {
- transaction.rollback();
- }
- throw new ConversationActionException("Error in saveObject", e);
- } finally {
- hibernateSession.close();
- }
-
+ org.hibernate.Session hibernateSession = HibernateUtil.currentSession();
+ hibernateSession.save(obj);
return obj;
}
+
+ public static Object getObject(long id, Class<?> cls) throws Exception {
+ org.hibernate.Session hibernateSession = HibernateUtil.currentSession();
+ return hibernateSession.load(cls, id);
+ }
+
@SuppressWarnings("unchecked")
public static Collection saveCollection(Collection col) throws Exception {
- org.hibernate.Session hibernateSession =
HibernateUtil.getSessionFactory().openSession();
- Transaction transaction = null;
- try {
- transaction = hibernateSession.beginTransaction();
+ org.hibernate.Session hibernateSession = HibernateUtil.currentSession();
- for(Iterator it = col.iterator(); it.hasNext();) {
- Object o = it.next();
- hibernateSession.save(o);
- }
-
- transaction.commit();
- } catch (Exception e) {
- if (transaction != null) {
- transaction.rollback();
- }
- throw new ConversationActionException("Error in saveCollection", e);
- } finally {
- hibernateSession.close();
+ for(Iterator it = col.iterator(); it.hasNext();) {
+ Object o = it.next();
+ hibernateSession.save(o);
}
return col;
}
public static void updateObject(Object obj) {
- org.hibernate.Session hibernateSession =
HibernateUtil.getSessionFactory().openSession();
- Transaction transaction = null;
- try {
- transaction = hibernateSession.beginTransaction();
- hibernateSession.update(obj);
- transaction.commit();
- } catch (Exception e) {
- if (transaction != null) {
- transaction.rollback();
- }
- throw new ConversationActionException("Error in updateObject", e);
- } finally {
- hibernateSession.close();
- }
+ org.hibernate.Session hibernateSession = HibernateUtil.currentSession();
+ hibernateSession.update(obj);
}
public static void removeObject(Object obj) {
- org.hibernate.Session hibernateSession =
HibernateUtil.getSessionFactory().openSession();
- Transaction transaction = null;
- try {
- transaction = hibernateSession.beginTransaction();
- hibernateSession.delete(obj);
- transaction.commit();
- } catch (Exception e) {
- if (transaction != null) {
- transaction.rollback();
- }
- throw new ConversationActionException("Error in removeObject : " + obj, e);
- } finally {
- hibernateSession.close();
- }
-
+ org.hibernate.Session hibernateSession = HibernateUtil.currentSession();
+ hibernateSession.delete(obj);
}
- public static Session getSession(Identity id) {
- org.hibernate.Session hibernateSession =
HibernateUtil.getSessionFactory().openSession();
- Session session = null;
- try {
- String query = "select b from Identity b where b.type =:type and b.propertyValues
=:propertyValues and b.serviceName =:serviceName";
- List<?> results = hibernateSession.createQuery(query)
- .setParameter("type", id.getType())
- .setParameter("propertyValues", id.getPropertyValues())
- .setParameter("serviceName", id.getServiceName())
- .list();
- if (results.size() < 1) {
- return null;
- }
-
- Identity theID = (Identity)results.get(0);
- session = theID.getSession();
- session.getScheduleItems().size();
- session.getIdentities().size();
- session.getJoinStates().size();
- session.getEprWrappers().size();
- } finally {
- hibernateSession.close();
+ public static Session getSessionByIdentity(Identity id) throws Exception{
+ org.hibernate.Session hibernateSession = HibernateUtil.currentSession();
+ String query = "select b from Identity b where b.type =:type and b.propertyValues
=:propertyValues and b.serviceName =:serviceName";
+ List<?> results = hibernateSession.createQuery(query)
+ .setParameter("type", id.getType())
+ .setParameter("propertyValues", id.getPropertyValues())
+ .setParameter("serviceName", id.getServiceName())
+ .list();
+ if (results.size() < 1) {
+ return null;
}
+
+ Identity theID = (Identity)results.get(0);
+ Session session = (Session)hibernateSession.load(Session.class,
theID.getSession().getId());
+ Class<?> pojoClass = ClassLoaderUtil.loadClass(session.getPojoClass());
+ Object pojo = hibernateSession.load(pojoClass, Long.valueOf(session.getPojoID()));
+ session.setBusinessObject(pojo);
+
return session;
}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ConversationAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ConversationAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ConversationAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -20,16 +20,22 @@
package org.jboss.soa.overlord.jbossesb.actions;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.log4j.Logger;
+import org.hibernate.Transaction;
import org.jboss.soa.esb.actions.AbstractActionLifecycle;
+import org.jboss.soa.esb.client.ServiceInvoker;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.overlord.conversation.ClassLoaderUtil;
+import org.jboss.soa.overlord.conversation.HibernateUtil;
import org.jboss.soa.overlord.conversation.Identity;
import org.jboss.soa.overlord.conversation.IdentityType;
+import org.jboss.soa.overlord.conversation.ScheduleItem;
import org.jboss.soa.overlord.conversation.Session;
import org.jboss.soa.overlord.conversation.SessionManager;
import org.jboss.soa.overlord.jbossesb.util.MessageUtil;
@@ -40,10 +46,12 @@
*/
public abstract class ConversationAction extends AbstractActionLifecycle {
- protected static Logger logger = Logger.getLogger(ConversationAction.class);
+ private static Logger logger = Logger.getLogger(ConversationAction.class);
- private ConfigTree config;
+ private ConfigTree config;
+ private Set<ScheduleItem> scheduleItems = new HashSet<ScheduleItem>();
+
public ConversationAction(ConfigTree config) {
this.config = config;
}
@@ -62,7 +70,7 @@
return(ret);
}
- public List<Identity> getIdentities(Message message, String
serviceDescriptionName, ConfigTree ct) throws Exception {
+ protected List<Identity> getIdentities(Message message, String
serviceDescriptionName, ConfigTree ct) throws Exception {
ConfigTree[] children=ct.getAllChildren();
java.util.List<Identity> ids=new java.util.Vector<Identity>();
@@ -164,16 +172,37 @@
public Message process(Message message) throws Exception {
String
sessionKey=(String)message.getProperties().getProperty(MessageProperties.SESSION_KEY);
logger.info("Session Key is [" + sessionKey + "] Body is: [" +
message.getBody() + "]");
- Session session = getSession(message);
- if (session != null && isFirstConversationAction(message)) {
- unschedule(message);
- logger.info("This is first conversation action to unschedule the item!");
+
+ org.hibernate.Session hibernateSession = HibernateUtil.currentSession();
+ Transaction transaction = hibernateSession.beginTransaction();
+ try {
+ Session session = getSession(message);
+ if (session != null && isFirstConversationAction(message)) {
+ logger.info("This is first conversation action to unschedule the item!");
+ unschedule(message);
+ }
+
+ handle(message);
+ transaction.commit();
+ } catch (Exception e) {
+ transaction.rollback();
+ throw new Exception("Error in process message: " + e, e);
+ } finally {
+ HibernateUtil.closeSession();
}
- return handle(message);
+ sendAsyncMessage(message);
+
+ return message;
}
-
+ protected void sendAsyncMessage(Message message) throws Exception {
+ for(ScheduleItem si : scheduleItems) {
+ ServiceInvoker invoker = new ServiceInvoker(si.getCategory(), si.getName());
+ invoker.deliverAsync(message);
+ }
+ }
+
private boolean isFirstConversationAction(Message message) throws
ClassNotFoundException{
String
sessionKey=(String)message.getProperties().getProperty(MessageProperties.SESSION_KEY);
if (sessionKey != null) {
@@ -212,6 +241,13 @@
return method + "()";
}
+
+ protected void addScheduleItemToDeliver(String category, String name) {
+ ScheduleItem si = new ScheduleItem(category, name);
+ scheduleItems.add(si);
+ }
+
+
/**
* This is the method that deals with business logic for derived conversation actions.
* @param message
@@ -219,5 +255,6 @@
* @throws Exception
*/
public abstract Message handle(Message message) throws Exception;
+
}
Deleted:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ConversationActionException.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ConversationActionException.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ConversationActionException.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -1,46 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, JBoss Inc., and others contributors as indicated
- * by the @authors tag. All rights reserved.
- * See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License, v. 2.1.
- * This program is distributed in the hope that it will be useful, but WITHOUT A
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public License,
- * v.2.1 along with this distribution; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- *
- * (C) 2008,
- */
-package org.jboss.soa.overlord.jbossesb.actions;
-
-/**
- * @author jeffyu
- *
- */
-public class ConversationActionException extends RuntimeException {
-
- private static final long serialVersionUID = -8332666951736901905L;
-
- public ConversationActionException() {
- super();
- }
-
- public ConversationActionException(String message) {
- super(message);
- }
-
- public ConversationActionException(Throwable t) {
- super(t);
- }
-
- public ConversationActionException(String message, Throwable t) {
- super(message, t);
- }
-
-}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/CreateSessionAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/CreateSessionAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/CreateSessionAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -19,6 +19,7 @@
*/
package org.jboss.soa.overlord.jbossesb.actions;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.overlord.conversation.Session;
@@ -31,6 +32,8 @@
*/
public class CreateSessionAction extends ConversationAction {
+ private Logger logger = Logger.getLogger(CreateSessionAction.class);
+
public CreateSessionAction(ConfigTree config) {
super(config);
}
@@ -58,9 +61,8 @@
message.getProperties().setProperty(MessageProperties.SESSION, session);
message.getProperties().setProperty(MessageProperties.SESSION_KEY,
String.valueOf(session.getId()));
- } else {
- logger.error("No session has been defined");
- throw new ConversationActionException("Session is not defined");
+ } else {
+ throw new Exception("No session has been defined");
}
return(message);
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/IfAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/IfAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/IfAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -19,6 +19,7 @@
*/
package org.jboss.soa.overlord.jbossesb.actions;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.overlord.conversation.Session;
@@ -30,6 +31,8 @@
*/
public class IfAction extends ConversationAction {
+ private static Logger logger = Logger.getLogger(IfAction.class);
+
public IfAction(ConfigTree config) {
super(config);
}
@@ -72,10 +75,11 @@
}
if (f_register) {
- // Schedule the service category/name
- session.schedule(category, name,
- immediate.equalsIgnoreCase("true"),
- message);
+ session.schedule(category, name, message);
+
+ if ("true".equals(immediate)) {
+ addScheduleItemToDeliver(category, name);
+ }
}
}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/MessageRouterAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/MessageRouterAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/MessageRouterAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -21,6 +21,7 @@
import java.util.List;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.client.ServiceInvoker;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.listeners.message.MessageDeliverException;
@@ -35,6 +36,8 @@
*/
public class MessageRouterAction extends ConversationAction {
+ private static Logger logger = Logger.getLogger(MessageRouterAction.class);
+
private boolean routerFlag = false;
public MessageRouterAction(ConfigTree config) {
@@ -70,7 +73,7 @@
}
}
if (routerFlag == false) {
- throw new ConversationActionException ("Could not find any appropriate services
to proceed!");
+ throw new Exception ("Could not find any appropriate services to
proceed!");
}
return null;
}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ParallelAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ParallelAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ParallelAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -19,6 +19,7 @@
*/
package org.jboss.soa.overlord.jbossesb.actions;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.overlord.conversation.Session;
@@ -28,6 +29,8 @@
*/
public class ParallelAction extends ConversationAction {
+ private static Logger logger = Logger.getLogger(ParallelAction.class);
+
public ParallelAction(ConfigTree config) {
super(config);
}
@@ -40,22 +43,8 @@
ConfigTree[] children=getConfig().getAllChildren();
- // NOTE: May be issue, sending message?
- // A parallel construct should not occur prior
- // to a receive activity within a pipeline -
- // this might indicate incorrect projection
- // so should check that message has been cleared?
- if (message.getBody().get() != null) {
- logger.error("Message has not been received prior to parallel construct");
- }
-
for (int i=0; i < children.length; i++) {
-
- if (children[i].getName().equals("path")) {
-
- // Increment the path count, but don't schedule
- // until after the optional join has been scheduled
-
+ if (children[i].getName().equals("path")) {
pathCount++;
} else if (children[i].getName().equals("join")) {
@@ -76,7 +65,7 @@
logger.error("Join cannot be performed without concurrent paths");
} else {
session.join(joinCategory, joinName, pathCount);
-
+ logger.info("Scheduling a join state of " + joinCategory + "/" +
joinName);
}
}
@@ -89,15 +78,16 @@
String immediate=children[i].getAttribute("immediate","false");
// Schedule service
- session.schedule(category, name,
- immediate.equalsIgnoreCase("true"),
- message);
-
+ session.schedule(category, name, message);
+ if ("true".equalsIgnoreCase(immediate)){
+ addScheduleItemToDeliver(category, name);
+ }
}
}
return(message);
}
+
}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/PerformAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/PerformAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/PerformAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -23,7 +23,6 @@
import java.util.Map;
import org.apache.log4j.Logger;
-import org.jboss.soa.esb.client.ServiceInvoker;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.overlord.conversation.Session;
@@ -64,10 +63,17 @@
}
message.getProperties().setProperty(MessageProperties.BOUND_VARIABLE_KEY, bindingVal);
- //ServiceInvoker serviceInvoker = new ServiceInvoker(serviceCategory, serviceName);
- //serviceInvoker.deliverSync(message, 2000);
- session.schedule(serviceCategory, serviceName, true, message);
+ session.schedule(serviceCategory, serviceName, message);
+ addScheduleItemToDeliver(serviceCategory, serviceName);
+
+ String responseCategory =
getConfig().getAttribute(ActionProperties.RESPONSE_SERVICE_CATEGORY);
+ String responseName =
getConfig().getAttribute(ActionProperties.RESPONSE_SERVICE_NAME);
+
+ if (responseCategory != null && responseName != null) {
+ session.schedule(responseCategory, responseName, message);
+ }
+
return message;
}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ReceiveMessageAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ReceiveMessageAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ReceiveMessageAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -19,6 +19,7 @@
*/
package org.jboss.soa.overlord.jbossesb.actions;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.addressing.EPR;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
@@ -30,6 +31,8 @@
*/
public class ReceiveMessageAction extends ConversationAction {
+ private static Logger logger = Logger.getLogger(ReceiveMessageAction.class);
+
public ReceiveMessageAction(ConfigTree config) {
super(config);
}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/RetrieveSessionAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/RetrieveSessionAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/RetrieveSessionAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -21,6 +21,7 @@
import java.util.List;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.overlord.conversation.Identity;
@@ -31,6 +32,8 @@
*/
public class RetrieveSessionAction extends ConversationAction {
+ private static Logger logger = Logger.getLogger(RetrieveSessionAction.class);
+
public RetrieveSessionAction(ConfigTree config) {
super(config);
}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ScheduleStateAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ScheduleStateAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/ScheduleStateAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -19,6 +19,7 @@
*/
package org.jboss.soa.overlord.jbossesb.actions;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.overlord.conversation.Session;
@@ -28,6 +29,8 @@
*/
public class ScheduleStateAction extends ConversationAction {
+ private static Logger logger = Logger.getLogger(ScheduleStateAction.class);
+
public ScheduleStateAction(ConfigTree config) {
super(config);
}
@@ -37,11 +40,13 @@
String
serviceCategory=getConfig().getAttribute(ActionProperties.SERVICE_CATEGORY_PROPERTY);
String immediate=getConfig().getAttribute(ActionProperties.IMMEDIATE);
- // Schedule action pipeline
- Session session=getSession(message);
-
- session.schedule(serviceCategory,
serviceName,immediate.equalsIgnoreCase("true"), message);
+ Session session=getSession(message);
+ session.schedule(serviceCategory, serviceName, message);
+ if ("true".equalsIgnoreCase(immediate)) {
+ addScheduleItemToDeliver(serviceCategory, serviceName);
+ }
+
logger.info("Scheduled
'"+serviceCategory+"/"+serviceName+"'");
return(message);
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/SendMessageAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/SendMessageAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/SendMessageAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -52,7 +52,7 @@
String requiredMType=getConfig().getAttribute(ActionProperties.MESSAGE_TYPE);
if (requiredMType == null) {
- throw new ConversationActionException("Message type is not defined");
+ throw new Exception("Message type is not defined");
}
String mesgMType=getMessageType(message);
@@ -87,32 +87,25 @@
mesg.getHeader().getCall().setReplyTo(lepr);
// Schedule response action pipeline
- session.schedule(respServiceCategory, respServiceName, false,
- message);
+ session.schedule(respServiceCategory, respServiceName, message);
}
- ServiceInvoker invoker = null;
- if (serviceCategory != null && serviceName != null) {
- invoker = new ServiceInvoker(serviceCategory, serviceName);
- } else {
+ if (serviceCategory == null && serviceName == null) {
serviceCategory = (String) MVEL.eval(categoryExpression,
session.getBusinessObject());
serviceName = (String) MVEL.eval(nameExpression,
session.getBusinessObject());
- invoker = new ServiceInvoker(serviceCategory, serviceName);
}
+
+ ServiceInvoker invoker = new ServiceInvoker(serviceCategory, serviceName);
invoker.deliverAsync(mesg);
- logger.info("Sending message to
'"+serviceCategory+"/"+serviceName+"'");
+ logger.info("Sent message to
'"+serviceCategory+"/"+serviceName+"'");
} else if (clientEPR != null) {
- EPR epr=null;
+ EPR epr = session.getEPR(clientEPR);
- epr = session.getEPR(clientEPR);
-
- if (epr == null) {
- logger.error("Client EPR '"+clientEPR+"' does not exist in
session");
-
- throw new ConversationActionException("Client EPR
'"+clientEPR+"' does not exist in session");
+ if (epr == null) {
+ throw new Exception("Client EPR '"+clientEPR+"' does not
exist in session");
}
Courier courier=null;
@@ -131,14 +124,14 @@
courier.cleanup();
} else {
- throw new ConversationActionException("Failed to send message");
+ throw new Exception("Failed to send message");
}
logger.info("MESSAGE TYPE '"+mesgMType+"' SENT.");
} else {
- throw new ConversationActionException("Unexpected message type="+mesgMType+
- ", but expecting type="+requiredMType);
+ throw new Exception("Unexpected message type="+mesgMType+
+ ", but expecting type="+requiredMType);
}
return(message);
@@ -146,4 +139,3 @@
}
-
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/SetVariableAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/SetVariableAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/SetVariableAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -22,6 +22,7 @@
import org.apache.log4j.Logger;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.overlord.conversation.ClassLoaderUtil;
import org.jboss.soa.overlord.conversation.Session;
import org.jboss.soa.overlord.conversation.SessionManager;
import org.jboss.soa.overlord.jbossesb.util.XMLUtils;
@@ -49,23 +50,27 @@
Session session = getSession(message);
Object bstate = session.getBusinessObject();
-
logger.info("Set value to the variable of " + variable);
while (variable.startsWith("parent.")) {
variable = variable.substring(7);
session = session.getParent();
+ if (session.getPojoID() != 0) {
+ Class<?> pojoClass = ClassLoaderUtil.loadClass(session.getPojoClass());
+ //Object pojo = SessionManager.getObject(session.getPojoID(), pojoClass);
+ //session.setBusinessObject(pojo);
+ }
}
if (stateExpression != null) {
Object result = MVEL.eval(stateExpression, bstate);
- MVEL.setProperty(bstate, variable, result);
+ MVEL.setProperty(session.getBusinessObject(), variable, result);
logger.info("The Variable is: " + variable + "; stateExpression is:
" + stateExpression);
} else if (messageExpression != null) {
String xmlBody = (String) message.getBody().get();
Element element = (Element) XMLUtils.getNode(xmlBody);
String result = XMLUtils.executeXpath(element, messageExpression);
- MVEL.setProperty(bstate, variable, result);
+ MVEL.setProperty(session.getBusinessObject(), variable, result);
logger.info("The Variable is: " + variable + "; messageExpression is:
" + messageExpression);
}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/SwitchAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/SwitchAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/SwitchAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -19,6 +19,7 @@
*/
package org.jboss.soa.overlord.jbossesb.actions;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.overlord.conversation.Session;
@@ -29,6 +30,8 @@
*/
public class SwitchAction extends ConversationAction {
+ private static Logger logger = Logger.getLogger(SwitchAction.class);
+
public SwitchAction(ConfigTree config) {
super(config);
}
@@ -62,16 +65,15 @@
}
if (selected) {
- session.schedule(category, name, true, message);
- logger.info("Schedule service of [" + category + "/" + name +
"] immediately");
+ session.schedule(category, name, message);
+ addScheduleItemToDeliver(category, name);
+ logger.info("Scheduled service of [" + category + "/" + name +
"] immediately");
}
}
}
}
if (selected == false) {
- logger.error("Switch case statement was not selected");
-
throw new Exception("Switch case statement was not selected");
}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/WhenAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/WhenAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/WhenAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -19,6 +19,7 @@
*/
package org.jboss.soa.overlord.jbossesb.actions;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.overlord.conversation.Session;
@@ -30,6 +31,8 @@
*/
public class WhenAction extends ConversationAction {
+ private static Logger logger = Logger.getLogger(WhenAction.class);
+
public WhenAction(ConfigTree config) {
super(config);
}
@@ -37,50 +40,28 @@
@Override
public Message handle(Message message) throws Exception {
+
Session session = getSession(message);
- int pathCount = 0;
- String joinCategory = null;
- String joinName = null;
for(ConfigTree ct : getConfig().getAllChildren()) {
if ("when".equals(ct.getName())) {
- pathCount ++;
- } else if ("join".equals(ct.getName())) {
-
- if (joinName != null) {
- logger.error("Join details already defined");
- }
-
- joinCategory = ct.getAttribute(ActionProperties.SERVICE_CATEGORY);
- joinName = ct.getAttribute(ActionProperties.SERVICE_NAME);
- }
- }
-
- if (joinCategory != null && joinName != null && pathCount > 0) {
- session.join(joinCategory, joinName, pathCount);
- }
-
- for(ConfigTree ct : getConfig().getAllChildren()) {
- if ("when".equals(ct.getName())) {
//TODO: make the expression as an method name temporarily
String decision = ct.getAttribute("expression");
String category = ct.getAttribute(ActionProperties.SERVICE_CATEGORY);
String name = ct.getAttribute(ActionProperties.SERVICE_NAME);
- try {
- if (decision != null) {
- Object res = MVEL.eval(getMvelMethodName(decision), session.getBusinessObject());
- if (res instanceof Boolean) {
- Boolean ret = (Boolean)res;
- if (ret.booleanValue()) {
- session.schedule(category, name, true, message);
- }
- } else {
- logger.error("currently doesn't support the return value other than
Boolean");
+ if (decision != null) {
+ Object res = MVEL.eval(getMvelMethodName(decision), session.getBusinessObject());
+ if (res instanceof Boolean) {
+ Boolean ret = (Boolean)res;
+ if (ret.booleanValue()) {
+ session.schedule(category, name, message);
+ addScheduleItemToDeliver(category, name);
+ logger.info("Scheduled: " + category + '/' + name);
+ break;
}
+ } else {
+ logger.error("currently doesn't support the return value other than
Boolean");
}
- } catch (Exception e) {
- logger.error("Failed to invoke decision method: " + decision);
- throw new ConversationActionException("Failed to invoke decision method of -
" + decision);
}
}
}
Modified:
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/WhileAction.java
===================================================================
---
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/WhileAction.java 2008-07-12
17:38:10 UTC (rev 140)
+++
cdl/trunk/runtime/jbossesb/src/main/java/org/jboss/soa/overlord/jbossesb/actions/WhileAction.java 2008-07-12
17:45:12 UTC (rev 141)
@@ -51,7 +51,7 @@
} else if ("exit".equals(ct.getName())){
exitConfig = ct;
} else {
- throw new ConversationActionException("Unrecognized configuration Node in
WhileAction");
+ throw new Exception("Unrecognized configuration Node in WhileAction");
}
}
@@ -66,21 +66,22 @@
if (flag) {
String category = whileConfig.getAttribute(ActionProperties.SERVICE_CATEGORY);
String name = whileConfig.getAttribute(ActionProperties.SERVICE_NAME);
- session.schedule(category, name, false, message);
+ session.schedule(category, name, message);
ServiceInvoker serviceInvoker = new ServiceInvoker(category, name);
serviceInvoker.deliverSync(message, 2000);
logger.info("Schedule items of " + category + "/" + name +
"in WhileAction");
} else {
String category = exitConfig.getAttribute(ActionProperties.SERVICE_CATEGORY);
String name = exitConfig.getAttribute(ActionProperties.SERVICE_NAME);
- session.schedule(category, name, true, message);
- logger.info("Schedule items of " + category + "/" + name +
"in WhileAction of exit branch");
+ session.schedule(category, name, message);
+ addScheduleItemToDeliver(category, name);
+ logger.info("Scheduled items of " + category + "/" + name +
"in WhileAction of exit branch");
}
} else {
- throw new ConversationActionException("method return value is not an
Integer.");
+ throw new Exception("method return value is not Boolean.");
}
} else {
- throw new ConversationActionException("Haven't found the decision method in
the configuration.");
+ throw new Exception("Haven't found the decision method in the
configuration.");
}
return message;