[java-idp-testbed] branch main updated: Adjust some test class usage, and inline all the BOMs.

Scott Cantor cantor.2 at osu.edu
Wed Nov 1 18:25:34 UTC 2023


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

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

View the commit online:
http://git.shibboleth.net/view/?p=java-idp-testbed.git;a=commit;h=1a5b30f48e983c68378a4160d462dc0192b24d77

The following commit(s) were added to refs/heads/main by this push:
     new 1a5b30f  Adjust some test class usage, and inline all the BOMs.
1a5b30f is described below

commit 1a5b30f48e983c68378a4160d462dc0192b24d77
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Nov 1 14:25:31 2023 -0400

    Adjust some test class usage, and inline all the BOMs.
---
 pom.xml                                  | 381 ++++++++++++++++++++++++++-----
 src/main/java/sp/BaseSAMLController.java |   1 -
 src/main/java/sp/SAML2Controller.java    | 273 ++++++++++++----------
 3 files changed, 481 insertions(+), 174 deletions(-)

diff --git a/pom.xml b/pom.xml
index 0c093f0..9f5caca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,12 +15,17 @@
 
     <properties>
         <idp.groupId>net.shibboleth.idp</idp.groupId>
-        <idp.version>5.0.1-SNAPSHOT</idp.version>
-        <shib-attribute.version>5.0.1-SNAPSHOT</shib-attribute.version>
-        <shib-metadata.version>5.0.1-SNAPSHOT</shib-metadata.version>
+        <idp.version>5.1.0-SNAPSHOT</idp.version>
+        <shib-profile.groupId>net.shibboleth</shib-profile.groupId>
+        <shib-profile.version>5.0.0</shib-profile.version>
+        <shib-attribute.groupId>net.shibboleth</shib-attribute.groupId>
+        <shib-attribute.version>5.0.0</shib-attribute.version>
+        <shib-metadata.groupId>net.shibboleth</shib-metadata.groupId>
+        <shib-metadata.version>5.0.0</shib-metadata.version>
         <opensaml.groupId>org.opensaml</opensaml.groupId>
-        <opensaml.version>5.0.1-SNAPSHOT</opensaml.version>
-        <shib-shared.version>9.0.1-SNAPSHOT</shib-shared.version>
+        <opensaml.version>5.1.0-SNAPSHOT</opensaml.version>
+        <shib-shared.groupId>net.shibboleth</shib-shared.groupId>
+        <shib-shared.version>9.0.0</shib-shared.version>
         <cas-client.version>3.6.4</cas-client.version>
         <oidc-commons.version>3.0.1-SNAPSHOT</oidc-commons.version>
         <idp-jetty-base.version>11.0.0-SNAPSHOT</idp-jetty-base.version>
@@ -31,46 +36,323 @@
      </properties>
 
     <dependencies>
-        <!-- Compile scope -->
+        <!-- Compile Dependencies -->
         <dependency>
             <groupId>${idp.groupId}</groupId>
-            <artifactId>idp-cas-api</artifactId>
+            <artifactId>idp-core</artifactId>
             <version>${idp.version}</version>
         </dependency>
         
         <dependency>
             <groupId>${idp.groupId}</groupId>
-            <artifactId>idp-conf-impl</artifactId>
+            <artifactId>idp-admin-api</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-authn-api</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-cas-api</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-profile-api</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-saml-api</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-session-api</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-consent-api</artifactId>
             <version>${idp.version}</version>
-            <type>test-jar</type>
         </dependency>
         
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-admin-impl</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-authn-impl</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-cas-impl</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-consent-impl</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-profile-impl</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-saml-impl</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-session-impl</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-schema</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-spring</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-ui</artifactId>
+            <version>${idp.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${shib-profile.groupId}</groupId>
+            <artifactId>shib-profile-api</artifactId>
+            <version>${shib-profile.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-profile.groupId}</groupId>
+            <artifactId>shib-profile-impl</artifactId>
+            <version>${shib-profile.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-profile.groupId}</groupId>
+            <artifactId>shib-saml-profile-api</artifactId>
+            <version>${shib-profile.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${shib-attribute.groupId}</groupId>
+            <artifactId>shib-attribute-api</artifactId>
+            <version>${shib-attribute.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-attribute.groupId}</groupId>
+            <artifactId>shib-attribute-impl</artifactId>
+            <version>${shib-attribute.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-attribute.groupId}</groupId>
+            <artifactId>shib-saml-attribute-api</artifactId>
+            <version>${shib-attribute.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-attribute.groupId}</groupId>
+            <artifactId>shib-saml-attribute-impl</artifactId>
+            <version>${shib-attribute.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-attribute.groupId}</groupId>
+            <artifactId>shib-attribute-filter-api</artifactId>
+            <version>${shib-attribute.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-attribute.groupId}</groupId>
+            <artifactId>shib-attribute-filter-impl</artifactId>
+            <version>${shib-attribute.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-attribute.groupId}</groupId>
+            <artifactId>shib-attribute-filter-spring</artifactId>
+            <version>${shib-attribute.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-attribute.groupId}</groupId>
+            <artifactId>shib-attribute-resolver-api</artifactId>
+            <version>${shib-attribute.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-attribute.groupId}</groupId>
+            <artifactId>shib-attribute-resolver-impl</artifactId>
+            <version>${shib-attribute.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-attribute.groupId}</groupId>
+            <artifactId>shib-attribute-resolver-spring</artifactId>
+            <version>${shib-attribute.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${shib-metadata.groupId}</groupId>
+            <artifactId>shib-metadata-api</artifactId>
+            <version>${shib-metadata.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-metadata.groupId}</groupId>
+            <artifactId>shib-metadata-impl</artifactId>
+            <version>${shib-metadata.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-metadata.groupId}</groupId>
+            <artifactId>shib-metadata-spring</artifactId>
+            <version>${shib-metadata.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-core-api</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-core-impl</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-messaging-api</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-messaging-impl</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-profile-api</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-profile-impl</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-saml-api</artifactId>
             <version>${opensaml.version}</version>
         </dependency>
-
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-saml-impl</artifactId>
             <version>${opensaml.version}</version>
         </dependency>
-
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-security-api</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-security-impl</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-soap-api</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-soap-impl</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-spring</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-storage-api</artifactId>
             <version>${opensaml.version}</version>
         </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-storage-impl</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-xmlsec-api</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-xmlsec-impl</artifactId>
+            <version>${opensaml.version}</version>
+        </dependency>
 
         <dependency>
-            <groupId>org.ldaptive</groupId>
-            <artifactId>ldaptive</artifactId>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-cli</artifactId>
+            <version>${shib-shared.version}</version>
         </dependency>
         <dependency>
-            <groupId>com.unboundid</groupId>
-            <artifactId>unboundid-ldapsdk</artifactId>
-            <scope>runtime</scope>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-networking</artifactId>
+            <version>${shib-shared.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-networking-spring</artifactId>
+            <version>${shib-shared.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-security</artifactId>
+            <version>${shib-shared.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-security-spring</artifactId>
+            <version>${shib-shared.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-service</artifactId>
+            <version>${shib-shared.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-spring</artifactId>
+            <version>${shib-shared.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-support</artifactId>
+            <version>${shib-shared.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-velocity</artifactId>
+            <version>${shib-shared.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-velocity-spring</artifactId>
+            <version>${shib-shared.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.ldaptive</groupId>
+            <artifactId>ldaptive</artifactId>
         </dependency>
 
         <dependency>
@@ -104,6 +386,14 @@
         </dependency>
 
         <!-- Provided scope -->
+        <dependency>
+            <groupId>net.shibboleth.idp</groupId>
+            <artifactId>idp-jetty-base</artifactId>
+            <version>${idp-jetty-base.version}</version>
+            <scope>provided</scope>
+            <type>tar.gz</type>
+        </dependency>
+        
         <dependency>
             <groupId>jakarta.json</groupId>
             <artifactId>jakarta.json-api</artifactId>
@@ -119,23 +409,31 @@
             <artifactId>jakarta.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
+
+        <!-- Don't know why we have to directly include this. -->
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
-            <artifactId>idp-jetty-base</artifactId>
-            <version>${idp-jetty-base.version}</version>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>apache-jsp</artifactId>
+            <version>${jetty.version}</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!-- Don't know why we have to directly include this. -->
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>apache-jstl</artifactId>
+            <version>${jetty-jstl.version}</version>
             <scope>provided</scope>
-            <type>tar.gz</type>
         </dependency>
 
         <!-- Runtime scope -->
-        <!-- Addresses most IdP and lower dependencies. -->
         <dependency>
             <groupId>${idp.groupId}</groupId>
             <artifactId>idp-conf-impl</artifactId>
             <version>${idp.version}</version>
+            <type>test-jar</type>
             <scope>runtime</scope>
         </dependency>
-
         <dependency>
             <groupId>${idp.groupId}</groupId>
             <artifactId>idp-war</artifactId>
@@ -145,32 +443,10 @@
         </dependency>
 
         <dependency>
-            <groupId>net.shibboleth</groupId>
-            <artifactId>shib-velocity-spring</artifactId>
-            <version>${shib-shared.version}</version>
-            <scope>runtime</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>net.shibboleth</groupId>
+            <groupId>${shib-shared.groupId}</groupId>
             <artifactId>shib-testing</artifactId>
             <version>${shib-shared.version}</version>
-        </dependency>
-
-        <!-- Don't know why we have to directly include this. -->
-        <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>apache-jsp</artifactId>
-            <version>${jetty.version}</version>
-            <scope>provided</scope>
-        </dependency>
-
-        <!-- Don't know why we have to directly include this. -->
-        <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>apache-jstl</artifactId>
-            <version>${jetty-jstl.version}</version>
-            <scope>provided</scope>
+            <scope>runtime</scope>
         </dependency>
 
         <dependency>
@@ -201,6 +477,12 @@
             <scope>runtime</scope>
         </dependency>
 
+        <dependency>
+            <groupId>com.unboundid</groupId>
+            <artifactId>unboundid-ldapsdk</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+
         <dependency>
             <groupId>org.hsqldb</groupId>
             <artifactId>hsqldb</artifactId>
@@ -223,13 +505,6 @@
             <scope>runtime</scope>
         </dependency>
 
-        <dependency>
-            <groupId>net.shibboleth.idp.plugin.authn</groupId>
-            <artifactId>idp-plugin-totp-impl</artifactId>
-            <version>2.0.1-SNAPSHOT</version>
-            <scope>runtime</scope>
-        </dependency>
-
         <!-- For OIDC plugin testing. -->
         <!--
         <dependency>
diff --git a/src/main/java/sp/BaseSAMLController.java b/src/main/java/sp/BaseSAMLController.java
index 8538087..5e69d00 100644
--- a/src/main/java/sp/BaseSAMLController.java
+++ b/src/main/java/sp/BaseSAMLController.java
@@ -36,7 +36,6 @@ import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.primitive.NonnullSupplier;
 import net.shibboleth.shared.security.IdentifierGenerationStrategy;
 import net.shibboleth.shared.security.IdentifierGenerationStrategy.ProviderType;
-import net.shibboleth.shared.testing.ConstantSupplier;
 import net.shibboleth.shared.xml.ParserPool;
 
 public abstract class BaseSAMLController {
diff --git a/src/main/java/sp/SAML2Controller.java b/src/main/java/sp/SAML2Controller.java
index 60fac19..e22e522 100644
--- a/src/main/java/sp/SAML2Controller.java
+++ b/src/main/java/sp/SAML2Controller.java
@@ -112,10 +112,10 @@ import jakarta.servlet.http.HttpServletResponse;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.net.URLBuilder;
+import net.shibboleth.shared.primitive.NonnullSupplier;
 import net.shibboleth.shared.primitive.StringSupport;
 import net.shibboleth.shared.security.IdentifierGenerationStrategy;
 import net.shibboleth.shared.security.IdentifierGenerationStrategy.ProviderType;
-import net.shibboleth.shared.testing.ConstantSupplier;
 import net.shibboleth.shared.xml.SerializeSupport;
 import net.shibboleth.shared.xml.XMLParserException;
 
@@ -224,8 +224,10 @@ public class SAML2Controller extends BaseSAMLController {
     }
     
     @RequestMapping(value="/InitSLO/Redirect", method=RequestMethod.GET)
-    public void initSLORequestRedirect(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
-        final LogoutRequest logoutRequest = buildLogoutRequest(servletRequest, servletRequest.getParameter("transientID"));
+    public void initSLORequestRedirect(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+            throws Exception {
+        final LogoutRequest logoutRequest =
+                buildLogoutRequest(servletRequest, servletRequest.getParameter("transientID"));
         logoutRequest.setDestination(getDestinationRedirect(servletRequest, "SLO"));
         final Endpoint endpoint = buildIdpSsoEndpoint(SAMLConstants.SAML2_REDIRECT_BINDING_URI, logoutRequest.getDestination());
         final String spEntityID = getSpEntityId(servletRequest);
@@ -235,15 +237,16 @@ public class SAML2Controller extends BaseSAMLController {
     }
 
     @RequestMapping(value="/InitSLO/Async", method=RequestMethod.GET)
-    public void initSLORequestAsync(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public void initSLORequestAsync(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+            throws Exception {
         final LogoutRequest logoutRequest = buildLogoutRequest(servletRequest, servletRequest.getParameter("transientID"));
         logoutRequest.setDestination(getDestinationRedirect(servletRequest, "SLO"));
         
-        final Extensions exts = (Extensions) builderFactory.getBuilder(Extensions.DEFAULT_ELEMENT_NAME)
+        final Extensions exts = (Extensions) builderFactory.ensureBuilder(Extensions.DEFAULT_ELEMENT_NAME)
                 .buildObject(Extensions.DEFAULT_ELEMENT_NAME);
         logoutRequest.setExtensions(exts);
         exts.getUnknownXMLObjects().add(
-                builderFactory.getBuilder(Asynchronous.DEFAULT_ELEMENT_NAME).buildObject(Asynchronous.DEFAULT_ELEMENT_NAME));
+                builderFactory.ensureBuilder(Asynchronous.DEFAULT_ELEMENT_NAME).buildObject(Asynchronous.DEFAULT_ELEMENT_NAME));
         
         final Endpoint endpoint = buildIdpSloEndpoint(SAMLConstants.SAML2_REDIRECT_BINDING_URI, logoutRequest.getDestination());
         final String spEntityID = getSpEntityId(servletRequest);
@@ -253,7 +256,8 @@ public class SAML2Controller extends BaseSAMLController {
     }
     
     @RequestMapping(value="/InitSLO/POST", method=RequestMethod.GET)
-    public void initSLORequestPost(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public void initSLORequestPost(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+            throws Exception {
         final LogoutRequest logoutRequest = buildLogoutRequest(servletRequest, servletRequest.getParameter("transientID"));
         logoutRequest.setDestination(getDestinationPost(servletRequest, "SLO"));
         final Endpoint endpoint = buildIdpSloEndpoint(SAMLConstants.SAML2_POST_BINDING_URI, logoutRequest.getDestination());
@@ -265,7 +269,8 @@ public class SAML2Controller extends BaseSAMLController {
     }
 
     @RequestMapping(value="/FinishSLO/Redirect", method=RequestMethod.GET)
-    public void finishSLOResponseRedirect(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public void finishSLOResponseRedirect(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+            throws Exception {
         final LogoutResponse logoutResponse = buildLogoutResponse(servletRequest);
         logoutResponse.setDestination(getDestinationRedirect(servletRequest, "SLO"));
         final Endpoint endpoint = buildIdpSloEndpoint(SAMLConstants.SAML2_REDIRECT_BINDING_URI, logoutResponse.getDestination());
@@ -276,19 +281,23 @@ public class SAML2Controller extends BaseSAMLController {
     }
 
     @RequestMapping(value="/FinishSLO/POST", method=RequestMethod.GET)
-    public void finishSLOResponsePost(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public void finishSLOResponsePost(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+            throws Exception {
         final LogoutResponse logoutResponse = buildLogoutResponse(servletRequest);
         logoutResponse.setDestination(getDestinationPost(servletRequest, "SLO"));
-        final Endpoint endpoint = buildIdpSloEndpoint(SAMLConstants.SAML2_POST_BINDING_URI, logoutResponse.getDestination());
+        final Endpoint endpoint = buildIdpSloEndpoint(SAMLConstants.SAML2_POST_BINDING_URI,
+                logoutResponse.getDestination());
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
-        final MessageContext messageContext = buildOutboundMessageContext(logoutResponse, endpoint, spEntityID, idpEntityID);
+        final MessageContext messageContext =
+                buildOutboundMessageContext(logoutResponse, endpoint, spEntityID, idpEntityID);
         SAMLMessageSecuritySupport.signMessage(messageContext);
         encodeOutboundMessageContextPost(messageContext, servletResponse);
     }
 
     @RequestMapping(value="/FinishSLO/SOAP", method=RequestMethod.GET)
-    public void finishSLOResponseSOAP(HttpServletRequest servletRequest, HttpServletResponse servletResponse, final String id) throws Exception {
+    public void finishSLOResponseSOAP(HttpServletRequest servletRequest, HttpServletResponse servletResponse,
+            final String id) throws Exception {
         final LogoutResponse logoutResponse = buildLogoutResponse(servletRequest);
         logoutResponse.setInResponseTo(id);
         final String spEntityID = getSpEntityId(servletRequest);
@@ -299,7 +308,8 @@ public class SAML2Controller extends BaseSAMLController {
     }
     
 	@RequestMapping(value="/POST/ACS", method=RequestMethod.POST)
-	public ResponseEntity<String> handleSSOResponsePOST(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+	public ResponseEntity<String> handleSSOResponsePOST(HttpServletRequest servletRequest,
+	        HttpServletResponse servletResponse) throws Exception {
 		final MessageContext messageContext = decodeInboundMessageContextPost(servletRequest);
 		
 		if (!(messageContext.getMessage() instanceof Response)) {
@@ -321,7 +331,8 @@ public class SAML2Controller extends BaseSAMLController {
 	}
 
     @RequestMapping(value="/Redirect/SLO", method=RequestMethod.GET)
-    public ResponseEntity<String> handleSLOResponseRedirect(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public ResponseEntity<String> handleSLOResponseRedirect(final HttpServletRequest servletRequest,
+            final HttpServletResponse servletResponse) throws Exception {
         final MessageContext messageContext = decodeInboundMessageContextRedirect(servletRequest);
         
         if (messageContext.getMessage() instanceof LogoutRequest) {
@@ -343,7 +354,8 @@ public class SAML2Controller extends BaseSAMLController {
     }
 	
     @RequestMapping(value="/POST/SLO", method=RequestMethod.POST)
-    public ResponseEntity<String> handleSLOResponsePOST(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public ResponseEntity<String> handleSLOResponsePOST(final HttpServletRequest servletRequest,
+            final HttpServletResponse servletResponse) throws Exception {
         final MessageContext messageContext = decodeInboundMessageContextPost(servletRequest);
         
         if (messageContext.getMessage() instanceof LogoutRequest) {
@@ -365,12 +377,13 @@ public class SAML2Controller extends BaseSAMLController {
     }
     
     @RequestMapping(value="/SOAP/SLO", method=RequestMethod.POST)
-    public ResponseEntity<String> handleSLOResponseSOAP(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public ResponseEntity<String> handleSLOResponseSOAP(final HttpServletRequest servletRequest,
+            final HttpServletResponse servletResponse) throws Exception {
         final MessageContext messageContext = decodeInboundMessageContextSOAP(servletRequest);
         
-        if (messageContext.getMessage() instanceof LogoutRequest) {
+        if (messageContext.getMessage() instanceof LogoutRequest logreq) {
             servletRequest.setAttribute("success", "1");
-            finishSLOResponseSOAP(servletRequest, servletResponse, ((LogoutRequest) messageContext.getMessage()).getID());
+            finishSLOResponseSOAP(servletRequest, servletResponse, logreq.getID());
             return null;
         }
         
@@ -386,41 +399,51 @@ public class SAML2Controller extends BaseSAMLController {
         return new ResponseEntity<>(formattedMessage, headers, HttpStatus.OK);
     }
 
-    private MessageContext buildOutboundMessageContext(SAMLObject message, Endpoint endpoint, String spEntityId, String idpEntityId) {
+    private MessageContext buildOutboundMessageContext(final SAMLObject message, final Endpoint endpoint,
+            final String spEntityId, final String idpEntityId) {
 		final MessageContext messageContext = new MessageContext();
 		messageContext.setMessage(message);
 
-	    SAMLSelfEntityContext selfContext = messageContext.getSubcontext(SAMLSelfEntityContext.class, true);
+	    final SAMLSelfEntityContext selfContext = messageContext.ensureSubcontext(SAMLSelfEntityContext.class);
 	    selfContext.setEntityId(spEntityId);
 
-		SAMLPeerEntityContext peerContext = messageContext.getSubcontext(SAMLPeerEntityContext.class, true);
+		final SAMLPeerEntityContext peerContext = messageContext.ensureSubcontext(SAMLPeerEntityContext.class);
 		peerContext.setEntityId(idpEntityId);
 		
 		if (endpoint != null) {
-		    SAMLEndpointContext endpointContext = peerContext.getSubcontext(SAMLEndpointContext.class, true);
+		    final SAMLEndpointContext endpointContext = peerContext.ensureSubcontext(SAMLEndpointContext.class);
 		    endpointContext.setEndpoint(endpoint);
 		}
 		
-		SAMLArtifactContext artifactContext = messageContext.getSubcontext(SAMLArtifactContext.class, true);
+		final SAMLArtifactContext artifactContext = messageContext.ensureSubcontext(SAMLArtifactContext.class);
 		artifactContext.setSourceArtifactResolutionServiceEndpointIndex(1);
 		
-		SignatureSigningParameters signingParameters = new SignatureSigningParameters();
+		final SignatureSigningParameters signingParameters = new SignatureSigningParameters();
 		signingParameters.setSigningCredential(spCredential);
 		signingParameters.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
 		//signingParameters.setSignatureReferenceDigestMethod(SignatureConstants.ALGO_ID_DIGEST_SHA256);
-		signingParameters.setSignatureCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
-		SecurityParametersContext secParamsContext = messageContext.getSubcontext(SecurityParametersContext.class, true);
+		signingParameters.setSignatureCanonicalizationAlgorithm(
+		        SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
+		final SecurityParametersContext secParamsContext =
+		        messageContext.ensureSubcontext(SecurityParametersContext.class);
 		secParamsContext.setSignatureSigningParameters(signingParameters);
 		
 		return messageContext;
 	}
 
-    private void setupResponse(final AbstractHttpServletResponseMessageEncoder encoder, final HttpServletResponse response) {
-        encoder.setHttpServletResponseSupplier(new ConstantSupplier<>(response));
+    private void setupResponse(final AbstractHttpServletResponseMessageEncoder encoder,
+            final HttpServletResponse response) {
+        encoder.setHttpServletResponseSupplier(new NonnullSupplier<>() {
+            @Nonnull public HttpServletResponse get() {
+                // TODO Auto-generated method stub
+                return response;
+            }
+        });
     }
 
-	private void encodeOutboundMessageContextRedirect(MessageContext messageContext, HttpServletResponse servletResponse) throws Exception {
-		HTTPRedirectDeflateEncoder encoder = new HTTPRedirectDeflateEncoder();
+	private void encodeOutboundMessageContextRedirect(final MessageContext messageContext,
+	        final HttpServletResponse servletResponse) throws Exception {
+		final HTTPRedirectDeflateEncoder encoder = new HTTPRedirectDeflateEncoder();
 		try {
 		    setupResponse(encoder,servletResponse);
 			encoder.setMessageContext(messageContext);
@@ -436,8 +459,9 @@ public class SAML2Controller extends BaseSAMLController {
 		}
 	}
 	
-	private void encodeOutboundMessageContextPost(MessageContext messageContext, HttpServletResponse servletResponse) throws Exception {
-		HTTPPostEncoder encoder = new HTTPPostEncoder();
+	private void encodeOutboundMessageContextPost(final MessageContext messageContext,
+	        final HttpServletResponse servletResponse) throws Exception {
+		final HTTPPostEncoder encoder = new HTTPPostEncoder();
 		try {
 		    setupResponse(encoder,servletResponse);
 			encoder.setMessageContext(messageContext);
@@ -454,8 +478,9 @@ public class SAML2Controller extends BaseSAMLController {
 		}
 	}
 
-   private void encodeOutboundMessageContextArtifact(MessageContext messageContext, HttpServletResponse servletResponse) throws Exception {
-        HTTPArtifactEncoder encoder = new HTTPArtifactEncoder();
+   private void encodeOutboundMessageContextArtifact(final MessageContext messageContext,
+           final HttpServletResponse servletResponse) throws Exception {
+        final HTTPArtifactEncoder encoder = new HTTPArtifactEncoder();
         try {
             setupResponse(encoder,servletResponse);
             encoder.setMessageContext(messageContext);
@@ -473,8 +498,9 @@ public class SAML2Controller extends BaseSAMLController {
         }
     }
    
-   private void encodeOutboundMessageContextSOAP(MessageContext messageContext, HttpServletResponse servletResponse) throws Exception {
-       HTTPSOAP11Encoder encoder = new HTTPSOAP11Encoder();
+   private void encodeOutboundMessageContextSOAP(final MessageContext messageContext,
+           final HttpServletResponse servletResponse) throws Exception {
+       final HTTPSOAP11Encoder encoder = new HTTPSOAP11Encoder();
        try {
            setupResponse(encoder,servletResponse);
            encoder.setMessageContext(messageContext);
@@ -490,24 +516,24 @@ public class SAML2Controller extends BaseSAMLController {
        }
    }
 
-	private SingleSignOnService buildIdpSsoEndpoint(String binding, String destination) {
-		final SingleSignOnService ssoEndpoint = (SingleSignOnService) builderFactory.getBuilder(
+	private SingleSignOnService buildIdpSsoEndpoint(final String binding, final String destination) {
+		final SingleSignOnService ssoEndpoint = (SingleSignOnService) builderFactory.ensureBuilder(
 		        SingleSignOnService.DEFAULT_ELEMENT_NAME).buildObject(SingleSignOnService.DEFAULT_ELEMENT_NAME);
 		ssoEndpoint.setBinding(binding);
 		ssoEndpoint.setLocation(destination);
 		return ssoEndpoint;
 	}
 
-    private SingleLogoutService buildIdpSloEndpoint(String binding, String destination) {
-        final SingleLogoutService sloEndpoint = (SingleLogoutService) builderFactory.getBuilder(
+    private SingleLogoutService buildIdpSloEndpoint(final String binding, final String destination) {
+        final SingleLogoutService sloEndpoint = (SingleLogoutService) builderFactory.ensureBuilder(
                 SingleLogoutService.DEFAULT_ELEMENT_NAME).buildObject(SingleLogoutService.DEFAULT_ELEMENT_NAME);
         sloEndpoint.setBinding(binding);
         sloEndpoint.setLocation(destination);
         return sloEndpoint;
     }
 	
-	private AuthnRequest buildAuthnRequest(HttpServletRequest servletRequest) {
-		final AuthnRequest authnRequest = (AuthnRequest) builderFactory.getBuilder(
+	private AuthnRequest buildAuthnRequest(final HttpServletRequest servletRequest) {
+		final AuthnRequest authnRequest = (AuthnRequest) builderFactory.ensureBuilder(
 		        AuthnRequest.DEFAULT_ELEMENT_NAME).buildObject(AuthnRequest.DEFAULT_ELEMENT_NAME);
 		
 		authnRequest.setID(idGenerator.generateIdentifier());
@@ -515,12 +541,12 @@ public class SAML2Controller extends BaseSAMLController {
 		authnRequest.setAssertionConsumerServiceURL(getAcsUrl(servletRequest));
 		authnRequest.setProtocolBinding(SAMLConstants.SAML2_POST_BINDING_URI);
 		
-		final Issuer issuer = (Issuer) builderFactory.getBuilder(
+		final Issuer issuer = (Issuer) builderFactory.ensureBuilder(
 		        Issuer.DEFAULT_ELEMENT_NAME).buildObject(Issuer.DEFAULT_ELEMENT_NAME);
 		issuer.setValue(getSpEntityId(servletRequest));
 		authnRequest.setIssuer(issuer);
 		
-		final NameIDPolicy nameIDPolicy = (NameIDPolicy) builderFactory.getBuilder(
+		final NameIDPolicy nameIDPolicy = (NameIDPolicy) builderFactory.ensureBuilder(
 		        NameIDPolicy.DEFAULT_ELEMENT_NAME).buildObject(NameIDPolicy.DEFAULT_ELEMENT_NAME);
 		nameIDPolicy.setAllowCreate(true);
 		authnRequest.setNameIDPolicy(nameIDPolicy);
@@ -537,24 +563,27 @@ public class SAML2Controller extends BaseSAMLController {
 
 		param = StringSupport.trimOrNull(servletRequest.getParameter("subjectID"));
 		if (param != null) {
-	        final NameID nameID = (NameID) builderFactory.getBuilder(NameID.DEFAULT_ELEMENT_NAME).buildObject(NameID.DEFAULT_ELEMENT_NAME);
+	        final NameID nameID = (NameID) builderFactory.ensureBuilder(NameID.DEFAULT_ELEMENT_NAME).buildObject(
+	                NameID.DEFAULT_ELEMENT_NAME);
 	        nameID.setValue(param);
 	        param = StringSupport.trimOrNull(servletRequest.getParameter("subjectIDFormat"));
 	        if (param != null) {
 	            nameID.setFormat(param);
 	        }
-            final Subject subject = (Subject) builderFactory.getBuilder(Subject.DEFAULT_ELEMENT_NAME).buildObject(Subject.DEFAULT_ELEMENT_NAME);
+            final Subject subject = (Subject) builderFactory.ensureBuilder(Subject.DEFAULT_ELEMENT_NAME).buildObject(
+                    Subject.DEFAULT_ELEMENT_NAME);
 	        subject.setNameID(nameID);
             authnRequest.setSubject(subject);
 		}
 		
 		param = StringSupport.trimOrNull(servletRequest.getParameter("classRef"));
 		if (param != null) {
-            final AuthnContextClassRef ref = (AuthnContextClassRef) builderFactory.getBuilder(
+            final AuthnContextClassRef ref = (AuthnContextClassRef) builderFactory.ensureBuilder(
                     AuthnContextClassRef.DEFAULT_ELEMENT_NAME).buildObject(AuthnContextClassRef.DEFAULT_ELEMENT_NAME);
             ref.setURI(param);
-	        final RequestedAuthnContext rac = (RequestedAuthnContext) builderFactory.getBuilder(
-	                RequestedAuthnContext.DEFAULT_ELEMENT_NAME).buildObject(RequestedAuthnContext.DEFAULT_ELEMENT_NAME);
+	        final RequestedAuthnContext rac = (RequestedAuthnContext) builderFactory.ensureBuilder(
+	                RequestedAuthnContext.DEFAULT_ELEMENT_NAME).buildObject(
+	                        RequestedAuthnContext.DEFAULT_ELEMENT_NAME);
 	        rac.getAuthnContextClassRefs().add(ref);
 	        authnRequest.setRequestedAuthnContext(rac);
 		}
@@ -564,7 +593,7 @@ public class SAML2Controller extends BaseSAMLController {
 		    final String[] requesters = param.split(",");
 		    if (requesters != null && requesters.length > 0) {
 	            for (final String req : requesters) {
-	                final RequesterID requesterID = (RequesterID) builderFactory.getBuilder(
+	                final RequesterID requesterID = (RequesterID) builderFactory.ensureBuilder(
 	                        RequesterID.DEFAULT_ELEMENT_NAME).buildObject(RequesterID.DEFAULT_ELEMENT_NAME);
 	                requesterID.setURI(req);
 	                getScoping(authnRequest).getRequesterIDs().add(requesterID);
@@ -576,10 +605,10 @@ public class SAML2Controller extends BaseSAMLController {
         if (param != null) {
             final String[] idplist = param.split(",");
             if (idplist != null && idplist.length > 0) {
-                final IDPList obj = (IDPList) builderFactory.getBuilder(
+                final IDPList obj = (IDPList) builderFactory.ensureBuilder(
                         IDPList.DEFAULT_ELEMENT_NAME).buildObject(IDPList.DEFAULT_ELEMENT_NAME);
                 for (final String idp : idplist) {
-                    final IDPEntry entry = (IDPEntry) builderFactory.getBuilder(
+                    final IDPEntry entry = (IDPEntry) builderFactory.ensureBuilder(
                             IDPEntry.DEFAULT_ELEMENT_NAME).buildObject(IDPEntry.DEFAULT_ELEMENT_NAME);
                     entry.setProviderID(idp);
                     obj.getIDPEntrys().add(entry);
@@ -598,7 +627,7 @@ public class SAML2Controller extends BaseSAMLController {
 	
 	private Scoping getScoping(@Nonnull final AuthnRequest request) {
 	    if (request.getScoping() == null) {
-            final Scoping scoping = (Scoping) builderFactory.getBuilder(
+            final Scoping scoping = (Scoping) builderFactory.ensureBuilder(
                     Scoping.DEFAULT_ELEMENT_NAME).buildObject(Scoping.DEFAULT_ELEMENT_NAME);
             request.setScoping(scoping);
 	    }
@@ -606,35 +635,35 @@ public class SAML2Controller extends BaseSAMLController {
 	    return request.getScoping();
 	}
 
-    private Extensions buildRequestedAttributesExtensions()
-    {
-        final RequestedAttribute attribute = (RequestedAttribute) builderFactory.getBuilder(
+    private Extensions buildRequestedAttributesExtensions() {
+        final RequestedAttribute attribute = (RequestedAttribute) builderFactory.ensureBuilder(
                 RequestedAttribute.DEFAULT_ELEMENT_NAME).buildObject(RequestedAttribute.DEFAULT_ELEMENT_NAME);
         attribute.setFriendlyName("mail");
         attribute.setName("urn:oid:0.9.2342.19200300.100.1.3");
         attribute.setNameFormat("urn:oasis:names:tc:SAML:2.0:attrname-format:uri");
-        final RequestedAttributes attributes = (RequestedAttributes) builderFactory.getBuilder(
+        final RequestedAttributes attributes = (RequestedAttributes) builderFactory.ensureBuilder(
                 RequestedAttributes.DEFAULT_ELEMENT_NAME).buildObject(RequestedAttributes.DEFAULT_ELEMENT_NAME);
         attributes.getRequestedAttributes().add(attribute);
-        final Extensions extensions = (Extensions) builderFactory.getBuilder(
+        final Extensions extensions = (Extensions) builderFactory.ensureBuilder(
                 Extensions.DEFAULT_ELEMENT_NAME).buildObject(Extensions.DEFAULT_ELEMENT_NAME);
         extensions.getUnknownXMLObjects().add(attributes);
        return extensions;
     }
 
-    private LogoutRequest buildLogoutRequest(HttpServletRequest servletRequest, String principalName) {
-        final LogoutRequest logoutRequest = (LogoutRequest) builderFactory.getBuilder(
+    private LogoutRequest buildLogoutRequest(final HttpServletRequest servletRequest, final String principalName) {
+        final LogoutRequest logoutRequest = (LogoutRequest) builderFactory.ensureBuilder(
                 LogoutRequest.DEFAULT_ELEMENT_NAME).buildObject(LogoutRequest.DEFAULT_ELEMENT_NAME);
         
         logoutRequest.setID(idGenerator.generateIdentifier());
         logoutRequest.setIssueInstant(Instant.now());
         
-        final Issuer issuer = (Issuer) builderFactory.getBuilder(
+        final Issuer issuer = (Issuer) builderFactory.ensureBuilder(
                 Issuer.DEFAULT_ELEMENT_NAME).buildObject(Issuer.DEFAULT_ELEMENT_NAME);
         issuer.setValue(getSpEntityId(servletRequest));
         logoutRequest.setIssuer(issuer);
         
-        final NameID nameID = (NameID) builderFactory.getBuilder(NameID.DEFAULT_ELEMENT_NAME).buildObject(NameID.DEFAULT_ELEMENT_NAME);
+        final NameID nameID = (NameID) builderFactory.ensureBuilder(NameID.DEFAULT_ELEMENT_NAME).buildObject(
+                NameID.DEFAULT_ELEMENT_NAME);
         nameID.setValue(principalName);
         nameID.setFormat(NameID.TRANSIENT);
         nameID.setSPNameQualifier(getSpEntityId(servletRequest));
@@ -644,21 +673,24 @@ public class SAML2Controller extends BaseSAMLController {
         return logoutRequest;
     }
 
-    private LogoutResponse buildLogoutResponse(HttpServletRequest servletRequest) {
-        final LogoutResponse logoutResponse = (LogoutResponse) builderFactory.getBuilder(
+    private LogoutResponse buildLogoutResponse(final HttpServletRequest servletRequest) {
+        final LogoutResponse logoutResponse = (LogoutResponse) builderFactory.ensureBuilder(
                 LogoutResponse.DEFAULT_ELEMENT_NAME).buildObject(LogoutResponse.DEFAULT_ELEMENT_NAME);
         
         logoutResponse.setID(idGenerator.generateIdentifier());
         logoutResponse.setIssueInstant(Instant.now());
         
-        final Issuer issuer = (Issuer) builderFactory.getBuilder(Issuer.DEFAULT_ELEMENT_NAME).buildObject(Issuer.DEFAULT_ELEMENT_NAME);
+        final Issuer issuer = (Issuer) builderFactory.ensureBuilder(Issuer.DEFAULT_ELEMENT_NAME).buildObject(
+                Issuer.DEFAULT_ELEMENT_NAME);
         issuer.setValue(getSpEntityId(servletRequest));
         logoutResponse.setIssuer(issuer);
         
-        final Status status = (Status) builderFactory.getBuilder(Status.DEFAULT_ELEMENT_NAME).buildObject(Status.DEFAULT_ELEMENT_NAME);
+        final Status status = (Status) builderFactory.ensureBuilder(Status.DEFAULT_ELEMENT_NAME).buildObject(
+                Status.DEFAULT_ELEMENT_NAME);
         logoutResponse.setStatus(status);
         
-        final StatusCode code = (StatusCode) builderFactory.getBuilder(StatusCode.DEFAULT_ELEMENT_NAME).buildObject(StatusCode.DEFAULT_ELEMENT_NAME);
+        final StatusCode code = (StatusCode) builderFactory.ensureBuilder(StatusCode.DEFAULT_ELEMENT_NAME).buildObject(
+                StatusCode.DEFAULT_ELEMENT_NAME);
         status.setStatusCode(code);
         String param = servletRequest.getParameter("success");
         if (param == null) {
@@ -677,88 +709,88 @@ public class SAML2Controller extends BaseSAMLController {
         return logoutResponse;
     }
     
-	private String getDestinationRedirect(HttpServletRequest servletRequest, String profile) {
+	@Nonnull private String getDestinationRedirect(final HttpServletRequest servletRequest, final String profile) {
 		//TODO servlet context
-		String destinationPath = "/idp/profile/SAML2/Redirect/" + profile;
-		String baseUrl = getBaseUrl(servletRequest);
+		final String destinationPath = "/idp/profile/SAML2/Redirect/" + profile;
+		final String baseUrl = getBaseUrl(servletRequest);
 		try {
-			URLBuilder urlBuilder = new URLBuilder(baseUrl);
+			final URLBuilder urlBuilder = new URLBuilder(baseUrl);
 			urlBuilder.setPath(destinationPath);
 			return urlBuilder.buildURL();
-		} catch (MalformedURLException e) {
+		} catch (final MalformedURLException e) {
 			log.error("Couldn't parse base URL, reverting to internal default destination: {}", baseUrl);
 			return "http://localhost:8080" + destinationPath;
 		}
 	}
 	
-	private String getDestinationPost(HttpServletRequest servletRequest, String profile) {
+	@Nonnull private String getDestinationPost(final HttpServletRequest servletRequest, final String profile) {
 		//TODO servlet context
-		String destinationPath = "/idp/profile/SAML2/POST/" + profile;
-		String baseUrl = getBaseUrl(servletRequest);
+		final String destinationPath = "/idp/profile/SAML2/POST/" + profile;
+		final String baseUrl = getBaseUrl(servletRequest);
 		try {
-			URLBuilder urlBuilder = new URLBuilder(baseUrl);
+			final URLBuilder urlBuilder = new URLBuilder(baseUrl);
 			urlBuilder.setPath(destinationPath);
 			return urlBuilder.buildURL();
-		} catch (MalformedURLException e) {
+		} catch (final MalformedURLException e) {
 			log.error("Couldn't parse base URL, reverting to internal default destination: {}", baseUrl);
 			return "http://localhost:8080" + destinationPath;
 		}
 	}
 
-	private String getDestinationArtifact(HttpServletRequest servletRequest, String profile) {
+	@Nonnull private String getDestinationArtifact(final HttpServletRequest servletRequest, final String profile) {
         //TODO servlet context
-        String destinationPath = "/idp/profile/SAML2/Artifact/" + profile;
-        String baseUrl = getBaseUrl(servletRequest);
+        final String destinationPath = "/idp/profile/SAML2/Artifact/" + profile;
+        final String baseUrl = getBaseUrl(servletRequest);
         try {
-            URLBuilder urlBuilder = new URLBuilder(baseUrl);
+            final URLBuilder urlBuilder = new URLBuilder(baseUrl);
             urlBuilder.setPath(destinationPath);
             return urlBuilder.buildURL();
-        } catch (MalformedURLException e) {
+        } catch (final MalformedURLException e) {
             log.error("Couldn't parse base URL, reverting to internal default destination: {}", baseUrl);
             return "http://localhost:8080" + destinationPath;
         }
     }
 
-	private String getAcsUrl(HttpServletRequest servletRequest) {
+	@Nonnull private String getAcsUrl(final HttpServletRequest servletRequest) {
 		//TODO servlet context
-	    String spId = getSpId(servletRequest);
-        String acsPath = (spId == null) ? "/sp/SAML2/POST/ACS" : "/sp/" + spId + "/SAML2/POST/ACS";
-		String baseUrl = getBaseUrl(servletRequest);
+	    final String spId = getSpId(servletRequest);
+        final String acsPath = (spId == null) ? "/sp/SAML2/POST/ACS" : "/sp/" + spId + "/SAML2/POST/ACS";
+		final String baseUrl = getBaseUrl(servletRequest);
 		try {
-			URLBuilder urlBuilder = new URLBuilder(baseUrl);
+			final URLBuilder urlBuilder = new URLBuilder(baseUrl);
 			urlBuilder.setPath(acsPath);
 			return urlBuilder.buildURL();
-		} catch (MalformedURLException e) {
+		} catch (final MalformedURLException e) {
 			log.error("Couldn't parse base URL, reverting to internal default ACS: {}", baseUrl);
 			return "http://localhost:8080" + acsPath;
 		}
 	}
 	
-	private String getBaseUrl(HttpServletRequest servletRequest) {
+	@Nonnull private String getBaseUrl(final HttpServletRequest servletRequest) {
 		//TODO servlet context
-		String requestUrl = servletRequest.getRequestURL().toString();
+	    final String requestUrl = servletRequest.getRequestURL().toString();
 		try {
-			URLBuilder urlBuilder = new URLBuilder(requestUrl);
+		    final URLBuilder urlBuilder = new URLBuilder(requestUrl);
 			urlBuilder.setUsername(null);
 			urlBuilder.setPassword(null);
 			urlBuilder.setPath(null);
 			urlBuilder.getQueryParams().clear();
 			urlBuilder.setFragment(null);
 			return urlBuilder.buildURL();
-		} catch (MalformedURLException e) {
+		} catch (final MalformedURLException e) {
 			log.error("Couldn't parse request URL, reverting to internal default base URL: {}", requestUrl);
 			return "http://localhost:8080";
 		}
 		
 	}
 
-    private String getSpEntityId(HttpServletRequest servletRequest) {
+    @Nonnull private String getSpEntityId(final HttpServletRequest servletRequest) {
         // TODO get from config somewhere
         final String spId = getSpId(servletRequest);
         return (spId == null) ? "https://sp.example.org" : "https://" + spId + ".example.org";
     }
 
-    private String getIdpEntityId(HttpServletRequest servletRequest) {
+    @Nonnull private String getIdpEntityId(final HttpServletRequest servletRequest) {
         // TODO get from config somewhere
         // Sometimes it's useful to return an IdP entityID per SP.
         // final String spId = getSpId(servletRequest);
@@ -772,7 +804,7 @@ public class SAML2Controller extends BaseSAMLController {
      * @param servletRequest the servlet request
      * @return the SP id or <code>null</code>
      */
-    @Nullable private String getSpId(HttpServletRequest servletRequest) {
+    @Nullable private String getSpId(final HttpServletRequest servletRequest) {
         final Object attr = servletRequest.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
         if (attr != null && attr instanceof Map) {
             final Map pathVariables = (Map) attr;
@@ -786,7 +818,8 @@ public class SAML2Controller extends BaseSAMLController {
     }
 
     @RequestMapping(method = RequestMethod.GET) public ResponseEntity<String>
-            defaultPage(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+            defaultPage(final HttpServletRequest servletRequest, final HttpServletResponse servletResponse)
+                    throws Exception {
         final StringBuilder builder = new StringBuilder();
         builder.append("SP id = " + getSpId(servletRequest) + "\n");
         builder.append("SP entityID = " + getSpEntityId(servletRequest) + "\n");
@@ -818,16 +851,16 @@ public class SAML2Controller extends BaseSAMLController {
      * @throws Exception if an error occurs
      */
     @RequestMapping(value = "/InitSLO/SOAP", method = RequestMethod.POST) public ResponseEntity<String>
-            initSAML2LogoutRequest(HttpServletRequest servletRequest, HttpServletResponse servletResponse,
-                    @RequestParam(value = "endpoint", required = true) String endpoint,
-                    @RequestParam(value = "principalName", required = true) String principalName,
-                    @RequestParam(value = "trustedTLSCertificate", required = true) String trustedTLSCertificate,
-                    @RequestParam(value = "trustedTLSCertificatePassword", required = true) String trustedTLSCertificatePassword,
-                    @RequestParam(value = "clientTLSCertificate", required = false) String clientTLSCertificate,
-                    @RequestParam(value = "clientTLSPrivateKey", required = true) String clientTLSPrivateKey,
-                    @RequestParam(value = "clientTLSPassword", required = true) String clientTLSPassword,
-                    @RequestParam(value = "clientSigningCertificate", required = false) String clientSigningCertificate,
-                    @RequestParam(value = "clientSigningPrivateKey", required = false) String clientSigningPrivateKey)
+            initSAML2LogoutRequest(final HttpServletRequest servletRequest, final HttpServletResponse servletResponse,
+                    @RequestParam(value = "endpoint", required = true) final String endpoint,
+                    @RequestParam(value = "principalName", required = true) final String principalName,
+                    @RequestParam(value = "trustedTLSCertificate", required = true) final String trustedTLSCertificate,
+                    @RequestParam(value = "trustedTLSCertificatePassword", required = true) final String trustedTLSCertificatePassword,
+                    @RequestParam(value = "clientTLSCertificate", required = false) final String clientTLSCertificate,
+                    @RequestParam(value = "clientTLSPrivateKey", required = true) final String clientTLSPrivateKey,
+                    @RequestParam(value = "clientTLSPassword", required = true) final String clientTLSPassword,
+                    @RequestParam(value = "clientSigningCertificate", required = false) final String clientSigningCertificate,
+                    @RequestParam(value = "clientSigningPrivateKey", required = false) final String clientSigningPrivateKey)
                     throws Exception {
 
         final Resource trustedTLSCertificateResource = applicationContext.getResource(trustedTLSCertificate);
@@ -898,16 +931,16 @@ public class SAML2Controller extends BaseSAMLController {
      * @throws Exception if an error occurs
      */
     @RequestMapping(value = "/AttributeQuery", method = RequestMethod.POST) public ResponseEntity<String>
-            initSAML2AttributeQuery(HttpServletRequest servletRequest, HttpServletResponse servletResponse,
-                    @RequestParam(value = "endpoint", required = true) String endpoint,
-                    @RequestParam(value = "principalName", required = true) String principalName,
-                    @RequestParam(value = "trustedTLSCertificate", required = true) String trustedTLSCertificate,
-                    @RequestParam(value = "trustedTLSCertificatePassword", required = true) String trustedTLSCertificatePassword,
-                    @RequestParam(value = "clientTLSCertificate", required = false) String clientTLSCertificate,
-                    @RequestParam(value = "clientTLSPrivateKey", required = true) String clientTLSPrivateKey,
-                    @RequestParam(value = "clientTLSPassword", required = true) String clientTLSPassword,
-                    @RequestParam(value = "clientSigningCertificate", required = false) String clientSigningCertificate,
-                    @RequestParam(value = "clientSigningPrivateKey", required = false) String clientSigningPrivateKey)
+            initSAML2AttributeQuery(final HttpServletRequest servletRequest, final HttpServletResponse servletResponse,
+                    @RequestParam(value = "endpoint", required = true) final String endpoint,
+                    @RequestParam(value = "principalName", required = true) final String principalName,
+                    @RequestParam(value = "trustedTLSCertificate", required = true) final String trustedTLSCertificate,
+                    @RequestParam(value = "trustedTLSCertificatePassword", required = true) final String trustedTLSCertificatePassword,
+                    @RequestParam(value = "clientTLSCertificate", required = false) final String clientTLSCertificate,
+                    @RequestParam(value = "clientTLSPrivateKey", required = true) final String clientTLSPrivateKey,
+                    @RequestParam(value = "clientTLSPassword", required = true) final String clientTLSPassword,
+                    @RequestParam(value = "clientSigningCertificate", required = false) final String clientSigningCertificate,
+                    @RequestParam(value = "clientSigningPrivateKey", required = false) final String clientSigningPrivateKey)
                     throws Exception {
 
         final Resource trustedTLSCertificateResource = applicationContext.getResource(trustedTLSCertificate);
@@ -988,7 +1021,7 @@ public class SAML2Controller extends BaseSAMLController {
      * 
      * @return the built Issuer
      */
-    @Nonnull public static Issuer buildIssuer(final @Nonnull @NotEmpty String entityID) {
+    @Nonnull public static Issuer buildIssuer(@Nonnull @NotEmpty final String entityID) {
         final SAMLObjectBuilder<Issuer> issuerBuilder = (SAMLObjectBuilder<Issuer>)
                 XMLObjectProviderRegistrySupport.getBuilderFactory().<Issuer>ensureBuilder(
                         Issuer.DEFAULT_ELEMENT_NAME);
@@ -1005,7 +1038,7 @@ public class SAML2Controller extends BaseSAMLController {
      * 
      * @return the built subject
      */
-    @Nonnull public static Subject buildSubject(final @Nullable String principalName) {
+    @Nonnull public static Subject buildSubject(@Nullable final String principalName) {
         final SAMLObjectBuilder<Subject> subjectBuilder = (SAMLObjectBuilder<Subject>)
                 XMLObjectProviderRegistrySupport.getBuilderFactory().<Subject>ensureBuilder(
                         Subject.DEFAULT_ELEMENT_NAME);
@@ -1025,7 +1058,7 @@ public class SAML2Controller extends BaseSAMLController {
      * 
      * @return the built NameID
      */
-    @Nonnull public static NameID buildNameID(final @Nonnull @NotEmpty String principalName) {
+    @Nonnull public static NameID buildNameID(@Nonnull @NotEmpty final String principalName) {
         final SAMLObjectBuilder<NameID> nameIdBuilder = (SAMLObjectBuilder<NameID>)
                 XMLObjectProviderRegistrySupport.getBuilderFactory().<NameID>ensureBuilder(
                         NameID.DEFAULT_ELEMENT_NAME);
@@ -1042,7 +1075,7 @@ public class SAML2Controller extends BaseSAMLController {
      * 
      * @return the built query
      */
-    @Nonnull public static AttributeQuery buildAttributeQueryRequest(final @Nullable Subject subject) {
+    @Nonnull public static AttributeQuery buildAttributeQueryRequest(@Nullable final Subject subject) {
         final SAMLObjectBuilder<AttributeQuery> queryBuilder = (SAMLObjectBuilder<AttributeQuery>)
                 XMLObjectProviderRegistrySupport.getBuilderFactory().<AttributeQuery>ensureBuilder(
                         AttributeQuery.DEFAULT_ELEMENT_NAME);

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


More information about the commits mailing list