Coverage Report - org.mule.transport.xmpp.transformers.ObjectToXmppPacket
 
Classes in this File Line Coverage Branch Coverage Complexity
ObjectToXmppPacket
20%
5/25
0%
0/14
5
 
 1  
 /*
 2  
  * $Id: ObjectToXmppPacket.java 10489 2008-01-23 17:53:38Z dfeist $
 3  
  * --------------------------------------------------------------------------------------
 4  
  * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
 5  
  *
 6  
  * The software in this package is published under the terms of the CPAL v1.0
 7  
  * license, a copy of which has been included with this distribution in the
 8  
  * LICENSE.txt file.
 9  
  */
 10  
 
 11  
 package org.mule.transport.xmpp.transformers;
 12  
 
 13  
 import org.mule.api.MuleMessage;
 14  
 import org.mule.api.transformer.TransformerException;
 15  
 import org.mule.transformer.AbstractMessageAwareTransformer;
 16  
 import org.mule.transport.xmpp.XmppConnector;
 17  
 
 18  
 import java.util.Iterator;
 19  
 
 20  
 import org.jivesoftware.smack.packet.Message;
 21  
 import org.jivesoftware.smack.packet.XMPPError;
 22  
 
 23  
 /**
 24  
  * Creates an Xmpp message packet from a MuleMessage
 25  
  */
 26  
 public class ObjectToXmppPacket extends AbstractMessageAwareTransformer
 27  
 {
 28  
     public ObjectToXmppPacket()
 29  8
     {
 30  8
         this.registerSourceType(String.class);
 31  8
         this.registerSourceType(Message.class);
 32  8
         setReturnClass(Message.class);
 33  8
     }
 34  
 
 35  
     public Object transform(MuleMessage msg, String outputEncoding) throws TransformerException
 36  
     {
 37  0
         Object src = msg.getPayload();
 38  
         
 39  
         // Make the transformer match its wiki documentation: we accept Messages and Strings.
 40  
         // No special treatment for Messages is needed
 41  0
         if (src instanceof Message)
 42  
         {
 43  0
             return src;
 44  
         }
 45  
         
 46  0
         Message result = new Message();
 47  
 
 48  0
         if (msg.getExceptionPayload() != null)
 49  
         {
 50  0
             result.setError(new XMPPError(503, msg.getExceptionPayload().getMessage()));
 51  
         }
 52  
 
 53  0
         for (Iterator iterator = msg.getPropertyNames().iterator(); iterator.hasNext();)
 54  
         {
 55  0
             String name = (String) iterator.next();
 56  0
             if (name.equals(XmppConnector.XMPP_THREAD))
 57  
             {
 58  0
                 result.setThread((String) msg.getProperty(name));
 59  
             }
 60  0
             else if (name.equals(XmppConnector.XMPP_SUBJECT))
 61  
             {
 62  0
                 result.setSubject((String) msg.getProperty(name));
 63  
             }
 64  0
             else if (name.equals(XmppConnector.XMPP_FROM))
 65  
             {
 66  0
                 result.setFrom((String) msg.getProperty(name));
 67  
             }
 68  0
             else if (name.equals(XmppConnector.XMPP_TO))
 69  
             {
 70  0
                 result.setTo((String) msg.getProperty(name));
 71  
             }
 72  
             else
 73  
             {
 74  0
                 result.setProperty(name, msg.getProperty(name));
 75  
             }
 76  0
         }
 77  
 
 78  
         // copy the payload. Since it can only be a String (other objects wouldn't be passed in through
 79  
         // AbstractTransformer) the following is safe.
 80  0
         result.setBody((String) src);
 81  
         
 82  0
         return result;
 83  
     }
 84  
 }