You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by rs...@apache.org on 2002/10/02 17:27:12 UTC
cvs commit: xml-axis/java/src/org/apache/axis/handlers BasicHandler.java
rsitze 2002/10/02 08:27:12
Modified: java/src/org/apache/axis FaultableHandler.java
java/src/org/apache/axis/handlers/soap SOAPService.java
java/src/org/apache/axis/handlers BasicHandler.java
Log:
Issue being solved: WSDDService with 0 (zero) options:
1. WSDDService.makeNewInstance(): calls new SOAPService(..);
2. SOAPService(): calls initHashtable(true);
3. Options were then created as a LockableHashtable.
4. makeNewInstance(): service.setOptions(getParametersTable())
- note that getParametersTable() can return null,
in which case service.options == null
5. service.setOption() is called at least once...
- since options == null, it calls initHashtable(false);
- options is no long null... and it is a Hashtable
5. If Call.setSOAPService() OR Call.invoke() are called,
then service.setPropertyParent() is called.
6. SOAPService.setPropertyParent()
- typecasts options to LockableHashtable,
options is now a Hashtable...
7. Boom.
There still remains one loose end: calling setOptions(Hashtable)
may overwrite the (expected) LockableHashtable with a simple Hashtable.
Regardless, tests are passing..
Revision Changes Path
1.45 +7 -5 xml-axis/java/src/org/apache/axis/FaultableHandler.java
Index: FaultableHandler.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/FaultableHandler.java,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- FaultableHandler.java 18 Sep 2002 16:10:31 -0000 1.44
+++ FaultableHandler.java 2 Oct 2002 15:27:11 -0000 1.45
@@ -134,11 +134,13 @@
Handler faultHandler = null;
Hashtable options = getOptions();
- Enumeration enum = options.keys();
- while (enum.hasMoreElements()) {
- String s = (String) enum.nextElement();
- if (s.equals("fault-" + fault.getFaultCode().getLocalPart())) {
- faultHandler = (Handler)options.get(s);
+ if (options != null) {
+ Enumeration enum = options.keys();
+ while (enum.hasMoreElements()) {
+ String s = (String) enum.nextElement();
+ if (s.equals("fault-" + fault.getFaultCode().getLocalPart())) {
+ faultHandler = (Handler)options.get(s);
+ }
}
}
1.85 +2 -1 xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java
Index: SOAPService.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -r1.84 -r1.85
--- SOAPService.java 18 Sep 2002 16:10:40 -0000 1.84
+++ SOAPService.java 2 Oct 2002 15:27:11 -0000 1.85
@@ -235,7 +235,8 @@
*/
public SOAPService()
{
- initHashtable(true);
+ setOptionsLockable(true);
+ initHashtable();
// For now, always assume we're the ultimate destination.
// TODO : Handle SOAP 1.2 ultimateDestination actor as well
1.39 +9 -3 xml-axis/java/src/org/apache/axis/handlers/BasicHandler.java
Index: BasicHandler.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/BasicHandler.java,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- BasicHandler.java 12 Aug 2002 22:58:46 -0000 1.38
+++ BasicHandler.java 2 Oct 2002 15:27:11 -0000 1.39
@@ -84,14 +84,20 @@
protected static Log log =
LogFactory.getLog(BasicHandler.class.getName());
+ protected boolean makeLockable = false;
protected Hashtable options;
protected String name;
/**
* Should this Handler use a LockableHashtable for options?
+ * Default is 'false'.
*/
- protected void initHashtable(boolean makeLockable)
+ protected void setOptionsLockable(boolean makeLockable) {
+ this.makeLockable = makeLockable;
+ }
+
+ protected void initHashtable()
{
if (makeLockable) {
options = new LockableHashtable();
@@ -128,7 +134,7 @@
* Set the given option (name/value) in this handler's bag of options
*/
public void setOption(String name, Object value) {
- if ( options == null ) initHashtable(false);
+ if ( options == null ) initHashtable();
options.put( name, value );
}
@@ -166,7 +172,7 @@
}
public void setOptions(Hashtable opts) {
- options = opts ;
+ options = opts;
}
/**