[jboss-svn-commits] JBL Code SVN: r6598 - in labs/jbossesb/trunk/product/core/listeners: src/org/jboss/soa/esb/actions src/org/jboss/soa/esb/actions/converters src/org/jboss/soa/esb/actions/routing src/org/jboss/soa/esb/actions/templates src/org/jboss/soa/esb/listeners tests/src/org/jboss/soa/esb/actions tests/src/org/jboss/soa/esb/actions/converters
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Oct 4 13:59:29 EDT 2006
Author: estebanschifman
Date: 2006-10-04 13:59:09 -0400 (Wed, 04 Oct 2006)
New Revision: 6598
Modified:
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/AbstractFileAction.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/AbstractSqlRowAction.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ActionProcessor.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformer.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ByteArrayToString.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToCSVString.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToXStream.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/JMSRouter.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/ObjectToFileWriter.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/templates/MockAction.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/AbstractListener.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/DirectoryPoller.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/BaseTestActionProcessor.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformerUnitTest.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestActionProcessor1.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestActionProcessor2.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestActionProcessor3.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestBean.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/ToNowhereRouter.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ByteArrayToStringUnitTest.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/LongToDateConverter.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToCSVStringUnitTest.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToFileWriterUnitTest.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToXStreamUnitTest.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/StringToLongConverter.java
Log:
Refactor listeners and action classes to use Message
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/AbstractFileAction.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/AbstractFileAction.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/AbstractFileAction.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -23,6 +23,7 @@
package org.jboss.soa.esb.actions;
import java.io.File;
+import org.jboss.soa.esb.message.Message;
/**
* <p/>
@@ -49,14 +50,21 @@
* @return The processing result.
* @throws ActionProcessingException Exception during payload processing.
*/
- public final Object process(Object message) throws ActionProcessingException {
- if(!(message instanceof File)) {
- throw new ActionProcessingException("Message object for processing by " + getClass().getName()
- + " should have been preprocessed to a " + File.class.getName() + " instance.");
+ public final void process(Message message) throws ActionProcessingException {
+
+ Object oCurr = message.getBody().get(CURRENT_OBJECT);
+ if(!(oCurr instanceof File)) {
+ throw new ActionProcessingException
+ ("Message current object for processing by " + getClass().getName()
+ + " should have been preprocessed to a " + File.class.getName()
+ + " instance.");
}
// Call the implementing class to process the file message...
- return process((File)message);
+ message.getBody().remove(CURRENT_OBJECT);
+ Object oResult = process((File)oCurr);
+ if (null!=oResult)
+ message.getBody().add(CURRENT_OBJECT,oResult);
}
/**
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/AbstractSqlRowAction.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/AbstractSqlRowAction.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/AbstractSqlRowAction.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -5,6 +5,8 @@
import org.apache.log4j.Logger;
import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.message.Message;
+import org.omg.PortableServer.CurrentOperations;
/**
* Abstract SQL Row action.
@@ -26,16 +28,19 @@
logger = Logger.getLogger(getClass());
}
- public final Object process(Object message) throws ActionProcessingException {
- if (!(message instanceof Map)) {
+ public final void process(Message message) throws ActionProcessingException {
+ Object oCurr = message.getBody().get(CURRENT_OBJECT);
+ if (!(oCurr instanceof Map)) {
throw new ActionProcessingException(
"Message object for processing by "
+ getClass().getName()
+ " should have been preprocessed and supplied as a "
+ Map.class.getName() + " instance.");
}
-
- return process((Map)message);
+ message.getBody().remove(CURRENT_OBJECT);
+ Object oResult = process((Map)oCurr);
+ if (null!=oResult)
+ message.getBody().add(CURRENT_OBJECT,oResult);
} // ________________________________
/**
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ActionProcessor.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ActionProcessor.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ActionProcessor.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -23,6 +23,7 @@
package org.jboss.soa.esb.actions;
import java.io.Serializable;
+import org.jboss.soa.esb.message.Message;
/**
* Action Processor Interface Definition.
@@ -40,13 +41,14 @@
*/
public interface ActionProcessor {
+
+ public static final String CURRENT_OBJECT="org.jboss.soa.esb.actions.current.object";
/**
- * Perform the processing action on the message "payload" and return the result.
- * @param message The message payload to be processed.
- * @return The processing result.
+ * Perform the processing action on the message
+ * @param message The message to be processed.
* @throws ActionProcessingException Exception during payload processing.
*/
- public Object process(Object message) throws ActionProcessingException;
+ public void process(Message message) throws ActionProcessingException;
/**
* Get the "OK" notification message for this processor.
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformer.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformer.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformer.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -22,12 +22,7 @@
package org.jboss.soa.esb.actions;
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Serializable;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
import java.util.List;
import org.apache.log4j.Logger;
@@ -37,6 +32,8 @@
import org.jboss.soa.esb.services.transform.TransformationService;
import org.milyn.SmooksStandalone;
+import org.jboss.soa.esb.message.*;
+
/**
* Smooks Transformer.
* <p/>
@@ -124,8 +121,12 @@
* @see org.jboss.soa.esb.services.transform.TransformationService#transform(java.lang.Object)
*/
public Object transform(Object message) throws TransformationException {
- try {
- return process(message);
+ if (! (message instanceof Message))
+ throw new TransformationException("Argument must implement the Message interface");
+ try
+ {
+ process((Message)message);
+ return message;
} catch (ActionProcessingException e) {
throw new TransformationException(e);
}
@@ -134,14 +135,15 @@
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#process(java.lang.Object)
*/
- public Object process(Object message) throws ActionProcessingException {
+ public void process(Message message) throws ActionProcessingException {
+ Object oCurr = message.getBody().get(CURRENT_OBJECT);
try {
- if(message instanceof String) {
+ if(oCurr instanceof String) {
byte[] messageBytes = null;
String transformedMessage;
try {
- messageBytes = ((String)message).getBytes(messageEnc);
+ messageBytes = ((String)oCurr).getBytes(messageEnc);
} catch (UnsupportedEncodingException e) {
// Can't happen - encoding was already tested in the constructor.
}
@@ -154,14 +156,15 @@
if(logger.isDebugEnabled()) {
long timeTaken = System.currentTimeMillis() - start;
logger.debug("Transformed message for useragent [" + messageUseragent + "]. Time taken: "
- + timeTaken + ". Message in:\n[" + message + "]. \nMessage out:\n[" + transformedMessage + "].");
+ + timeTaken + ". Message in:\n[" + oCurr.toString()+ "]. \nMessage out:\n[" + transformedMessage + "].");
}
-
- return transformedMessage;
+ message.getBody().remove(CURRENT_OBJECT);
+ if (null!=transformedMessage)
+ message.getBody().add(CURRENT_OBJECT,transformedMessage);
} else {
+ String sClass = (null==oCurr) ? "<null>" : oCurr.getClass().getName();
logger.warn("String message types only supported. Input message was ["
- + message.getClass().getName() + "]. Returning message untransformed.");
- return message;
+ + sClass + "]. Returning message untransformed.");
}
} catch(Throwable thrown) {
throw new ActionProcessingException("Message transformation failed.", thrown);
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ByteArrayToString.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ByteArrayToString.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ByteArrayToString.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -29,6 +29,7 @@
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.actions.ActionProcessor;
import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.message.Message;
/**
* Byte Array to String processor.
@@ -58,17 +59,19 @@
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#process(java.lang.Object)
*/
- public Object process(Object message) throws ActionProcessingException {
+ public void process(Message message) throws ActionProcessingException {
byte[] bytes;
try {
- bytes = (byte[])message;
+ bytes = (byte[])message.getBody().get(CURRENT_OBJECT);
} catch(ClassCastException e) {
throw new ActionProcessingException("Message must be an array of bytes. Is " + message.getClass().getName());
}
try {
- return new String(bytes, encoding);
+ String sResult = new String(bytes, encoding);
+ message.getBody().remove(CURRENT_OBJECT);
+ message.getBody().add(CURRENT_OBJECT,sResult);
} catch (UnsupportedEncodingException e) {
throw new ActionProcessingException("Unable to decode byte[] to String. Unsupported character encoding configuration: " + encoding, e);
}
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToCSVString.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToCSVString.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToCSVString.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -32,6 +32,7 @@
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.actions.ActionProcessor;
import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.message.Message;
/**
* Object to CSV String processor.
@@ -94,7 +95,10 @@
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#process(java.lang.Object)
*/
- public Object process(Object message) throws ActionProcessingException {
+ public void process(Message message) throws ActionProcessingException {
+
+ Object oCurr = message.getBody().get(CURRENT_OBJECT);
+ Class oCurrClass = (null==oCurr) ? null : oCurr.getClass();
StringBuffer csv = new StringBuffer();
boolean hasAppendStarted = false; // Have we appended a value yet?
@@ -108,15 +112,15 @@
// Get the bean method....
try {
- method = message.getClass().getMethod(methodName, new Class[] {});
+ method = oCurrClass.getMethod(methodName, new Class[] {});
} catch (Exception e) {
- logger.error("Bean method: " + methodName + " not found/accessible on message object " + message.getClass().getName(), e);
+ logger.error("Bean method: " + methodName + " not found/accessible on message object " + oCurr.getClass().getName(), e);
continue;
}
// Call the bean method and add the toString of the return to the CSV string....
try {
- Object value = method.invoke(message, new Object[] {});
+ Object value = method.invoke(oCurr, new Object[] {});
// TODO: Some sort of encoding is required here to make a proper CSV string...
csv.append(value != null?value.toString():"");
} catch (Exception e) {
@@ -124,7 +128,8 @@
}
}
- return csv.toString();
+ message.getBody().remove(CURRENT_OBJECT);
+ message.getBody().add(CURRENT_OBJECT,csv.toString());
}
/* (non-Javadoc)
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToXStream.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToXStream.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToXStream.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -29,6 +29,7 @@
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.actions.ActionProcessor;
import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.message.Message;
import com.thoughtworks.xstream.XStream;
@@ -70,7 +71,9 @@
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#process(java.lang.Object)
*/
- public Object process(Object object) throws ActionProcessingException {
+ public void process(Message message) throws ActionProcessingException {
+
+ Object object = message.getBody().get(CURRENT_OBJECT);
XStream xstream = new XStream();
if(classAlias == null) {
@@ -83,7 +86,8 @@
xstream.alias(classAlias, object.getClass());
}
- return xstream.toXML(object);
+ message.getBody().remove(CURRENT_OBJECT);
+ message.getBody().add(CURRENT_OBJECT,xstream.toXML(object));
}
/* (non-Javadoc)
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/JMSRouter.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/JMSRouter.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/JMSRouter.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -97,39 +97,39 @@
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#process(java.lang.Object)
*/
- public Object process(Object message) throws ActionProcessingException {
- if(!(message instanceof Serializable)) {
- throw new ActionProcessingException("Cannot send Object [" + message.getClass().getName() + "] to destination [" + queueSetup.queueName + "]. Object must be serializable.");
+ public void process(org.jboss.soa.esb.message.Message message) throws ActionProcessingException {
+
+ Object oCurr = message.getBody().get(CURRENT_OBJECT);
+ if(!(oCurr instanceof Serializable)) {
+ throw new ActionProcessingException("Cannot send Object [" + oCurr.getClass().getName() + "] to destination [" + queueSetup.queueName + "]. Object must be serializable.");
}
try {
// Send a Text or Object message to the queue...
- if (message instanceof String) {
+ if (oCurr instanceof String) {
TextMessage oMsg = queueSetup.jmsSession.createTextMessage();
if(logger.isDebugEnabled()) {
- logger.debug("Sending Text message: [" + message + "] to destination [" + queueSetup.queueName + "].");
+ logger.debug("Sending Text message: [" + oCurr + "] to destination [" + queueSetup.queueName + "].");
}
- oMsg.setText((String)message);
+ oMsg.setText((String)oCurr);
setStringProperties(oMsg);
queueSetup.jmsProducer.send(oMsg);
} else {
ObjectMessage oMsg = queueSetup.jmsSession.createObjectMessage();
if(logger.isDebugEnabled()) {
- logger.debug("Sending Object message: [" + message + "] to destination [" + queueSetup.queueName + "].");
+ logger.debug("Sending Object message: [" + oCurr + "] to destination [" + queueSetup.queueName + "].");
}
- oMsg.setObject((Serializable) message);
+ oMsg.setObject((Serializable) oCurr);
setStringProperties(oMsg);
queueSetup.jmsProducer.send(oMsg);
}
} catch(Exception e) {
- String errorMessage = "Exception while sending message [" + message + "] to destination [" + queueSetup.queueName + "].";
+ String errorMessage = "Exception while sending message [" + oCurr + "] to destination [" + queueSetup.queueName + "].";
logger.error(errorMessage, e);
throw new ActionProcessingException(errorMessage, e);
}
-
- return message;
}
private void setStringProperties(Message msg) throws JMSException {
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/ObjectToFileWriter.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/ObjectToFileWriter.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/ObjectToFileWriter.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -36,6 +36,7 @@
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.actions.ActionProcessor;
import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.message.Message;
/**
* Object to file writing processor.
@@ -105,7 +106,7 @@
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#process(java.lang.Object)
*/
- public Object process(Object message) throws ActionProcessingException {
+ public void process(Message message) throws ActionProcessingException {
synchronized(file) {
File outputFile = getOutputFile();
FileOutputStream fileOutputStream = null;
@@ -118,11 +119,12 @@
throw new ActionProcessingException("Action " + actionName + " failed. Unable to open output file " + outputFile.getAbsolutePath());
}
+ Object oCurr = message.getBody().get(CURRENT_OBJECT);
try {
- if(message instanceof byte[]) {
- fileOutputStream.write((byte[])message);
+ if(oCurr instanceof byte[]) {
+ fileOutputStream.write((byte[])oCurr);
} else {
- fileOutputStream.write(message.toString().getBytes(encoding));
+ fileOutputStream.write(oCurr.toString().getBytes(encoding));
}
fileOutputStream.flush();
} catch (IOException e) {
@@ -134,8 +136,6 @@
logger.warn("Exception on closing file " + file.getAbsolutePath(), e);
}
}
-
- return message;
}
}
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/templates/MockAction.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/templates/MockAction.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/templates/MockAction.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -5,6 +5,7 @@
import org.apache.log4j.Logger;
import org.jboss.soa.esb.actions.ActionProcessor;
+import org.jboss.soa.esb.message.Message;
/**
@@ -21,9 +22,11 @@
*/
private static Logger logger = Logger.getLogger(MockAction.class);
- public Object process(Object message) {
- logger.info("process was called with <<" + message.toString() + ">>");
- return message;
+ public void process(Message message) {
+ Object oCurr = message.getBody().get(CURRENT_OBJECT);
+ if (null==oCurr)
+ oCurr = "null";
+ logger.info("process was called with <<" + oCurr.toString() + ">>");
} // ________________________________
private SimpleDateFormat s_oTS = new SimpleDateFormat(
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/AbstractListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/AbstractListener.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/AbstractListener.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -30,6 +30,8 @@
import org.jboss.soa.esb.actions.ActionDefinitionFactory;
import org.jboss.soa.esb.actions.ActionProcessor;
import org.jboss.soa.esb.helpers.DomElement;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
/**
* Base abstract message listener implementation.
@@ -43,38 +45,35 @@
protected int m_iSleepForThreads = 3000; // default sleep if no threads available
protected int m_iUpperThreadLimit = 10; // just in case - override if you wish
- protected int m_iQthr = 0, m_iMaxThr;
+ protected int m_iQthr = 0, m_iMaxThr;
- protected ThreadGroup m_oThrGrp = null;
-
- protected Logger logger;
-
- protected GpListener m_oDad;
-
- protected DomElement listenerConfig;
-
- protected String[] m_oActions;
-
+ protected ThreadGroup m_oThrGrp = null;
+ protected Logger logger;
+ protected GpListener m_oDad;
+ protected DomElement listenerConfig;
+ protected String[] m_oActions;
protected ActionDefinitionFactory m_oActionDefinitionFactory;
+ protected MessageFactory m_oMsgFactory;
protected AbstractListener(GpListener p_oDad, DomElement p_oParms, ActionDefinitionFactory actionDefinitionFactory) throws Exception {
- logger = Logger.getLogger(this.getClass());
- m_oDad = p_oDad;
+ logger = Logger.getLogger(this.getClass());
+ m_oDad = p_oDad;
listenerConfig = p_oParms.cloneObj();
m_oActionDefinitionFactory = actionDefinitionFactory;
- m_oThrGrp = new ThreadGroup(listenerConfig.getName());
+ m_oMsgFactory = MessageFactory.getInstance();
+ m_oThrGrp = new ThreadGroup(listenerConfig.getName());
String sAtt = GpListener.obtainAtt(listenerConfig, GpListener.PARM_ACTIONS, "");
- m_oActions = sAtt.split(",");
+ m_oActions = sAtt.split(",");
if(m_oActions.length == 0) {
throw new ConfigurationException("Listener 'actions' list must be specified.");
}
- sAtt = GpListener.obtainAtt(listenerConfig, GpListener.PARM_MAX_THREADS, "1");
- int iMax = Integer.parseInt(sAtt);
- m_iMaxThr = Math.min(iMax, m_iUpperThreadLimit);
+ sAtt = GpListener.obtainAtt(listenerConfig, GpListener.PARM_MAX_THREADS, "1");
+ int iMax = Integer.parseInt(sAtt);
+ m_iMaxThr = Math.min(iMax, m_iUpperThreadLimit);
} // __________________________________
/**
@@ -86,8 +85,11 @@
public void run() {
while (m_oDad.continueLooping()) {
Object[] processList = receive();
-
- for (Object message : processList) {
+ if (null==processList)
+ try { Thread.sleep(500); }
+ catch(InterruptedException e) {/* ok do nothing */}
+ else
+ for (Object currentObj : processList) {
if (m_iQthr >= m_iMaxThr) {
logger.info("Waiting for available threads...(max=" + m_iMaxThr + ")");
try {
@@ -99,7 +101,7 @@
}
// Spawn a thread and push the message message through the pipeline...
- ActionProcessingPipeline runner = new ActionProcessingPipeline(message);
+ ActionProcessingPipeline runner = new ActionProcessingPipeline(currentObj);
new Thread(runner).start();
}
}
@@ -117,17 +119,17 @@
/**
* Called on the listener implementation when pipeline processing error has occured.
- * @param initialMessage The message reference that was initialy supplied to the pipeline.
+ * @param initialObject The object reference that was initialy supplied to the pipeline.
* @param processor The processor raised the error.
* @param error The error.
*/
- protected abstract void processingError(Object initialMessage, ActionProcessor processor, Throwable error);
+ protected abstract void processingError(Object initialObject, ActionProcessor processor, Throwable error);
/**
* Called on the listener implementation when pipeline processing of a message is complete.
- * @param initialMessage The message reference that was initialy supplied to the pipeline.
+ * @param initialObject The object reference that was initialy supplied to the pipeline.
*/
- protected abstract void processingComplete(Object initialMessage);
+ protected abstract void processingComplete(Object initialObject);
/**
* Close the listener implemenation.
@@ -161,14 +163,14 @@
*/
private class ActionProcessingPipeline implements Runnable {
- private Object initialMessage;
+ private Object initialObject;
/**
* Private constructor.
- * @param initialMessage The inital processing target message.
+ * @param pMessage The inital processing target message.
*/
- private ActionProcessingPipeline(Object initialMessage) {
- this.initialMessage = initialMessage;
+ private ActionProcessingPipeline(Object obj) {
+ initialObject = obj;
}
/* (non-Javadoc)
@@ -182,12 +184,13 @@
incThreads();
try {
- Object message = initialMessage;
+ Message message = m_oMsgFactory.getMessage();
+ if (null!=initialObject)
+ message.getBody().add(ActionProcessor.CURRENT_OBJECT,initialObject);
// Run the message through each ActionProcessor...
for(String action : m_oActions) {
ActionDefinition actionDefinition;
- Object processingResult = null;
currentAction = action.trim();
actionDefinition = m_oActionDefinitionFactory.getInstance(currentAction);
@@ -198,7 +201,7 @@
// The processing result of each action feeds into the processing of the next action...
currentProcessor = actionDefinition.getProcessor();
try {
- processingResult = currentProcessor.process(message);
+ currentProcessor.process(message);
} catch (Exception e) {
GpListener.notifyError(listenerConfig, e, currentProcessor.getErrorNotification(message));
throw e;
@@ -212,14 +215,13 @@
GpListener.notifyOK(listenerConfig, currentProcessor.getOkNotification(message));
// Setup the message for processing by the next processor...
- message = processingResult;
}
} catch(Throwable thrown) {
- processingError(initialMessage, currentProcessor, thrown);
+ processingError(initialObject, currentProcessor, thrown);
logger.error("Premature termination of action processing pipeline [" + Arrays.asList(m_oActions) + "]. Action [" + currentAction + "] threw an exception.", thrown);
}
- processingComplete(initialMessage);
+ processingComplete(initialObject);
// Decrement the active thread count for the listener on completion...
decThreads();
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/DirectoryPoller.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/DirectoryPoller.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/DirectoryPoller.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -196,8 +196,8 @@
* @see org.jboss.soa.esb.listeners.AbstractListener#processingError(java.lang.Object, org.jboss.soa.esb.actions.ActionProcessor, java.lang.Throwable)
*/
@Override
- protected void processingError(Object initialMessage, ActionProcessor processor, Throwable error) {
- WorkingFile workingFile = (WorkingFile) initialMessage;
+ protected void processingError(Object currentObject, ActionProcessor processor, Throwable error) {
+ WorkingFile workingFile = (WorkingFile) currentObject;
workingFile.renameToError();
}
@@ -206,8 +206,8 @@
* @see org.jboss.soa.esb.listeners.AbstractListener#processingComplete(java.lang.Object)
*/
@Override
- protected void processingComplete(Object initialMessage) {
- WorkingFile workingFile = (WorkingFile) initialMessage;
+ protected void processingComplete(Object currentObject) {
+ WorkingFile workingFile = (WorkingFile) currentObject;
// Delete or rename the file...
if (workingFile.postDelete) {
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/BaseTestActionProcessor.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/BaseTestActionProcessor.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/BaseTestActionProcessor.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -23,6 +23,7 @@
package org.jboss.soa.esb.actions;
import java.io.Serializable;
+import org.jboss.soa.esb.message.Message;
/**
*
@@ -34,7 +35,7 @@
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#process(java.lang.Object)
*/
- public abstract Object process(Object message) throws ActionProcessingException;
+ public abstract void process(Message message) throws ActionProcessingException;
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#getOkNotification(java.lang.Object)
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformerUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformerUnitTest.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformerUnitTest.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -29,6 +29,9 @@
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.actions.ActionProcessor;
/**
* SmooksTransformer unit tests.
@@ -59,25 +62,25 @@
}
public void test_trans() throws ActionProcessingException, ConfigurationException {
- String message;
+ String stringMessage;
String transRes;
// Very basic test! Just illustrates profile based resource selection.
// Read the smooks-test.cdrl config file in this package!!
// Initialise the acme order message...
- message = "<a><ddd>value</ddd></a>";
+ stringMessage = "<a><ddd>value</ddd></a>";
// Transform the order message going to "AcmePartner1"...
- transRes = transform(message, "Acme-Order-XML", "Acme", "AcmePartner1");
+ transRes = transform(stringMessage, "Acme-Order-XML", "Acme", "AcmePartner1");
assertEquals("<x><b>value</b></x>", transRes);
// Transform the order message going to "AcmePartner2"...
- transRes = transform(message, "Acme-Order-XML", "Acme", "AcmePartner2");
+ transRes = transform(stringMessage, "Acme-Order-XML", "Acme", "AcmePartner2");
assertEquals("<x><c>value</c></x>", transRes);
}
- private String transform(String message, String type, String from, String to) throws ActionProcessingException, ConfigurationException {
+ private String transform(String stringMessage, String type, String from, String to) throws ActionProcessingException, ConfigurationException {
List<KeyValuePair> properties = new ArrayList<KeyValuePair>();
// Set the message properties in order to trigger the appropriate transformations
@@ -89,7 +92,11 @@
// The smooks-cdr.lst and device-profile.xml files are located in the root of the
// test src folder...
SmooksTransformer transformer = new SmooksTransformer("trans", properties);
- return (String) transformer.process(message);
+
+ Message oMsg = MessageFactory.getInstance().getMessage();
+ oMsg.getBody().add(ActionProcessor.CURRENT_OBJECT,stringMessage);
+ transformer.process(oMsg);
+ return (String) oMsg.getBody().get(ActionProcessor.CURRENT_OBJECT);
}
private void assertConfigException(List<KeyValuePair> properties, String expectedException) {
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestActionProcessor1.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestActionProcessor1.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestActionProcessor1.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -25,6 +25,8 @@
import java.util.List;
import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.actions.ActionProcessor;
/**
*
@@ -47,8 +49,8 @@
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#processAction(java.lang.Object)
*/
- public Object process(Object payload) {
- System.out.println("processAction: " + payload);
- return payload;
+ public void process(Message message) {
+ Object oCurr = message.getBody().get(ActionProcessor.CURRENT_OBJECT);
+ System.out.println("processAction: " + oCurr);
}
}
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestActionProcessor2.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestActionProcessor2.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestActionProcessor2.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -21,6 +21,8 @@
*/
package org.jboss.soa.esb.actions;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.actions.ActionProcessor;
/**
*
@@ -33,8 +35,8 @@
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#processAction(java.lang.Object)
*/
- public Object process(Object payload) {
- System.out.println("processAction: " + payload);
- return payload;
+ public void process(Message message) {
+ Object oCurr = message.getBody().get(ActionProcessor.CURRENT_OBJECT);
+ System.out.println("processAction: " + oCurr);
}
}
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestActionProcessor3.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestActionProcessor3.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestActionProcessor3.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -21,6 +21,8 @@
*/
package org.jboss.soa.esb.actions;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.actions.ActionProcessor;
/**
*
@@ -37,8 +39,8 @@
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#processAction(java.lang.Object)
*/
- public Object process(Object payload) {
- System.out.println("processAction: " + payload);
- return payload;
+ public void process(Message message) {
+ Object oCurr = message.getBody().get(ActionProcessor.CURRENT_OBJECT);
+ System.out.println("processAction: " + oCurr);
}
}
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestBean.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestBean.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/TestBean.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -27,8 +27,10 @@
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
* @since Version 4.0
*/
-public class TestBean {
- private String name;
+public class TestBean implements java.io.Serializable
+{
+ private static final long serialVersionUID = 1L;
+ private String name;
private String phone;
public TestBean() {
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/ToNowhereRouter.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/ToNowhereRouter.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/ToNowhereRouter.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -24,6 +24,8 @@
import java.util.ArrayList;
import java.util.List;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.actions.ActionProcessor;
/**
*
@@ -37,12 +39,10 @@
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#processAction(java.lang.Object)
*/
- public Object process(Object payload) throws ActionProcessingException {
- objects.add(payload);
+ public void process(Message msg) throws ActionProcessingException {
+ objects.add(msg.getBody().get(ActionProcessor.CURRENT_OBJECT));
System.out.println("ToNowhereRouter");
-
- return null;
}
}
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ByteArrayToStringUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ByteArrayToStringUnitTest.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ByteArrayToStringUnitTest.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -28,6 +28,9 @@
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.actions.converters.ByteArrayToString;
import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.actions.ActionProcessor;
import junit.framework.TestCase;
@@ -48,8 +51,11 @@
ByteArrayToString byteArrayToString = new ByteArrayToString(
"actionName", properties);
- String decodedBytes = (String) byteArrayToString.process("TestString"
- .getBytes());
- assertEquals("TestString", decodedBytes);
+ String sTest = "TestString";
+ Message msg = MessageFactory.getInstance().getMessage();
+ msg.getBody().add(ActionProcessor.CURRENT_OBJECT,sTest.getBytes());
+ byteArrayToString.process(msg);
+ String decodedBytes = (String)msg.getBody().get(ActionProcessor.CURRENT_OBJECT);
+ assertEquals(sTest, decodedBytes);
}
}
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/LongToDateConverter.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/LongToDateConverter.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/LongToDateConverter.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -26,6 +26,8 @@
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.actions.BaseTestActionProcessor;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.actions.ActionProcessor;
/**
* LongToDate Converter Test Action Handler.
@@ -41,15 +43,22 @@
*
* @see org.jboss.soa.esb.actions.ActionProcessor#processAction(java.lang.Object)
*/
- public Object process(Object payload) throws ActionProcessingException
+ public void process(Message message) throws ActionProcessingException
{
- if (!(payload instanceof Long))
+ Object oCurr = message.getBody().get(ActionProcessor.CURRENT_OBJECT);
+ if (!(oCurr instanceof Long))
{
throw new ActionProcessingException(
"This action handler only accepts Long object instances.");
}
System.out.println("LongToDateConverter");
- return new Date((Long) payload);
+ Object oResult = null;
+ try { oResult = new Date((Long)oCurr); }
+ catch (Exception e)
+ { throw new ActionProcessingException(e); }
+ message.getBody().remove(ActionProcessor.CURRENT_OBJECT);
+ if (null!=oResult)
+ message.getBody().add(ActionProcessor.CURRENT_OBJECT,oResult);
}
}
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToCSVStringUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToCSVStringUnitTest.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToCSVStringUnitTest.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -22,16 +22,18 @@
package org.jboss.soa.esb.actions.converters;
+import java.util.ArrayList;
import java.util.List;
-import java.util.ArrayList;
+import junit.framework.TestCase;
+
import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.actions.ActionProcessor;
import org.jboss.soa.esb.actions.ActionProcessingException;
-import org.jboss.soa.esb.actions.converters.ObjectToCSVString;
-import org.jboss.soa.esb.helpers.KeyValuePair;
-import junit.framework.TestCase;
-
/**
* ObjectToCSVString unit tests.
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
@@ -41,29 +43,44 @@
public void test() throws ConfigurationException, ActionProcessingException {
List<KeyValuePair> properties = new ArrayList<KeyValuePair>();
+ Message oMsg = MessageFactory.getInstance().getMessage();
properties.add(new KeyValuePair(ObjectToCSVString.BEAN_PROPERTIES_PROP, "name"));
ObjectToCSVString processor = new ObjectToCSVString("ObjectToCSVString", properties);
- assertEquals("Tom Fennelly", processor.process(new TestBean()));
+
+ oMsg.getBody().add(ActionProcessor.CURRENT_OBJECT,new TestBean());
+ processor.process(oMsg);
+ assertEquals("Tom Fennelly", oMsg.getBody().get(ActionProcessor.CURRENT_OBJECT));
properties.clear();
properties.add(new KeyValuePair(ObjectToCSVString.BEAN_PROPERTIES_PROP, "name,age"));
processor = new ObjectToCSVString("ObjectToCSVString", properties);
- assertEquals("Tom Fennelly,21", processor.process(new TestBean()));
+ oMsg.getBody().remove(ActionProcessor.CURRENT_OBJECT);
+ oMsg.getBody().add(ActionProcessor.CURRENT_OBJECT,new TestBean());
+ processor.process(oMsg);
+ assertEquals("Tom Fennelly,21", oMsg.getBody().get(ActionProcessor.CURRENT_OBJECT));
properties.clear();
properties.add(new KeyValuePair(ObjectToCSVString.BEAN_PROPERTIES_PROP, "id,name,phone,age"));
processor = new ObjectToCSVString("ObjectToCSVString", properties);
- assertEquals(",Tom Fennelly,,21", processor.process(new TestBean()));
+ oMsg.getBody().remove(ActionProcessor.CURRENT_OBJECT);
+ oMsg.getBody().add(ActionProcessor.CURRENT_OBJECT,new TestBean());
+ processor.process(oMsg);
+ assertEquals(",Tom Fennelly,,21", oMsg.getBody().get(ActionProcessor.CURRENT_OBJECT));
properties.clear();
properties.add(new KeyValuePair(ObjectToCSVString.BEAN_PROPERTIES_PROP, "id"));
processor = new ObjectToCSVString("ObjectToCSVString", properties);
- assertEquals("", processor.process(new TestBean()));
+ oMsg.getBody().remove(ActionProcessor.CURRENT_OBJECT);
+ oMsg.getBody().add(ActionProcessor.CURRENT_OBJECT,new TestBean());
+ processor.process(oMsg);
+ assertEquals("", oMsg.getBody().get(ActionProcessor.CURRENT_OBJECT));
}
- private class TestBean {
- private String name = "Tom Fennelly";
+ public static class TestBean implements java.io.Serializable
+ {
+ private static final long serialVersionUID = 1L;
+ private String name = "Tom Fennelly";
private int age = 21; // hehehehe
public int getAge() {
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToFileWriterUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToFileWriterUnitTest.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToFileWriterUnitTest.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -28,22 +28,24 @@
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
+import org.jboss.soa.esb.actions.routing.*;
+import junit.framework.TestCase;
+
import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.actions.ActionProcessor;
import org.jboss.soa.esb.actions.ActionProcessingException;
-import org.jboss.soa.esb.actions.converters.FileToByteArray;
-import org.jboss.soa.esb.actions.routing.ObjectToFileWriter;
-import org.jboss.soa.esb.helpers.KeyValuePair;
-import junit.framework.TestCase;
-
/**
* Unit tests for ObjectToFileWriter.
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
* @since Version 4.0
*/
public class ObjectToFileWriterUnitTest extends TestCase {
-
+
private static final String A_STRING = "write something to file";
private File file = new File("./ObjectToFileWriter.tst");
private List<KeyValuePair> properties;
@@ -52,28 +54,28 @@
protected void setUp() throws Exception {
properties = new ArrayList<KeyValuePair>();
}
-
+
@Override
protected void tearDown() throws Exception {
file.delete();
}
-
+
public void test_writeWithNoAppend() throws ConfigurationException, ActionProcessingException {
properties.add(new KeyValuePair("file", file.getPath()));
-
+
// Write something fo file and check it was written..
writeAndCheck(A_STRING, A_STRING);
// And do it all again to make sure the contents are not appended i.e. the file is overwritten...
writeAndCheck(A_STRING, A_STRING);
}
-
+
public void test_writeWithBytes() throws ConfigurationException, ActionProcessingException, UnsupportedEncodingException {
properties.add(new KeyValuePair("file", file.getPath()));
-
+
// Write bytes to the file...
writeAndCheck(A_STRING.getBytes("UTF-8"), A_STRING);
}
-
+
public void test_writeWithAppend() throws ConfigurationException, ActionProcessingException {
properties.add(new KeyValuePair("file", file.getPath()));
properties.add(new KeyValuePair("append", "true"));
@@ -82,6 +84,7 @@
//in that case.
try { new FileOutputStream(file).close();}
catch (IOException e) { }
+
// Write something to file and check it was written..
writeAndCheck(A_STRING, A_STRING);
// And do it all again to make sure the contents are appended i.e. the file is not overwritten...
@@ -92,12 +95,16 @@
private void writeAndCheck(Object objectToWrite, String expected) throws ConfigurationException, ActionProcessingException {
// Use the ObjectToFileWriter to write something to file...
ObjectToFileWriter fileWriter = new ObjectToFileWriter("ObjectToFileWriter-Test", properties);
- fileWriter.process(objectToWrite);
+ Message oMsg = MessageFactory.getInstance().getMessage();
+ oMsg.getBody().add(ActionProcessor.CURRENT_OBJECT,objectToWrite);
+ fileWriter.process(oMsg);
// Use the FileToByteArray processor to read the file contents back...
- FileToByteArray fileToByteArray = new FileToByteArray();
- byte[] fileContent = (byte[])fileToByteArray.process(file);
-
+ oMsg = MessageFactory.getInstance().getMessage();
+ oMsg.getBody().add(ActionProcessor.CURRENT_OBJECT,file);
+ new FileToByteArray().process(oMsg);
+ byte[] fileContent = (byte[])oMsg.getBody().get(ActionProcessor.CURRENT_OBJECT);
+
// Make sure the contents are as expected...
String fileContentString = new String(fileContent);
assertEquals(expected, fileContentString);
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToXStreamUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToXStreamUnitTest.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToXStreamUnitTest.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -29,7 +29,11 @@
import org.jboss.soa.esb.actions.TestBean;
import org.jboss.soa.esb.actions.converters.ObjectToXStream;
import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.actions.ActionProcessor;
+
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
@@ -47,7 +51,10 @@
ObjectToXStream objectToXStream = new ObjectToXStream("TestBean-Serialiser", properties);
- String xml = (String)objectToXStream.process(new TestBean("Tom", "1234"));
+ Message oMsg = MessageFactory.getInstance().getMessage();
+ oMsg.getBody().add(ActionProcessor.CURRENT_OBJECT,new TestBean("Tom", "1234"));
+ objectToXStream.process(oMsg);
+ String xml = (String)oMsg.getBody().get(ActionProcessor.CURRENT_OBJECT);
XStream xstream = new XStream(new DomDriver());
TestBean bean = new TestBean();
@@ -65,7 +72,11 @@
properties.add(new KeyValuePair("exclude-package", "false"));
ObjectToXStream objectToXStream = new ObjectToXStream("TestBean-Serialiser", properties);
- String xml = (String)objectToXStream.process(new TestBean("Tom", "1234"));
+ Message oMsg = MessageFactory.getInstance().getMessage();
+ oMsg.getBody().add(ActionProcessor.CURRENT_OBJECT,new TestBean("Tom", "1234"));
+ objectToXStream.process(oMsg);
+ String xml = (String)oMsg.getBody().get(ActionProcessor.CURRENT_OBJECT);
+
XStream xstream = new XStream(new DomDriver());
TestBean bean = new TestBean();
@@ -82,7 +93,11 @@
properties.add(new KeyValuePair("class-alias", "TomsClass"));
ObjectToXStream objectToXStream = new ObjectToXStream("TestBean-Serialiser", properties);
- String xml = (String)objectToXStream.process(new TestBean("Tom", "1234"));
+ Message oMsg = MessageFactory.getInstance().getMessage();
+ oMsg.getBody().add(ActionProcessor.CURRENT_OBJECT,new TestBean("Tom", "1234"));
+ objectToXStream.process(oMsg);
+ String xml = (String)oMsg.getBody().get(ActionProcessor.CURRENT_OBJECT);
+
XStream xstream = new XStream(new DomDriver());
xstream.alias("TomsClass", TestBean.class);
TestBean bean = new TestBean();
@@ -94,20 +109,3 @@
assertEquals("1234", bean.getPhone());
}
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/StringToLongConverter.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/StringToLongConverter.java 2006-10-04 17:50:22 UTC (rev 6597)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/StringToLongConverter.java 2006-10-04 17:59:09 UTC (rev 6598)
@@ -24,6 +24,8 @@
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.actions.BaseTestActionProcessor;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.actions.ActionProcessor;
/**
* StringToLong Converter Test Action Handler.
@@ -35,13 +37,19 @@
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#processAction(java.lang.Object)
*/
- public Object process(Object payload) throws ActionProcessingException {
- if(!(payload instanceof String)) {
+ public void process(Message message) throws ActionProcessingException {
+ Object oCurr = message.getBody().get(ActionProcessor.CURRENT_OBJECT);
+ if(!(oCurr instanceof String)) {
throw new ActionProcessingException("This action handler only accepts String object instances.");
}
System.out.println("StringToLongConverter");
-
- return Long.parseLong((String)payload);
+ Object oResult = null;
+ try { oResult = new Long((String)oCurr); }
+ catch (Exception e)
+ { throw new ActionProcessingException(e); }
+ message.getBody().remove(ActionProcessor.CURRENT_OBJECT);
+ if (null!=oResult)
+ message.getBody().add(ActionProcessor.CURRENT_OBJECT,oResult);
}
}
More information about the jboss-svn-commits
mailing list