You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2012/09/05 21:17:06 UTC
svn commit: r1381307 - in /cxf/trunk:
api/src/main/java/org/apache/cxf/configuration/jsse/
systests/transports/src/test/java/org/apache/cxf/systest/http/
Author: dkulp
Date: Wed Sep 5 19:17:05 2012
New Revision: 1381307
URL: http://svn.apache.org/viewvc?rev=1381307&view=rev
Log:
Add hashCode/equals methods to the TLS stuff so it can be used as part of the keys for the connection pools
Modified:
cxf/trunk/api/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParameters.java
cxf/trunk/api/src/main/java/org/apache/cxf/configuration/jsse/TLSParameterBase.java
cxf/trunk/systests/transports/src/test/java/org/apache/cxf/systest/http/HTTPConduitTest.java
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParameters.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParameters.java?rev=1381307&r1=1381306&r2=1381307&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParameters.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParameters.java Wed Sep 5 19:17:05 2012
@@ -18,6 +18,8 @@
*/
package org.apache.cxf.configuration.jsse;
+import java.util.List;
+
import javax.net.ssl.SSLSocketFactory;
/**
@@ -122,4 +124,115 @@ public class TLSClientParameters extends
boolean useHttpsURLConnectionDefaultHostnameVerifier) {
this.useHttpsURLConnectionDefaultHostnameVerifier = useHttpsURLConnectionDefaultHostnameVerifier;
}
+
+ public int hashCode() {
+ int hash = disableCNCheck ? 37 : 17;
+ hash = hash(hash, sslCacheTimeout);
+ hash = hash(hash, secureRandom);
+ hash = hash(hash, protocol);
+ hash = hash(hash, certAlias);
+ hash = hash(hash, provider);
+ for (String cs : ciphersuites) {
+ hash = hash(hash, cs);
+ }
+ hash = hash(hash, keyManagers);
+ hash = hash(hash, trustManagers);
+ if (cipherSuiteFilters != null) {
+ hash = hash(hash, cipherSuiteFilters.getInclude());
+ hash = hash(hash, cipherSuiteFilters.getExclude());
+ }
+ if (certConstraints != null) {
+ hash = hash(hash, certConstraints.getIssuerDNConstraints());
+ hash = hash(hash, certConstraints.getSubjectDNConstraints());
+ }
+ return hash;
+ }
+ private int hash(int i, Object o) {
+ if (o != null) {
+ i = i * 37 + o.hashCode();
+ }
+ return i;
+ }
+ private int hash(int i, Object[] os) {
+ if (os == null) {
+ return i;
+ }
+ for (Object o: os) {
+ i = hash(i, o);
+ }
+ return i;
+ }
+
+ public boolean equals(Object o) {
+ if (o == this) {
+ return true;
+ }
+ if (o instanceof TLSClientParameters) {
+ TLSClientParameters that = (TLSClientParameters)o;
+ boolean eq = disableCNCheck == that.disableCNCheck;
+ eq |= sslCacheTimeout == that.sslCacheTimeout;
+ eq |= secureRandom == that.secureRandom;
+ eq |= equals(certAlias, that.certAlias);
+ eq |= equals(protocol, that.protocol);
+ eq |= equals(provider, that.provider);
+ eq |= equals(ciphersuites, that.ciphersuites);
+ eq |= equals(keyManagers, that.keyManagers);
+ eq |= equals(trustManagers, that.trustManagers);
+ if (cipherSuiteFilters != null) {
+ if (that.cipherSuiteFilters != null) {
+ eq |= equals(cipherSuiteFilters.getExclude(), that.cipherSuiteFilters.getExclude());
+ eq |= equals(cipherSuiteFilters.getInclude(), that.cipherSuiteFilters.getInclude());
+ } else {
+ eq = false;
+ }
+ } else {
+ eq |= that.cipherSuiteFilters == null;
+ }
+ if (certConstraints != null) {
+ if (that.certConstraints != null) {
+ eq |= equals(certConstraints.getIssuerDNConstraints(),
+ that.certConstraints.getIssuerDNConstraints());
+ eq |= equals(certConstraints.getSubjectDNConstraints(),
+ that.certConstraints.getSubjectDNConstraints());
+ } else {
+ eq = false;
+ }
+ } else {
+ eq |= that.certConstraints == null;
+ }
+ return eq;
+ }
+ return false;
+ }
+
+ private static boolean equals(final List<?> obj1, final List<?> obj2) {
+ if (obj1.size() == obj2.size()) {
+ for (int x = 0; x < obj1.size(); x++) {
+ if (!equals(obj1.get(x), obj2.get(x))) {
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+ private static boolean equals(final Object obj1, final Object obj2) {
+ return obj1 == null ? obj2 == null : obj1.equals(obj2);
+ }
+ private static boolean equals(final Object[] a1, final Object[] a2) {
+ if (a1 == null) {
+ return a2 == null;
+ } else {
+ if (a2 != null && a1.length == a2.length) {
+ for (int i = 0; i < a1.length; i++) {
+ if (!equals(a1[i], a2[i])) {
+ return false;
+ }
+ }
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
}
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/configuration/jsse/TLSParameterBase.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/configuration/jsse/TLSParameterBase.java?rev=1381307&r1=1381306&r2=1381307&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/configuration/jsse/TLSParameterBase.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/configuration/jsse/TLSParameterBase.java Wed Sep 5 19:17:05 2012
@@ -33,15 +33,15 @@ import org.apache.cxf.configuration.secu
* to both client and server sides.
*/
public class TLSParameterBase {
- private KeyManager[] keyManagers;
- private TrustManager[] trustManagers;
- private String provider;
- private List<String> ciphersuites = new ArrayList<String>();
- private FiltersType cipherSuiteFilters;
- private CertificateConstraintsType certConstraints;
- private SecureRandom secureRandom;
- private String protocol;
- private String certAlias;
+ protected KeyManager[] keyManagers;
+ protected TrustManager[] trustManagers;
+ protected String provider;
+ protected List<String> ciphersuites = new ArrayList<String>();
+ protected FiltersType cipherSuiteFilters;
+ protected CertificateConstraintsType certConstraints;
+ protected SecureRandom secureRandom;
+ protected String protocol;
+ protected String certAlias;
/**
* Set the JSSE provider. If not set,
* it uses system default.
Modified: cxf/trunk/systests/transports/src/test/java/org/apache/cxf/systest/http/HTTPConduitTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/transports/src/test/java/org/apache/cxf/systest/http/HTTPConduitTest.java?rev=1381307&r1=1381306&r2=1381307&view=diff
==============================================================================
--- cxf/trunk/systests/transports/src/test/java/org/apache/cxf/systest/http/HTTPConduitTest.java (original)
+++ cxf/trunk/systests/transports/src/test/java/org/apache/cxf/systest/http/HTTPConduitTest.java Wed Sep 5 19:17:05 2012
@@ -505,6 +505,10 @@ public class HTTPConduitTest extends Abs
assertEquals("Set the wrong pass word form the configuration",
"password", authPolicy.getPassword());
String answer = bethal.sayHi();
+ answer = bethal.sayHi();
+ answer = bethal.sayHi();
+ answer = bethal.sayHi();
+ answer = bethal.sayHi();
assertTrue("Unexpected answer: " + answer,
"Bonjour from Bethal".equals(answer));
}