[
http://jira.jboss.com/jira/browse/JGRP-723?page=comments#action_12410536 ]
Bela Ban commented on JGRP-723:
-------------------------------
Okay, here's what Vladimir and I discussed:
@Property
long timeout=5000;
This means we'll take a property "timeout" (parsed from the XML) and set a
field called 'property' in the given protocol.
@Property
void setMaxBundleTimeout(String val) {...}
This means we'll invoke this setter with a property that's either called
"max_bundle_timeout" or "maxBundleTimeout".
Logic:
#1 Get all methods which take a string argument and are annotated with @Property (include
superclasses, up to Protocol).
#2 Invoke any setter M (void setM(String)) with the corresponding property. Remove the
property if successful
#3 Find all attrs annotated with @Property
#4 Set the field from the property, convert the string to the primitive type
#5 If the field is not a primitive type, and there wasn't a setter, throw an
exception
#6 Remove the prop from the props list. If done, and list is not empty, throw an
exception
Add @Deprecated(msg="bla"). If a setter or attr is annotated with @Deprecated,
display the message and remove the property.
For validation or other complex logic, always use a setter, Ditto for non-rpimitive
fields
Use Java annotations to automatically set protocol properties
-------------------------------------------------------------
Key: JGRP-723
URL:
http://jira.jboss.com/jira/browse/JGRP-723
Project: JGroups
Issue Type: Feature Request
Affects Versions: 2.7
Reporter: Vladimir Blagojevic
Assigned To: Vladimir Blagojevic
Fix For: 2.7
Currently we use a lot of boiler plate code to read protocol properties specified in
configuration file. We can eliminate this unnecessary code by using annotations and a bit
of Java reflection that would assign protocol property values to matching Java fields,
give warnings for deprecated properties, and so on. We should:
1) introduce @ProtocolProperty annotation
2) annotate Protocol fields that are properties
3) test framework
4) remove all current boilerplate code
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira