[java-idp-testbed] branch main updated: Supress Warnings

Rod Widdowson rdw at steadingsoftware.com
Mon Dec 23 14:28:53 UTC 2024


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

rdw 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=f986eeadf049b6b27afe08af43e6010d4fa2959c

The following commit(s) were added to refs/heads/main by this push:
     new f986eea  Supress Warnings
f986eea is described below

commit f986eeadf049b6b27afe08af43e6010d4fa2959c
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Mon Dec 23 14:14:12 2024 +0000

    Supress Warnings
---
 src/main/java/sp/BaseSAMLController.java           |  12 +-
 src/main/java/sp/CASController.java                |  13 +-
 src/main/java/sp/SAML1Controller.java              |  46 ++++--
 src/main/java/sp/SAML2Controller.java              | 181 ++++++++++++---------
 .../storage/SimpleStorageRecordSerializer.java     |  15 +-
 .../storage/StorageServiceWrapperController.java   |  10 +-
 6 files changed, 167 insertions(+), 110 deletions(-)

diff --git a/src/main/java/sp/BaseSAMLController.java b/src/main/java/sp/BaseSAMLController.java
index 5e69d00..4c1f751 100644
--- a/src/main/java/sp/BaseSAMLController.java
+++ b/src/main/java/sp/BaseSAMLController.java
@@ -14,6 +14,8 @@
 
 package sp;
 
+import javax.annotation.Nonnull;
+
 import org.apache.velocity.app.VelocityEngine;
 import org.opensaml.core.xml.XMLObjectBuilderFactory;
 import org.opensaml.core.xml.io.MarshallerFactory;
@@ -52,17 +54,17 @@ public abstract class BaseSAMLController {
     
     @Autowired protected SAMLArtifactMap artifactMap;
 
-    @Autowired protected ParserPool parserPool;
+    @Autowired @Nonnull protected ParserPool parserPool;
 
     @Autowired @Qualifier("test.sp.Credential") protected Credential spCredential;
     
     @Autowired protected ApplicationContext applicationContext;
 
-    private void setRequest(final BaseHttpServletRequestXMLMessageDecoder decoder, final HttpServletRequest servletRequest) {
+    private void setRequest(final BaseHttpServletRequestXMLMessageDecoder decoder, @Nonnull final HttpServletRequest servletRequest) {
         decoder.setHttpServletRequestSupplier(NonnullSupplier.of(servletRequest));
     }
     
-    protected MessageContext decodeInboundMessageContextPost(HttpServletRequest servletRequest)
+    protected MessageContext decodeInboundMessageContextPost(@Nonnull HttpServletRequest servletRequest)
             throws Exception {
         HTTPPostDecoder decoder = new HTTPPostDecoder();
         try {
@@ -81,7 +83,7 @@ public abstract class BaseSAMLController {
         }
     }
 
-    protected MessageContext decodeInboundMessageContextSOAP(HttpServletRequest servletRequest)
+    protected MessageContext decodeInboundMessageContextSOAP(@Nonnull HttpServletRequest servletRequest)
             throws Exception {
         HTTPSOAP11Decoder decoder = new HTTPSOAP11Decoder();
         try {
@@ -100,7 +102,7 @@ public abstract class BaseSAMLController {
         }
     }
     
-    protected MessageContext decodeInboundMessageContextRedirect(HttpServletRequest servletRequest)
+    protected MessageContext decodeInboundMessageContextRedirect(@Nonnull HttpServletRequest servletRequest)
             throws Exception {
         HTTPRedirectDeflateDecoder decoder = new HTTPRedirectDeflateDecoder();
         try {
diff --git a/src/main/java/sp/CASController.java b/src/main/java/sp/CASController.java
index 745df4d..a9cbd3b 100644
--- a/src/main/java/sp/CASController.java
+++ b/src/main/java/sp/CASController.java
@@ -17,6 +17,8 @@ package sp;
 import java.net.MalformedURLException;
 import java.util.List;
 
+import javax.annotation.Nonnull;
+
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 
@@ -53,7 +55,7 @@ public class CASController {
      * @throws Exception if something bad happens
      */
     @RequestMapping(value = "/InitSSO", method = RequestMethod.GET)
-    public void initLogin(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public void initLogin(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse) throws Exception {
 
         final String baseUrl = getBaseUrl(servletRequest);
 
@@ -83,7 +85,7 @@ public class CASController {
      * @throws Exception if something bad happens
      */
     @RequestMapping(value = "/InitSSOGateway", method = RequestMethod.GET)
-    public void initLoginGateway(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public void initLoginGateway(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse) throws Exception {
 
         final String baseUrl = getBaseUrl(servletRequest);
 
@@ -114,7 +116,7 @@ public class CASController {
      * @throws Exception if something bad happens
      */
     @RequestMapping(value = "/InitSSORenew", method = RequestMethod.GET)
-    public void initLoginGatewayRenew(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public void initLoginGatewayRenew(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse) throws Exception {
 
         final String baseUrl = getBaseUrl(servletRequest);
 
@@ -182,8 +184,9 @@ public class CASController {
         return new ResponseEntity<>(html, headers, HttpStatus.OK);
     }
 
-    private String getBaseUrl(HttpServletRequest servletRequest) {
-        String requestUrl = servletRequest.getRequestURL().toString();
+    private String getBaseUrl(@Nonnull HttpServletRequest servletRequest) {
+        final String requestUrl = servletRequest.getRequestURL().toString();
+        assert requestUrl != null;
         try {
             URLBuilder urlBuilder = new URLBuilder(requestUrl);
             urlBuilder.setUsername(null);
diff --git a/src/main/java/sp/SAML1Controller.java b/src/main/java/sp/SAML1Controller.java
index bd205ec..08f710e 100644
--- a/src/main/java/sp/SAML1Controller.java
+++ b/src/main/java/sp/SAML1Controller.java
@@ -37,6 +37,7 @@ import org.cryptacular.util.CertUtil;
 import org.cryptacular.util.KeyPairUtil;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
+import org.opensaml.core.xml.io.Marshaller;
 import org.opensaml.core.xml.io.MarshallingException;
 import org.opensaml.messaging.context.InOutOperationContext;
 import org.opensaml.messaging.context.MessageContext;
@@ -78,7 +79,7 @@ public class SAML1Controller extends BaseSAMLController {
     private final Logger log = LoggerFactory.getLogger(SAML1Controller.class);
 
     @RequestMapping(value = "/POST/ACS", method = RequestMethod.POST) public ResponseEntity<String>
-            handleSSOResponsePOST(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+            handleSSOResponsePOST(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse)
                     throws Exception {
 
         MessageContext messageContext = decodeInboundMessageContextPost(servletRequest);
@@ -88,8 +89,10 @@ public class SAML1Controller extends BaseSAMLController {
             return new ResponseEntity<>("Inbound message was not a SAML 1 Response", HttpStatus.BAD_REQUEST);
         }
 
-        Response response = (Response) messageContext.getMessage();
-        Element responseElement = response.getDOM();
+        final Response response = (Response) messageContext.getMessage();
+        assert response != null;
+        final Element responseElement = response.getDOM();
+        assert responseElement != null;
         String formattedMessage = SerializeSupport.prettyPrintXML(responseElement);
         log.trace("Returning response" + System.lineSeparator() + "{}", formattedMessage);
 
@@ -116,7 +119,7 @@ public class SAML1Controller extends BaseSAMLController {
     @Nullable private String getSpId(HttpServletRequest servletRequest) {
         final Object attr = servletRequest.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
         if (attr != null && attr instanceof Map) {
-            final Map pathVariables = (Map) attr;
+            final Map<?,?> pathVariables = (Map<?, ?>) attr;
             final Object spId = pathVariables.get("spId");
             log.trace("Found spID '{}'", spId);
             if (spId != null) {
@@ -145,12 +148,13 @@ public class SAML1Controller extends BaseSAMLController {
      * 
      * @throws Exception if an error occurs
      */
-    @RequestMapping(value = "/AttributeQuery", method = RequestMethod.POST) public ResponseEntity<String>
-            initSAML1AttributeQuery(HttpServletRequest servletRequest, HttpServletResponse servletResponse,
-                    @RequestParam(value = "endpoint", required = true) String endpoint,
-                    @RequestParam(value = "principalName", required = true) String principalName,
-                    @RequestParam(value = "clientSigningCertificate", required = false) String clientSigningCertificate,
-                    @RequestParam(value = "clientSigningPrivateKey", required = false) String clientSigningPrivateKey)
+    @SuppressWarnings("deprecation")
+	@RequestMapping(value = "/AttributeQuery", method = RequestMethod.POST) public ResponseEntity<String>
+            initSAML1AttributeQuery(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse,
+                    @RequestParam(value = "endpoint", required = true) @Nonnull String endpoint,
+                    @RequestParam(value = "principalName", required = true) @Nonnull String principalName,
+                    @RequestParam(value = "clientSigningCertificate", required = false) @Nonnull String clientSigningCertificate,
+                    @RequestParam(value = "clientSigningPrivateKey", required = false) @Nonnull String clientSigningPrivateKey)
                     throws Exception {
 
         final HttpClient httpClient = buildHttpClient();
@@ -169,18 +173,25 @@ public class SAML1Controller extends BaseSAMLController {
         final Envelope envelope = buildSOAP11Envelope(attributeQuery);
 
         if (log.isDebugEnabled()) {
+        	final Marshaller marshaller = marshallerFactory.getMarshaller(envelope);
+        	assert marshaller != null;
             log.debug("Sending AttributeQuery to endpoint '{}':\n", endpoint, SerializeSupport.prettyPrintXML(
-                    marshallerFactory.getMarshaller(envelope).marshall(envelope, parserPool.newDocument())));
+            		marshaller.marshall(envelope, parserPool.newDocument())));
         }
 
         final InOutOperationContext context = SAML2Controller.buildInOutOperationContext(envelope);
 
         httpSoapClient.send(endpoint, context);
 
-        final Envelope soapResponse =
-                context.getInboundMessageContext().getSubcontext(SOAP11Context.class).getEnvelope();
-
-        final String formattedMessage = SerializeSupport.prettyPrintXML(soapResponse.getDOM());
+        final MessageContext inboundMessageContext = context.getInboundMessageContext(); 
+        assert inboundMessageContext != null;
+        final SOAP11Context soapContext = inboundMessageContext.getSubcontext(SOAP11Context.class);
+        assert soapContext != null;
+        final Envelope soapResponse = soapContext.getEnvelope();
+        assert soapResponse != null;
+        final Element dom = soapResponse.getDOM();
+        assert dom != null;
+        final String formattedMessage = SerializeSupport.prettyPrintXML(dom);
 
         final HttpHeaders headers = new HttpHeaders();
         headers.add("Content-Type", "text/plain");
@@ -204,7 +215,9 @@ public class SAML1Controller extends BaseSAMLController {
         final Request attributeQuery = buildAttributeQueryRequest(subject);
         attributeQuery.setIssueInstant(Instant.now());
         attributeQuery.setID(IdentifierGenerationStrategy.getInstance(ProviderType.SECURE).generateIdentifier());
-        attributeQuery.getAttributeQuery().setResource(getSpEntityId(servletRequest));
+        final AttributeQuery query = attributeQuery.getAttributeQuery();
+        assert query != null;
+        query.setResource(getSpEntityId(servletRequest));
 
         // TODO AttributeDesignator
 
@@ -307,6 +320,7 @@ public class SAML1Controller extends BaseSAMLController {
 
         final X509Certificate cert = CertUtil.readCertificate(certificateResource.getInputStream());
         final PrivateKey key = KeyPairUtil.readPrivateKey(privateKeyResource.getInputStream());
+        assert cert!=null && key!=null;
         final BasicX509Credential cred = new BasicX509Credential(cert, key);
 
         final SignatureSigningParameters signingParameters = new SignatureSigningParameters();
diff --git a/src/main/java/sp/SAML2Controller.java b/src/main/java/sp/SAML2Controller.java
index 33163fc..603cc42 100644
--- a/src/main/java/sp/SAML2Controller.java
+++ b/src/main/java/sp/SAML2Controller.java
@@ -16,30 +16,20 @@ package sp;
 
 import java.io.IOException;
 import java.net.MalformedURLException;
-import java.security.KeyStore;
 import java.security.PrivateKey;
-import java.security.cert.Certificate;
 import java.security.cert.X509Certificate;
 import java.time.Instant;
 import java.util.Map;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import javax.net.ssl.SSLContext;
 
 import org.apache.hc.client5.http.classic.HttpClient;
-import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
-import org.apache.hc.client5.http.impl.classic.HttpClients;
-import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
-import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
-import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
-import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactoryBuilder;
-import org.apache.hc.core5.ssl.SSLContextBuilder;
-import org.apache.hc.core5.ssl.SSLContexts;
 import org.cryptacular.util.CertUtil;
 import org.cryptacular.util.KeyPairUtil;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
+import org.opensaml.core.xml.io.Marshaller;
 import org.opensaml.core.xml.io.MarshallingException;
 import org.opensaml.messaging.context.InOutOperationContext;
 import org.opensaml.messaging.context.MessageContext;
@@ -129,41 +119,44 @@ public class SAML2Controller extends BaseSAMLController {
 	private final Logger log = LoggerFactory.getLogger(SAML2Controller.class);
 
 	@RequestMapping(value="/InitSSO/Redirect", method=RequestMethod.GET)
-	public void initSSORequestRedirect(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+	public void initSSORequestRedirect(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse) throws Exception {
 		final AuthnRequest authnRequest = buildAuthnRequest(servletRequest);
 		authnRequest.setDestination(getDestinationRedirect(servletRequest, "SSO"));
 		final Endpoint endpoint = buildIdpSsoEndpoint(SAMLConstants.SAML2_REDIRECT_BINDING_URI, authnRequest.getDestination());
         final String spEntityID = getSpEntityId(servletRequest);
 		final String idpEntityID = getIdpEntityId(servletRequest);
 		final MessageContext messageContext = buildOutboundMessageContext(authnRequest, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
 		encodeOutboundMessageContextRedirect(messageContext, servletResponse);
 	}
 
 	@RequestMapping(value="/InitSSO/POST", method=RequestMethod.GET)
-	public void initSSORequestPost(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+	public void initSSORequestPost(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse) throws Exception {
 	    final AuthnRequest authnRequest = buildAuthnRequest(servletRequest);
 		authnRequest.setDestination(getDestinationPost(servletRequest, "SSO"));
 		final Endpoint endpoint = buildIdpSsoEndpoint(SAMLConstants.SAML2_POST_BINDING_URI, authnRequest.getDestination());
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext = buildOutboundMessageContext(authnRequest, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
 		SAMLMessageSecuritySupport.signMessage(messageContext);
 		encodeOutboundMessageContextPost(messageContext, servletResponse);
 	}
 
    @RequestMapping(value="/InitSSO/Artifact", method=RequestMethod.GET)
-    public void initSSORequestArtifact(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public void initSSORequestArtifact(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse) throws Exception {
         final AuthnRequest authnRequest = buildAuthnRequest(servletRequest);
         authnRequest.setDestination(getDestinationArtifact(servletRequest, "SSO"));
         final Endpoint endpoint = buildIdpSsoEndpoint(SAMLConstants.SAML2_ARTIFACT_BINDING_URI, authnRequest.getDestination());
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext = buildOutboundMessageContext(authnRequest, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
         encodeOutboundMessageContextArtifact(messageContext, servletResponse);
     }
 
     @RequestMapping(value="/InitSSO/Passive", method=RequestMethod.GET)
-    public void initSSORequestPassive(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public void initSSORequestPassive(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse) throws Exception {
         final AuthnRequest authnRequest = buildAuthnRequest(servletRequest);
         authnRequest.setDestination(getDestinationRedirect(servletRequest, "SSO"));
         authnRequest.setIsPassive(true);
@@ -171,11 +164,12 @@ public class SAML2Controller extends BaseSAMLController {
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext = buildOutboundMessageContext(authnRequest, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
         encodeOutboundMessageContextRedirect(messageContext, servletResponse);
     }
 
     @RequestMapping(value="/InitSSO/ForceAuthn", method=RequestMethod.GET)
-    public void initSSORequestForceAuthn(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public void initSSORequestForceAuthn(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse) throws Exception {
         final AuthnRequest authnRequest = buildAuthnRequest(servletRequest);
         authnRequest.setDestination(getDestinationRedirect(servletRequest, "SSO"));
         authnRequest.setForceAuthn(true);
@@ -183,11 +177,12 @@ public class SAML2Controller extends BaseSAMLController {
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext = buildOutboundMessageContext(authnRequest, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
         encodeOutboundMessageContextRedirect(messageContext, servletResponse);
     }
     
     @RequestMapping(value="/InitSSO/ReqAttr", method=RequestMethod.GET)
-    public void initSSORequestReqAttr(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    public void initSSORequestReqAttr(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse) throws Exception {
         final AuthnRequest authnRequest = buildAuthnRequest(servletRequest);
         authnRequest.setExtensions(buildRequestedAttributesExtensions());
         authnRequest.setDestination(getDestinationRedirect(servletRequest, "SSO"));
@@ -195,11 +190,12 @@ public class SAML2Controller extends BaseSAMLController {
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext = buildOutboundMessageContext(authnRequest, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
         encodeOutboundMessageContextRedirect(messageContext, servletResponse);
     }
 
     @RequestMapping(value = "/InitSSO/POST/Passive", method = RequestMethod.GET) public void initSSORequestPostPassive(
-            HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
+    		@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse) throws Exception {
         final AuthnRequest authnRequest = buildAuthnRequest(servletRequest);
         authnRequest.setDestination(getDestinationPost(servletRequest, "SSO"));
         authnRequest.setIsPassive(true);
@@ -207,12 +203,13 @@ public class SAML2Controller extends BaseSAMLController {
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext = buildOutboundMessageContext(authnRequest, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
         SAMLMessageSecuritySupport.signMessage(messageContext);
         encodeOutboundMessageContextPost(messageContext, servletResponse);
     }
     
     @RequestMapping(value = "/InitSSO/POST/ForceAuthn", method = RequestMethod.GET) public void
-            initSSORequestPostForceAuthn(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+            initSSORequestPostForceAuthn(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse)
                     throws Exception {
         final AuthnRequest authnRequest = buildAuthnRequest(servletRequest);
         authnRequest.setDestination(getDestinationPost(servletRequest, "SSO"));
@@ -221,13 +218,14 @@ public class SAML2Controller extends BaseSAMLController {
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext = buildOutboundMessageContext(authnRequest, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
 
         SAMLMessageSecuritySupport.signMessage(messageContext);
         encodeOutboundMessageContextPost(messageContext, servletResponse);
     }
     
     @RequestMapping(value="/InitSLO/Redirect", method=RequestMethod.GET)
-    public void initSLORequestRedirect(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+    public void initSLORequestRedirect(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse)
             throws Exception {
         final LogoutRequest logoutRequest =
                 buildLogoutRequest(servletRequest, servletRequest.getParameter("transientID"));
@@ -236,11 +234,12 @@ public class SAML2Controller extends BaseSAMLController {
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext = buildOutboundMessageContext(logoutRequest, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
         encodeOutboundMessageContextRedirect(messageContext, servletResponse);
     }
 
     @RequestMapping(value="/InitSLO/Async", method=RequestMethod.GET)
-    public void initSLORequestAsync(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+    public void initSLORequestAsync(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse)
             throws Exception {
         final LogoutRequest logoutRequest = buildLogoutRequest(servletRequest, servletRequest.getParameter("transientID"));
         logoutRequest.setDestination(getDestinationRedirect(servletRequest, "SLO"));
@@ -255,11 +254,12 @@ public class SAML2Controller extends BaseSAMLController {
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext = buildOutboundMessageContext(logoutRequest, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
         encodeOutboundMessageContextRedirect(messageContext, servletResponse);
     }
     
     @RequestMapping(value="/InitSLO/POST", method=RequestMethod.GET)
-    public void initSLORequestPost(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+    public void initSLORequestPost(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse)
             throws Exception {
         final LogoutRequest logoutRequest = buildLogoutRequest(servletRequest, servletRequest.getParameter("transientID"));
         logoutRequest.setDestination(getDestinationPost(servletRequest, "SLO"));
@@ -267,12 +267,13 @@ public class SAML2Controller extends BaseSAMLController {
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext = buildOutboundMessageContext(logoutRequest, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
         SAMLMessageSecuritySupport.signMessage(messageContext);
         encodeOutboundMessageContextPost(messageContext, servletResponse);
     }
 
     @RequestMapping(value="/FinishSLO/Redirect", method=RequestMethod.GET)
-    public void finishSLOResponseRedirect(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+    public void finishSLOResponseRedirect(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse)
             throws Exception {
         final LogoutResponse logoutResponse = buildLogoutResponse(servletRequest);
         logoutResponse.setDestination(getDestinationRedirect(servletRequest, "SLO"));
@@ -280,11 +281,12 @@ public class SAML2Controller extends BaseSAMLController {
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext = buildOutboundMessageContext(logoutResponse, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
         encodeOutboundMessageContextRedirect(messageContext, servletResponse);
     }
 
     @RequestMapping(value="/FinishSLO/POST", method=RequestMethod.GET)
-    public void finishSLOResponsePost(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+    public void finishSLOResponsePost(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse)
             throws Exception {
         final LogoutResponse logoutResponse = buildLogoutResponse(servletRequest);
         logoutResponse.setDestination(getDestinationPost(servletRequest, "SLO"));
@@ -294,25 +296,27 @@ public class SAML2Controller extends BaseSAMLController {
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext =
                 buildOutboundMessageContext(logoutResponse, endpoint, spEntityID, idpEntityID);
+        assert messageContext != null;
         SAMLMessageSecuritySupport.signMessage(messageContext);
         encodeOutboundMessageContextPost(messageContext, servletResponse);
     }
 
     @RequestMapping(value="/FinishSLO/SOAP", method=RequestMethod.GET)
-    public void finishSLOResponseSOAP(HttpServletRequest servletRequest, HttpServletResponse servletResponse,
+    public void finishSLOResponseSOAP(@Nonnull HttpServletRequest servletRequest, @Nonnull HttpServletResponse servletResponse,
             final String id) throws Exception {
         final LogoutResponse logoutResponse = buildLogoutResponse(servletRequest);
         logoutResponse.setInResponseTo(id);
         final String spEntityID = getSpEntityId(servletRequest);
         final String idpEntityID = getIdpEntityId(servletRequest);
         final MessageContext messageContext = buildOutboundMessageContext(logoutResponse, null, spEntityID, idpEntityID);
+        assert messageContext != null;
         SAMLMessageSecuritySupport.signMessage(messageContext);
         encodeOutboundMessageContextSOAP(messageContext, servletResponse);
     }
     
 	@RequestMapping(value="/POST/ACS", method=RequestMethod.POST)
-	public ResponseEntity<String> handleSSOResponsePOST(HttpServletRequest servletRequest,
-	        HttpServletResponse servletResponse) throws Exception {
+	public ResponseEntity<String> handleSSOResponsePOST(@Nonnull HttpServletRequest servletRequest,
+			@Nonnull HttpServletResponse servletResponse) throws Exception {
 		final MessageContext messageContext = decodeInboundMessageContextPost(servletRequest);
 		
 		if (!(messageContext.getMessage() instanceof Response)) {
@@ -321,7 +325,9 @@ public class SAML2Controller extends BaseSAMLController {
 		}
 		
 		final Response response = (Response) messageContext.getMessage();
+        assert response != null;
 		final Element responseElement = response.getDOM();
+        assert responseElement != null;
 		final String formattedMessage = SerializeSupport.prettyPrintXML(responseElement);
         log.trace("Returning response" + System.lineSeparator() + "{}", formattedMessage);
 		
@@ -334,8 +340,8 @@ public class SAML2Controller extends BaseSAMLController {
 	}
 
     @RequestMapping(value="/Redirect/SLO", method=RequestMethod.GET)
-    public ResponseEntity<String> handleSLOResponseRedirect(final HttpServletRequest servletRequest,
-            final HttpServletResponse servletResponse) throws Exception {
+    public ResponseEntity<String> handleSLOResponseRedirect(@Nonnull final HttpServletRequest servletRequest,
+            final @Nonnull HttpServletResponse servletResponse) throws Exception {
         final MessageContext messageContext = decodeInboundMessageContextRedirect(servletRequest);
         
         if (messageContext.getMessage() instanceof LogoutRequest) {
@@ -345,7 +351,9 @@ public class SAML2Controller extends BaseSAMLController {
         }
         
         final LogoutResponse response = (LogoutResponse) messageContext.getMessage();
+        assert response != null;
         final Element responseElement = response.getDOM();
+        assert responseElement != null;
         final String formattedMessage = SerializeSupport.prettyPrintXML(responseElement);
         
         //TODO instead of returning plain text via a ResponseEntity, add a JSP view that looks good
@@ -357,8 +365,8 @@ public class SAML2Controller extends BaseSAMLController {
     }
 	
     @RequestMapping(value="/POST/SLO", method=RequestMethod.POST)
-    public ResponseEntity<String> handleSLOResponsePOST(final HttpServletRequest servletRequest,
-            final HttpServletResponse servletResponse) throws Exception {
+    public ResponseEntity<String> handleSLOResponsePOST(@Nonnull final HttpServletRequest servletRequest,
+            final @Nonnull HttpServletResponse servletResponse) throws Exception {
         final MessageContext messageContext = decodeInboundMessageContextPost(servletRequest);
         
         if (messageContext.getMessage() instanceof LogoutRequest) {
@@ -368,7 +376,9 @@ public class SAML2Controller extends BaseSAMLController {
         }
         
         final LogoutResponse response = (LogoutResponse) messageContext.getMessage();
+        assert response != null;
         final Element responseElement = response.getDOM();
+        assert responseElement != null;
         final String formattedMessage = SerializeSupport.prettyPrintXML(responseElement);
         
         //TODO instead of returning plain text via a ResponseEntity, add a JSP view that looks good
@@ -380,8 +390,8 @@ public class SAML2Controller extends BaseSAMLController {
     }
     
     @RequestMapping(value="/SOAP/SLO", method=RequestMethod.POST)
-    public ResponseEntity<String> handleSLOResponseSOAP(final HttpServletRequest servletRequest,
-            final HttpServletResponse servletResponse) throws Exception {
+    public ResponseEntity<String> handleSLOResponseSOAP(final @Nonnull HttpServletRequest servletRequest,
+            final @Nonnull HttpServletResponse servletResponse) throws Exception {
         final MessageContext messageContext = decodeInboundMessageContextSOAP(servletRequest);
         
         if (messageContext.getMessage() instanceof LogoutRequest logreq) {
@@ -391,7 +401,9 @@ public class SAML2Controller extends BaseSAMLController {
         }
         
         final XMLObject msg = (XMLObject) messageContext.getMessage();
+        assert msg!= null;
         final Element responseElement = msg.getDOM();
+        assert responseElement != null;
         final String formattedMessage = SerializeSupport.prettyPrintXML(responseElement);
         
         //TODO instead of returning plain text via a ResponseEntity, add a JSP view that looks good
@@ -434,8 +446,8 @@ public class SAML2Controller extends BaseSAMLController {
 		return messageContext;
 	}
 
-    private void setupResponse(final AbstractHttpServletResponseMessageEncoder encoder,
-            final HttpServletResponse response) {
+    private void setupResponse(final @Nonnull AbstractHttpServletResponseMessageEncoder encoder,
+            final @Nonnull HttpServletResponse response) {
         encoder.setHttpServletResponseSupplier(new NonnullSupplier<>() {
             @Nonnull public HttpServletResponse get() {
                 // TODO Auto-generated method stub
@@ -444,8 +456,8 @@ public class SAML2Controller extends BaseSAMLController {
         });
     }
 
-	private void encodeOutboundMessageContextRedirect(final MessageContext messageContext,
-	        final HttpServletResponse servletResponse) throws Exception {
+	private void encodeOutboundMessageContextRedirect(final @Nonnull MessageContext messageContext,
+	        final @Nonnull HttpServletResponse servletResponse) throws Exception {
 		final HTTPRedirectDeflateEncoder encoder = new HTTPRedirectDeflateEncoder();
 		try {
 		    setupResponse(encoder,servletResponse);
@@ -462,8 +474,8 @@ public class SAML2Controller extends BaseSAMLController {
 		}
 	}
 	
-	private void encodeOutboundMessageContextPost(final MessageContext messageContext,
-	        final HttpServletResponse servletResponse) throws Exception {
+	private void encodeOutboundMessageContextPost(final @Nonnull MessageContext messageContext,
+	        final @Nonnull HttpServletResponse servletResponse) throws Exception {
 		final HTTPPostEncoder encoder = new HTTPPostEncoder();
 		try {
 		    setupResponse(encoder,servletResponse);
@@ -481,13 +493,14 @@ public class SAML2Controller extends BaseSAMLController {
 		}
 	}
 
-   private void encodeOutboundMessageContextArtifact(final MessageContext messageContext,
-           final HttpServletResponse servletResponse) throws Exception {
+   private void encodeOutboundMessageContextArtifact(final @Nonnull MessageContext messageContext,
+           final @Nonnull HttpServletResponse servletResponse) throws Exception {
         final HTTPArtifactEncoder encoder = new HTTPArtifactEncoder();
         try {
             setupResponse(encoder,servletResponse);
             encoder.setMessageContext(messageContext);
             encoder.setVelocityEngine(velocityEngine);
+            assert artifactMap != null;
             encoder.setArtifactMap(artifactMap);
             encoder.initialize();
             
@@ -501,8 +514,8 @@ public class SAML2Controller extends BaseSAMLController {
         }
     }
    
-   private void encodeOutboundMessageContextSOAP(final MessageContext messageContext,
-           final HttpServletResponse servletResponse) throws Exception {
+   private void encodeOutboundMessageContextSOAP(final @Nonnull MessageContext messageContext,
+           final @Nonnull HttpServletResponse servletResponse) throws Exception {
        final HTTPSOAP11Encoder encoder = new HTTPSOAP11Encoder();
        try {
            setupResponse(encoder,servletResponse);
@@ -535,7 +548,7 @@ public class SAML2Controller extends BaseSAMLController {
         return sloEndpoint;
     }
 	
-	private AuthnRequest buildAuthnRequest(final HttpServletRequest servletRequest) {
+	private AuthnRequest buildAuthnRequest(final @Nonnull HttpServletRequest servletRequest) {
 		final AuthnRequest authnRequest = (AuthnRequest) builderFactory.ensureBuilder(
 		        AuthnRequest.DEFAULT_ELEMENT_NAME).buildObject(AuthnRequest.DEFAULT_ELEMENT_NAME);
 		
@@ -724,7 +737,7 @@ public class SAML2Controller extends BaseSAMLController {
         return logoutResponse;
     }
     
-	@Nonnull private String getDestinationRedirect(final HttpServletRequest servletRequest, final String profile) {
+	@Nonnull private String getDestinationRedirect(final @Nonnull HttpServletRequest servletRequest, final @Nonnull String profile) {
 		//TODO servlet context
 		final String destinationPath = "/idp/profile/SAML2/Redirect/" + profile;
 		final String baseUrl = getBaseUrl(servletRequest);
@@ -738,7 +751,7 @@ public class SAML2Controller extends BaseSAMLController {
 		}
 	}
 	
-	@Nonnull private String getDestinationPost(final HttpServletRequest servletRequest, final String profile) {
+	@Nonnull private String getDestinationPost(final @Nonnull HttpServletRequest servletRequest, final @Nonnull String profile) {
 		//TODO servlet context
 		final String destinationPath = "/idp/profile/SAML2/POST/" + profile;
 		final String baseUrl = getBaseUrl(servletRequest);
@@ -752,7 +765,7 @@ public class SAML2Controller extends BaseSAMLController {
 		}
 	}
 
-	@Nonnull private String getDestinationArtifact(final HttpServletRequest servletRequest, final String profile) {
+	@Nonnull private String getDestinationArtifact(final @Nonnull HttpServletRequest servletRequest, final @Nonnull String profile) {
         //TODO servlet context
         final String destinationPath = "/idp/profile/SAML2/Artifact/" + profile;
         final String baseUrl = getBaseUrl(servletRequest);
@@ -766,7 +779,7 @@ public class SAML2Controller extends BaseSAMLController {
         }
     }
 
-	@Nonnull private String getAcsUrl(final HttpServletRequest servletRequest) {
+	@Nonnull private String getAcsUrl(final @Nonnull HttpServletRequest servletRequest) {
 		//TODO servlet context
 	    final String spId = getSpId(servletRequest);
         final String acsPath = (spId == null) ? "/sp/SAML2/POST/ACS" : "/sp/" + spId + "/SAML2/POST/ACS";
@@ -781,9 +794,10 @@ public class SAML2Controller extends BaseSAMLController {
 		}
 	}
 	
-	@Nonnull private String getBaseUrl(final HttpServletRequest servletRequest) {
+	@Nonnull private String getBaseUrl(final @Nonnull HttpServletRequest servletRequest) {
 		//TODO servlet context
 	    final String requestUrl = servletRequest.getRequestURL().toString();
+	    assert requestUrl!=null;
 		try {
 		    final URLBuilder urlBuilder = new URLBuilder(requestUrl);
 			urlBuilder.setUsername(null);
@@ -822,7 +836,7 @@ public class SAML2Controller extends BaseSAMLController {
     @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;
+            final Map<?,?> pathVariables = (Map<?,?>) attr;
             final Object spId = pathVariables.get("spId");
             log.trace("Found spID '{}'", spId);
             if (spId != null) {
@@ -865,12 +879,13 @@ public class SAML2Controller extends BaseSAMLController {
      * 
      * @throws Exception if an error occurs
      */
-    @RequestMapping(value = "/InitSLO/SOAP", method = RequestMethod.POST) public ResponseEntity<String>
-            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 = "clientSigningCertificate", required = false) final String clientSigningCertificate,
-                    @RequestParam(value = "clientSigningPrivateKey", required = false) final String clientSigningPrivateKey)
+    @SuppressWarnings("deprecation")
+	@RequestMapping(value = "/InitSLO/SOAP", method = RequestMethod.POST) public ResponseEntity<String>
+            initSAML2LogoutRequest(final @Nonnull HttpServletRequest servletRequest, final @Nonnull HttpServletResponse servletResponse,
+                    @RequestParam(value = "endpoint", required = true) final @Nonnull String endpoint,
+                    @RequestParam(value = "principalName", required = true) final @Nonnull String principalName,
+                    @RequestParam(value = "clientSigningCertificate", required = false) final @Nonnull String clientSigningCertificate,
+                    @RequestParam(value = "clientSigningPrivateKey", required = false) final @Nonnull String clientSigningPrivateKey)
                     throws Exception {
 
         final HttpClient httpClient = buildHttpClient();
@@ -880,7 +895,7 @@ public class SAML2Controller extends BaseSAMLController {
         httpSoapClient.setHttpClient(httpClient);
 
         final LogoutRequest logoutRequest = buildLogoutRequest(servletRequest, principalName);
-
+        assert logoutRequest != null;
         // Sign if client signing certificate is present
         if (StringSupport.trimOrNull(clientSigningCertificate) != null) {
             sign(logoutRequest, clientSigningCertificate, clientSigningPrivateKey);
@@ -889,18 +904,24 @@ public class SAML2Controller extends BaseSAMLController {
         final Envelope envelope = buildSOAP11Envelope(logoutRequest);
 
         if (log.isDebugEnabled()) {
+        	final Marshaller marshaller = marshallerFactory.getMarshaller(envelope);
+        	assert marshaller != null;
             log.debug("Sending LogoutRequest to endpoint '{}':\n", endpoint, SerializeSupport.prettyPrintXML(
-                    marshallerFactory.getMarshaller(envelope).marshall(envelope, parserPool.newDocument())));
+            		marshaller.marshall(envelope, parserPool.newDocument())));
         }
 
         final InOutOperationContext context = buildInOutOperationContext(envelope);
 
         httpSoapClient.send(endpoint, context);
-
-        final Envelope soapResponse =
-                context.getInboundMessageContext().getSubcontext(SOAP11Context.class).getEnvelope();
-
-        final String formattedMessage = SerializeSupport.prettyPrintXML(soapResponse.getDOM());
+        final MessageContext msgContext = context.getInboundMessageContext();
+        assert msgContext!= null;
+        final SOAP11Context soapContext = msgContext.getSubcontext(SOAP11Context.class);
+        assert soapContext != null;
+        final Envelope soapResponse = soapContext.getEnvelope();
+        assert soapResponse != null;
+        final Element dom = soapResponse.getDOM();
+        assert dom != null;
+        final String formattedMessage = SerializeSupport.prettyPrintXML(dom);
 
         final HttpHeaders headers = new HttpHeaders();
         headers.add("Content-Type", "text/plain");
@@ -927,12 +948,13 @@ public class SAML2Controller extends BaseSAMLController {
      * 
      * @throws Exception if an error occurs
      */
-    @RequestMapping(value = "/AttributeQuery", method = RequestMethod.POST) public ResponseEntity<String>
-            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 = "clientSigningCertificate", required = false) final String clientSigningCertificate,
-                    @RequestParam(value = "clientSigningPrivateKey", required = false) final String clientSigningPrivateKey)
+    @SuppressWarnings("deprecation")
+	@RequestMapping(value = "/AttributeQuery", method = RequestMethod.POST) public ResponseEntity<String>
+            initSAML2AttributeQuery(final @Nonnull HttpServletRequest servletRequest, final @Nonnull HttpServletResponse servletResponse,
+                    @RequestParam(value = "endpoint", required = true) final @Nonnull String endpoint,
+                    @RequestParam(value = "principalName", required = true) final @Nonnull String principalName,
+                    @RequestParam(value = "clientSigningCertificate", required = false) final @Nonnull String clientSigningCertificate,
+                    @RequestParam(value = "clientSigningPrivateKey", required = false) final @Nonnull String clientSigningPrivateKey)
                     throws Exception {
 
         final HttpClient httpClient = buildHttpClient();
@@ -951,18 +973,25 @@ public class SAML2Controller extends BaseSAMLController {
         final Envelope envelope = buildSOAP11Envelope(attributeQuery);
 
         if (log.isDebugEnabled()) {
+        	final Marshaller marshaller = marshallerFactory.getMarshaller(envelope);
+        	assert marshaller != null;
             log.debug("Sending AttributeQuery to endpoint '{}':\n", endpoint, SerializeSupport.prettyPrintXML(
-                    marshallerFactory.getMarshaller(envelope).marshall(envelope, parserPool.newDocument())));
+                    marshaller.marshall(envelope, parserPool.newDocument())));
         }
 
         final InOutOperationContext context = buildInOutOperationContext(envelope);
 
         httpSoapClient.send(endpoint, context);
-
-        final Envelope soapResponse =
-                context.getInboundMessageContext().getSubcontext(SOAP11Context.class).getEnvelope();
-
-        final String formattedMessage = SerializeSupport.prettyPrintXML(soapResponse.getDOM());
+        
+        final MessageContext msgContext = context.getInboundMessageContext();
+        assert msgContext!= null;
+        final SOAP11Context soapContext = msgContext.getSubcontext(SOAP11Context.class);
+        assert soapContext != null;
+        final Envelope soapResponse = soapContext.getEnvelope();
+        assert soapResponse != null;
+        final Element dom = soapResponse.getDOM();
+        assert dom != null;
+        final String formattedMessage = SerializeSupport.prettyPrintXML(dom);
 
         final HttpHeaders headers = new HttpHeaders();
         headers.add("Content-Type", "text/plain");
@@ -1129,8 +1158,8 @@ public class SAML2Controller extends BaseSAMLController {
 
         final X509Certificate cert = CertUtil.readCertificate(certificateResource.getInputStream());
         final PrivateKey key = KeyPairUtil.readPrivateKey(privateKeyResource.getInputStream());
+        assert cert != null && key != null;
         final BasicX509Credential cred = new BasicX509Credential(cert, key);
-
         final SignatureSigningParameters signingParameters = new SignatureSigningParameters();
         signingParameters.setSigningCredential(cred);
         signingParameters.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
diff --git a/src/main/java/storage/SimpleStorageRecordSerializer.java b/src/main/java/storage/SimpleStorageRecordSerializer.java
index b714c30..18f79fd 100644
--- a/src/main/java/storage/SimpleStorageRecordSerializer.java
+++ b/src/main/java/storage/SimpleStorageRecordSerializer.java
@@ -42,6 +42,7 @@ import net.shibboleth.shared.component.AbstractInitializableComponent;
 /**
  * A simple {@link StorageRecord} serializer.
  */
+ at SuppressWarnings("rawtypes")
 public class SimpleStorageRecordSerializer extends AbstractInitializableComponent
         implements StorageSerializer<StorageRecord> {
 
@@ -51,7 +52,8 @@ public class SimpleStorageRecordSerializer extends AbstractInitializableComponen
     /** JSON reader factory. */
     @Nonnull private JsonReaderFactory readerFactory;
 
-    public SimpleStorageRecordSerializer() {
+    @SuppressWarnings("null")
+	public SimpleStorageRecordSerializer() {
         final Map<String, String> generatorConfig = new HashMap<>();
         generatorConfig.put(JsonGenerator.PRETTY_PRINTING, "true");
         generatorFactory = Json.createGeneratorFactory(generatorConfig);
@@ -59,7 +61,7 @@ public class SimpleStorageRecordSerializer extends AbstractInitializableComponen
     }
 
     /** {@inheritDoc} */
-    public String serialize(@Nonnull final StorageRecord instance) throws IOException {
+    public @Nonnull String serialize( @Nonnull final StorageRecord instance) throws IOException {
 
         final StringWriter sink = new StringWriter();
         final JsonGenerator gen = generatorFactory.createGenerator(sink);
@@ -73,7 +75,9 @@ public class SimpleStorageRecordSerializer extends AbstractInitializableComponen
         }
         gen.writeEnd().close();
 
-        return sink.toString();
+        final String result = sink.toString();
+        assert result != null;
+        return result;
     }
 
     /** {@inheritDoc} */
@@ -94,7 +98,7 @@ public class SimpleStorageRecordSerializer extends AbstractInitializableComponen
      * @return a deserialized object
      * @throws IOException if an error occurs
      */
-    @Nonnull public StorageRecord deserialize(@Nonnull @NotEmpty final String context,
+    @Nonnull public StorageRecord<?> deserialize(@Nonnull @NotEmpty final String context,
             @Nonnull @NotEmpty final String key, @Nonnull final String serialized) throws IOException {
         final JsonReader reader = readerFactory.createReader(new StringReader(serialized));
         final JsonStructure st = reader.read();
@@ -103,6 +107,7 @@ public class SimpleStorageRecordSerializer extends AbstractInitializableComponen
         }
         final JsonObject obj = (JsonObject) st;
         final String value = obj.getString("value");
+        assert value != null;
         final int version = obj.getInt("version");
         Long expiration = null;
         final JsonNumber jsonExpiration = obj.getJsonNumber("expiration");
@@ -116,7 +121,7 @@ public class SimpleStorageRecordSerializer extends AbstractInitializableComponen
     /**
      * Exposes mutation of {@link StorageRecord} properties including version.
      */
-    private class VersionableStorageRecord extends MutableStorageRecord {
+    private class VersionableStorageRecord extends MutableStorageRecord<Object> {
 
         /**
          * Constructor.
diff --git a/src/main/java/storage/StorageServiceWrapperController.java b/src/main/java/storage/StorageServiceWrapperController.java
index a90bbe5..bdb43c7 100644
--- a/src/main/java/storage/StorageServiceWrapperController.java
+++ b/src/main/java/storage/StorageServiceWrapperController.java
@@ -25,7 +25,6 @@ import org.opensaml.storage.StorageRecord;
 import org.opensaml.storage.StorageSerializer;
 import org.opensaml.storage.StorageService;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
@@ -40,6 +39,8 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
+import net.shibboleth.shared.primitive.LoggerFactory;
+
 /**
  * Interact with storage services via HTTP.
  * 
@@ -81,6 +82,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
  * curl 'http://localhost:8080/idp/storage/'
  * </pre>
  */
+ at SuppressWarnings("rawtypes")
 @Controller
 public class StorageServiceWrapperController {
 
@@ -125,7 +127,9 @@ public class StorageServiceWrapperController {
 
         final Map<String, StorageService> storageServices = new HashMap<>();
         storageServices.putAll(appContext.getBeansOfType(StorageService.class));
-        storageServices.putAll(appContext.getParent().getBeansOfType(StorageService.class));
+        final ApplicationContext parentContext = appContext.getParent();
+        assert parentContext != null;
+        storageServices.putAll(parentContext.getBeansOfType(StorageService.class));
 
         if (log.isDebugEnabled()) {
             for (final Map.Entry<String, StorageService> entry : storageServices.entrySet()) {
@@ -198,7 +202,7 @@ public class StorageServiceWrapperController {
             }
 
             log.debug("Reading from '{}' with context '{}' and key '{}'", storageServiceId, context, key);
-            final StorageRecord record = storageService.read(context, key);
+			final StorageRecord record = storageService.read(context, key);
             log.debug("Read '{}' from '{}' with context '{}' and key '{}'", record, storageServiceId, context, key);
 
             if (record == null) {

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


More information about the commits mailing list