I know we are about ready for a release candidate. I would like to propose a change for after our first release.
(By the way... we cannot "release" anything from Apache while we are an incubator, so we can only get a M1 RC ready until we pass through incubation).
The change I propose I already posted about. The feeling I have is that the current model of dropping messages unless they are explicitly sent on is probably a little confusing.
I propose that we change the behaviour as follows:
1) boolean process(SynapseMessage sm) :
if the response is true, continue processing. If the response is false: check sm. If sm.getTo==null, then drop, if sm.getTo!=null then send on.
2) So then we could add the following two XML config elements:
<drop/> -- would set the To address to null and then return false. This drops the message immediately and ends processing
<sendNow/> - this ends processing and sends the message on now. Effectively this simply returns false.
3) This model seems to me simpler for unit test. Rather than having to fake up a special send() in the Axis2SynapseEnvironment, you can simply call a processor and check the SM and return values to see if they match what you expect.
4) I also think this would make it easier to embed Synapse in a "co-locate" model with Axis2, because the implicit send could actually be used to simply dispatch the message to the right Axis2 service instead of always opening up new connection.
I think this is a more logical model, but I'd appreciate your thoughts. Both models are similar, so it just comes down to the simplest for the user. I think its better that you say <drop> if you want to drop it rather than it dropping it by default.
VP/Technology, WSO2 and OASIS WS-RX TC Co-chair
"Oxygenating the Web Service Platform", www.wso2.com