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


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]