[java-opensaml COMMIT] in /trunk: opensaml-soap-api/src/main/java/org/opensaml/soap/messaging/SOAPMessagingSupport.ja...

noreply at shibboleth.net noreply at shibboleth.net
Fri Nov 6 16:16:51 EST 2015


Author: putmanb
Date: Fri Nov  6 16:16:51 2015
New Revision: 4394

URL: http://svn.shibboleth.net/view/java-opensaml?rev=4394&view=rev
Log:
Add some more advanced support around various aspects of SOAP header generation.

Mostly this is support for adding mustUnderstand and actor/role in message handlers
that generate SOAP headers.

Added:
    trunk/opensaml-soap-api/src/main/java/org/opensaml/soap/util/SOAPVersion.java   (with props)
    trunk/opensaml-soap-api/src/main/java/org/opensaml/soap/wssecurity/messaging/WSSecurityMessagingSupport.java   (with props)
    trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/messaging/
    trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/messaging/impl/
    trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/messaging/impl/AbstractHeaderGeneratingMessageHandler.java   (with props)
    trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/messaging/impl/package-info.java   (with props)
Modified:
    trunk/opensaml-soap-api/src/main/java/org/opensaml/soap/messaging/SOAPMessagingSupport.java
    trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/wsaddressing/messaging/impl/AddActionHandler.java
    trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/wsaddressing/messaging/impl/AddMessageIDHandler.java
    trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/wsaddressing/messaging/impl/AddRelatesToHandler.java
    trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/messaging/impl/AddTimestampHandler.java

Modified: trunk/opensaml-soap-api/src/main/java/org/opensaml/soap/messaging/SOAPMessagingSupport.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-soap-api/src/main/java/org/opensaml/soap/messaging/SOAPMessagingSupport.java?rev=4394&r1=4393&r2=4394&view=diff
==============================================================================
--- trunk/opensaml-soap-api/src/main/java/org/opensaml/soap/messaging/SOAPMessagingSupport.java	(original)
+++ trunk/opensaml-soap-api/src/main/java/org/opensaml/soap/messaging/SOAPMessagingSupport.java	Fri Nov  6 16:16:51 2015
@@ -17,6 +17,8 @@
 
 package org.opensaml.soap.messaging;
 
+import static org.opensaml.soap.util.SOAPVersion.SOAP_1_1;
+
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -39,6 +41,7 @@
 import org.opensaml.soap.soap11.Fault;
 import org.opensaml.soap.soap11.Header;
 import org.opensaml.soap.util.SOAPSupport;
+import org.opensaml.soap.util.SOAPVersion;
 
 /**
  * Support class for SOAP messaging.
@@ -111,15 +114,142 @@
     public static boolean isSOAPMessage(@Nonnull final MessageContext<? extends XMLObject> messageContext) {
         Constraint.isNotNull(messageContext, "Message context cannot be null");
         
+        if (isSOAP11Message(messageContext)) {
+            return true;
+        }
+        
+        //TODO SOAP 1.2 support when object providers are implemented
+        return false;
+    }
+    
+    /**
+     * Determine whether the message represented by the message context 
+     * contains a SOAP 1.1. Envelope.
+     * 
+     * @param messageContext the current message context
+     * @return true iff the message context contains a SOAP 1.1 Envelope
+     */
+    public static boolean isSOAP11Message(@Nonnull final MessageContext<? extends XMLObject> messageContext) {
+        Constraint.isNotNull(messageContext, "Message context cannot be null");
+        
+        SOAPVersion version = getSOAPVersion(messageContext);
+        if (version != null && SOAP_1_1.equals(version)) {
+            return true;
+        }
+        
+        //TODO SOAP 1.2 support when object providers are implemented
+        return false;
+    }
+    
+    /**
+     * Determine whether the SOAP version of the message represented by the message context.
+     * 
+     * @param messageContext the current message context
+     * @return the SOAP version.  May be null if the version could not be determined
+     */
+    @Nullable public static SOAPVersion getSOAPVersion(
+            @Nonnull final MessageContext<? extends XMLObject> messageContext) {
+        Constraint.isNotNull(messageContext, "Message context cannot be null");
+        
         final SOAP11Context soap11 = getSOAP11Context(messageContext, false);
         
         // SOAP 1.1 Envelope
         if (soap11 != null && soap11.getEnvelope() != null) {
-            return true;
+            return SOAP_1_1;
         }
         
         //TODO SOAP 1.2 support when object providers are implemented
-        return false;
+        
+        return null;
+    }
+    
+    /**
+     * Check whether the specified header block is indicated as mustUnderstand == true.
+     * 
+     * @param messageContext the message context being processed
+     * @param headerBlock the header block to check
+     * @return true if header is indicated as mustUnderstand==true, false if not
+     */
+    public static boolean isMustUnderstand(@Nonnull final MessageContext messageContext,
+            @Nonnull final XMLObject headerBlock) {

[... 268 lines stripped ...]


More information about the commits mailing list