camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From davscl...@apache.org
Subject svn commit: r1446555 - in /camel/trunk/components/camel-bindy/src: main/java/org/apache/camel/dataformat/bindy/ test/java/org/apache/camel/dataformat/bindy/fixed/delimited/ test/java/org/apache/camel/dataformat/bindy/fixed/dynamic/
Date Fri, 15 Feb 2013 12:40:33 GMT
Author: davsclaus
Date: Fri Feb 15 12:40:33 2013
New Revision: 1446555

URL: http://svn.apache.org/r1446555
Log:
CAMEL-6039: Updated test. Thanks to Rich for the patch.

Modified:
    camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyFixedLengthFactory.java
    camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/delimited/BindyFixedLengthDelimitedFieldTest.java
    camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/dynamic/BindyFixedLengthDynamicFieldTest.java

Modified: camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyFixedLengthFactory.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyFixedLengthFactory.java?rev=1446555&r1=1446554&r2=1446555&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyFixedLengthFactory.java
(original)
+++ camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyFixedLengthFactory.java
Fri Feb 15 12:40:33 2013
@@ -34,7 +34,6 @@ import org.apache.camel.dataformat.bindy
 import org.apache.camel.dataformat.bindy.format.FormatException;
 import org.apache.camel.spi.PackageScanClassResolver;
 import org.apache.camel.spi.PackageScanFilter;
-import org.apache.camel.util.ObjectHelper;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -190,8 +189,6 @@ public class BindyFixedLengthFactory ext
             dataField = itr.next();
             length = dataField.length();
             delimiter = dataField.delimiter();
-
-            ObjectHelper.notNull(offset, "Position/offset is not defined for the field: "
+ dataField.toString());
             
             if (length == 0 && dataField.lengthPos() != 0) {
                 Field lengthField = annotatedFields.get(dataField.lengthPos());
@@ -273,6 +270,11 @@ public class BindyFixedLengthFactory ext
             ++pos;
         
         }
+        
+        // check for unmapped non-whitespace data at the end of the line
+        if (offset <= record.length() && !(record.substring(offset - 1, record.length())).trim().equals(""))
{
+            throw new IllegalArgumentException("Unexpected / unmapped characters found at
the end of the fixed-length record at line : " + line);
+        }
 
         LOG.debug("Counter mandatory fields: {}", counterMandatoryFields);
 
@@ -501,7 +503,7 @@ public class BindyFixedLengthFactory ext
 
                 // Get length of the record
                 recordLength = record.length();
-                LOG.debug("Length of the record: {}", recordLength);
+                LOG.debug("Length of the record: {}", recordLength);    
             }
         }
         
@@ -569,6 +571,9 @@ public class BindyFixedLengthFactory ext
         return paddingChar;
     }
 
+    /**
+     *  Expected fixed length of the record
+     */
     public int recordLength() {
         return recordLength;
     }

Modified: camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/delimited/BindyFixedLengthDelimitedFieldTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/delimited/BindyFixedLengthDelimitedFieldTest.java?rev=1446555&r1=1446554&r2=1446555&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/delimited/BindyFixedLengthDelimitedFieldTest.java
(original)
+++ camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/delimited/BindyFixedLengthDelimitedFieldTest.java
Fri Feb 15 12:40:33 2013
@@ -44,6 +44,9 @@ public class BindyFixedLengthDelimitedFi
     public static final String URI_MOCK_UNMARSHALL_RESULT  = "mock:unmarshall-result";
     
     private static final String TEST_RECORD = "10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009\r\n";
+    private static final String TEST_RECORD_WITH_EXTRA_CHARS = "10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009xxx\r\n";
+    private static final String TEST_RECORD_WITH_SINGLE_EXTRA_CHAR = "10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009x\r\n";
+    private static final String TEST_RECORD_WITH_WHITSPACE_THEN_EXTRA_CHAR = "10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009
  x\r\n";
 
     @EndpointInject(uri = URI_MOCK_MARSHALL_RESULT)
     private MockEndpoint marshallResult;
@@ -71,6 +74,54 @@ public class BindyFixedLengthDelimitedFi
     }
     
     @Test
+    public void testFailWhenUnmarshallMessageWithUnmappedChars() throws Exception {
+
+        unmarshallResult.reset();
+        unmarshallResult.expectedMessageCount(0);
+        try {
+            template.sendBody(URI_DIRECT_UNMARSHALL, TEST_RECORD_WITH_EXTRA_CHARS);
+        } catch (Exception e) {
+            assertTrue(e.getCause() instanceof IllegalArgumentException);
+            assertTrue(e.getCause().getMessage().contains("unmapped characters"));
+            return;
+        }
+        
+        fail("An error is expected when unmapped characters are encountered in the fixed
length record");
+    }
+    
+    @Test
+    public void testFailWhenUnmarshallMessageWithWhitespaceThenUnmappedChar() throws Exception
{
+
+        unmarshallResult.reset();
+        unmarshallResult.expectedMessageCount(0);
+        try {
+            template.sendBody(URI_DIRECT_UNMARSHALL, TEST_RECORD_WITH_WHITSPACE_THEN_EXTRA_CHAR);
+        } catch (Exception e) {
+            assertTrue(e.getCause() instanceof IllegalArgumentException);
+            assertTrue(e.getCause().getMessage().contains("unmapped characters"));
+            return;
+        }
+        
+        fail("An error is expected when unmapped characters are encountered in the fixed
length record");
+    }
+    
+    @Test
+    public void testFailWhenUnmarshallMessageWithUnmappedChar() throws Exception {
+
+        unmarshallResult.reset();
+        unmarshallResult.expectedMessageCount(0);
+        try {
+            template.sendBody(URI_DIRECT_UNMARSHALL, TEST_RECORD_WITH_SINGLE_EXTRA_CHAR);
+        } catch (Exception e) {
+            assertTrue(e.getCause() instanceof IllegalArgumentException);
+            assertTrue(e.getCause().getMessage().contains("unmapped characters"));
+            return;
+        }
+        
+        fail("An error is expected when unmapped characters are encountered in the fixed
length record");
+    }
+    
+    @Test
     public void testMarshallMessage() throws Exception {
         BindyFixedLengthDelimitedFieldTest.Order order = new Order();
         order.setOrderNr(10);

Modified: camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/dynamic/BindyFixedLengthDynamicFieldTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/dynamic/BindyFixedLengthDynamicFieldTest.java?rev=1446555&r1=1446554&r2=1446555&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/dynamic/BindyFixedLengthDynamicFieldTest.java
(original)
+++ camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/dynamic/BindyFixedLengthDynamicFieldTest.java
Fri Feb 15 12:40:33 2013
@@ -46,6 +46,7 @@ public class BindyFixedLengthDynamicFiel
     public static final String URI_MOCK_UNMARSHALL_RESULT  = "mock:unmarshall-result";
     
     private static final String TEST_RECORD = "10A9Pauline^M^ISIN10XD12345678BUYShare000002500.45USD01-08-2009\r\n";
+    private static final String TEST_RECORD_WITH_EXTRA_CHARS = "10A9Pauline^M^ISIN10XD12345678BUYShare000002500.45USD01-08-2009x\r\n";
 
     @EndpointInject(uri = URI_MOCK_MARSHALL_RESULT)
     private MockEndpoint marshallResult;
@@ -76,6 +77,22 @@ public class BindyFixedLengthDynamicFiel
     }
     
     @Test
+    public void testFailWhenUnmarshallMessageWithUnmappedChars() throws Exception {
+
+        unmarshallResult.reset();
+        unmarshallResult.expectedMessageCount(0);
+        try {
+            template.sendBody(URI_DIRECT_UNMARSHALL, TEST_RECORD_WITH_EXTRA_CHARS);
+        } catch (Exception e) {
+            assertTrue(e.getCause() instanceof IllegalArgumentException);
+            assertTrue(e.getCause().getMessage().contains("unmapped characters"));
+            return;
+        }
+        
+        fail("An error is expected when unmapped characters are encountered in the fixed
length record");
+    }
+    
+    @Test
     public void testMarshallMessage() throws Exception {
         BindyFixedLengthDynamicFieldTest.Order order = new Order();
         order.setOrderNr(10);
@@ -146,7 +163,7 @@ public class BindyFixedLengthDynamicFiel
         @DataField(pos = 6, length = 2, align = "R", paddingChar = '0')
         private int instrumentNumberLen;
         
-        @DataField(pos = 7, lengthPos = 6)
+        @DataField(pos = 7, length = 10)
         private String instrumentNumber;
 
         @DataField(pos = 8, length = 3)



Mime
View raw message