[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>
  * &lt;Action name="Customer-To-CSV" processor="ObjectToCSVString"&gt;
  *     &lt;property name="bean-properties" value="name,address1,address2,phone" /&gt;
+ *     &lt;property name="fail-on-missing-property" value="true" /&gt; &lt;!-- (Optional) Default of false. --&gt;
  * &lt;/Action&gt;
  * </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