All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.codehaus.xfire.xmpp.SoapIQProvider Maven / Gradle / Ivy

The newest version!
package org.codehaus.xfire.xmpp;

import java.util.Iterator;

import org.codehaus.xfire.soap.SoapVersion;
import org.codehaus.xfire.soap.SoapVersionFactory;
import org.codehaus.xfire.util.jdom.StaxBuilder;
import org.codehaus.xfire.util.stax.FragmentStreamReader;
import org.jdom.Document;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.provider.IQProvider;
import org.jivesoftware.smack.provider.ProviderManager;
import org.xmlpull.v1.XmlPullParser;

/**
 * @author Dan Diephouse 
 */
public class SoapIQProvider
    implements IQProvider
{
    static
    {
        /* Register an IQ Provider for each soap namespace */
        SoapIQProvider provider = new SoapIQProvider();

        for (Iterator itr = SoapVersionFactory.getInstance().getVersions(); itr.hasNext();)
        {
            SoapVersion version = (SoapVersion) itr.next();
            
            ProviderManager.addIQProvider(version.getEnvelope().getLocalPart(), 
                                          version.getEnvelope().getNamespaceURI(),
                                          provider);
        }
    }

    /**
     * @param parser
     * @return
     * @throws java.lang.Exception
     */
    public IQ parseIQ(XmlPullParser parser)
        throws Exception
    {
        StaxBuilder builder = new StaxBuilder();
        FragmentStreamReader reader = new FragmentStreamReader(new XmlPullStreamReader(parser));
        reader.setAdvanceAtEnd(false);
        
        Document doc = builder.build(reader);

        return new SoapEnvelopePacket(doc);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy