> Should we keep setMaintainSession? I vote to keep it.
-- Tom Jordahl -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] Sent: Wednesday, February 06, 2002 10:17 AM To: [EMAIL PROTECTED] Subject: cvs commit: xml-axis/java/src/org/apache/axis/utils resources.properties butek 02/02/06 07:17:17 Modified: java/src/org/apache/axis/client Call.java Stub.java java/src/org/apache/axis/utils resources.properties Log: We now verify the standard JAX-RPC properties in both Call and Stub objects. ToDo: replace the AXIS properties with JAX-RPC properties. For example: MessageContext.USERID="user.id" should be replaced by Call..USERNAME_PROPERTY="javax.xml.rpc.security.auth.username". Question: we can set maintain session to true via the AXIS way - setMaintainSession - or via the JAX-RPC way - setProperty("...session.maintain", true). Do we want to keep setMaintainSession as a convenience method? Or do we want to remove it? Revision Changes Path 1.68 +101 -7 xml-axis/java/src/org/apache/axis/client/Call.java Index: Call.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Call.java,v retrieving revision 1.67 retrieving revision 1.68 diff -u -r1.67 -r1.68 --- Call.java 5 Feb 2002 19:37:48 -0000 1.67 +++ Call.java 6 Feb 2002 15:17:17 -0000 1.68 @@ -170,6 +170,22 @@ public static final String TRANSPORT_NAME = "transport_name" ; public static final String TRANSPORT_PROPERTY= "java.protocol.handler.pkgs"; + // Constants for the standard properties + public static final String USERNAME_PROPERTY = + "javax.xml.rpc.security.auth.username"; + public static final String PASSWORD_PROPERTY = + "javax.xml.rpc.security.auth.password"; + public static final String SESSION_PROPERTY = + "javax.xml.rpc.http.session.maintain"; + public static final String OPERATION_STYLE_PROPERTY = + "javax.xml.rpc.soap.operation.style"; + public static final String SOAPACTION_USE_PROPERTY = + "javax.xml.rpc.soap.http.soapaction.use"; + public static final String SOAPACTION_URI_PROPERTY = + "javax.xml.rpc.soap.http.soapaction.uri"; + public static final String NAMESPACE_URI_PROPERTY = + "javax.xml.rpc.encodingstyle.namespace.uri"; + /** * A Hashtable mapping protocols (Strings) to Transports (classes) */ @@ -635,14 +651,92 @@ * @param value Value of the property */ public void setProperty(String name, Object value) { - if (name == null || value == null) return; - - if ( name.equals(TRANSPORT_NAME) ) { + if (name == null || value == null) { + return; + // Is this right? Shouldn't we throw an exception like: throw new IllegalArgumentException(); + } + else if (name.equals(USERNAME_PROPERTY)) { + if (!(value instanceof String)) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp00", new String[] { + name, "java.lang.String", value.getClass().getName()})); + } + } + else if (name.equals(PASSWORD_PROPERTY)) { + if (!(value instanceof String)) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp00", new String[] { + name, "java.lang.String", value.getClass().getName()})); + } + } + else if (name.equals(SESSION_PROPERTY)) { + if (!(value instanceof Boolean)) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp00", new String[] + {name, + "java.lang.Boolean", + value.getClass().getName()})); + } + } + else if (name.equals(OPERATION_STYLE_PROPERTY)) { + if (!(value instanceof String)) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp00", new String[] { + name, "java.lang.String", value.getClass().getName()})); + } + String style = (String) value; + if (!style.equals("rpc") && !style.equals("document")) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp01", new String[] { + name, "\"rpc\", \"document\"", style})); + } + } + else if (name.equals(SOAPACTION_USE_PROPERTY)) { + if (!(value instanceof Boolean)) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp00", new String[] + {name, + "java.lang.Boolean", + value.getClass().getName()})); + } + } + else if (name.equals(SOAPACTION_URI_PROPERTY)) { + if (!(value instanceof String)) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp00", new String[] + {name, + "java.lang.String", + value.getClass().getName()})); + } + Boolean useSOAP = + (Boolean) myProperties.get(SOAPACTION_USE_PROPERTY); + if (useSOAP == null || !useSOAP.booleanValue()) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp02", new String[] + {name, SOAPACTION_USE_PROPERTY, "true"})); + } + } + else if (name.equals(NAMESPACE_URI_PROPERTY)) { + if (!(value instanceof String)) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp00", new String[] + {name, + "java.lang.String", + value.getClass().getName()})); + } + } + else if ( name.equals(TRANSPORT_NAME) ) { + if (!(value instanceof String)) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp00", new String[] { + name, "java.lang.String", value.getClass().getName()})); + } transportName = (String) value ; - if ( transport != null ) - transport.setTransportName( (String) value ); - return ; - } + if (transport != null) + transport.setTransportName((String) value); + return; + } + if (myProperties == null) myProperties = new Hashtable(); myProperties.put(name, value); 1.2 +41 -6 xml-axis/java/src/org/apache/axis/client/Stub.java Index: Stub.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Stub.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Stub.java 28 Jan 2002 20:50:14 -0000 1.1 +++ Stub.java 6 Feb 2002 15:17:17 -0000 1.2 @@ -65,6 +65,8 @@ import org.apache.axis.AxisFault; +import org.apache.axis.utils.JavaUtils; + /** * This class is the base for all generated stubs. */ @@ -72,12 +74,11 @@ public abstract class Stub implements javax.xml.rpc.Stub { // Constants for the standard properties - public static final String USERNAME_PROPERTY = - "javax.xml.rpc.security.auth.username"; - public static final String PASSWORD_PROPERTY = - "javax.xml.rpc.security.auth.password"; + public static final String USERNAME_PROPERTY = Call.USERNAME_PROPERTY; + public static final String PASSWORD_PROPERTY = Call.PASSWORD_PROPERTY; public static final String ADDRESS_PROPERTY = "javax.xml.rpc.service.endpoint.address"; + public static final String SESSION_PROPERTY = Call.SESSION_PROPERTY; protected Service service = null; @@ -108,8 +109,29 @@ * @param value - Value of the property */ public void _setProperty(String name, Object value) { - cachedProperties.put(name, value); - if (name.equals(ADDRESS_PROPERTY)) { + if (name == null || value == null) { + throw new IllegalArgumentException(); + } + else if (name.equals(USERNAME_PROPERTY)) { + if (!(value instanceof String)) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp00", new String[] { + name, "java.lang.String", value.getClass().getName()})); + } + } + else if (name.equals(PASSWORD_PROPERTY)) { + if (!(value instanceof String)) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp00", new String[] { + name, "java.lang.String", value.getClass().getName()})); + } + } + else if (name.equals(ADDRESS_PROPERTY)) { + if (!(value instanceof String)) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp00", new String[] { + name, "java.lang.String", value.getClass().getName()})); + } try { cachedEndpoint = new URL ((String) value); } @@ -117,6 +139,18 @@ throw new IllegalArgumentException(mue.getMessage()); } } + else if (name.equals(SESSION_PROPERTY)) { + if (!(value instanceof Boolean)) { + throw new IllegalArgumentException( + JavaUtils.getMessage("badProp00", new String[] + {name, + "java.lang.Boolean", + value.getClass().getName()})); + } + maintainSessionSet = true; + maintainSession = ((Boolean) value).booleanValue(); + } + cachedProperties.put(name, value); } // _setProperty /** @@ -143,5 +177,6 @@ public void setMaintainSession(boolean session) { maintainSessionSet = true; maintainSession = session; + cachedProperties.put(SESSION_PROPERTY, new Boolean(session)); } // setmaintainSession } 1.49 +4 -0 xml-axis/java/src/org/apache/axis/utils/resources.properties Index: resources.properties =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/resources.properties,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- resources.properties 1 Feb 2002 22:46:13 -0000 1.48 +++ resources.properties 6 Feb 2002 15:17:17 -0000 1.49 @@ -631,3 +631,7 @@ axisVersion=Apache Axis version: #axisVersion# builtOn=Built on #today# ############################################################################# + +badProp00=Bad property. The value for {0} should be of type {1}, but it is of type {2}. +badProp01=Bad property. {0} should be {1}; but it is {2}. +badProp02=Cannot set {0} property when {1} property is not {2}.