[jboss-svn-commits] JBL Code SVN: r6723 - in labs/jbossesb/trunk/product/core/listeners: src/org/jboss/soa/esb/actions/converters tests/src/org/jboss/soa/esb/actions/converters
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Oct 10 10:04:57 EDT 2006
Author: tfennelly
Date: 2006-10-10 10:04:52 -0400 (Tue, 10 Oct 2006)
New Revision: 6723
Modified:
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToCSVString.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToCSVStringUnitTest.java
Log:
Bug fix: http://jira.jboss.com/jira/browse/JBESB-170
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-10 13:42:55 UTC (rev 6722)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToCSVString.java 2006-10-10 14:04:52 UTC (rev 6723)
@@ -45,6 +45,7 @@
* <pre>
* <Action name="Customer-To-CSV" processor="ObjectToCSVString">
* <property name="bean-properties" value="name,address1,address2,phone" />
+ * <property name="fail-on-missing-property" value="true" /> <!-- (Optional) Default of false. -->
* </Action>
* </pre>
* <p/>
@@ -54,9 +55,11 @@
*/
public class ObjectToCSVString implements ActionProcessor {
- public static final String BEAN_PROPERTIES_PROP = "bean-properties";
+ public static final String BEAN_PROPERTIES_PROP = "bean-properties";
+ public static final String FAIL_ON_MISSING_PROPERTY = "fail-on-missing-property";
private static Logger logger = Logger.getLogger(ObjectToCSVString.class);
private List<String> propertyMethodNames = new ArrayList<String>();
+ private boolean failOnMissingProperty;
/**
* Public constructor.
@@ -91,6 +94,8 @@
// Add to the set...
propertyMethodNames.add(methodNameConstructionBuffer.toString());
}
+
+ failOnMissingProperty = KeyValuePair.getBooleanValue(FAIL_ON_MISSING_PROPERTY, properties, false);
}
/* (non-Javadoc)
@@ -115,7 +120,12 @@
try {
method = oCurrClass.getMethod(methodName, new Class[] {});
} catch (Exception e) {
- logger.error("Bean method: " + methodName + " not found/accessible on message object " + oCurr.getClass().getName(), e);
+ String exceptionMessage = "Bean method: " + methodName + " not found/accessible on message object " + oCurr.getClass().getName();
+ logger.error(exceptionMessage, e);
+ if(failOnMissingProperty) {
+ throw new ActionProcessingException(exceptionMessage, e);
+ }
+ csv.append("<no-such-property>");
continue;
}
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-10 13:42:55 UTC (rev 6722)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/ObjectToCSVStringUnitTest.java 2006-10-10 14:04:52 UTC (rev 6723)
@@ -45,6 +45,7 @@
List<KeyValuePair> properties = new ArrayList<KeyValuePair>();
Message oMsg = MessageFactory.getInstance().getMessage();
+ // Single value - property exist on bean...
properties.add(new KeyValuePair(ObjectToCSVString.BEAN_PROPERTIES_PROP, "name"));
ObjectToCSVString processor = new ObjectToCSVString("ObjectToCSVString", properties);
@@ -52,6 +53,7 @@
oMsg = processor.process(oMsg);
assertEquals("Tom Fennelly", ActionUtils.getTaskObject(oMsg));
+ // Multi value - properties all exist on bean...
properties.clear();
properties.add(new KeyValuePair(ObjectToCSVString.BEAN_PROPERTIES_PROP, "name,age"));
processor = new ObjectToCSVString("ObjectToCSVString", properties);
@@ -59,19 +61,34 @@
processor.process(oMsg);
assertEquals("Tom Fennelly,21", ActionUtils.getTaskObject(oMsg));
+ // Multi value - some properties exist on bean and some don't...
properties.clear();
properties.add(new KeyValuePair(ObjectToCSVString.BEAN_PROPERTIES_PROP, "id,name,phone,age"));
processor = new ObjectToCSVString("ObjectToCSVString", properties);
ActionUtils.setTaskObject(oMsg,new TestBean());
processor.process(oMsg);
- assertEquals(",Tom Fennelly,,21", ActionUtils.getTaskObject(oMsg));
+ assertEquals("<no-such-property>,Tom Fennelly,<no-such-property>,21", ActionUtils.getTaskObject(oMsg));
+ // Single value - property doesn't exist on bean...
properties.clear();
properties.add(new KeyValuePair(ObjectToCSVString.BEAN_PROPERTIES_PROP, "id"));
processor = new ObjectToCSVString("ObjectToCSVString", properties);
ActionUtils.setTaskObject(oMsg,new TestBean());
processor.process(oMsg);
- assertEquals("", ActionUtils.getTaskObject(oMsg));
+ assertEquals("<no-such-property>", ActionUtils.getTaskObject(oMsg));
+
+ // Single value - property doesn't exist on bean and "fail-on-missing-property" action config is set on...
+ properties.clear();
+ properties.add(new KeyValuePair(ObjectToCSVString.BEAN_PROPERTIES_PROP, "id"));
+ properties.add(new KeyValuePair(ObjectToCSVString.FAIL_ON_MISSING_PROPERTY, "true"));
+ processor = new ObjectToCSVString("ObjectToCSVString", properties);
+ ActionUtils.setTaskObject(oMsg,new TestBean());
+ try {
+ processor.process(oMsg);
+ fail("Expected ActionProcessingException");
+ } catch(ActionProcessingException e) {
+ assertEquals("Bean method: getId not found/accessible on message object org.jboss.soa.esb.actions.converters.ObjectToCSVStringUnitTest$TestBean", e.getMessage());
+ }
}
public static class TestBean implements java.io.Serializable
More information about the jboss-svn-commits
mailing list