You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cm...@apache.org on 2013/04/30 10:43:14 UTC

svn commit: r1477508 - in /camel/trunk/components/camel-bindy/src: main/java/org/apache/camel/dataformat/bindy/BindyFixedLengthFactory.java test/java/org/apache/camel/dataformat/bindy/fixed/link/BindySimpleFixedLengthWithLinkTest.java

Author: cmoulliard
Date: Tue Apr 30 08:43:14 2013
New Revision: 1477508

URL: http://svn.apache.org/r1477508
Log:
CAMEL-6323 : Add a new unit test for FixedLengthFormat with @Link class, replace LinkedHashMap with TreeMap to solve ordering issue

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/link/BindySimpleFixedLengthWithLinkTest.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=1477508&r1=1477507&r2=1477508&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 Tue Apr 30 08:43:14 2013
@@ -21,7 +21,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -34,7 +33,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.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -50,8 +48,10 @@ public class BindyFixedLengthFactory ext
 
     boolean isOneToMany;
 
-    private Map<Integer, DataField> dataFields = new LinkedHashMap<Integer, DataField>();
-    private Map<Integer, Field> annotatedFields = new LinkedHashMap<Integer, Field>();
+    //private Map<Integer, DataField> dataFields = new LinkedHashMap<Integer, DataField>();
+    private Map<Integer, DataField> dataFields = new TreeMap<Integer, DataField>();
+    //private Map<Integer, Field> annotatedFields = new LinkedHashMap<Integer, Field>();
+    private Map<Integer, Field> annotatedFields = new TreeMap<Integer, Field>();
    
     private int numberOptionalFields;
     private int numberMandatoryFields;

Modified: camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/link/BindySimpleFixedLengthWithLinkTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/link/BindySimpleFixedLengthWithLinkTest.java?rev=1477508&r1=1477507&r2=1477508&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/link/BindySimpleFixedLengthWithLinkTest.java (original)
+++ camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/link/BindySimpleFixedLengthWithLinkTest.java Tue Apr 30 08:43:14 2013
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.dataformat.bindy.fixed.link;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
@@ -58,10 +62,22 @@ public class BindySimpleFixedLengthWithL
 
         // check the model
         Exchange exchange = unmarshallResult.getReceivedExchanges().get(0);
-        BindySimpleFixedLengthWithLinkTest.Order order = (BindySimpleFixedLengthWithLinkTest.Order) exchange.getIn().getBody();
-        assertEquals("AAA", order.fieldA);
-        assertEquals("BBB", order.subRec.fieldB);
-        assertEquals("CCC", order.fieldC);
+        List<HashMap<String, Object>> results = (List) exchange.getIn().getBody();
+        String orderKey = "org.apache.camel.dataformat.bindy.fixed.link.BindySimpleFixedLengthWithLinkTest$Order";
+
+        for (int i = 0; i < results.size(); i++) {
+            Map<String, Object> map = results.get(i);
+            for ( String key : map.keySet() ) {
+                if (key.equals(orderKey)) {
+                    Order order = (Order) map.get(orderKey);
+                    assertEquals("AAA", order.fieldA);
+                    assertEquals("CCC", order.fieldC);
+                    assertEquals("BBB", order.subRec.fieldB);
+                }
+            }
+
+        }
+
 
     }
 
@@ -76,12 +92,12 @@ public class BindySimpleFixedLengthWithL
             @Override
             public void configure() throws Exception {
                 BindyDataFormat bindy = new BindyDataFormat();
-                bindy.setClassType(BindySimpleFixedLengthWithLinkTest.Order.class);
+                bindy.setPackages(new String[]{"org.apache.camel.dataformat.bindy.fixed.link"});
                 bindy.setLocale("en");
                 bindy.setType(BindyType.Fixed);
 
                 from(URI_DIRECT_UNMARSHALL)
-                        .unmarshal().bindy(BindyType.Fixed, BindySimpleFixedLengthWithLinkTest.Order.class)
+                        .unmarshal(bindy)
                         .to(URI_MOCK_UNMARSHALL_RESULT);
             }
         };
@@ -89,9 +105,6 @@ public class BindySimpleFixedLengthWithL
         return routeBuilder;
     }
 
-    // *************
-    // DATA FORMATS
-    // *************
     @FixedLengthRecord
     public static class Order {
         // 'AAA'
@@ -102,7 +115,7 @@ public class BindySimpleFixedLengthWithL
         private SubRec subRec;
 
         // 'CCC'
-        @DataField(pos = 3, length = 3)
+        @DataField(pos = 7, length = 3)
         private String fieldC;
 
         public String getFieldA() {
@@ -129,13 +142,14 @@ public class BindySimpleFixedLengthWithL
             this.subRec = subRec;
         }
 
+
     }
 
     @Link
     @FixedLengthRecord
     public static class SubRec {
 
-        @DataField(pos = 2, length = 3)
+        @DataField(pos = 4, length = 3)
         private String fieldB;
 
         public String getFieldB() {
@@ -147,4 +161,5 @@ public class BindySimpleFixedLengthWithL
         }
 
     }
+
 }
\ No newline at end of file