TO DO LIST FOR AXIS ------------------- Please help to maintain this file, as accuracy is critical. Major topic areas are headed by section headings, and individual items are prefixed with "!" (needs doing) "*" (in progress) or "X" (done), followed by the owner (if any) in "<>" brackets. Example: * Write TO DO list 1.0 MUST-DO ----------- ! <> see bugzilla scrub below ! <> fix javadocs ! <> revamped documentation -- users shouldn't need to read the source code 1.0 BUGZILLA SCRUB ------------------ Here is our initial scrub of bugzilla bugs for 1.0. We've come up with 6 categories: A - showstopper - don't release 1.0 without it B - planning for 1.0 C - nice to have in 1.0 D - post 1.0 E - evaluation NR - not rated (note from Glen : Dims and I edited this down to JUST the "should do for 1.0" ones. This way bugzilla is the master source of info, and this list just tells us what's "todo" for 1.0 - although really a bugzilla search on things targeted for 1.0 should work too) 7407 - B 10355 - A 10365 - B 10479 - B 10512 - B 10944 - B - Glen 11766 - If this is real, it looks like an "A". need to confirm. 12167 - Glen will confirm 12246 - Someone should confirm and fix for 1.0 if it's real 12367 - Confirm, fix if real 12572 - Glen will take a look (w/Rich) MESSAGE PARSING / ENCODING -------------------------- ! <> Support literalxml encodingStyle CLIENT API ---------- SCHEMA SUPPORT -------------- ! <> Support qualified/unqualified flags for attributes (this also relates to WSDL2Java and type metadata) ! <> Support ! <> Support minOccurs/maxOccurs on elements ! <> Support ! Support ! <> Support : ! <> Support facets correctly (do validation!) JAX-RPC COMPATIBILITY --------------------- ! NEVER name the SEI after the binding. Spec no longer allows it. Remember to change the user's guide, too. ! <> Implement Service.getCalls() method. (maybe) ! <> Implement generated Services' getCalls() method. ! <> Implement Service.getHandlerRegistry() method. ! <> Implement ServiceFactory.createService methods. ! <> Implement TypeMapping and TypeMappingRegistry ala JAX-RPC 0.8 ! <> Implement Handler code ala JAX-RPC 0.8 ! <> Once we get word that javax.xml.rpc.namespace.NamespaceConstants is a real class (it's in the JAX-RPC javadocs but not in the spec) then use it. ! <> Implement javax.xml.rpc.server interfaces. ! <> Add some JAX-RPC compliance samples/tests. SAAJ COMPATIBILITY ------------------ ! <> Implement javax.xml.soap interfaces (in message subsystem). (Not forgetting: SOAPBody.addFault/getFault/hasFault) ! <> Obtain and pass a SAAJ TCK (Technology Compatibility Kit). SOAP 1.2 SUPPORT ---------------- ! <> Implement correct set of fault codes (4.4.5) ! <> Implement MustUnderstand-checks first (2.6) ! <> Implement NEXT and NONE actors (2.2) ! <> Implement new encoding model for arrays (Adjuncts 4.4.2) PERFORMANCE ----------- ! <> Switch on streaming - only record SAX events where necessary DOCUMENTATION ------------- * Architecture doc ! <> Install doc. to mention placing Axis's javax... classes in Tomcat's classpath (e.g. in setclasspath.sh) as Tomcat won't load these classes from WEB-INF SOAP SPEC COMPLIANCE -------------------- ! <> Implement MU-checks on client(response) side - for SOAP 1.1+ ! <> Add support to allow an Axis node to be an intermediary - SOAP 1.1+ SAMPLES ------- ! <> Clean up addr sample, including writing a how-to guide WSDL2Java --------- ! When wrapped mode is used along with parameterOrder, WSDL2Java complains, wrongly, that the part listed in parameterOrder doesn't exist. The problem is that, once we recognize wrapped mode, the parameters are now from the complexType, not from the message. ! If the lowest level that a WSDL contains is the portType, no SEI is generated even though it should be. This is because we go into the binding to generate the SEI. * <> (ongoing) JAX-RPC compliance. In particular: ! <> Object[] doesn't work. If we have method(Object[] array) and we pass in an Object[], we get NullPointerExceptions. If, however, we pass in a String[] or a Phone[] then it works. Object[] becomes xsd:anyType[]. Since anyType doesn't work, I don't expect anyType[] to work. ! <> do we want xsd:anyType to work? * (ongoing) Need to pull everything writer-specific out of the framework(Emitter/SymbolTable/etc). Signatures are still in there. So are Wsdl2java options that only the writers care about. * Attachment support. ! <> Automatically creating a package name from a namespace is very limited at the moment. ! Literal soap:body support. There is a large list of issues and things to do: - Need a test case, preferably one against a .NET web service. - The message type files are still emitted and they should not be. - We do not even try to emit faults differently if they have literal use - The operation parameter generation needs to be moved out of populatePortTypes in the symbol table and moved to JavaWriter (RJB - I don't know whether I agree with this, but it's a problem where it is). - If we discover a portType has multiple bindings, we abort. Since interfaces are generated from portTypes, and the literal/encoded switch is in the binding, we must have the binding todecide what the interface will look like. - We do not emit SOAPElement arguments per JAX-RPC yet. X If a reference to a type is encountered before the definition, a RefdType is created and added to the symbol table. Once the type is defined, this RefdType is replaced by a real type. Other objects may have referred to the RefdType. Their references also need to be replaced. This doesn't affect any of our existing tests. (We do have tests for this.) * Grow Filegen test. We now generate code only if it's needed, but this feature isn't well tested yet. * Need to handle collections of objects (max occurs > 1). Rich did the work for encoding. Does something still need to be done for literal? X Support for anonymous complexTypes and simpleTypes for elements and attributes. Java2WSDL --------- ! attachment support to mirror what went into WSDL2Java. ! <> When generating from a skeleton, ignore the skeleton meta-data methods. ! Java2WSDL "void op(boolean b1, Boolean b2)" maps to It SHOULD map to Note that this also affects the runtime (particularly serialization). ! <> Support generating schema for custom serializers ! <> Support generation of deploy.wsdd from Java2WSDL ! <> Support wildcards in stop object classes (i.e. "javax.*") X Generate correct input/output elements for overloading. METHOD DISPATCH / SERVICE METADATA ---------------------------------- X Use QName lookup when processing doc/lit style stuff with RPCProvider GENERAL / UNCATEGORIZED ----------------------- ! <> Reorganize resource.properties into packages [code is now there to support this, in org.apache.axis.i18n.*] ! <> Before each release, make sure there aren't any English-language strings in the code. Folks aren't very good about putting these strings into resource.properties! ! Handle static methods without needing to create object instances ! <> Make Version accept org.apache.axis.utils.Options-style args ! <> If soapenc types are used in our WSDL, we must add an import statement for that type: We must also check for this import statement in WSDL2Java. ! Serialize/Deserialize fault contents FUTURE ENHANCEMENTS (not necessary for current release) ------------------------------------------------------- ! <> Some kind of support for deployment / metadata in source file (xdoclet?) ! <> Better support for SOAP Headers (ser/deser, wsdl2java, java2wsdl)