DataPacketProvider.java

  1. /**
  2.  *
  3.  * Copyright the original author or authors
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  *     http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package org.jivesoftware.smackx.bytestreams.ibb.provider;

  18. import java.io.IOException;

  19. import org.jivesoftware.smack.datatypes.UInt16;
  20. import org.jivesoftware.smack.packet.IqData;
  21. import org.jivesoftware.smack.packet.XmlEnvironment;
  22. import org.jivesoftware.smack.parsing.SmackParsingException;
  23. import org.jivesoftware.smack.parsing.SmackParsingException.RequiredAttributeMissingException;
  24. import org.jivesoftware.smack.util.ParserUtils;
  25. import org.jivesoftware.smack.xml.XmlPullParser;
  26. import org.jivesoftware.smack.xml.XmlPullParserException;

  27. import org.jivesoftware.smackx.bytestreams.ibb.packet.Data;
  28. import org.jivesoftware.smackx.bytestreams.ibb.packet.DataPacketExtension;

  29. /**
  30.  * Parses an In-Band Bytestream data stanza which can be a stanza extension of
  31.  * either an IQ stanza or a message stanza.
  32.  *
  33.  * @author Henning Staib
  34.  */
  35. public class DataPacketProvider {

  36.     public static class IQProvider extends org.jivesoftware.smack.provider.IqProvider<Data> {

  37.         private static final PacketExtensionProvider packetExtensionProvider = new PacketExtensionProvider();

  38.         @Override
  39.         public Data parse(XmlPullParser parser, int initialDepth, IqData iqData, XmlEnvironment xmlEnvironment)
  40.                         throws IOException, XmlPullParserException, SmackParsingException {
  41.             DataPacketExtension data = packetExtensionProvider.parse(parser);
  42.             return new Data(data);
  43.         }
  44.     }

  45.     public static class PacketExtensionProvider extends org.jivesoftware.smack.provider.ExtensionElementProvider<DataPacketExtension> {

  46.         @Override
  47.         public DataPacketExtension parse(XmlPullParser parser,
  48.                         int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException,
  49.                         IOException, RequiredAttributeMissingException {
  50.             String sessionID = parser.getAttributeValue("", "sid");
  51.             UInt16 seq = ParserUtils.getRequiredUInt16Attribute(parser, "seq");
  52.             String data = parser.nextText();
  53.             return new DataPacketExtension(sessionID, seq, data);
  54.         }

  55.     }
  56. }