package com.bluevia.android.messagery.mt.sms.parser.xml; import java.io.ByteArrayOutputStream; import java.io.IOException; import org.xmlpull.v1.XmlSerializer; import com.bluevia.android.commons.Entity; import com.bluevia.android.commons.parser.ISerializer; import com.bluevia.android.commons.parser.SerializeException; import com.bluevia.android.commons.parser.xml.XmlConstants; import com.bluevia.android.messagery.mt.sms.data.Sms; import com.bluevia.android.messagery.mt.sms.data.SmsMessageReq; /** * Xml serializer for SmsMessageReq entities. * * @author Telefonica I+D * */ public class XmlSmsMessageSerializer extends AbstractXmlSmsSerializer implements ISerializer { /** * @throws SerializeException thrown if entity is not an instance of {@link com.bluevia.android.SmsMessageReq SmsMessageReq} * @see * com.bluevia.android.commons.parser.ISerializer#serialize( * com.bluevia.android.commons.Entity, java.io.OutputStream) */ @Override public ByteArrayOutputStream serialize(Entity entity) throws SerializeException { if (!(entity instanceof SmsMessageReq)) { throw new SerializeException("Attempted to parse unsupported entity type"); } return super.serialize(entity); } @Override protected void serializeSmsContents(Sms message, XmlSerializer serializer) throws SerializeException, IOException { serializeAddressContents(message, serializer, XmlConstants.NS_SMS_API_URI); serializeSmsMessageContents((SmsMessageReq) message, serializer); serializeReceiptTypeContents(message, serializer, XmlConstants.NS_SMS_API_URI); serializeSenderNameContents(message, serializer, XmlConstants.NS_SMS_API_URI); serializeOriginAddressContents(message, serializer, XmlConstants.NS_SMS_API_URI); } /** * This function Serializes into the XML the SmsMessageReq contents * * @param message the SmsMessageReq message * @param serializer the serializer * @throws SerializeException * @throws IllegalArgumentException * @throws IllegalStateException * @throws IOException */ private void serializeSmsMessageContents(SmsMessageReq message, XmlSerializer serializer) throws SerializeException, IllegalArgumentException, IllegalStateException, IOException { if (message.getMessage() == null) { throw new SerializeException("Null message body in SMS"); } else if (message.getMessage().equals("")) { throw new SerializeException("Empty message body in SMS"); } else { serializer.startTag(XmlConstants.NS_SMS_API_URI,XmlConstants.XSD_SMSTEXTTYPE_MESSAGE); serializer.text(message.getMessage()); serializer.endTag(XmlConstants.NS_SMS_API_URI,XmlConstants.XSD_SMSTEXTTYPE_MESSAGE); } } }