Index: test/src/main/org/jboss/test/util/SecurityProviderUtil.java =================================================================== --- test/src/main/org/jboss/test/util/SecurityProviderUtil.java (revision 70539) +++ test/src/main/org/jboss/test/util/SecurityProviderUtil.java (working copy) @@ -25,6 +25,8 @@ import org.jboss.logging.Logger; +import java.util.Properties; + //$Id$ /** @@ -39,24 +41,68 @@ private static Logger log = Logger.getLogger(SecurityProviderUtil.class); //Pass the system properties as part of the test suite setup - based on your VM - private static String jsseProviderClassName = System.getProperty("jsse.provider.class", - "com.sun.net.ssl.internal.ssl.Provider"); private static String sslProtocolClass = System.getProperty("www.protocol.class", "com.sun.net.ssl.internal.www.protocol"); + private static final String PROP_FILE_NAME = "security-provider.properties"; + private static final String JSSE_PROV_NAME_PREFIX = "jsse.provider.class."; + /** * Get a JSSE Security Provider * @return */ public static Provider getJSSEProvider() { + String jsseProviderName = null; + + Properties prop = new Properties(); + try + { + prop.load(ClassLoader.getSystemResourceAsStream(PROP_FILE_NAME)); + } catch (java.io.IOException ioe) + { + log.error("Error loading the property file: ", ioe); + return null; + } + + boolean searched = false; + boolean found = false; + int i=1; + while (!searched) + { + if (prop.containsKey(JSSE_PROV_NAME_PREFIX + i)) + { + String jsseProvider = prop.getProperty(JSSE_PROV_NAME_PREFIX + i); + try + { + Class.forName(jsseProvider); + jsseProviderName = jsseProvider; + log.debug ("Using JSEE Provider :" + jsseProvider); + searched = true; + } catch (ClassNotFoundException cnfe) + { + log.debug ("Could not find JSEE Provider :" + jsseProvider ); + } + } else + { + log.debug("Unable to read " + JSSE_PROV_NAME_PREFIX + i + " - no other properties"); + searched = true; + } + i++; + } + if (jsseProviderName == null) + { + log.error ("No JSSE Providers found. Please add the appropriate provider in providers.properties"); + } + + Provider obj = null; ClassLoader tcl = Thread.currentThread().getContextClassLoader(); Class clazz; try { - clazz = tcl.loadClass(jsseProviderClassName); + clazz = tcl.loadClass(jsseProviderName); obj = (Provider)clazz.newInstance(); } catch (Throwable t) Index: test/src/resources/security-provider.properties =================================================================== --- test/src/resources/security-provider.properties (revision 0) +++ test/src/resources/security-provider.properties (revision 0) @@ -0,0 +1,10 @@ +# Specifies a list of possible jsse provider classes. +# Numbers must start from 1 upwards and denotes priority. +jsse.provider.class.1 com.sun.net.ssl.internal.ssl.Provider +jsse.provider.class.2 com.ibm.jsse.IBMJSSEProvider + +# Specifies a list of possible www protocol classes. +# Numbers must start from 1 upwards and denotes priority. +#www.protocol.class.1 com.sun.net.ssl.internal.www.protocol +#www.protocol.class.2 com.ibm.net.ssl.internal.www.protocol + Index: test/build.xml =================================================================== --- test/build.xml (revision 70539) +++ test/build.xml (working copy) @@ -106,7 +106,7 @@ --> @@ -120,6 +120,7 @@ +