Hi, Jim.
Let me explain the DataBindingInterceptor part.
In this case, I pass the CompositeComponent as a metadata in the
transformation context so that the transformers can access the extensions
(SCAObject.getExtensions) of the CompositeComponent. The extensions contain
some information (such as the TypeHelper for the composite) built from SCDL
extensibility elements such as <import.sdo>. This is a workaround to support
the load/build for SCDL extensibility elements.
Here's an example using import.sdo:
In the SCDL, we use the <import.sdo>.
<composite ...>
<dbsdo:import.sdo .../>
...
</composite>
ImportSDO loader will create a model object for the element out of the StAX
events. And the ImportSDO builder (or resolver?) will use the model to
populate SDO types in the TypeHelper which is assoicated/scoped with the
CompositeComponent. The SDO transformer requires the TypeHelper for the
current composite to perform the transformation.
Thanks,
Raymond
----- Original Message -----
From: "Jim Marino" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, February 07, 2007 9:27 AM
Subject: DataBindingInterceptor and PassByValueInterceptor question
Hi,
In the process of refactoring core, I'm attempting to remove the need for
Wire.getContainer(). Two places this is used is DataBindingInterceptor
and PassByValueInterceptor. The former tunnels up to the wire container's
parent and passes the CompositeComponent as metadata in the
transformation context but does not appear to be used (or at least it's
not used in kernel or explicitly called out in a typed API). Why do we
need to do this?
Similarly, PassByValueInterceptor performs a Wire.getContainer on the
target wire and attempts to downcast it to AtomicComponent so that it can
call AtomicComponent.isAllowsPassByReference(). The
AtomicComponent.isAllowsPassByReference() I don't think should exist at
all since allows-pass-by-reference is an service operation-related
quality, i.e. a component implementation may offer multiple services some
of which may contain a mix of operations that allow and/or do not allow
by-reference.
I'd like to remove the use of Wire.getContainer from
DataBindingInterceptor and not pass the composite as context information
unless there is a good reason to do so (it should also probably be done
through a typed API if so).
For PassByValueInterceptor, I'd like to remove this check as well since
the behavior is not correct and later implement metadata that is added to
the service contract Operation.
If people working in these areas can let me know if I've overlooked
something I would appreciate it.
Jim
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]