aevers 2003/01/29 05:40:10 Modified: src/java/org/apache/xmlrpc DefaultXmlRpcTransportFactory.java XmlRpcTransportFactory.java src/java/org/apache/xmlrpc/secure/sunssl SunSSLTransportFactory.java Log: Add setProperty() method to XmlRpcTransportFactory to allow transport factories to be re-configured after creation. Make DefaultXmlRpcTransportFactory a bit easier to use, you can now create registered Transport Factories using createTransportFactory. The new setBasicAuthentication() method will set the authentication information for both http and https transports created via the factory. Cleaned up the naming of fields/methods associated with the https transport. Everything now uses HTTPS as the name instead of a hotch-potch of SSL, secure and HTTPS. Revision Changes Path 1.3 +34 -18 xml-rpc/src/java/org/apache/xmlrpc/DefaultXmlRpcTransportFactory.java Index: DefaultXmlRpcTransportFactory.java =================================================================== RCS file: /home/cvs/xml-rpc/src/java/org/apache/xmlrpc/DefaultXmlRpcTransportFactory.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DefaultXmlRpcTransportFactory.java 29 Jan 2003 00:46:37 -0000 1.2 +++ DefaultXmlRpcTransportFactory.java 29 Jan 2003 13:40:08 -0000 1.3 @@ -76,25 +76,31 @@ */ public class DefaultXmlRpcTransportFactory implements XmlRpcTransportFactory { - // Default properties to pass to transport factory + // Default properties for new http transports protected URL url; protected String auth; - protected static XmlRpcTransportFactory secureTransportFactory; + protected static XmlRpcTransportFactory httpsTransportFactory; - public static final String DEFAULT_SSL_PROVIDER = "comnetsun"; + public static final String DEFAULT_HTTPS_PROVIDER = "comnetsun"; - private static Hashtable sslTransports = new Hashtable (1); + private static Hashtable transports = new Hashtable (1); static { // A mapping of short identifiers to the fully qualified class names of - // common SSL transport factories. If more mappings are added here, - // increase the size of the sslTransports Hashtable used to store them. - sslTransports.put("comnetsun", "org.apache.xmlrpc.secure.sunssl.SunSSLTransportFactory"); + // common transport factories. If more mappings are added here, + // increase the size of the transports Hashtable used to store them. + transports.put("comnetsun", "org.apache.xmlrpc.secure.sunssl.SunSSLTransportFactory"); } - public static void setTransport(String transport, Properties properties) + public static void setHTTPSTransport(String transport, Properties properties) + throws XmlRpcClientException + { + httpsTransportFactory = createTransportFactory(transport, properties); + } + + public static XmlRpcTransportFactory createTransportFactory(String transport, Properties properties) throws XmlRpcClientException { String transportFactoryClassName = null; @@ -104,7 +110,7 @@ try { - transportFactoryClassName = (String) sslTransports.get(transport); + transportFactoryClassName = (String) transports.get(transport); if (transportFactoryClassName == null) { // Identifier lookup failed, assuming we were provided @@ -119,8 +125,7 @@ new Object [] { properties }); if (transportFactoryInstance instanceof XmlRpcTransportFactory) { - secureTransportFactory = (XmlRpcTransportFactory) - transportFactoryInstance; + return (XmlRpcTransportFactory) transportFactoryInstance; } else { @@ -178,17 +183,17 @@ { if ("https".equals(url.getProtocol())) { - if (secureTransportFactory == null) + if (httpsTransportFactory == null) { Properties properties = new Properties(); properties.put(XmlRpcTransportFactory.TRANSPORT_URL, url); properties.put(XmlRpcTransportFactory.TRANSPORT_AUTH, auth); - setTransport(DEFAULT_SSL_PROVIDER, properties); + setHTTPSTransport(DEFAULT_HTTPS_PROVIDER, properties); } - return secureTransportFactory.createTransport(); + return httpsTransportFactory.createTransport(); } return new DefaultXmlRpcTransport(url); @@ -202,11 +207,22 @@ */ public void setBasicAuthentication(String user, String password) { - auth = HttpUtil.encodeBasicAuthentication(user, password); + setProperty(TRANSPORT_AUTH, HttpUtil.encodeBasicAuthentication(user, password)); } - public URL getURL() + public void setProperty(String propertyName, Object value) { - return url; + if (httpsTransportFactory != null) + { + httpsTransportFactory.setProperty(propertyName, value); + } + if (TRANSPORT_AUTH.equals(propertyName)) + { + auth = (String) value; + } + else if (TRANSPORT_URL.equals(propertyName)) + { + url = (URL) value; + } } } 1.3 +9 -1 xml-rpc/src/java/org/apache/xmlrpc/XmlRpcTransportFactory.java Index: XmlRpcTransportFactory.java =================================================================== RCS file: /home/cvs/xml-rpc/src/java/org/apache/xmlrpc/XmlRpcTransportFactory.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XmlRpcTransportFactory.java 28 Jan 2003 10:34:36 -0000 1.2 +++ XmlRpcTransportFactory.java 29 Jan 2003 13:40:08 -0000 1.3 @@ -90,4 +90,12 @@ */ public XmlRpcTransport createTransport() throws XmlRpcClientException; + + /** + * Set a property for all newly created transports. + * + * @param propertyName the property to set. + * @param value the value to set it to. + */ + public void setProperty(String propertyName, Object value); } 1.2 +13 -1 xml-rpc/src/java/org/apache/xmlrpc/secure/sunssl/SunSSLTransportFactory.java Index: SunSSLTransportFactory.java =================================================================== RCS file: /home/cvs/xml-rpc/src/java/org/apache/xmlrpc/secure/sunssl/SunSSLTransportFactory.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SunSSLTransportFactory.java 28 Jan 2003 10:34:40 -0000 1.1 +++ SunSSLTransportFactory.java 29 Jan 2003 13:40:09 -0000 1.2 @@ -176,4 +176,16 @@ { return new DefaultXmlRpcTransport(url, auth); } + + public void setProperty(String propertyName, Object value) + { + if (TRANSPORT_AUTH.equals(propertyName)) + { + auth = (String) value; + } + else if (TRANSPORT_URL.equals(propertyName)) + { + url = (URL) value; + } + } }