← Prev in month
← Prev in thread
[NEW ISSUE] Java C&I Constrctor Examples are incorrect
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:
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
← Prev in month
← Prev in thread