[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [sca-j] Why is @Property.required attribute MUST be true forconstructor parameter?
I will raise an issue to add a defaultValue attribute to the @Property annotation. ++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 sca-j@lists.oasis-open.org 27/02/2009 20:05 cc Subject Re: [sca-j] Why is @Property.required attribute MUST be true for constructor parameter? Mike Edwards wrote: > > Vamsi, > > I don't feel strongly about the case that you describe. > > If a using <component/> cares about the value of a property, then it > will set the value in the configuration > of that property. The component can always get the value it wants. > > I certainly don't think that componentType side files are a good > solution to this question - a huge hammer > to crack a very small nut. > > The idea of a defaultValue attribute to the @Property annotation is an > elegant solution to the problem of > not being able to introspect an initializer. However, I don't think the > function implied is significant enough > to be worth bothering with. > I think this is a good suggestion and I think it is worth adding to the spec. Thre are many cases where it would be useful for the implementation to provide a default value. Simon > > 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: Mike Edwards/UK/IBM@IBMGB > Cc: sca-j@lists.oasis-open.org > Date: 25/02/2009 10:45 > Subject: Re: [sca-j] Why is @Property.required attribute MUST be true > for constructor parameter? > > > ------------------------------------------------------------------------ > > > > Mike, > > The one case that will not be supported by doing away with componentType > side files for POJOs is the default value for a property since the field > initializer value can not be obtained through introspection (at least in > Java 5). Does this call for introducing a new attribute (say, > @defaultValue) in the @Property annotation? > > Another case, but not of immediate concern, would the componentType file > support for implementation types defined in Java EE spec. > > ++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/> > > > > Mike Edwards > <mike_edwards@uk. > ibm.com> To > sca-j@lists.oasis-open.org > 25/02/2009 15:47 cc > > Subject > Re: [sca-j] Why is > @Property.required attribute MUST > be true for constructor parameter? > > > > > > > > > > > Vamsi, > > You make a good point in reminding me that the Java TC has not voted > through a resolution to remove the use > of componentType side files for Java POJOs. I have now raised a new issue > to do this - which will remove > Section 10 entirely. > > I note that the Liaison committee posted a recommendation that > implementation types either use pure introspection > OR purely use a side file and never try to combine the information from two > sources. Java POJOs can have all > their component type metadata derived via introspection - as a result side > files are not useful and add complexity. > > > 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: Mike Edwards/UK/IBM@IBMGB > > Cc: sca-j@lists.oasis-open.org > > Date: 24/02/2009 10:15 > > Subject: Re: [sca-j] Why is @Property.required attribute MUST be true > for constructor parameter? > > > > > > > > Comments inline in <vamsi> tags. > > ++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/> > > > > Mike Edwards > <mike_edwards@uk. > ibm.com> To > sca-j@lists.oasis-open.org > 24/02/2009 15:22 cc > > Subject > Re: [sca-j] Why is > @Property.required attribute MUST > be true for constructor parameter? > > > > > > > > > > > Folks, > > When using constructor parameters for injection, there are a couple of > considerations to bear in mind: > > 1) Each constructor parameter MUST be annotated with either @Reference or > with @Property, depending > on the type of the parameter. This is required in order that each > parameter has a NAME which then appears > in the componentType - without this, it is impossible to get a name for the > constructor parameter (none is > available via introspection) > > 2) Clearly, each constructor parameter MUST supply a value, even if that > value is NULL. There is no > avoiding this. The runtime MUST pass in some value when it invokes the > constructor. This is the reason > behind the requirement for required=true on the @Property annotation. The > using component can set > any value it likes for the property - potentially including "nil" - but it > must set something. > > On the point that Raymond makes that the property value "can be inherited > from the componentType" - this > is not correct. The componentType is entirely derived from the > implementation itself, not from some other > metadata. In fact, there is no separate componentType file any longer for > Java implementations. So the > <vamsi> > Have we done away with componentType side files for Java implementations? > Is there an issue resolution pending to be applied? In > sca-javaci-1.1-spec-wd02.pdf, section 10, lines 509 thru 512, I still see a > description of componentType side file for Java implementations. What am I > missing? > </vamsi> > only place for a property value to come from for a constructor parameter is > from the component configuration > that uses the Java implementation. > > > 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: Raymond Feng <rfeng@us.ibm.com> > > To: sca-j@lists.oasis-open.org > > Date: 23/02/2009 21:09 > > Subject: Re: [sca-j] Why is @Property.required attribute MUST be true > for constructor parameter? > > > > > > > > My understanding is that @required=true means the property MUST be set with > a value which can be either configured at the component level or inherited > from the componentType. > > For example, if we have a constructor as follows: > > public MyServiceImpl(@Property(name="myProp") String myProp) { > ... > } > > The injection for "myProp" is required no matter what value it is set. > > Thanks, > Raymond > > > > > From: C Vamsi <vamsic007@in.ibm.com> > > To: sca-j@lists.oasis-open.org > > Date: 02/23/2009 10:41 AM > > Subject [sca-j] Why is @Property.required attribute MUST be true for > : constructor parameter? > > > > > > > > > sca-javacaa-1.1-spec-cd02-rev2.doc: > > Sec 9.15 @Property > > Lines 1622-1623: > required (optional) – specifies whether injection is required, defaults to > true. For a constructor parameter annotation, this attribute MUST have the > value true. > > Q: Why is, "For a constructor parameter annotation, this attribute MUST > have the value true." required? > > The componentType can define a default value for the property. In this > case, even if a property is not specified in the component definition, the > runtime will still have a value to pass as an argument to the 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/> > > > > > > > > > > > > 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 > > > > > > > > > > > > > > > > > > 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 > > > > > > > > > > > > ------------------------------------------------------------------------ > > / > / > > /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
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]