One of the guys in my office had a problem with Java2WSDL failing with this
exception:
java.lang.NullPointerException
at java.util.Hashtable.put(Unknown Source)
at org.apache.axis.utils.JavapUtils.javap(JavapUtils.java:197)
at
org.apache.axis.utils.JavapUtils.getParameterNames(JavapUtils.java:92
)
at
org.apache.axis.wsdl.fromJava.ClassRep.getParameterNames(ClassRep.jav
a:402)
at
org.apache.axis.wsdl.fromJava.ClassRep.walkInheritanceChain(ClassRep.
java:260)
at
org.apache.axis.wsdl.fromJava.ClassRep.addMethods(ClassRep.java:225)
at org.apache.axis.wsdl.fromJava.ClassRep.init(ClassRep.java:184)
at org.apache.axis.wsdl.fromJava.ClassRep.<init>(ClassRep.java:164)
at
org.apache.axis.wsdl.fromJava.DefaultBuilderPortTypeClassRep.build(De
faultBuilderPortTypeClassRep.java:91)
at
org.apache.axis.wsdl.fromJava.Emitter.writePortType(Emitter.java:537)
at
org.apache.axis.wsdl.fromJava.Emitter.getIntfWSDL(Emitter.java:331)
at org.apache.axis.wsdl.fromJava.Emitter.emit(Emitter.java:162)
at org.apache.axis.wsdl.Java2WSDL.main(Java2WSDL.java:316)
The offending line of code is:
cache.put(cls, cachedInfo);
cachedInfo may be null if something went wrong while calling javap, and you
can't put a null value in a Hashtable. The code should be using a HashMap
instead of a Hashtable (and probably ArrayLists instead of Vectors). Here's
the diff for the fix:
RCS file:
/home/cvspublic/xml-axis/java/src/org/apache/axis/utils/JavapUtils.java,v
retrieving revision 1.4
diff -r1.4 JavapUtils.java
67c67,68
< import java.util.Hashtable;
---
> import java.util.Map;
> import java.util.HashMap;
82c83
< private static Hashtable cache = new Hashtable();
---
> private static Map cache = new HashMap();
Dave Dunkin