[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