[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [sca-assembly] ISSUE 6: usage of not promoted references
Peshev, Peter wrote: > Hi Michael, > > Thanks very much for the clarification, now I understood what you had > in mind. > > Do you think that would lead to a new option for multiplicity (maybe > raised as another issue ) ? > > Since it seems we are wanting to cover 3 scenarios in case the target is > unavailable > > -- error during first use of the reference (the 0..1) > -- error during first instantiation of component (what you are > suggesting for 1..1 in order to solve the bulk deployment for > cross-referenced components) Is that only at the domain level? -Anish -- > -- error during deployment (1..1 in the current proposal, and what > probably many people would expect. > I.e. even if such spec expert as you thought for a moment this is the > 1..1 meaning, than obviously the mortal guys (me & the assemblers) may > be thinking the same meaning as well :) > > > Best Regards > Peter > > > ------------------------------------------------------------------------ > *From:* Michael Rowley [mailto:mrowley@bea.com] > *Sent:* Wednesday, 24. October 2007 20:32 > *To:* Peshev, Peter; Martin Chapman; Blohm, Henning; OASIS Assembly > *Subject:* RE: [sca-assembly] ISSUE 6: usage of not promoted references > > > > > > ------------------------------------------------------------------------ > > *From:* Peshev, Peter [mailto:peter.peshev@sap.com] > *Sent:* Wednesday, October 24, 2007 12:40 PM > *To:* Martin Chapman; Blohm, Henning; Michael Rowley; OASIS Assembly > *Subject:* RE: [sca-assembly] ISSUE 6: usage of not promoted references > > > > HI Michael, > > > Since the old text got too much inlined and I am usually confused with > that, I will try to summarize the opened sub-issues. > > > - you are saying > "Having 1..1 instead of 0..1 could mean that an error should be > generated at runtime, possibly at the first use of the component " > > > > That indeed contradicts the proposal, however I have formed the proposal > entirely based on your input to the issue on 5th of October, where you > have stated explicitly : > > > > "If the reference has a multiplicity of 1..1 or 1..n, then such an > unresolved reference should generate a deployment error." > > > > You got me there. I guess I didn’t concentrate very closely before on > deploy vs. runtime for this error. > > > > Maybe I have misunderstood you & the intention for 0..1, sorry for that > , but that only shows that the issue is valid and it needs > clarification :). > > > > I personally believe that the initial suggestion based on your email > (deployment exception for unwired reference with 1..1) is better for the > assembler who is alarmed immediately of wiring problems at deployment, > instead of deferring them to the first runtime invocation. Often > applications are complex and the assembler would have very hard time > verifying each possible path of the business logic (full cyclomatic > complexity search) to check for such unwired references and whether > everything is working. That feature at least to me seems more valuable > than covering the use case of having A wired to B via reference X with > 1..1, B wired to A via reference Y with 1..1, A is deployed as single > contribution, afterwards B is deployed as single contribution. > > > > In addition if we delay the exception at runtime in the 1..1 case, I am > still lost what exactly is the difference between 0..1 and 1..1. > In both cases we will allow deployment if there is no target for the > reference, in both cases there will be exception at runtime if the > target is still not available, and in both cases if there is target the > call will pass. > > > > The difference is that in the 1..1 case the error will be raised on the > first use of the component, not on the first use of that reference (that > way you don’t have to wait until the reference is used before getting > your NullPointerException, or whatever it is). > > > > I’d be OK with generating the error at deployment time if we invented > some means of doing batch deployment – to tell the system not to do its > checks until a group of related deployments are all complete. However, > writing up such a mechanism would be a bit more work. > > > > Back to some other raised issues and raised points: > > > - I have changed the first sentence in the way you have suggested, > also specified that it's neither in runtime nor in deployment there > will be errors. Thanks for the suggestion > > > > Great. > > > > - The MUST in the last sentence is not bringing enough information, > very good point. I switched it to use "will be represented" and added > mentioning of the extensibility hooks. > > > > I like that. > > > > > So here is the new > > > > > > PROPOSAL : > > > > I like the new proposal, except the fact that it creates a need for some > kind of bulk deployment mechanism, as noted above. > > > > Michael > > > > > > > The following description should be added in section 1.6.2 References, > after line 1387 (that line is after the paragraph that explains > attaching a binding to a reference and before the paragraph explaining > callback) : > > > > > > > > Promotion of references accessing endpoints via bindings is suggested > practice since it allows the assembler to change the targets of the > references or the specified bindings and encourages component reuse, > however the lack of such promotion by itself MUST NOT cause errors > during deployment or runtime if the target of the reference can be > identified. The assembler is expected to guarantee for an unpromoted > reference with multiplicity 1..1 or 1..n that one of the following > conditions holds : there is either internal wire within the scope of the > current composite or a binding that identifies correctly either the > component/service for a wire to an endpoint within the SCA domain or > the accessible address of some endpoint outside the SCA domain. If the > assembler does not provide these conditions for a reference that has a > multiplicity of 1..1 or 1..n, then such an unresolved reference MUST > generate a deployment error. If the assembler does not provide these > conditions for a reference that has a multiplicity with 0..1 or 0..n , > then the programming model MUST not generate deployment errors and the > reference's wiring state will be represented in accordance to the > implementation type in question (e.g. null, handle that throws > exceptions when accessed, extensibility hooks, etc.). > > > > > > > > For example the following definitions MUST NOT generate deployment error > > > > : > > > > <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" > name="MyValueComposite"> > <component name="MyValueServiceComponent"> > <implementation.java class="services.myvalue.MyValueServiceImpl"/> > <reference name="StockQuoteService"> > <binding.ws uri="http://www.sqs.com/StockQuoteService"/ > <http://www.sqs.com/StockQuoteService>> > </reference> > <reference name="StockQuoteService2"> > <binding.jms> > <destination name="StockQuoteServiceQueue"/> > <connectionFactory name="StockQuoteServiceQCF"/> > </binding.jms> > </reference> > </component> > <!-- no references and promotion on purpose --> > <composite> > > > > however the following definitions MUST generate one : > > > > <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" > name="MyValueComposite"> > <component name="MyValueServiceComponent"> > <implementation.java class="services.myvalue.MyValueServiceImpl"/> > <reference name="UnwiredReference"> > <!-- the target cannot be determined, that should be an > error--> > <binding.ws/> > </reference> > </component> > <!-- no references and promotion on purpose --> > <composite> > > > > > > Best Regards > > Peter > > > > ------------------------------------------------------------------------ > > *From:* Martin Chapman [mailto:martin.chapman@oracle.com] > *Sent:* Wednesday, 24. October 2007 19:24 > *To:* Blohm, Henning; 'Michael Rowley'; 'OASIS Assembly' > *Subject:* RE: [sca-assembly] ISSUE 6: usage of not promoted references > > do i smell some confromance targets here...what do we (abstractly) > install and to what, and where do we deploy it? > > -----Original Message----- > *From:* Blohm, Henning [mailto:henning.blohm@sap.com] > *Sent:* Wednesday, October 24, 2007 4:46 PM > *To:* Michael Rowley; OASIS Assembly > *Subject:* AW: [sca-assembly] ISSUE 6: usage of not promoted references > > Michael, > > > > on the deployment error issue. In SCA we seemed to use the term > deployment as "making available to process requests" and used the > additional term "installation" for getting something into the system. > > > > Reading deployment as "making available to process requests" it is > very close to "use" in which case you and Peter seem to talk about > the same point in time. > > > > It could be best if the assembly spec would include some wording > to describe the exact meaning of "deploy" and "install". You agree? > > > > Thanks, > > Henning > > > > > > > > ------------------------------------------------------------------------ > > *Von:* Michael Rowley [mailto:mrowley@bea.com] > *Gesendet:* Mittwoch, 24. Oktober 2007 15:28 > *An:* OASIS Assembly > *Betreff:* RE: [sca-assembly] ISSUE 6: usage of not promoted references > > [MR: inline] > > > > -----Original Message----- > From: Peshev, Peter [mailto:peter.peshev@sap.com] > Sent: Wednesday, October 24, 2007 3:26 AM > To: Michael Rowley; OASIS Assembly > Subject: RE: [sca-assembly] ISSUE 6: usage of not promoted references > > > > HI Michael, > > > > Comments inline, I have pasted your issues with ">" > > > > >- First, "RECOMMENDED" and "NOT REQUIRED" are not a defined keywords. > > > > PP : There is no ""RECOMMENDED" in this proposal. In addition when > > looking at http://www.ietf.org/rfc/rfc2119.txt RECOMMENDED and REQUIRED > > are mentioned as key words. > > > > [MR: Good point on RECOMMENDED (I had originally written just “NOT > REQUIRED”, but then belatedly (and incorrectly) added “RECOMMENDED” > when I happened to see it – apparently when I was looking too far > down in the email to the old proposal). Regarding “NOT REQUIRED” – > yes “REQUIRED” is a keyword, and “MUST NOT” is also a key phrase, > but “NOT REQUIRED” is not.] > > > > > > Anyway as per the notes of the OpenCSA > > Steering Committee Minutes from 28 September the keyword SHOULD and > > its synonym RECOMMENDED are supposed to be avoided, and only the rest of > > the keywords remain to be used. However being a developer I don't claim > > any competence in speac creation, so maybe you are right. > > > > > > > > > In particular, the bit that says that "an implementation which does > > not include a particular option MUST be prepared to interoperate with > > ...". What does that mean when the "implementation" is the assembler? > > > > PP : At least my understanding of the keyword usage is that they should > > be used whenever there is requirement towards the SCA Runtime (i.e. the > > vendors that will implement the spec), and not to be used for any users > > of the spec -- assembler, deployer, etc. That's what was supposed to be > > in the proposal, If something is not done in that way, I will be glad to > > fix. > > > > if the first sentence is not clear enough, maybe we can adapt it to : > > > > Promotion of references accessing endpoints via bindings is common > > practice since it allows the assembler to change the targets of the > > references or the specified bindings and encourages component reuse, > > however the lack of such promotion MUST NOT cause error in SCA Runtime-s > > . > > > > [MR: I think it is worthwhile to say that promotion is recommended > (lowercase). I think it is very valuable for the specification to > include directives and suggestions to our various human roles. > Changing the MUST NOT to be on the runtime seems better, but > perhaps it should be on deployment, as in “lack of promotion MUST > NOT cause an error during deployment.”] > > > > > > >- I suspect that we should not REQUIRE that a deployment error be > > generated for unwired 1..1 references. Consider what would happen if > > someone developed deployable composites A and B (each from different > > contributions) with the intention of wiring at least one of the > > components from A to something in B and wiring at least one component in > > B to something in A. There would be no legal ordering of the > > deployments, as the first deployment would always fail. > > > > PP : Yes, it will be an error. In that case the assembler should use > > 0..1 if he wants to deploy the first component and after some time the > > other. Isn't this exactly what 0..1 was intended for ? Otherwise what is > > the difference between 0..1 and 1..1 ? > > > > [MR: Having 1..1 instead of 0..1 could mean that an error should be > generated at runtime, possibly at the first use of the component > that includes that reference, rather than at deployment time. It > would be unfortunate for someone to have to declare a reference that > is really required as 0..1 just to get around deployment order issues.] > > > > > > >- The last MUST, which is on the programming model, says: "MUST > > represent the reference's wiring state in accordance to the > > implementation type in question". Presumably Peter meant to include the > > words "as invalid" after the word "state". However, even with this > > modification I don't like the requirement. SCA is intended to be an > > integration technology, which means that it needs to be able to > > accommodate a wide variety of implementation types. Some of these > > implementation types will use programming models where external services > > can be used, but some kind of default behavior occurs if one isn't > > (think of extensibility hooks). Such a programming model should be able > > to represent these as references to SCA, in spite of the fact that they > > don't follow the admonition that unwired references be presented as > > nulls. > > > > > > PP : The wording "according to the implementation type in question" was > > supposed to cover the "wide variety of implementation types" that you > > are speaking. If you prefer some other wording I would be glad to > > include. Maybe mentioning explicitly extensibility hooks if you > > consider them so important : > > > > ... MUST NOT generate deployment errors and MUST represent the > > reference's wiring state in accordance to the implementation type in > > question (e.g. null, > > handle that throws exceptions when accessed, extensibility hooks, etc.). > > > > [MR: I was reacting against this on the assumption, apparently > incorrect, that the words “as invalid” had been removed > accidentally, since the current sentence doesn’t seem to make any > sense. I read the current wording as saying “the programming model > MUST represent the reference however it wants.” What kind of a > requirement is that?] > > > > Michael > > > > > > Best Regards > > Peter > > > > ________________________________ > > > > From: Michael Rowley [mailto:mrowley@bea.com] > > Sent: Tuesday, 23. October 2007 20:54 > > To: Peshev, Peter; OASIS Assembly > > Subject: RE: [sca-assembly] ISSUE 6: usage of not promoted references > > > > > > > > > > > > I'll comment on the RFC 2119 usage, which I had hoped to avoid, but I we > > have to address it at some point, so we might as well start with this > > proposal. > > > > > > > > - First, "RECOMMENDED" and "NOT REQUIRED" are not a defined keywords. > > If we changed it to use the closest defined keyword ("MAY") it might be > > something like "The assembler MAY promote references...", but that would > > be odd, given the definition of MAY according to 2119: > > > > > > > > 5. MAY This word, or the adjective "OPTIONAL", mean that an item is > > truly optional. One vendor may choose to include the item because a > > particular marketplace requires it or because the vendor feels that > > it enhances the product while another vendor may omit the same item. > > An implementation which does not include a particular option MUST be > > prepared to interoperate with another implementation which does > > include the option, though perhaps with reduced functionality. In the > > same vein an implementation which does include a particular option > > MUST be prepared to interoperate with another implementation which > > does not include the option (except, of course, for the feature the > > option provides.) > > > > > > > > In particular, the bit that says that "an implementation which does not > > include a particular option MUST be prepared to interoperate with ...". > > What does that mean when the "implementation" is the assembler? > > > > > > > > - I suspect that we should not REQUIRE that a deployment error be > > generated for unwired 1..1 references. Consider what would happen if > > someone developed deployable composites A and B (each from different > > contributions) with the intention of wiring at least one of the > > components from A to something in B and wiring at least one component in > > B to something in A. There would be no legal ordering of the > > deployments, as the first deployment would always fail. > > > > > > > > - The last MUST, which is on the programming model, says: "MUST > > represent the reference's wiring state in accordance to the > > implementation type in question". Presumably Peter meant to include the > > words "as invalid" after the word "state". However, even with this > > modification I don't like the requirement. SCA is intended to be an > > integration technology, which means that it needs to be able to > > accommodate a wide variety of implementation types. Some of these > > implementation types will use programming models where external services > > can be used, but some kind of default behavior occurs if one isn't > > (think of extensibility hooks). Such a programming model should be able > > to represent these as references to SCA, in spite of the fact that they > > don't follow the admonition that unwired references be presented as > > nulls. > > > > > > > > Michael > > > > > > > > > > > > -----Original Message----- > > From: Peshev, Peter [mailto:peter.peshev@sap.com] > > Sent: Tuesday, October 23, 2007 12:31 PM > > To: OASIS Assembly > > Subject: RE: [sca-assembly] ISSUE 6: usage of not promoted references > > > > > > > > > > > > Once again, replacing the funny idea of : > > > > > > > > "reference with reference 1..1 or 1..n" > > > > > > > > with the intended wording. Otherwise everything is the same. Sorry :( > > > > > > > > > > > > > > > > PROPOSAL : > > > > > > > > The following description should be added in section 1.6.2 References, > > > > after line 1387 (that line is after the paragraph that explains > > > > attaching a binding to a reference and before the paragraph explaining > > > > callback) : > > > > > > > > Promotion of references accessing endpoints via bindings is common > > > > practice since it allows the assembler to change the targets of the > > > > references or the specified bindings and encourages component reuse, > > > > however it is NOT REQUIRED. The assembler is expected to guarantee for > > > > an unpromoted reference with multiplicity 1..1 or 1..n that one of the > > > > following conditions holds : there is either internal wire within the > > > > scope of the current composite or a binding that identifies correctly > > > > either the component/service for a wire to an endpoint within the SCA > > > > domain or the accessible address of some endpoint outside the SCA > > > > domain. If the assembler does not provide these conditions for a > > > > reference that has a multiplicity of 1..1 or 1..n, then such an > > > > unresolved reference MUST generate a deployment error. If the assembler > > > > does not provide these conditions for a reference that has a > > > > multiplicity with 0..1 or 0..n , then the programming model MUST not > > > > generate deployment errors and MUST represent the reference's wiring > > > > state in accordance to the implementation type in question (e.g. null, > > > > handle that throws exceptions when accessed, etc.). > > > > > > > > > > > > For example the following definitions MUST NOT generate deployment error > > > > : > > > > > > > > <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" > > > > name="MyValueComposite"> > > > > <component name="MyValueServiceComponent"> > > > > <implementation.java class="services.myvalue.MyValueServiceImpl"/> > > > > <reference name="StockQuoteService"> > > > > <binding.ws uri="http://www.sqs.com/StockQuoteService"/> > > > > </reference> > > > > <reference name="StockQuoteService2"> > > > > <binding.jms> > > > > <destination name="StockQuoteServiceQueue"/> > > > > <connectionFactory name="StockQuoteServiceQCF"/> > > > > </binding.jms> > > > > </reference> > > > > </component> > > > > <!-- no references and promotion on purpose --> > > > > <composite> > > > > > > > > however the following definitions MUST generate one : > > > > > > > > <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" > > > > name="MyValueComposite"> > > > > <component name="MyValueServiceComponent"> > > > > <implementation.java class="services.myvalue.MyValueServiceImpl"/> > > > > <reference name="UnwiredReference"> > > > > <!-- the target cannot be determined, that should be an > > > > error--> > > > > <binding.ws/> > > > > </reference> > > > > </component> > > > > <!-- no references and promotion on purpose --> > > > > <composite> > > > > > > > > > > > > > > >
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]