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

 


Help: OASIS Mailing Lists Help | MarkMail Help

sca-j message

[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


Vamsi,
I'm not sure it's necessary to say specifically that an unannotated
implementation needs to have a no-argument constructor, as this
is implied by other normative statements.  However, it wouldn't do
any harm to have a non-normative comment somewhere mentioning it.

   Simon

Mike Edwards wrote:
> 
> Vamsi,
> 
> I think this misses the point.
> 
> It does not matter whether the implementation code has any @Reference or 
> @Property annotations, what
> does matter is that the class must have a constructor that the SCA 
> runtime can invoke to create an instance
> of the class.  That constructor can be no-arg, or it can have arguments 
> BUT if it does have arguments then
> they MUST all be annotated with either @Reference or @Property.  
> 
> What I'm getting at is that the rule here is about the constructors 
> themselves, not about the rest of the class.
> 
> 
> 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
> 
> 
> From: 	C Vamsi <vamsic007@in.ibm.com>
> To: 	OASIS Java <sca-j@lists.oasis-open.org>
> Date: 	17/03/2009 13:29
> 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 
> <http://tuscany.apache.org/>
> Apache Geronimo Committer and Member of PMC  http://geronimo.apache.org 
> <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 
> <http://tuscany.apache.org/>
>  > Apache Geronimo Committer and Member of PMC 
>  http://geronimo.apache.org <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 
> <http://tuscany.apache.org/>
>  >> Apache Geronimo Committer and Member of PMC 
>  http://geronimo.apache.org <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
> 
> 
> 
> 
> ---------------------------------------------------------------------
> 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
> 
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> /
> /
> 
> /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/
> 
> 
> 
> 
> 
> 




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