Package org.jboss.soa.esb.actions.converters

Source Code of org.jboss.soa.esb.actions.converters.ObjectToXStreamUnitTest

/*
* JBoss, Home of Professional Open Source
* Copyright 2006, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/

package org.jboss.soa.esb.actions.converters;

import java.util.ArrayList;
import java.util.List;

import junit.framework.TestCase;

import org.jboss.internal.soa.esb.util.XMLHelper;
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.actions.TestBean;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.format.MessageFactory;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;


/**
* ObjectToXStream unit tests.
* @author <a href="mailto:tom.fennelly@jboss.com">tom.fennelly@jboss.com</a>
* @author <a href="mailto:daniel.bevenius@gmail.com">daniel.bevenius@gmail.com</a>
* @since Version 4.0
*/
public class ObjectToXStreamUnitTest extends TestCase {
 
    public void test_default() throws ActionProcessingException {
        ConfigTree config = new ConfigTree("config");

        ObjectToXStream objectToXStream = new ObjectToXStream(config);
       
        Message oMsg = MessageFactory.getInstance().getMessage();
        oMsg.getBody().add(new TestBean("Tom", "1234"));
        oMsg = objectToXStream.process(oMsg);
        String xml = (String)oMsg.getBody().get();
        XStream xstream = new XStream(new DomDriver());
        TestBean bean = new TestBean();

        assertTrue("Expected [<TestBean>].  Got [" + xml + "]", xml.startsWith("<TestBean>"));
        xstream.alias("TestBean", TestBean.class);
        xstream.fromXML(xml, bean);
       
        assertEquals("Tom", bean.getName());
        assertEquals("1234", bean.getPhone());
    }

    public void test_with_package() throws ActionProcessingException {
        XStreamConfigBuilder builder = new XStreamConfigBuilder();
        builder.excludePackage(false);
       
        ObjectToXStream objectToXStream = new ObjectToXStream(builder.build());
       
        Message oMsg = MessageFactory.getInstance().getMessage();
        oMsg.getBody().add(new TestBean("Tom", "1234"));
        objectToXStream.process(oMsg);
        String xml = (String)oMsg.getBody().get();

        XStream xstream = new XStream(new DomDriver());
        TestBean bean = new TestBean();

        assertTrue("Expected start with [<" + TestBean.class.getName() + ">].  Got [" + xml + "]", xml.startsWith("<" + TestBean.class.getName() + ">"));
        xstream.fromXML(xml, bean);
       
        assertEquals("Tom", bean.getName());
        assertEquals("1234", bean.getPhone());
    }

    public void test_with_classAlias() throws ActionProcessingException {
        XStreamConfigBuilder builder = new XStreamConfigBuilder();
        builder.classAlias("TomsClass");
       
        ObjectToXStream objectToXStream = new ObjectToXStream(builder.build());
       
        Message oMsg = MessageFactory.getInstance().getMessage();
        oMsg.getBody().add(new TestBean("Tom", "1234"));
        objectToXStream.process(oMsg);
        String xml = (String)oMsg.getBody().get();

        XStream xstream = new XStream(new DomDriver());
        xstream.alias("TomsClass", TestBean.class);
        TestBean bean = new TestBean();

        assertTrue("Expected start with [<TomsClass>].  Got [" + xml + "]", xml.startsWith("<TomsClass>"));
        xstream.fromXML(xml, bean);
       
        assertEquals("Tom", bean.getName());
        assertEquals("1234", bean.getPhone());
    }
   
    public void test_with_namespace() throws ActionProcessingException {
      final String ns = "http://www.xyz.com.org/xyz";
        XStreamConfigBuilder builder = new XStreamConfigBuilder();
        builder.classAlias("TomsClass");
        builder.namespace(ns, "TomsClass");
       
        ObjectToXStream objectToXStream = new ObjectToXStream(builder.build());
       
        Message oMsg = MessageFactory.getInstance().getMessage();
        oMsg.getBody().add(new TestBean("Tom", "1234"));
        objectToXStream.process(oMsg);
        String xml = (String)oMsg.getBody().get();
        assertTrue( xml.contains( "TomsClass xmlns=\"" + ns ));
    }
   
    public void test_with_alias() throws Exception {
        XStreamConfigBuilder builder = new XStreamConfigBuilder();
        builder.alias("TomsClass", TestBean.class.getName());
        ObjectToXStream objectToXStream = new ObjectToXStream(builder.build());
       
        Message message = MessageFactory.getInstance().getMessage();
        message.getBody().add(new TestBean("Tom", "1234"));
        objectToXStream.process(message);
       
        String expectedXml = "<TomsClass><name>Tom</name><phone>1234</phone></TomsClass>";
        String actualXml = (String) message.getBody().get();
        assertTrue("XML comparison", XMLHelper.compareXMLContent(expectedXml, actualXml));
    }
   
    public void test_with_fieldAlias() throws Exception {
        XStreamConfigBuilder builder = new XStreamConfigBuilder();
        builder.alias("TomsClass", TestBean.class.getName());
        builder.fieldAlias("firstName", TestBean.class, "name");
        ObjectToXStream objectToXStream = new ObjectToXStream(builder.build());
       
        Message message = MessageFactory.getInstance().getMessage();
        message.getBody().add(new TestBean("Tom", "1234"));
        objectToXStream.process(message);
       
        String expectedXml = "<TomsClass><firstName>Tom</firstName><phone>1234</phone></TomsClass>";
        String actualXml = (String) message.getBody().get();
        assertTrue("XML comparison", XMLHelper.compareXMLContent(expectedXml, actualXml));
    }
   
    public void test_with_implicitCollection() throws Exception {
        XStreamConfigBuilder builder = new XStreamConfigBuilder();
        builder.classAlias("TomsClass");
        builder.implicitCollection(TestBean.class.getName(), "addresses", "address", String.class.getName());
       
        ObjectToXStream objectToXStream = new ObjectToXStream(builder.build());
       
        Message message = MessageFactory.getInstance().getMessage();
        TestBean testBean = new TestBean("Tom", "1234");
        List<String> addresses = new ArrayList<String>();
        addresses.add("street1");
        addresses.add("street2");
        testBean.setAddresses(addresses);
        message.getBody().add(testBean);
        objectToXStream.process(message);
       
        String expectedXml = "<TomsClass><name>Tom</name><phone>1234</phone><address>street1</address><address>street2</address></TomsClass>";
        String actualXml = (String) message.getBody().get();
        assertTrue("XML comparison", XMLHelper.compareXMLContent(expectedXml, actualXml));
    }
   
     public void test_with_converter() throws Exception {
        XStreamConfigBuilder builder = new XStreamConfigBuilder();
        builder.classAlias("comments");
        builder.incomingType(Comment.class.getName());
       
        ObjectToXStream objectToXStream = new ObjectToXStream(builder.build());
       
        Message message = MessageFactory.getInstance().getMessage();
        Comment comment = new Comment("some comment");
       
        message.getBody().add(comment);
        objectToXStream.process(message);
       
        String expectedXml = "<comments><comment>some comment</comment></comments>";
        String actualXml = (String) message.getBody().get();
        assertTrue("XML comparison", XMLHelper.compareXMLContent(expectedXml, actualXml));
    }
}
TOP

Related Classes of org.jboss.soa.esb.actions.converters.ObjectToXStreamUnitTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.