Well if you do not want strong typing, use a String for foo. Right?
Gary <div>-------- Original message --------</div><div>From: Ralph Goers <[email protected]> </div><div>Date:05/31/2014 20:38 (GMT-05:00) </div><div>To: Log4J Developers List <[email protected]> </div><div>Subject: Re: PluginAttribute#defaultEnum()? </div><div> </div>Gary, I know you said you didn't like @PluginAttribute(name="foo", defaultValue="1") int foo But after looking at http://maven.apache.org/plugin-tools/maven-plugin-annotations/apidocs/org/apache/maven/plugins/annotations/Parameter.html I am wondering if that isn't the best way to go. Doing that would allow the default value to be something like ${sys:fooDefault} which you can't do with strong typing. Ralph Sent from my iPad On May 31, 2014, at 4:25 PM, Ralph Goers <[email protected]> wrote: Why wouldn't you do @PluginAttributeInt(value="foo", defaultValue=1) int foo ? That said, I'm really not crazy about this. I wish you could do @PluginAttribute<Integer>(value="foo", defaultValue=1) int foo Ralph Sent from my iPad On May 31, 2014, at 12:50 PM, Gary Gregory <[email protected]> wrote: So the bummer is that this redundant with the arg type in the signature: @PluginAttributeInt (value="foo", defaultInt=1) int foo We should also pick up the attribute name by reflection if it is missing from the annotation. But you'd only need it to spec a default value. So could we keep PluginAttribute with only a value and then have an annotation for each default value type? @DefaultInt and so on..? Ideally: @PluginAttribute() @DefaultInt (1) int foo Thoughts? Gary -------- Original message -------- From: Paul Benedict Date:05/30/2014 22:15 (GMT-05:00) To: Apache Log4J Developers Subject: Re: PluginAttribute#defaultEnum()? Totally cleaner. On May 30, 2014 8:58 PM, "Gary Gregory" <[email protected]> wrote: On Fri, May 30, 2014 at 9:39 PM, Paul Benedict <[email protected]> wrote: I think you guys are better off doing separate annotations to do strong typing. You could use a stereotyping pattern like Bean Validation spec. public @interface PluginAttribute ... Then annotate other annotations with that: @PluginAttribute public @interface IntPluginAttribute I did propose that earlier ;-) It seems much cleaner... Gary See how the Been Validation spec works to copy their pattern. On May 30, 2014 7:55 PM, "Gary Gregory" <[email protected]> wrote: Hm... you cannot use Enum in the return type for an annotation attribute, only an actual enum, like RetentionPolicy. So it seems a no-go. Gary On Fri, May 30, 2014 at 4:24 PM, Matt Sicker <[email protected]> wrote: I had the same hold-up when thinking about adding that, too. How about RetentionPolicy.SOURCE? Or ElementType.TYPE? Something annotation-related like that. On 30 May 2014 13:12, Gary Gregory <[email protected]> wrote: I added PluginAttribute#defaultClass() since we can have a Class has an attribute value. One can also have an Enum as an attribute value, but what default should be use? Gary -- E-Mail: [email protected] | [email protected] Java Persistence with Hibernate, Second Edition JUnit in Action, Second Edition Spring Batch in Action Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory -- Matt Sicker <[email protected]> -- E-Mail: [email protected] | [email protected] Java Persistence with Hibernate, Second Edition JUnit in Action, Second Edition Spring Batch in Action Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory -- E-Mail: [email protected] | [email protected] Java Persistence with Hibernate, Second Edition JUnit in Action, Second Edition Spring Batch in Action Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory
