Raymond, How does the DatabindingInterceptor recognize the source data type and target data type? Does the databinding registry checks to see if it's a recognizable data type by pushing it through the avaialable transformers untill on of them recognizes the format?
Regards, Rajith On 9/18/06, Raymond Feng <[EMAIL PROTECTED]> wrote:
> > Hi, Rajith. > > Your questions are just in time. I just reached a point that the > databinding > framework works with the Axis2 binding (Axiom) end-to-end. I'm planning > to > put together a document to describe how the framework works and how you > can > plug in extensions. > > Let me try to give you some breif answers first. Please see the comments > below. > > Thanks, > Raymond > > ----- Original Message ----- > From: "Rajith Attapattu" < [EMAIL PROTECTED]> > To: <[email protected]> > Sent: Monday, September 18, 2006 3:23 PM > Subject: Re: Question on databinding framework > > > > Hi, > > > > I would really appreciate if somebody can answer the following > questions > > regarding the data binding framework. > > > > 1. Is DataBindingInteceptor the only interceptor in the chain that > deals > > with data transformation? > > > > Yes. DataBindingInterceptor(s) are added to the wiring to transform data > between two mappable (compatible but with different databindings) > ServiceContract/Operation(s). > > > 2. The DataBindingInteceptor has a mediator associated with it to > > transform > > the data. The current mediator has a list of Transformers that act on > the > > data. > > Is my understanding correct? > > Yes, you're right. Mediator is backed by registered DataBinding(s) and > Transformer(s). It figures a path (potentially multiple hops) between > the > source and target and flow source data over the path so that it can be > converted to the target format. > > > > > 3. As I see all transformers are categoried as either Pull or Push > based. > > What does this mean? > > > > There are two types of transformations depending on the target side. > Let's > say a-->b, if b is something like a DOM Node, SDO DataObject, or > XMLStreamReader, then it's a pull style because the data is pulled from > the > source. If b is a data sink, for example, SAX ContentHandler, > OutputStream, > Writer, then it's a push style because the data is pushed into the > target. > Pull-style transformers can natually chained together to form a path. > Push-style transformer can either be used to terminate the > transformation or > it's further piped by DataPipe (which uses the PushTransformer to > populate > data, for example, receive SAX events to create a SDO DataObject or DOM) > so > that the chain can continue. > > Examples: > > SDO --> XMLStreamReader --> DOM > DOM --> SAX2SDOPipe (A ContentHandler provided by SDO) --> SDO > > > 4. How does all these fit into together? Like can I know the flow when > a > > service is accessed or when we invoke on a reference? > > For example what I am expecting is something like this. (I am > familliar > > with axis2, so let me use that as most of u guys are also familliar > with > > axis2) > > > > SOAP msg --> TransportListerner --> in Handler chain --> > MessageReceiver > > --> Service implementation or your Bizz logic > > > > Service Impl --> MessageReceiver --> out Handler chain --> > > TransportSender --> SOAP msg > > > > A flow diagram (simillar to above) of how Tuscant handles a service > > invocation and invoking a reference is very helpfull. > > > > Reference flow: Caller Component --|1|--> Tuscany SCA Reference with > Axis2 > binding --|2|--> Axis2 Client (AXIOM) --> SOAP/HTTP > > |1|: DataBindingInterceptor converts the invocation message from the > caller > component format to AXIOM. > > |2|: During "build" phase, the Reference binding builder should make > sure > the WSDL portType (if exists) used by the web service is mappable to the > > interface declared inside the <reference> or derive the WSDL from other > IDLs > such as Java interface. > > Service flow: SOAP/HTTP --> Axis2Servlet (AXIOM) --|1|--> Message > receiver > provided by Tuscany SCA Axis2 Service (WSDL portType) ---|2|--> Wired > component (Java interface with SDO or JAXB). > > |1|: During "build" phase, the Service binding builder should make sure > the > WSDL portType (if exists) used by the web service is mappable to the > interface declared inside the <service> or derive the WSDL from other > IDLs > such as Java interface. > > |2|: DataBindingInterceptor converts the invocation message from AXIOM > to > the target component format. > > > Thanks in advance, > > > > Rajith. > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >
