I've created a JIRA to track this, TUSCANY-824.

  ...ant

On 10/2/06, Raymond Feng <[EMAIL PROTECTED]> wrote:

Hi,

Jim and I had a discussion on IRC on the databinding to understand it
should be a concern of "Programming Model" or "Assembly". Attached is the
transcript.

Please express your views.

Thanks,
Raymond

(10:13:10 AM) jmarino [EMAIL PROTECTED] entered the room.
(10:13:21 AM) jmarino: Hi refng, yt?
(10:13:30 AM) jmarino: sorry rfeng, yt?
(10:13:30 AM) rfeng: yes
(10:13:48 AM) jmarino: hey I'm just thinking about the databinding stuff.
Do you have a sec to chat here?
(10:13:58 AM) rfeng: sure
(10:14:53 AM) jmarino: k. A very high-level question: why is the
databinding specified in the programming model at all as opposed to being an
assembly concept (since it is something about the physical nature of the
wire)?
(10:16:01 AM) rfeng: I would thing assembly level is approparate
(10:16:25 AM) rfeng: think
(10:17:27 AM) rfeng: and it get reflected into the PM?
(10:17:29 AM) jmarino: k so a radical thought: databinding should never
really be expressed as annotations and should never show up in code except
for when code explicitly required a dynamic interface (e.g. DataObject).
In that case the runtime wouldn't require annotations but could introspect
the operation types either in Java code or WSDL extensions.
(10:18:06 AM) jmarino: it would specified by the binding extension, or
maybe in SCDL
(10:18:17 AM) jmarino: am I way off-base here?
(10:19:16 AM) rfeng: thinking ...
(10:19:53 AM) jmarino: sure np I'm just on a con call ;-)
(10:20:02 AM) rfeng: maybe it's mixed depending on the use cases
(10:20:24 AM) rfeng: three cases:
(10:20:36 AM) rfeng: 1) between mappable interfaces
(10:20:43 AM) rfeng: 2) complex properties
(10:21:03 AM) rfeng: 3) protocol/binding data format
(10:21:24 AM) jmarino: k in those three cases, why is the databinding
requirement need to be known by the code or interface?
(10:22:01 AM) rfeng: I guess it's key to well define mappable interfaces
(10:22:20 AM) jmarino: k coul you explain that?
(10:23:28 AM) rfeng: for a client in favor of JAXB, can it talk to a
service that requires SDO?
(10:24:56 AM) jmarino: sure but the question is the nature of the client
and service implementations...
(10:25:54 AM) jmarino: do they need to know the databinding technology? If
yes, isn't it because they need to use dynamic APIs and hence those types
should be reflected in the contract operations?
(10:26:35 AM) rfeng: Are you thinking of the case that the same interface
can be used for different databindings?
(10:27:08 AM) jmarino: no that's different. If the same interface can be
used then there should be no knowledge of the databinding by the
implementation
(10:27:18 AM) rfeng: ok
(10:27:45 AM) jmarino: I'm trying to say that most implementations should
never know about the databinding used just as they don't need to know the
physical transport
(10:28:12 AM) rfeng: ok, going back to the JAXB --> SDO case
(10:28:13 AM) jmarino: k hold on for a sec...
(10:28:56 AM) rfeng: let's say: CreditReport checkCredit(Csutomer ...).
sure
(10:29:06 AM) rfeng: Customer
(10:37:47 AM) jmarino: hi I'm back
(10:37:56 AM) jmarino: sorry
(10:39:52 AM) jmarino: rfeng yt still?
(10:39:55 AM) rfeng: yes
(10:40:03 AM) jmarino: sorry I had to talk for a sec on the call
(10:40:07 AM) rfeng: np
(10:40:15 AM) jmarino: can you continue?
(10:40:26 AM) rfeng: so for the operation CreditReport
checkCredit(Customer ...)
(10:41:26 AM) rfeng: the client side passes in JAXB objects and the
service side expects SDOs (CreditReport' and Customer' are generated SDO
classes)
(10:41:48 AM) rfeng: how do we capture this at assembly level?
(10:41:54 AM) jmarino: why does the service side expect SDOs given that
contract (strongly typed)?
(10:43:16 AM) rfeng: maybe because my business objects are generated SDO
classes from the XSD and I don't like JAXB at all :-)
(10:43:36 AM) jmarino: then you should take DataObject as a parameter
(10:43:41 AM) rfeng: I'm not aware of any JAXB clients when the service is
developed
(10:44:00 AM) rfeng: I don't use DataObject because I want strong-typing
(10:44:13 AM) jmarino: k then you shouldn't care about the databinding
(10:44:26 AM) jmarino: at the programming level
(10:44:47 AM) jmarino: you may have a policy that says "I want to use SDO,
etc. in these palces..."
(10:44:57 AM) rfeng: you're right from the service side, I treat the
annotation is just a convient way to help the runtime for this case
(10:44:58 AM) jmarino: but the business logic should not care
(10:45:15 AM) jmarino: k that's my point. It shouldn't be in the code.
(10:45:30 AM) jmarino: same as the physical transport
(10:45:38 AM) rfeng: do we have better way to express that?
(10:45:44 AM) jmarino: yes policy
(10:45:58 AM) jmarino: or through introspection of service contracts
(10:46:09 AM) jmarino: (e.g. if it takes DataObject)
(10:46:15 AM) jmarino: also through the binding extension...
(10:46:26 AM) jmarino: e.g. "I only know these formats..."
(10:46:48 AM) rfeng: it's not easy to introspect for cases that Customer
doesn't extend from DataObject
(10:47:15 AM) jmarino: right and in that case the code should not specify
anything since it doesn't need to care what databinding is in use
(10:47:29 AM) jmarino: it's the same principle as physical bindings
(10:47:59 AM) rfeng: can you give me a pesuo policy for this purpose?
(10:48:45 AM) jmarino: k, for binding type X (e.g. JMS) use SDO to encode
the payload
(10:48:57 AM) jmarino: policy intents should be key
(10:49:14 AM) jmarino: another example...
(10:49:41 AM) jmarino: the "foo" binding only knows how to serialize using
XmlBeans. That is specified by the binding extension
(10:50:00 AM) rfeng: yes
(10:50:26 AM) jmarino: so I'm not sure we need annotations at all
(10:51:21 AM) rfeng: but java annotations could be a convenient way,
because they know what databinding they're using even they don't care
(10:52:18 AM) jmarino: I think the issue is more fundamental. Annotations
burn things into the programming model that should not be there. In SCA we
do not allow people to burn in the physical binding...Also, I think not
having them simplifies things
(10:52:24 AM) rfeng: does the assembler have the knowledge?
(10:53:14 AM) rfeng: I agree with you on the proper use of annotations
(10:53:17 AM) jmarino: they may or may not. If they don't the runtime will
have the knowledge
(10:54:11 AM) rfeng: How does the runtime acquire the knowledge?
(10:54:35 AM) jmarino: it may know from the binding extension (or
component extension maybe)
(10:54:42 AM) rfeng: yes
(10:54:53 AM) rfeng: axis2 binding may claim AXIOM only
(10:55:20 AM) jmarino: yes. Or it could be constructed in such a way to
allow it to be configured to take almost anything
(10:55:30 AM) jmarino: then the binding could be configured
(10:56:35 AM) rfeng: how about the case that no bindings are involved,
component talks to component over remotable interfaces?
(10:57:08 AM) jmarino: then policy could be used or the runtime could
choose through some algorithm
(10:57:24 AM) rfeng: ok
(10:57:46 AM) jmarino: e.g. "the most performant thing is binary foo so I
will use that"
(10:58:04 AM) rfeng: so the required info can be captured from the
policies or introspections
(10:58:15 AM) jmarino: or from the extensions
(10:58:20 AM) rfeng: yes
(10:58:35 AM) rfeng: and part of them are defined using SCDLs?
(10:58:36 AM) jmarino: this way we keep the programming model "above"
these concerns
(10:58:47 AM) jmarino: yes through policy
(10:59:13 AM) jmarino: I think this is different than just moving things
from annotations to xml though
(10:59:39 AM) jmarino: most of the time nothing will need to be specified
in SCDL or any application artifacts
(10:59:42 AM) rfeng: could the policy def become fairly complicated as we
discussed the parameter-level databindings?
(10:59:45 AM) rfeng: I agree
(11:00:07 AM) jmarino: agree on complexity. I think we will need to work
through that use case
(11:01:42 AM) jmarino: how do you want to proceed?
(11:02:03 AM) rfeng: for WSDL cases, it's usually simple
(11:02:15 AM) rfeng: it's a bit messy for java interfaces
(11:02:40 AM) rfeng: should we keep as is for M2 and fix it in M3?
(11:05:42 AM) jmarino: I don't think we should expose something
fundamental like that if possible
(11:08:25 AM) rfeng: sorry, taking care of my kid for a few mintutes
(11:08:56 AM) jmarino: sure let's reconvene a bit later. I've got to go
too
(11:09:02 AM) rfeng: sure

Reply via email to