Package org.mule.transformer.simple

Source Code of org.mule.transformer.simple.SerializedMuleMessageTransformersTestCase

/*
* $Id:SerializedMuleMessageTransformersTestCase.java 5937 2007-04-09 22:35:04Z rossmason $
* --------------------------------------------------------------------------------------
* Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
*
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/

package org.mule.transformer.simple;

import org.mule.DefaultMuleEvent;
import org.mule.DefaultMuleMessage;
import org.mule.RequestContext;
import org.mule.api.MuleMessage;
import org.mule.api.transformer.Transformer;
import org.mule.tck.MuleTestUtils;
import org.mule.tck.testmodels.fruit.Apple;
import org.mule.transformer.AbstractTransformerTestCase;

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.io.output.ByteArrayOutputStream;

public class SerializedMuleMessageTransformersTestCase extends AbstractTransformerTestCase
{
   
    private MuleMessage testObject = null;

    @Override
    protected void doSetUp() throws Exception
    {
        Map<String, Object> props = new HashMap<String, Object>();
        props.put("object", new Apple());
        props.put("number", 1);
        props.put("string", "hello");
        testObject = new DefaultMuleMessage("test", props, muleContext);
       
        RequestContext.setEvent(
                new DefaultMuleEvent(testObject, getTestInboundEndpoint("test"),
                MuleTestUtils.getTestSession(muleContext)));
    }

    @Override
    protected void doTearDown() throws Exception
    {
        RequestContext.clear();
    }

    @Override
    public void testTransform() throws Exception
    {
        // this depends on the ordering of properties in the map.
        // because we now make a copy of maps in RequestContext this order can change
    }

    @Override
    public Transformer getTransformer() throws Exception
    {
        return createObject(MuleMessageToByteArray.class);
    }

    @Override
    public Transformer getRoundTripTransformer() throws Exception
    {
        return createObject(ByteArrayToMuleMessage.class);
    }

    @Override
    public Object getTestData()
    {
        return testObject;
    }

    @Override
    public Object getResultData()
    {
        try
        {
            ByteArrayOutputStream bs;
            ObjectOutputStream os;

            bs = new ByteArrayOutputStream();
            os = new ObjectOutputStream(bs);
            os.writeObject(testObject);
            os.flush();
            os.close();
            return bs.toByteArray();
        }
        catch (IOException e)
        {
            throw new IllegalStateException(e.getMessage());
        }
    }

    @Override
    public boolean compareResults(Object src, Object result)
    {
        if (src == null && result == null)
        {
            return true;
        }
        if (src == null || result == null)
        {
            return false;
        }
        return Arrays.equals((byte[])src, (byte[])result);
    }

    @Override
    public boolean compareRoundtripResults(Object src, Object result)
    {
        if (src == null && result == null)
        {
            return true;
        }
        if (src == null || result == null)
        {
            return false;
        }
        if (src instanceof MuleMessage && result instanceof MuleMessage)
        {
            MuleMessage sourceMuleMessage = (MuleMessage) src;
            MuleMessage resultMuleMessage = (MuleMessage) result;
           
            boolean payloadsAreEqual = comparePayloads(sourceMuleMessage, resultMuleMessage);
            boolean objectPropertiesAreEqual = compareObjectProperties(sourceMuleMessage, resultMuleMessage);
            boolean stringPropertiesAreEqual = compareStringProperties(sourceMuleMessage, resultMuleMessage);
            boolean intPropertiesAreEqual = compareIntProperties(sourceMuleMessage, resultMuleMessage);
                       
            return payloadsAreEqual
                && objectPropertiesAreEqual
                && stringPropertiesAreEqual
                && intPropertiesAreEqual;
        }
        else
        {
            return false;
        }
    }
   
    private boolean comparePayloads(MuleMessage src, MuleMessage result)
    {
        Object sourcePayload = src.getPayload();
        Object resultPayload = result.getPayload();
        return sourcePayload.equals(resultPayload);
    }
   
    private boolean compareObjectProperties(MuleMessage src, MuleMessage result)
    {
        Object sourceObjectProperty = src.getOutboundProperty("object");
        Object resultObjectProperty = result.getOutboundProperty("object");
        return sourceObjectProperty.equals(resultObjectProperty);
    }
   
    private boolean compareStringProperties(MuleMessage src, MuleMessage result)
    {
        Object sourceStringProperty = src.getOutboundProperty("string");
        Object resultStringProperty = result.getOutboundProperty("string");
        return sourceStringProperty.equals(resultStringProperty);
    }

    private boolean compareIntProperties(MuleMessage src, MuleMessage result)
    {
        int sourceIntProperty = src.getOutboundProperty("number", -1);
        int resultIntProperty = result.getOutboundProperty("number", -2);
        return (sourceIntProperty == resultIntProperty);
    }

}
TOP

Related Classes of org.mule.transformer.simple.SerializedMuleMessageTransformersTestCase

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.