I have created a unit test to unmarshal a FIX message into a model
(copy the model into another one) and marshal the result into a CSV

The result received by the mock is null. If I try to read the object,
I have this :

>>> Class : [B
>>> CSV generated : [...@12b19c5

Remark : the FIX message is well transformed into a model of objects
and bindy does not generate any error during the generation of the
outputstream from the model object

public class VresEmxToCsvTest extends AbstractJUnit4SpringContextTests {
        
        private static final transient Log LOG =
LogFactory.getLog(VresEmxToCsvTest.class);

    @Produce(uri = "direct:start")
    private ProducerTemplate template;

    @EndpointInject(uri = "mock:result")
    private MockEndpoint resultEndpoint;


    @Test
    @DirtiesContext
    public void testEmxtoCsv() throws Exception {
        
        String record =
"8=FIX.4.19=98035=U334=6149=SERVER50=EMXSV52=20091021-14:58:0956=X3S115=AHPRO116=AHPADMIN128=AHINT129=AHIADMIN9426=VRES15=GBP58=TEXT117=first
response131=VAL
Multiple9400=*9442=UT9464=20090910-14:00:009469=Q9477=119488=AHINT9490=AHPRO9494=AGENCY
NO9504=desig29450=39470=122=448=ISINLU8989429=20091013-09:54:459448=2432.454549493=fgfhgfhg9470=222=448=ISINLU8989429=20091013-09:54:459448=2432.454549493=fgfhgfhg9470=322=448=ISINLU8989429=20091013-09:54:459448=2432.454549493=fgfhgfhg9425=20091008-13:11:129452=20091008-13:11:169453=20091008-13:11:169480=1.0~SHA-1~RSA~CN=EMX
Certificate Authority,OU=Certificate Authority,O=EMX Company
Limited,C=GB~3ea639ba~3ee270f7e32929b5fb32eede09dd10c4f8e6809b83b7831165534be991e7845d6bfa7b6964f4336896d8f43e86e22d58b38362b6b6d096643d00351221df9b6d74ce9852689dc599c641182286de2b4ec8d47df6883d61a0664233daf34ec24026b985205ea2dbba5ca5856bb64ab911b8122c326bd1ccdd5d2b415b4d97ad949481=20091008-13:11:129491=400318210=190";
        String result = "";

        template.sendBody(record);

        resultEndpoint.expectedMessageCount(1);
        // resultEndpoint.expectedBodiesReceived(result);
        resultEndpoint.assertIsSatisfied();

        for (Exchange exch : resultEndpoint.getExchanges()) {
            Object obj = exch.getIn().getBody();
            System.out.println(">>> Class : " + obj.getClass().getName());
            System.out.println(">>> CSV generated : " + obj.toString());
        }




    }



/*    @Test
    @DirtiesContext
    public void testUnMarshallWithNullFields() throws Exception {
        
        // TODO add null fields
        String record =
"8=FIX.4.19=8935=U234=8449=SERVER52=20090630-10:29:2556=X3S9426=TBKD11=ORDER122=237=WWWWWW48=ISIN2432434354=158=TTT67=168=1121=Y152=33.43173=TTTTTTT174=TTTTTTTTTTT182=BIGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG183=HHHHHH184=YYYYYYYYY185=FFFFFFFFFFFFFF9400=TTTTTTTTTTT9401=19402=31.239403=19404=TTT9405=TTT9406=TTT9407=TTT9408=TTT9409=TTT9410=TTT9411=TTT9412=TTT9413=N9414=TTT9415=TTT9416=R9417=USD9418=DEM9419=8.659420=3349422=M9423=Y9424=HJHJKHJKHJ9428=20090303-12:25:559435=200803269436=jhkjkj9437=dddddddddd9438=eeeeeeeeee9439=12099440=AA9441=89442=PROTYP39443=19444=safdewfw9449=fsgsg9451=E9455=EUR9462=59468=?9471=433.4439474=E9475=Y9482=fwrfw9483=KKKKK9484=KLKLKL9485=JKIJKJKJ9488=ORIG19489=JJJJJ9490=PRV039492=kjlklk9494=AGENCY339495=23.189491=TBKD-5776517710=111";
        
        template.sendBody(record);

        resultEndpoint.expectedMessageCount(1);
        resultEndpoint.assertIsSatisfied();

        List<Exchange> exchanges = resultEndpoint.getExchanges();

        for(Exchange exchange : exchanges) {

          models = (List<Map<String, Object>>) exchange.getIn().getBody();

          for (int i=0; i< models.size(); i++) {
                model =  models.get(i);
                OutTbkdMessage tbkd =
(OutTbkdMessage)model.get("com.xpectis.x3s.model.backoffice.emx.tbkd.out.OutTbkdMessage");
                Assert.assertEquals(tbkd.getOrdUntNb(), null);
                LOG.debug("Model : " + tbkd.toString());
          }
                
                
        }
    }*/

    @Configuration
    public static class ContextConfig extends SingleRouteCamelConfiguration {
        BindyKeyValuePairDataFormat emxBindyDataFormat = new
BindyKeyValuePairDataFormat("com.xpectis.x3s.model.backoffice.emx.vres.out","com.xpectis.x3s.model.backoffice.emx.common");
        BindyCsvDataFormat csvBindyDataFormat = new
BindyCsvDataFormat("com.xpectis.x3s.model.backoffice.emx.vres.in");

        @Override
        @Bean
        public RouteBuilder route() {
            return new RouteBuilder() {
                @Override
                public void configure() {
                    from("direct:start")
                    .unmarshal(emxBindyDataFormat)
                    .process(new Processor() {
                        
                        public void process(Exchange exchange) throws
Exception {
                                
                                                        InVresMessage 
inVresMessage = new InVresMessage();
                                List<Map<String, Object>> models = new
ArrayList<Map<String, Object>>();
                                List<Map<String, Object>> modelsReceived;
                                Map<String, Object> model = new
HashMap<String, Object>();
                                                        
                                                        modelsReceived = 
(List<Map<String, Object>>) exchange.getIn().getBody();
                                                OutVresMessage outVresMessage = 
(OutVresMessage)
modelsReceived.get(0).get("com.xpectis.x3s.model.backoffice.emx.vres.out.OutVresMessage");

                                                        
PropertyUtils.copyProperties(inVresMessage, outVresMessage);
                                                        
model.put(inVresMessage.getClass().getName(), inVresMessage);
                                                        models.add( model );

                                                        
exchange.getIn().setBody(models);
                                                }
                                        }

                                        )
                        .marshal(csvBindyDataFormat)
                        .to("mock:result");
                }
            };
        }
    }

}


Regards,

Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard

Reply via email to