[java-opensaml] branch main updated: Fix invalid Java pattern match construct.

Scott Cantor cantor.2 at osu.edu
Mon Mar 20 20:48:05 UTC 2023


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch main
in repository java-opensaml.

View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=ab2c1633f2ca807b4d69da9b2d2d147b044179a6

The following commit(s) were added to refs/heads/main by this push:
     new ab2c1633f Fix invalid Java pattern match construct.
ab2c1633f is described below

commit ab2c1633f2ca807b4d69da9b2d2d147b044179a6
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Mar 20 16:48:00 2023 -0400

    Fix invalid Java pattern match construct.
---
 .../messaging/context/SAMLPeerEntityContext.java   |  8 ++--
 .../context/SAMLSubjectNameIdentifierContext.java  | 13 +++++--
 .../soap/SAMLSOAPClientContextBuilder.java         | 40 ++++++++++++++------
 .../profile/logic/EntityAttributesPredicate.java   | 22 +++++++----
 .../logic/InboundMessageSignedPredicate.java       |  7 +++-
 .../MetadataNameIdentifierFormatStrategy.java      |  5 ++-
 .../opensaml/saml/saml2/common/SAML2Support.java   |  5 ++-
 .../opensaml/saml/saml2/encryption/Encrypter.java  | 18 ++++++---
 .../messaging/SOAPClientDestinationURILookup.java  | 18 +++------
 .../SOAPClientPipelineNameMappingFunction.java     |  7 ++--
 .../SOAPClientPipelineNameMappingPredicate.java    |  7 ++--
 .../soap/common/AbstractExtensibleSOAPObject.java  |  7 ++--
 .../soap/messaging/SOAPMessagingSupport.java       | 44 ++++++++++++++++++----
 13 files changed, 135 insertions(+), 66 deletions(-)

diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/context/SAMLPeerEntityContext.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/context/SAMLPeerEntityContext.java
index 3a65f6ab7..586e8ef18 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/context/SAMLPeerEntityContext.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/context/SAMLPeerEntityContext.java
@@ -251,15 +251,17 @@ public final class SAMLPeerEntityContext extends AbstractAuthenticatableSAMLEnti
      */
     @Nullable protected String processSaml1Request(@Nonnull final org.opensaml.saml.saml1.core.Request request) {
         String entityId = null;
-        if (request.getAttributeQuery() instanceof AttributeQuery q) {
+        final AttributeQuery q = request.getAttributeQuery();
+        if (q != null) {
             entityId = processSaml1AttributeQuery(q);
             if (entityId != null) {
                 return entityId;
             }
         }
 
-        if (request.getAuthorizationDecisionQuery() instanceof AuthorizationDecisionQuery q) {
-            entityId = processSaml1AuthorizationDecisionQuery(q);
+        final AuthorizationDecisionQuery aq = request.getAuthorizationDecisionQuery();
+        if (aq != null) {
+            entityId = processSaml1AuthorizationDecisionQuery(aq);
             if (entityId != null) {
                 return entityId;
             }
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/context/SAMLSubjectNameIdentifierContext.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/context/SAMLSubjectNameIdentifierContext.java
index 6243f475e..2988d91b9 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/context/SAMLSubjectNameIdentifierContext.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/context/SAMLSubjectNameIdentifierContext.java
@@ -135,19 +135,24 @@ public final class SAMLSubjectNameIdentifierContext extends BaseContext {
             return null;
         }
         if (samlMessage instanceof org.opensaml.saml.saml2.core.SubjectQuery msg) {
-            if (msg.getSubject() instanceof org.opensaml.saml.saml2.core.Subject s) {
+            final org.opensaml.saml.saml2.core.Subject s = msg.getSubject();
+            if (s != null) {
                 return s.getNameID();
             }
             return null;
         } else if (samlMessage instanceof org.opensaml.saml.saml2.core.AuthnRequest msg) {
-            if (msg.getSubject() instanceof org.opensaml.saml.saml2.core.Subject s) {
+            final org.opensaml.saml.saml2.core.Subject s = msg.getSubject();
+            if (s != null) {
                 return s.getNameID();
             }
             return null;
         } else if (samlMessage instanceof Request msg) {
             final org.opensaml.saml.saml1.core.SubjectQuery query = msg.getSubjectQuery();
-            if (query != null && query.getSubject() instanceof org.opensaml.saml.saml1.core.Subject s) {
-                return s.getNameIdentifier();
+            if (query != null) {
+                final org.opensaml.saml.saml1.core.Subject s = query.getSubject();
+                if (s != null) {
+                    return s.getNameIdentifier();
+                }
             }
             return null;
         } else if (samlMessage instanceof LogoutRequest) {
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/soap/SAMLSOAPClientContextBuilder.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/soap/SAMLSOAPClientContextBuilder.java
index 8054c382f..0b0893263 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/soap/SAMLSOAPClientContextBuilder.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/soap/SAMLSOAPClientContextBuilder.java
@@ -161,7 +161,10 @@ public class SAMLSOAPClientContextBuilder<InboundMessageType extends SAMLObject,
     @Nullable public String getPeerEntityID() {
         if (peerEntityID != null) {
             return peerEntityID;
-        } else if (getPeerEntityDescriptor() instanceof EntityDescriptor ed) {
+        }
+
+        final EntityDescriptor ed = getPeerEntityDescriptor();
+        if (ed != null) {
             return ed.getEntityID();
         } else {
             return null;
@@ -188,14 +191,17 @@ public class SAMLSOAPClientContextBuilder<InboundMessageType extends SAMLObject,
     @Nullable public QName getPeerEntityRole() {
         if (peerEntityRole != null) {
             return peerEntityRole;
-        } else if (getPeerRoleDescriptor() instanceof RoleDescriptor rd) {
+        }
+        
+        final RoleDescriptor rd = getPeerRoleDescriptor();
+        if (rd != null) {
             if (rd.getSchemaType() != null) {
                 return rd.getSchemaType();
             }
             return rd.getElementQName();
-        } else {
-             return null;
         }
+        
+        return null;
     }
 
     /**
@@ -218,12 +224,16 @@ public class SAMLSOAPClientContextBuilder<InboundMessageType extends SAMLObject,
     @Nullable public EntityDescriptor getPeerEntityDescriptor() {
         if (peerEntityDescriptor != null) {
             return peerEntityDescriptor;
-        } else if (getPeerRoleDescriptor() instanceof RoleDescriptor rd) {
+        }
+        
+        final RoleDescriptor rd = getPeerRoleDescriptor();
+        if (rd != null) {
             final XMLObject roleParent = rd.getParent();
             if (roleParent instanceof EntityDescriptor ed) {
                 return ed;
             }
-        } 
+        }
+        
         return null;
     }
 
@@ -431,16 +441,22 @@ public class SAMLSOAPClientContextBuilder<InboundMessageType extends SAMLObject,
             
             final SAMLPeerEntityContext peerContext = parent.getSubcontext(SAMLPeerEntityContext.class);
             if (peerContext != null) {
-                if (peerContext.getEntityId() instanceof String s) {
-                    criteria.add(new EntityIdCriterion(s));
+                final String entityID = peerContext.getEntityId();
+                if (entityID != null) {
+                    criteria.add(new EntityIdCriterion(entityID));
                 }
-                if (peerContext.getRole() instanceof QName role) {
+                
+                final QName role = peerContext.getRole();
+                if (role != null) {
                     criteria.add(new EntityRoleCriterion(role));
                 }
                 
                 final SAMLMetadataContext metadataContext = peerContext.getSubcontext(SAMLMetadataContext.class);
-                if (metadataContext != null && metadataContext.getRoleDescriptor() instanceof RoleDescriptor role) {
-                    criteria.add(new RoleDescriptorCriterion(role));
+                if (metadataContext != null) {
+                    final RoleDescriptor rd = metadataContext.getRoleDescriptor();
+                    if (rd != null) {
+                        criteria.add(new RoleDescriptorCriterion(rd));
+                    }
                 }
             }
             
@@ -449,4 +465,4 @@ public class SAMLSOAPClientContextBuilder<InboundMessageType extends SAMLObject,
         
     }
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/EntityAttributesPredicate.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/EntityAttributesPredicate.java
index f6266e4d7..1183f8dce 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/EntityAttributesPredicate.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/EntityAttributesPredicate.java
@@ -110,7 +110,8 @@ public class EntityAttributesPredicate implements Predicate<EntityDescriptor> {
             @ParameterName(name="trim") final boolean trim,
             @ParameterName(name="all") final boolean all) {
         
-        candidateSet = CollectionSupport.copyToList(Constraint.isNotNull(candidates, "Candidate collection cannot be null"));
+        candidateSet = CollectionSupport.copyToList(
+                Constraint.isNotNull(candidates, "Candidate collection cannot be null"));
         
         trimTags = trim;
         matchAll = all;
@@ -302,7 +303,8 @@ public class EntityAttributesPredicate implements Predicate<EntityDescriptor> {
          * @param exps the regular expressions to match
          */
         public void setRegexps(@Nonnull @NonnullElements final Collection<Pattern> exps) {
-            regexps = CollectionSupport.copyToList(Constraint.isNotNull(exps, "Regular expressions collection cannot be null"));
+            regexps = CollectionSupport.copyToList(
+                    Constraint.isNotNull(exps, "Regular expressions collection cannot be null"));
         }
     }
     
@@ -429,11 +431,17 @@ public class EntityAttributesPredicate implements Predicate<EntityDescriptor> {
                 toMatch = xs.getValue();
             } else if (object instanceof XSURI xs) {
                 toMatch = xs.getURI();
-            } else if (object instanceof XSBoolean xs && xs.getValue() instanceof XSBooleanValue val) {
-                toMatch = val.getValue() ? "1" : "0";
-                toMatchAlt = val.getValue() ? "true" : "false";
-            } else if (object instanceof XSInteger xs && xs.getValue() instanceof Integer val) {
-                toMatch = val.toString();
+            } else if (object instanceof XSBoolean xs) {
+                final XSBooleanValue val = xs.getValue();
+                if (val != null) {
+                    toMatch = val.getValue() ? "1" : "0";
+                    toMatchAlt = val.getValue() ? "true" : "false";
+                }
+            } else if (object instanceof XSInteger xs) {
+                final Integer val = xs.getValue();
+                if (val != null) {
+                    toMatch = val.toString();
+                }
             } else if (object instanceof XSDateTime) {
                 final Instant dt = ((XSDateTime) object).getValue();
                 if (dt != null) {
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/InboundMessageSignedPredicate.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/InboundMessageSignedPredicate.java
index c2169ddb0..73c5fcbfd 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/InboundMessageSignedPredicate.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/InboundMessageSignedPredicate.java
@@ -47,8 +47,11 @@ public class InboundMessageSignedPredicate implements Predicate<ProfileRequestCo
     /** {@inheritDoc} */
     public boolean test(@Nullable final ProfileRequestContext input) {
 
-        if (input != null && input.getInboundMessageContext() instanceof MessageContext mc) {
-            return SAMLBindingSupport.isMessageSigned(mc, presenceSatisfies);
+        if (input != null) {
+            final MessageContext mc = input.getInboundMessageContext();
+            if (mc != null) {
+                return SAMLBindingSupport.isMessageSigned(mc, presenceSatisfies);
+            }
         }
         
         return false;
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/MetadataNameIdentifierFormatStrategy.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/MetadataNameIdentifierFormatStrategy.java
index 053600fef..ae960999d 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/MetadataNameIdentifierFormatStrategy.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/MetadataNameIdentifierFormatStrategy.java
@@ -94,8 +94,9 @@ public class MetadataNameIdentifierFormatStrategy implements Function<ProfileReq
         /** {@inheritDoc} */
         @Override
         @Nullable public SSODescriptor apply(@Nullable final ProfileRequestContext input) {
-            if (input != null && input.getInboundMessageContext() instanceof MessageContext mc) {
-                final SAMLPeerEntityContext peerCtx = mc.getSubcontext(SAMLPeerEntityContext.class);
+            if (input != null) {
+                final MessageContext mc = input.getInboundMessageContext();
+                final SAMLPeerEntityContext peerCtx = mc != null ? mc.getSubcontext(SAMLPeerEntityContext.class) : null;
                 if (peerCtx != null) {
                     final SAMLMetadataContext mdCtx = peerCtx.getSubcontext(SAMLMetadataContext.class);
                     if (mdCtx != null && mdCtx.getRoleDescriptor() != null
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/common/SAML2Support.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/common/SAML2Support.java
index d76b74a32..a77a97b71 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/common/SAML2Support.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/common/SAML2Support.java
@@ -131,9 +131,10 @@ public final class SAML2Support {
             @Nonnull final Instant now) {
         
         Instant earliestExpiration = candidateTime;
+        final Duration cacheDuration = cacheableObject.getCacheDuration();
 
-        if (cacheableObject.getCacheDuration() instanceof Duration dur && !dur.isNegative()) {
-            final Instant elementExpirationTime = now.plus(dur);
+        if (cacheDuration != null && !cacheDuration.isNegative()) {
+            final Instant elementExpirationTime = now.plus(cacheDuration);
             if (earliestExpiration == null) {
                 earliestExpiration = elementExpirationTime;
             } else {
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/encryption/Encrypter.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/encryption/Encrypter.java
index f2991a782..9b22640f1 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/encryption/Encrypter.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/encryption/Encrypter.java
@@ -373,7 +373,8 @@ public class Encrypter extends org.opensaml.xmlsec.encryption.support.Encrypter
         }
 
         final EncryptedData encryptedData = encryptElement(xmlObject, encryptionKey, encryptionAlgorithmURI, false);
-        if (encParams.getKeyInfoGenerator() instanceof KeyInfoGenerator generator) {
+        final KeyInfoGenerator generator = encParams.getKeyInfoGenerator();
+        if (generator != null) {
             log.debug("Dynamically generating KeyInfo from Credential for EncryptedData using generator: {}", generator
                     .getClass().getName());
             try {
@@ -451,7 +452,8 @@ public class Encrypter extends org.opensaml.xmlsec.encryption.support.Encrypter
 
         log.debug("Placing EncryptedKey elements inline inside EncryptedData");
 
-        if (encData.getKeyInfo() instanceof KeyInfo keyInfo) {
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        if (keyInfo != null) {
             keyInfo.getEncryptedKeys().addAll(encKeys);
         }
         encElement.setEncryptedData(encData);
@@ -503,7 +505,8 @@ public class Encrypter extends org.opensaml.xmlsec.encryption.support.Encrypter
     protected void linkSinglePeerKey(final EncryptedData encData, final EncryptedKey encKey) {
         log.debug("Linking single peer EncryptedKey with RetrievalMethod and DataReference");
         
-        if (encData.getKeyInfo() instanceof KeyInfo keyInfo) {
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        if (keyInfo != null) {
             // Forward reference from EncryptedData to the EncryptedKey
             final RetrievalMethod rm = retrievalMethodBuilder.buildObject();
             rm.setURI("#" + encKey.getID());
@@ -512,7 +515,8 @@ public class Encrypter extends org.opensaml.xmlsec.encryption.support.Encrypter
         }
 
         // Back reference from the EncryptedKey to the EncryptedData
-        if (encKey.getReferenceList() instanceof ReferenceList refList) {
+        final ReferenceList refList = encKey.getReferenceList();
+        if (refList != null) {
             final DataReference dr = dataReferenceBuilder.buildObject();
             dr.setURI("#" + encData.getID());
             refList.getDataReferences().add(dr);
@@ -529,7 +533,8 @@ public class Encrypter extends org.opensaml.xmlsec.encryption.support.Encrypter
         log.debug("Linking multiple peer EncryptedKeys with CarriedKeyName and DataReference");
         // Get the name of the data encryption key
         final List<KeyName> dataEncKeyNames;
-        if (encData.getKeyInfo() instanceof KeyInfo keyInfo) {
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        if (keyInfo != null) {
             dataEncKeyNames = keyInfo.getKeyNames();
         } else {
             dataEncKeyNames = CollectionSupport.emptyList();
@@ -563,7 +568,8 @@ public class Encrypter extends org.opensaml.xmlsec.encryption.support.Encrypter
             carriedName.setValue(carriedKeyNameValue);
 
             // Back reference from the EncryptedKeys to the EncryptedData
-            if (encKey.getReferenceList() instanceof ReferenceList refList) {
+            final ReferenceList refList = encKey.getReferenceList();
+            if (refList != null) {
                 final DataReference dr = dataReferenceBuilder.buildObject();
                 dr.setURI("#" + encData.getID());
                 refList.getDataReferences().add(dr);
diff --git a/opensaml-soap-api/src/main/java/org/opensaml/soap/client/messaging/SOAPClientDestinationURILookup.java b/opensaml-soap-api/src/main/java/org/opensaml/soap/client/messaging/SOAPClientDestinationURILookup.java
index 34f19f9bb..593c891af 100644
--- a/opensaml-soap-api/src/main/java/org/opensaml/soap/client/messaging/SOAPClientDestinationURILookup.java
+++ b/opensaml-soap-api/src/main/java/org/opensaml/soap/client/messaging/SOAPClientDestinationURILookup.java
@@ -34,20 +34,14 @@ public class SOAPClientDestinationURILookup implements Function<MessageContext,
 
     /** {@inheritDoc} */
     @Nullable public String apply(@Nullable final MessageContext messageContext) {
-        if (messageContext == null) {
-            return null;
+        if (messageContext != null && messageContext.getParent() instanceof InOutOperationContext inout) {
+            final SOAPClientContext soap = inout.getSubcontext(SOAPClientContext.class);
+            if (soap != null) {
+                return soap.getDestinationURI();
+            }
         }
         
-        if (!(messageContext.getParent() instanceof InOutOperationContext)) {
-            return null;
-        }
-        
-        final InOutOperationContext opContext = (InOutOperationContext) messageContext.getParent();
-        
-        if (opContext.getSubcontext(SOAPClientContext.class) == null) {
-            return null;
-        }
-        return opContext.getSubcontext(SOAPClientContext.class).getDestinationURI();
+        return null;
     }
 
 }
\ No newline at end of file
diff --git a/opensaml-soap-api/src/main/java/org/opensaml/soap/client/messaging/SOAPClientPipelineNameMappingFunction.java b/opensaml-soap-api/src/main/java/org/opensaml/soap/client/messaging/SOAPClientPipelineNameMappingFunction.java
index c2d5aee77..8e153b2d0 100644
--- a/opensaml-soap-api/src/main/java/org/opensaml/soap/client/messaging/SOAPClientPipelineNameMappingFunction.java
+++ b/opensaml-soap-api/src/main/java/org/opensaml/soap/client/messaging/SOAPClientPipelineNameMappingFunction.java
@@ -30,10 +30,11 @@ import org.opensaml.messaging.context.navigate.ContextDataLookupFunction;
 import org.opensaml.messaging.context.navigate.RecursiveTypedParentContextLookup;
 import org.opensaml.soap.client.SOAPClientContext;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
 
 /**
  * Function implementation which resolves a delegate function based on the 
@@ -45,7 +46,7 @@ import net.shibboleth.shared.logic.Constraint;
 public class SOAPClientPipelineNameMappingFunction<T> implements Function<MessageContext, T> {
     
     /** Logger. */
-    private Logger log = LoggerFactory.getLogger(SOAPClientPipelineNameMappingFunction.class);
+    @Nonnull private Logger log = LoggerFactory.getLogger(SOAPClientPipelineNameMappingFunction.class);
     
     /** Lookup strategy for the SOAP client context. */
     @Nonnull private Function<MessageContext, SOAPClientContext> soapClientContextLookup;
@@ -74,7 +75,7 @@ public class SOAPClientPipelineNameMappingFunction<T> implements Function<Messag
             @Nullable @ParameterName(name="lookupStrategy") 
                 final ContextDataLookupFunction<MessageContext, SOAPClientContext> lookupStrategy) {
         
-        delegateMap = Map.copyOf(Constraint.isNotNull(mappings, "Delegate mappings may not be null"));
+        delegateMap = CollectionSupport.copyToMap(Constraint.isNotNull(mappings, "Delegate mappings may not be null"));
         
         if (lookupStrategy != null) {
             soapClientContextLookup = lookupStrategy;
diff --git a/opensaml-soap-api/src/main/java/org/opensaml/soap/client/messaging/SOAPClientPipelineNameMappingPredicate.java b/opensaml-soap-api/src/main/java/org/opensaml/soap/client/messaging/SOAPClientPipelineNameMappingPredicate.java
index f800836ff..41181052c 100644
--- a/opensaml-soap-api/src/main/java/org/opensaml/soap/client/messaging/SOAPClientPipelineNameMappingPredicate.java
+++ b/opensaml-soap-api/src/main/java/org/opensaml/soap/client/messaging/SOAPClientPipelineNameMappingPredicate.java
@@ -31,10 +31,11 @@ import org.opensaml.messaging.context.navigate.ContextDataLookupFunction;
 import org.opensaml.messaging.context.navigate.RecursiveTypedParentContextLookup;
 import org.opensaml.soap.client.SOAPClientContext;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
 
 /**
  * Predicate implementation which resolves a delegate predicate based on the 
@@ -44,7 +45,7 @@ import net.shibboleth.shared.logic.Constraint;
 public class SOAPClientPipelineNameMappingPredicate implements Predicate<MessageContext> {
     
     /** Logger. */
-    private Logger log = LoggerFactory.getLogger(SOAPClientPipelineNameMappingPredicate.class);
+    @Nonnull private Logger log = LoggerFactory.getLogger(SOAPClientPipelineNameMappingPredicate.class);
     
     /** Lookup strategy for the SOAP client context. */
     @Nonnull private Function<MessageContext, SOAPClientContext> soapClientContextLookup;
@@ -73,7 +74,7 @@ public class SOAPClientPipelineNameMappingPredicate implements Predicate<Message
             @Nullable @ParameterName(name="lookupStrategy") 
                 final ContextDataLookupFunction<MessageContext, SOAPClientContext> lookupStrategy) {
         
-        delegateMap = Map.copyOf(Constraint.isNotNull(mappings, "Delegate mappings may not be null"));
+        delegateMap = CollectionSupport.copyToMap(Constraint.isNotNull(mappings, "Delegate mappings may not be null"));
         
         if (lookupStrategy != null) {
             soapClientContextLookup = lookupStrategy;
diff --git a/opensaml-soap-api/src/main/java/org/opensaml/soap/common/AbstractExtensibleSOAPObject.java b/opensaml-soap-api/src/main/java/org/opensaml/soap/common/AbstractExtensibleSOAPObject.java
index 6cdc511a5..d7873435c 100644
--- a/opensaml-soap-api/src/main/java/org/opensaml/soap/common/AbstractExtensibleSOAPObject.java
+++ b/opensaml-soap-api/src/main/java/org/opensaml/soap/common/AbstractExtensibleSOAPObject.java
@@ -39,10 +39,10 @@ public abstract class AbstractExtensibleSOAPObject extends AbstractXMLObject imp
         AttributeExtensibleXMLObject, ElementExtensibleXMLObject {
 
     /** "Any" type children. */
-    private IndexedXMLObjectChildrenList<XMLObject> unknownXMLObjects;
+    @Nonnull private final IndexedXMLObjectChildrenList<XMLObject> unknownXMLObjects;
 
     /** Attributes of the proxied Element. */
-    private AttributeMap attributes;
+    @Nonnull private final AttributeMap attributes;
 
     /**
      * Constructor.
@@ -73,7 +73,7 @@ public abstract class AbstractExtensibleSOAPObject extends AbstractXMLObject imp
     }
     
     /** {@inheritDoc} */
-    @Nonnull public List<XMLObject> getUnknownXMLObjects(final QName typeOrName) {
+    @Nonnull public List<XMLObject> getUnknownXMLObjects(@Nonnull final QName typeOrName) {
         return (List<XMLObject>) unknownXMLObjects.subList(typeOrName);
     }
 
@@ -81,4 +81,5 @@ public abstract class AbstractExtensibleSOAPObject extends AbstractXMLObject imp
     @Nonnull public AttributeMap getUnknownAttributes() {
         return attributes;
     }
+
 }
\ No newline at end of file
diff --git a/opensaml-soap-api/src/main/java/org/opensaml/soap/messaging/SOAPMessagingSupport.java b/opensaml-soap-api/src/main/java/org/opensaml/soap/messaging/SOAPMessagingSupport.java
index 56cfe2fad..99f4f7052 100644
--- a/opensaml-soap-api/src/main/java/org/opensaml/soap/messaging/SOAPMessagingSupport.java
+++ b/opensaml-soap-api/src/main/java/org/opensaml/soap/messaging/SOAPMessagingSupport.java
@@ -19,7 +19,6 @@ 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;
 import java.util.Set;
@@ -28,6 +27,7 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.collection.LazyList;
 import net.shibboleth.shared.logic.Constraint;
 
@@ -70,12 +70,42 @@ public final class SOAPMessagingSupport {
      * @param autoCreate whether to auto-create the context if it does not exist
      * 
      * @return the current SOAP 1.1 context. May be null if autoCreate=false, otherwise will be non-null
+     * 
+     * @deprecated
      */
+    @Deprecated(since="5.0.0", forRemoval=true)
     @Nullable public static SOAP11Context getSOAP11Context(@Nonnull final MessageContext messageContext,
             final boolean autoCreate) {
         Constraint.isNotNull(messageContext, "Message context cannot be null");
         return messageContext.getSubcontext(SOAP11Context.class, autoCreate);
     }
+    
+    /**
+     * Get the current {@link SOAP11Context} for the given {@link MessageContext}. 
+     * 
+     * @param messageContext the current message context
+     * 
+     * @return the current SOAP 1.1 context or null
+     */
+    @Nullable public static SOAP11Context getSOAP11Context(@Nonnull final MessageContext messageContext) {
+        Constraint.isNotNull(messageContext, "Message context cannot be null");
+        return messageContext.getSubcontext(SOAP11Context.class);
+    }
+
+    /**
+     * Get the current {@link SOAP11Context} for the given {@link MessageContext}, or create one if
+     * necessary. 
+     * 
+     * @param messageContext the current message context
+     * 
+     * @return the current SOAP 1.1 context.
+     * 
+     * @since 5.0.0
+     */
+    @Nonnull public static SOAP11Context ensureSOAP11Context(@Nonnull final MessageContext messageContext) {
+        Constraint.isNotNull(messageContext, "Message context cannot be null");
+        return messageContext.ensureSubcontext(SOAP11Context.class);
+    }
 
     /**
      * Register a header as understood.
@@ -297,15 +327,15 @@ public final class SOAPMessagingSupport {
             @Nullable final Set<String> targetNodes, final boolean isFinalDestination) {
         Constraint.isNotNull(messageContext, "Message context cannot be null");
         
-        final SOAP11Context soap11 = getSOAP11Context(messageContext, false);
+        final SOAP11Context soap11 = getSOAP11Context(messageContext);
         
         // SOAP 1.1 Envelope
-        if (soap11 != null && soap11.getEnvelope() != null) {
-            return getSOAP11HeaderBlock(soap11.getEnvelope(), headerName, targetNodes, isFinalDestination);
+        if (soap11 != null && soap11.getEnvelope() instanceof Envelope env) {
+            return getSOAP11HeaderBlock(env, headerName, targetNodes, isFinalDestination);
         }
         
         //TODO SOAP 1.2 support when object providers are implemented
-        return Collections.emptyList();
+        return CollectionSupport.emptyList();
     }
     
     /**
@@ -326,7 +356,7 @@ public final class SOAPMessagingSupport {
         
         final Header envelopeHeader = envelope.getHeader();
         if (envelopeHeader == null) {
-            return Collections.emptyList();
+            return CollectionSupport.emptyList();
         }
         
         final LazyList<XMLObject> headers = new LazyList<>();
@@ -398,7 +428,7 @@ public final class SOAPMessagingSupport {
         
         Header envelopeHeader = envelope.getHeader();
         if (envelopeHeader == null) {
-            envelopeHeader = (Header) XMLObjectProviderRegistrySupport.getBuilderFactory().getBuilder(
+            envelopeHeader = (Header) XMLObjectProviderRegistrySupport.getBuilderFactory().ensureBuilder(
                     Header.DEFAULT_ELEMENT_NAME).buildObject(Header.DEFAULT_ELEMENT_NAME);
             envelope.setHeader(envelopeHeader);
         }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list