Requirements

There is a non-requirements section below.
Release cycles are explained below.

No. Description [Priority]

status - worker(s)
a1 a2

beta/

3.0

later

XML Protocol compliance
10 We will diligently track the XP protocol as it evolves, and support it when it's ready.

n/a


? ?

Error and fault handling
20 Specify an extensible Java Exception mapping into SOAP faults

?

X X
21 Specify an extensible SOAP fault mapping into Java exceptions

?

X X

Service and Operation Identification
30 Dispatch by transport URL
done

X X
31 Dispatch by SOAPAction
done

X X
32 Dispatch by QName of the first body entry
done


X
33 Dispatch by a custom handler (to use any information available)
done (can do it already)

X X

Message exchange patterns supported at the client API level

Motivation: we believe the following message exchange patterns are in common use and important to implement (e.g. WSDL uses them)
40 Synchronous request/response
done
X X X
41 One-way messaging
NYI - ?
X X X
42 [??] Asynchronous request/response (non-blocking) (the question marks mean we don't know whether to provide this)

NYI - ?





SOAP 1.1 compliance
50 All aspects of SOAP 1.1 supported by Apache SOAP 2.x

what is missing?
(actor, full sec-5)


X
51 Support intermediaries

NYI - RobJ



? ?
52 Transparency should be provided when we place intermediaries (hosts) between requestor and provider (creating a proxy server)

NYI - RobJ


? ?
53 Support the SOAP concept of mustUnderstand headers
done

X X
54 Support the SOAP actor header attributes
NYI - Glen

X X

Performance
60 The architecture must not require the whole message to be in memory at the same time

not for 1.0 - no incremental 1.0 parse; architecture still allows this, later

X X X
61 Scalable
? - Sam


X
62 Faster than Apache SOAP 2.x
done!


X
63 Must not be significantly slower than comparable alternative implementations

done?


X

Administration and monitoring
70 Logging API
NYI (all) X X X
71 Metrics API
NYI - ?


X
72 Management (JMX) API
n/a?

? ?
73 Run-time (un)deployment API
NYI - ?


X

Deployment
80 Installation and deployment of both the engine, components, and services should be simple

done! (what more?)


X
81 Support a WebServiceArchive format which associates the executable and the description files

NYI (does JWS count?) - ?


X
82 Support .asmx-like drop-in service deployment
done - this is JWS


? ?
83 A single SUPER TINY .jar file must be enough for a client to communicate via SOAP

NYI - what is best way to build it?
X X X
84 Defaults packaged with both client and server must be sane, secure and ready to go

NYI but getting there!


X
85 Intermediaries (hosts) should be easy to configure

NYI - RobJ


? ?
86
WSDD implementation

NYI - Carl W / Glen

?


Providers
90 Pluggable provider API
done? (handler API) X X X
91 Java provider
done?
X X X
92 BSF provider
NYI -?


X
93 EJB provider
NYI - ?


? ?
94 COM provider

NYI - ?


? ?
95new
App server provider / connectivity layer [High]

NYI - Glen?


X


Pluggable XML protocol support
100 SOAP 1.1
done
X X X
101 SOAP 1.2

Partial - doesn't yet do envelope versioning or namespaces

? ?
102 Must not name general classes as SOAPWhateverDoer

done
X X X
103 Simultaneous support for multiple message protocols

NYI



X

Message processing
110 Support a flexible and extensible system allowing message handlers (extensions, applications) to build up orthogonal pieces of a message

done
X X X
111 Handler invocation order is always deterministic for a given server configuration and message

done
X X X
112 Some information should be shared between all the handlers in the "chain" on one host - MessageContext

done
X X X
112a Have the ability to specify application-specific parameters (like username or other thing) in the context

done
X X X
112b Some encapsulation of the idea of a session that's transport-independent (cookies in the HTTPRequest/HTTPResponse for http)

done


X
112b.1 An example/sample for a SOAP session header/handler/supplier

NYI - RobJ


? ?
112b.2 Client code needs to support this as well - need to pass session back across if necessary...

NYI - RobJ


X
113 Handlers need to be allowed to reach raw message data

done
X X X

Transport
120 Pluggable transport API
done - needs doc! X X X
121 HTTP listener and sender
done
X X X
122 HTTPS listener and sender

NYI - ?


X
123 SMTP sender

NYI - ?


X
124 POP3 poller

NYI - ?


X
125 JMS listener and sender

NYI - ?


? ?
126 Support for "SOAP messages with attachments"[High]    

NYI - Glen / RobJ


X
X
127 The transport can insert arbitrary transport-specific stuff into the Context

done
X X X
128 The transport-specific stuff should be encapsulated, most of the engine should work on a canonical form of the message

done
X X X

Security
130 Support transport-level security [High]
NYI - per-transport issue?


X
130b
Support SOAP-level security [High]


what, specifically? - Yuhichi?








131 HTTP Basic auth
done?


X
132 Support for existing security SOAP-level standards
what, specifically?


? ?
133 An example/sample for a SOAP Basic Authentication header/handler
done?


? ?

Service Description and Discovery (for instance, WSDL, DISCO)
140 Support the ability to query a service's description at runtime (e.g. GET ...?wsdl)

NYI - Jim's contribution? or is this something simpler?

X X
140a If deployment params have altered the service description, the updated version must be returned

NYI?


X
141 Support a basic html page describing the service (via an HTTP GET)

NYI - James? Doug?

X X
142 Support a pretty html page describing the service (via an HTTP GET)

NYI - James? Doug?


X
143 Services can be deployed and used without service descriptions

done
X X X
144 Should abstract the SD layer, at least by keeping the interfaces clean [High]

?


X
144a The abstract SD layer must support run-time determination of xsi:types of parts of the message

NYI? - Sam?

X X
144b Include a WSDL implementation of the SD layer [High]    

NYI - Lance & HP contribution?

X X
144c Extend WSDL with information on where to get components for stuff

NYI - James?



X
144d Tools and/or run-time support for proxy generation from WSDL and/or WSDD

NYI - Lance & HP?



X
145 HTTP GET on the Axis node returns an appropriate DISCO document

NYI - ?



X

Platforms
150 Java implementation
underway :-)
X X X
151 C++ implementation
n/a for 1.0



X
151a C++ impl core should be cross platform with platform-specific extensions (like COM)

n/a for 1.0



X
152 All implementations should have as much in common as possible

n/a for 1.0
X X X
153 Use standard APIs wherever possible
done
X X X

Data Encoding
160 Extensible support for encodings
NYI

X X
161 Implement basic SOAP encoding (the level of current Apache SOAP 2.x)
done
X X X
162 Support for sparse and partially-transmitted arrays
NYI

X
X  
163 Support for multidimensional arrays
NYI



X
164 Support literal XML encoding
NYI

X
X
165 It should be relatively easy to write a "Serializer"
done (depending on feedback from users)

X X
166 Include some general (de)serializers (that handle multiple types), so that there needn't exist a (de)serializer for every type that could possibly travel over the wire (needs further discussion - isomorphism (roundtrip) issues)

Is this the beanserializer / basicDeserializer, or something else?


? ?
167 (De)serialization may occur at any time on demand
done
X X X
168 (De)serialization should be available to the application
done


X

Release

Although these are a 1.0 requirements, significant progress must be made on these items during interim releases.
170 Product-level code
getting there....


X
171 Product-level docs [High]
NYI - ?


X
172 Product-level examples
NYI but getting there - everyone


X
173 Product-level performance
NYI - Sam?

X
174 Product-level testing
getting there, with functional & unit tests


X

Migration from Apache SOAP 2.x
180 Documentation
NYI - ?

X X
181 The legacy Call object
NYI - ?


X
182 Serialization, custom serializers - maybe wrappers
NYI - ?


? ?
183 Support for legacy messaging services
NYI - which?



X
184 Support for legacy providers [Medium]    
NYI - ?



X
185new
Support for legacy deployment


NYI - James?




X




Coding
190 Follow the Java Coding Style with no tab characters.
done
X X X
191 Use javadoc style to document all non-private methods in commits.

could be more...
X X X
192 Document packages.

could be MUCH more...


X
193 Committing a new package, at least place in a placeholder for the package doc that says "this is to be done".

NYI - everyone!!!
X X X

Non-requirements (won't be supported)


We find the SOAP spec. to be unclear on these issues so we decided not to support them.
  1. RPC calls in SOAP headers
  2. Multiple RPC calls in a single SOAP message

Releases and test cycles

We're planning on releasing alpha1 (a1), alpha2 (a2), beta, and 3.0.
alpha is a preview.
subsequent alphas are to show the growing set of features and docs and test cases and all that.
Beta is functionally complete.