[java-opensaml COMMIT] in /trunk/opensaml-soap-impl/src: main/java/org/opensaml/soap/soap11/encoder/SOAP11Encoder.jav...

noreply at shibboleth.net noreply at shibboleth.net
Wed Jan 30 18:13:03 EST 2013


Author: putmanb
Date: Wed Jan 30 18:13:03 2013
New Revision: 3187

URL: http://svn.shibboleth.net/view/java-opensaml?rev=3187&view=rev
Log:
OSJ-34, port SOAP encoder to new messaging API

Added:
    trunk/opensaml-soap-impl/src/test/java/org/opensaml/soap/soap11/encoder/http/
    trunk/opensaml-soap-impl/src/test/java/org/opensaml/soap/soap11/encoder/http/HTTPSOAP11EncoderTest.java
      - copied, changed from r3182, trunk/opensaml-soap-impl/src/test/java/org/opensaml/soap/soap11/encoder/SOAP11EncoderTest.java
Modified:
    trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/soap11/encoder/SOAP11Encoder.java
    trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/soap11/encoder/http/HTTPSOAP11Encoder.java
    trunk/opensaml-soap-impl/src/test/java/org/opensaml/soap/soap11/encoder/SOAP11EncoderTest.java
    trunk/opensaml-soap-impl/src/test/resources/data/org/opensaml/soap/soap11/SOAP.xml
    trunk/opensaml-soap-impl/src/test/resources/data/org/opensaml/soap/soap11/SOAPHeaderMustUnderstand.xml
    trunk/opensaml-soap-impl/src/test/resources/data/org/opensaml/soap/soap11/SOAPHeaderNotMustUnderstand.xml
    trunk/opensaml-soap-impl/src/test/resources/data/org/opensaml/soap/soap11/SOAPNoHeaders.xml

Modified: trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/soap11/encoder/http/HTTPSOAP11Encoder.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/soap11/encoder/http/HTTPSOAP11Encoder.java?rev=3187&r1=3186&r2=3187&view=diff
==============================================================================
--- trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/soap11/encoder/http/HTTPSOAP11Encoder.java (original)
+++ trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/soap11/encoder/http/HTTPSOAP11Encoder.java Wed Jan 30 18:13:03 2013
@@ -17,48 +17,133 @@
 
 package org.opensaml.soap.soap11.encoder.http;
 
+import java.io.IOException;
 import java.util.List;
 
+import javax.servlet.http.HttpServletResponse;
+
+import net.shibboleth.utilities.java.support.net.HttpServletSupport;
+import net.shibboleth.utilities.java.support.xml.SerializeSupport;
+
 import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.XMLObjectBuilderFactory;
+import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
+import org.opensaml.messaging.context.MessageContext;
+import org.opensaml.messaging.encoder.MessageEncodingException;
+import org.opensaml.messaging.encoder.servlet.BaseHttpServletResponseXmlMessageEncoder;
+import org.opensaml.soap.common.SOAPObjectBuilder;
+import org.opensaml.soap.messaging.context.SOAP11Context;
+import org.opensaml.soap.soap11.Body;
 import org.opensaml.soap.soap11.Envelope;
 import org.opensaml.soap.soap11.Header;
-import org.opensaml.soap.soap11.encoder.SOAP11Encoder;
 import org.opensaml.soap.wsaddressing.Action;
-import org.opensaml.ws.message.MessageContext;
-import org.opensaml.ws.message.encoder.MessageEncodingException;
-import org.opensaml.ws.transport.http.HTTPOutTransport;
-import org.opensaml.ws.transport.http.HTTPTransportUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.w3c.dom.Element;
 
 /**
  * Basic SOAP 1.1 encoder for HTTP transport.
+ * 
+ * @param <MessageType> the message type of the message context on which to operate
  */
-public class HTTPSOAP11Encoder extends SOAP11Encoder {
+public class HTTPSOAP11Encoder<MessageType extends XMLObject> 
+        extends BaseHttpServletResponseXmlMessageEncoder<MessageType> {
 
     /** Class logger. */
     private final Logger log = LoggerFactory.getLogger(HTTPSOAP11Encoder.class);
     
-
+    /** SOAP Envelope builder. */
+    private SOAPObjectBuilder<Envelope> envBuilder;
+    
+    /** SOAP Body builder. */
+    private SOAPObjectBuilder<Body> bodyBuilder;
+    
     /** Constructor. */
     public HTTPSOAP11Encoder() {
         super();
-    }
-
+        XMLObjectBuilderFactory builderFactory = XMLObjectProviderRegistrySupport.getBuilderFactory();
+        envBuilder = (SOAPObjectBuilder<Envelope>) builderFactory.getBuilder(Envelope.DEFAULT_ELEMENT_NAME);
+        bodyBuilder = (SOAPObjectBuilder<Body>) builderFactory.getBuilder(Body.DEFAULT_ELEMENT_NAME);
+    }
+    
     /** {@inheritDoc} */
-    protected void doEncode(MessageContext messageContext) throws MessageEncodingException {
-        if (!(messageContext.getOutboundMessageTransport() instanceof HTTPOutTransport)) {
-            log.error("Invalid outbound message transport type, this encoder only support HTTPOutTransport");
-            throw new MessageEncodingException(
-                    "Invalid outbound message transport type, this encoder only support HTTPOutTransport");
-        }
-        
-        super.doEncode(messageContext);
-    }
+    public void prepareContext() throws MessageEncodingException {
+        MessageContext<MessageType> messageContext = getMessageContext();
+        MessageType message = messageContext.getMessage();
+        if (message == null) {

[... 576 lines stripped ...]


More information about the commits mailing list