From c34ff785dd853d6d5bc7b8002cbac069fe567cb6 Mon Sep 17 00:00:00 2001 From: Misagh Moayyed Date: Mon, 4 Mar 2013 14:17:55 -0700 Subject: [PATCH] CASC-180: Fix the issue with casting to http url connections and provide a default instance for the http url factory. --- .../cas/client/ssl/HttpsURLConnectionFactory.java | 9 ++++++--- .../org/jasig/cas/client/ssl/URLConnectionFactory.java | 5 +++-- .../java/org/jasig/cas/client/util/CommonUtils.java | 10 +++++----- .../cas/client/validation/Saml11TicketValidator.java | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/ssl/HttpsURLConnectionFactory.java b/cas-client-core/src/main/java/org/jasig/cas/client/ssl/HttpsURLConnectionFactory.java index 2fc3ed2..3082607 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/ssl/HttpsURLConnectionFactory.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/ssl/HttpsURLConnectionFactory.java @@ -2,6 +2,7 @@ package org.jasig.cas.client.ssl; import java.io.FileInputStream; import java.io.InputStream; +import java.net.HttpURLConnection; import java.net.URLConnection; import java.security.KeyStore; import java.util.Properties; @@ -30,6 +31,8 @@ public final class HttpsURLConnectionFactory implements URLConnectionFactory { private static final Logger LOGGER = LoggerFactory.getLogger(HttpsURLConnectionFactory.class); + public static final HttpsURLConnectionFactory INSTANCE = new HttpsURLConnectionFactory(); + /** * Hostname verifier used when making an SSL request to the CAS server. * Defaults to {@link HttpsURLConnection#getDefaultHostnameVerifier()} @@ -63,7 +66,7 @@ public final class HttpsURLConnectionFactory implements URLConnectionFactory { this.hostnameVerifier = verifier; } - public URLConnection getURLConnection(final URLConnection url) { + public HttpURLConnection buildHttpURLConnection(final URLConnection url) { return this.configureHttpsConnectionIfNeeded(url); } @@ -74,7 +77,7 @@ public final class HttpsURLConnectionFactory implements URLConnectionFactory { * * @param conn the http connection */ - private URLConnection configureHttpsConnectionIfNeeded(final URLConnection conn) { + private HttpURLConnection configureHttpsConnectionIfNeeded(final URLConnection conn) { if (conn instanceof HttpsURLConnection) { final HttpsURLConnection httpsConnection = (HttpsURLConnection) conn; final SSLSocketFactory socketFactory = this.createSSLSocketFactory(); @@ -86,7 +89,7 @@ public final class HttpsURLConnectionFactory implements URLConnectionFactory { httpsConnection.setHostnameVerifier(this.hostnameVerifier); } } - return conn; + return (HttpURLConnection)conn; } /** diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/ssl/URLConnectionFactory.java b/cas-client-core/src/main/java/org/jasig/cas/client/ssl/URLConnectionFactory.java index 45b7dd0..28bbadc 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/ssl/URLConnectionFactory.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/ssl/URLConnectionFactory.java @@ -18,6 +18,7 @@ */ package org.jasig.cas.client.ssl; +import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; @@ -36,9 +37,9 @@ public interface URLConnectionFactory { * to accommodate method chaining. * * @param url The url connection that needs to be configured - * @return The configured {@link URLConnection} instance + * @return The configured {@link HttpURLConnection} instance * * @see {@link HttpsURLConnectionFactory} */ - URLConnection getURLConnection(final URLConnection url); + HttpURLConnection buildHttpURLConnection(final URLConnection url); } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java index fe264ac..03f481d 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java @@ -331,9 +331,9 @@ public final class CommonUtils { */ public static String getResponseFromServer(final URL constructedUrl, final URLConnectionFactory factory, final String encoding) { - URLConnection conn = null; + HttpURLConnection conn = null; try { - conn = factory.getURLConnection(constructedUrl.openConnection()); + conn = factory.buildHttpURLConnection(constructedUrl.openConnection()); final BufferedReader in; @@ -355,8 +355,8 @@ public final class CommonUtils { LOGGER.error(e.getMessage(), e); throw new RuntimeException(e); } finally { - if (conn != null && conn instanceof HttpURLConnection) { - ((HttpURLConnection)conn).disconnect(); + if (conn != null) { + conn.disconnect(); } } @@ -371,7 +371,7 @@ public final class CommonUtils { */ public static String getResponseFromServer(final String url, String encoding) { try { - return getResponseFromServer(new URL(url), new HttpsURLConnectionFactory(), encoding); + return getResponseFromServer(new URL(url), HttpsURLConnectionFactory.INSTANCE, encoding); } catch (final MalformedURLException e) { throw new IllegalArgumentException(e); } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java index 0f97a94..7176a9d 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java @@ -233,7 +233,7 @@ public final class Saml11TicketValidator extends AbstractUrlBasedTicketValidator BufferedReader in = null; try { - conn = (HttpURLConnection) this.getURLConnectionFactory().getURLConnection(validationUrl.openConnection()); + conn = this.getURLConnectionFactory().buildHttpURLConnection(validationUrl.openConnection()); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "text/xml"); conn.setRequestProperty("Content-Length", Integer.toString(MESSAGE_TO_SEND.length()));