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]

Reply via email to