[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [sca-j] [NEW ISSUE] Java C&I Constrctor Examples are incorrect
Simon, What happens if there is no no-argument constructor? I see that it is implicit from the starting sentence in section 5, "A Java implementation class MUST provide a public or protected constructor that can be used by the SCA runtime to create the implementation instance. [JCI50001]" plus the selection algorithm. I feel it would be useful to explicitly state that an implementation with no @Reference or @Property annotations should have a public or protected no-argument constructor. ++Vamsi Apache Tuscany Committer http://tuscany.apache.org Apache Geronimo Committer and Member of PMC http://geronimo.apache.org Simon Nash <oasis@cjnash.com > To OASIS Java 17/03/2009 15:38 <sca-j@lists.oasis-open.org> cc Subject Re: [sca-j] [NEW ISSUE] Java C&I Constrctor Examples are incorrect Vamsi, This is in Chapter 5 (Implementation Instance Creation) of JavaCI. Step 3 of the constructor selection algorithm allows for this case. Simon C Vamsi wrote: > Hi Simon, > > I do not recall coming across the requirement, "allows unannotated > implementations if they have a no-parameter constructor" made clear in the > current spec. To speed things up, can you please point me to the > section/paragraph? > > Thanks. > > ++Vamsi > Apache Tuscany Committer http://tuscany.apache.org > Apache Geronimo Committer and Member of PMC http://geronimo.apache.org > > > > > Simon Nash > <oasis@cjnash.com > > To > OASIS Java > 09/03/2009 19:43 <sca-j@lists.oasis-open.org> > cc > > Subject > Re: [sca-j] [NEW ISSUE] Java C&I > Constrctor Examples are incorrect > > > > > > > > > > Vamsi, > I agree that it's unfortunate that constructor injection isn't > possible for properties and references of unnanotated implementations. > This is because it's not possible to infer the name of a property > or reference that appears as a constructor parameter. > > I'm not sure why you think a new issue is needed. The current spec > allows unannotated implementations if they have a no-parameter constructor. > Do you think there is some way to improve on this? > > Simon > > C Vamsi wrote: >> Simon, >> >> When JAVA-39 was raised, I have not thought about the constructors. Now >> that we require all parameters of a constructor annotated with a >> @Constructor annotation to have either a @Property or a @Reference >> annotation (JCA90003 in CAA spec), we need to revisit these examples. >> Appears like we have to require an unannotated implementation (i.e., one >> with no @Property or @Referene annotations) to have a constructor with no >> parameters. I guess it will call for a new issue!! >> >> ++Vamsi >> Apache Tuscany Committer http://tuscany.apache.org >> Apache Geronimo Committer and Member of PMC http://geronimo.apache.org >> >> >> >> >> Simon Nash >> <oasis@cjnash.com >> > > To >> OASIS Java >> 27/02/2009 20:40 <sca-j@lists.oasis-open.org> >> > cc >> > Subject >> Re: [sca-j] [NEW ISSUE] Java C&I >> Constrctor Examples are incorrect >> >> >> >> >> >> >> >> >> >> I believe this is a duplicate of issue JAVA-39. However, I'd like >> to understand the reason for the assertion that the examples noted as >> "does not unambiguously identify all property and reference values" >> are incorrect. >> >> Simon >> >> Mike Edwards wrote: >>> Raiser: Mike Edwards >>> >>> Target: sca-javaci-1.1-spec-wd03.pdf >>> >>> Description: >>> >>> The constructor examples in section 5 contain errors that make some of >>> them illegal and they must be fixed. >>> >>> /** Simple class taking a single property value */ >>> >>> public class Impl1 { >>> >>> String someProperty; >>> >>> public Impl1(String propval) {...} >>> >>> } >>> >>> *<mje> This one does not "unambiguously identify all property and >>> reference values"</mje>* >>> >>> /** Simple class taking a property and reference in the constructor; >>> >>> * The values are not injected into the fields. >>> >>> *// >>> >>> public class Impl2 { >>> >>> public String someProperty; >>> >>> public SomeService someReference; >>> >>> public Impl2(String a, SomeService b) {...} >>> >>> } >>> >>> *<mje> This one does not "unambiguously identify all property and >>> reference values"</mje>* >>> >>> /** Class declaring a named property and reference through the >>> constructor */ >>> >>> public class Impl3 { >>> >>> @Constructor({"someProperty", "someReference"}) >>> >>> public Impl3(String a, SomeService b) {...} >>> >>> } >>> >>> *<mje>@Constructor annotation has no such attributes (see [JAVACAA]) >>> </mje>* >>> >>> /** Class declaring a named property and reference through parameters */ >>> >>> public class Impl3b { >>> >>> public Impl3b( >>> >>> @Property("someProperty") String a, >>> >>> @Reference("someReference) SomeService b >>> >>> ) {...} >>> >>> } >>> >>> *<mje>This one is OK</mje>* >>> >>> /** Additional property set through a method */ >>> >>> public class Impl4 { >>> >>> public String someProperty; >>> >>> public SomeService someReference; >>> >>> public Impl2(String a, SomeService b) {...} >>> >>> @Property public void setAnotherProperty(int x) {...} >>> >>> } >>> >>> *<mje> This one does not "unambiguously identify all property and >>> reference values"</mje>* >>> >>> >>> Proposal: >>> >>> Replace the examples with the following ones: >>> >>> /** Constructor declared using @Constructor annotation */ >>> >>> public class Impl1 { >>> >>> private String someProperty; >>> >>> @Constructor >>> >>> public Impl1( @Property("someProperty") String propval ) {...} >>> >>> } >>> >>> /** Declared constructor unambiguously identifying all Property and >>> Reference values */ >>> >>> public class Impl2 { >>> >>> private String someProperty; >>> >>> private SomeService someReference; >>> >>> public Impl2( @Property("someProperty") String a, >>> >>> @Reference("someReference") SomeService b ) >>> >>> {...} >>> >>> } >>> >>> /** Declared constructor unambiguously identifying all Property and >>> Reference values >>> >>> plus an additional Property injected via a setter method */ >>> >>> public class Impl3 { >>> >>> private String someProperty; >>> >>> private String anotherProperty; >>> >>> private SomeService someReference; >>> >>> public Impl3( @Property("someProperty") String a, >>> >>> @Reference("someReference") SomeService b) >>> >>> {...} >>> >>> @Property >>> >>> public void setAnotherProperty( String anotherProperty ) {...} >>> >>> } >>> >>> /** No-arg constructor */ >>> >>> public class Impl4 { >>> >>> @Property >>> >>> public String someProperty; >>> >>> @Reference >>> >>> public SomeService someReference; >>> >>> public Impl4() {...} >>> >>> } >>> >>> >>> Yours, Mike. >>> >>> Strategist - Emerging Technologies, SCA & SDO. >>> Co Chair OASIS SCA Assembly TC. >>> IBM Hursley Park, Mail Point 146, Winchester, SO21 2JN, Great Britain. >>> Phone & FAX: +44-1962-818014 Mobile: +44-7802-467431 >>> Email: mike_edwards@uk.ibm.com >>> >>> >>> ------------------------------------------------------------------------ >>> >>> / >>> / >>> >>> /Unless stated otherwise above: >>> IBM United Kingdom Limited - Registered in England and Wales with number >>> 741598. >>> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 >> 3AU/ >>> >>> >>> >>> >> >> >> --------------------------------------------------------------------- >> 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 >> >> >> >> >> --------------------------------------------------------------------- >> 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 >> >> >> > > > > --------------------------------------------------------------------- > 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 > > > > > --------------------------------------------------------------------- > 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 > > > --------------------------------------------------------------------- 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]