Also I think its clearer. I didn't really understand the point of the
dynamic properties before (Doh!).

It might be better to call this the <pojo> instead of <command>
because the objects really would be POJOs (i.e. they would not need to
implement any synapse-specific interface.

For that reason I suggest we use reflection to implement this. (I
looked for a javax....Command interface but couldn't find one). That
means you can write one of these objects without needing any Synapse
JARs in your build path which I think is a good thing.

Paul

On 8/1/07, Asankha C. Perera <[EMAIL PROTECTED]> wrote:
> Paul
>
> Yep.. this is certainly good! It would leave the best of both worlds
>
> asankha
>
> Paul Fremantle wrote:
> > I changed the class mediator to only use static properties so that
> > they would be set before the class.init() was called.
> >
> > However, Asankha has pointed out to me that there is another model
> > that the dynamic properties had, which is to use XPath properties to
> > set data on the mediator before it is called, thereby meaning that
> > there is no need for user to need to understand OMElement or
> > MessageContext to write a mediator.
> >
> > I guess I see these as two completely separate ways to write a
> > mediator. In fact I see three potential approaches:
> >
> > 1) mediate(MessageContext mc)
> > 2) set/get XPath data in/out of the message
> > 3) Use ADB or Databinding and write Java based on the message type
> >
> > I'm not sure about the third option - it not very "loosely-coupled"
> > but I can see how it would appeal to Java developers. I'd be happy to
> > leave that till later.
> >
> > However, I think 1 and 2 are really distinct cases.
> >
> > The second model is really something called the Command Pattern. You
> > can read about it here:
> > http://en.wikipedia.org/wiki/Command_pattern
> > http://www.javaworld.com/javaworld/javatips/jw-javatip68.html?page=1
> >
> > Basically this model is where you call:
> >
> > obj.setX(y);
> > obj.setQ(z);
> > obj.setF(e);
> > obj.execute();
> > obj.getX()
> > obj.getQ()
> > obj.getF();
> >
> > It seems like we could define a nice model for this in Synapse:
> > <command class="org.fremantle.Command"> <!-- class must implement
> > "void execute();" -->
> >    <property name="Name" expression="xpath expression"
> > action="set|get|setAndGet" type="String|float|double|boolean|..."/>
> >    <property name="Symbol" expression="//Symbol" action="get" 
> > type="String"/>
> >    <property name="Symbol" expression="/getQuoteResponse/Price[0]"
> > action="set" type="Double"/>
> > </command>
> >
> > Basically what this will do is allow the user to write a real POJO
> > that implements getters and setters as well as the execute(); method.
> > We then call XPaths and set data into the object, then call execute();
> > then we update the message based on data from the getters.
> >
> > Thoughts?
> >
> > Paul
> >
> >
> >
> >
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


-- 
Paul Fremantle
Co-Founder and VP of Technical Sales, WSO2
OASIS WS-RX TC Co-chair

blog: http://pzf.fremantle.org
[EMAIL PROTECTED]

"Oxygenating the Web Service Platform", www.wso2.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to