OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

sca-assembly message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [sca-assembly] Issue 36: How is the introspected CT merged/overriddenby CT side file ?



For both C++ and C we have mechanisms to indicate that a portion of a header file is used to define a CT (e.g. only specific classes in C++ or specific functions in C are used to define a CT). These mechanisms are optional if restrictions are not needed.

Bryan Aupperle, Ph.D.
STSM, WebSphere Enterprise Platform Software Solution Architect
Master Inventor

Research Triangle Park,  NC
+1 919-254-7508 (T/L 444-7508)
Internet Address: aupperle@us.ibm.com



Anish Karmarkar <Anish.Karmarkar@oracle.com>

09/23/2008 06:06 PM

To
OASIS Assembly <sca-assembly@lists.oasis-open.org>
cc
Subject
[sca-assembly] Issue 36: How is the introspected CT merged/overridden by CT side file ?





We allow CT to be introspected as well as specified as a side file.
In the BPEL TC there was a discussion about what happens if there is a
side file. Does the side file override completely the introspected CT or
does the side file modify the introspected CT.

I'm starting a thread here, since this discussion really belongs to the
assembly TC and issue 36 is about this.

First the easy part:

I think most (if not everyone) would agree that a CT side file cannot
include whatever it wants. It has to be supported by the implementation.
A side file can only "narrow" what is offered by the introspected CT. By
"narrow" I mean the same as what is called "projection of the CT as
scoped by the constrainingType" in the Constraining Type section. So a
side file cannot:
1) add any new property, service or reference that is not present in the
implementation.
2) change an interfaces to include additional methods
3) change a required property to optional
4) expand the cardinality of a reference
5) remove an intent

The trickier part:

If there is a side file specified, should it contain the whole truth or
only the partial truth? Partial truth here means that the information
from the introspected CT is "merged" with the information from the side
file. And "merged" here means unless the side file has something to say
about the service, reference or property it remains in the merged or
effective CT unaltered. I.e., a side file can only modify a
service/reference/property, it cannot remove it from the CT.

There are use cases, where an implementation provides for N services (N
being large) and you want to constrain the implementation to just a few
services using a side file.

There are use cases, where an implementation provides for N services (N
being large) and you want to just tweak a few services (perhaps add
intends to the services or narrow the interface associated with the
service).

If side file contains the whole truth then the 1st use case is very easy
to achieve. The second use case, requires you to list all the N services
in the side files; painful but still possible.

If the side file contains only the partial truth, the second use case is
very easy to achieve. The first use case is not possible.

[MikeE: you had suggested on the BPEL call that we can use a
constrainingType for use case 1 and use the 'partial truth' solution. I
looked up the assembly spec and that does not work. A constraining type
when used on an implementation provides the minimum set of things it
must provide for. An implementation is still allowed to (and it would
show up in the effect CT of that impl.) have additional services,
references, properties]

There are two ways out of this:

1) say that the side file, if present and supported by the
implementation type, contains the whole truth. This makes use case 2
difficult, though still possible. It does keep the whole thing simple.
Either you look at the side file and know everything or you have some
way to introspect the implementation. No merge is ever required.

2) provide a flag on the CT side file to say whether it is the whole
truth or the partial truth. This makes both use cases easy to achieve.
But put extra burden on the sca runtime implementations and requires one
to do a merge if the CT side file asks you to. It is also harder for Joe
Programmer to figure out the effective CT without tools.

From a simplicity POV I prefer (1). I suspect that tools will allow you
to spit out an introspected CT as a side file which you can edit to
achieve use case 2.

Comments?

-Anish
--

---------------------------------------------------------------------
To unsubscribe from this mail list, you must leave the OASIS TC that
generates this mail.  Follow this link to all your TCs in OASIS at:
https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]