Alright, I've committed what I was talking about before in regard to
builder classes and fields. The new @PluginBuilderAttribute annotation
could be extended to allow using a setter method as well, but I think it's
fine for now to just use fields.

Anyway, using this idea, there's no longer a need to work around the
limitations of annotations for specifying default values.


On 1 June 2014 10:11, Gary Gregory <[email protected]> wrote:

> On Sat, May 31, 2014 at 9:48 PM, Ralph Goers <[email protected]> wrote:
>
>> 1. That isn't consistent.
>> 2. If someone wanted to set the default value of a Log4j component via a
>> system property it wouldn't work. That said, I'm not sure how great a
>> benefit that actually is.
>>
>> To be honest, I think I actually would prefer
>>
>> @PluginAttribute("foo") @IntParameterDefault(1) int foo
>>
>> It just seems forced to have multiple plugin attribute types just so the
>> default value is strongly typed.
>>
>
> Yes, I think this is the change I and others have been proposing.
>
> Gary
>
>
>>
>> Ralph
>>
>>
>> On May 31, 2014, at 5:56 PM, Gary Gregory <[email protected]> wrote:
>>
>> Well if you do not want strong typing, use a String for foo.
>>
>> Right?
>>
>> Gary
>>
>>
>> -------- Original message --------
>> From: Ralph Goers
>> Date:05/31/2014 20:38 (GMT-05:00)
>> To: Log4J Developers List
>> Subject: Re: PluginAttribute#defaultEnum()?
>>
>> 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
>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>> 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
>>>>> <http://www.manning.com/bauer3/>
>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>> 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
>>> <http://www.manning.com/bauer3/>
>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>> Spring Batch in Action <http://www.manning.com/templier/>
>>> 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
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>



-- 
Matt Sicker <[email protected]>

Reply via email to