Well, if we can agree to use the builder class pattern instead of the
factory method pattern, then default values are specified as default field
values which are already typed perfectly fine as a language feature since
day 1.

I'll work on updating my proposal with the alternate annotations to show
how easy this should be.


On 30 May 2014 15:30, Paul Benedict <[email protected]> wrote:

> I don't see the added value in having
> defaultStringValue/defaultBooleanValue/defaultXYZValue. The complexity
> isn't justified, I think. Using a literal string is still much easier to
> comprehend; the type safety seems overkill.
>
>
> Cheers,
> Paul
>
>
> On Fri, May 30, 2014 at 3:25 PM, Matt Sicker <[email protected]> wrote:
>
>> I think as long as we add a javadoc (if it's not already there) to the
>> value() method, then we're good to go!
>>
>>
>> On 30 May 2014 13:32, Gary Gregory <[email protected]> wrote:
>>
>>> Hm... annotations do not work like that, if we renamed 'value' to
>>> 'name', you cannot use the short hand @PluginElement("Layout"), you'd have
>>> to use @PluginElement(name = "Layout")
>>>
>>> So I think we can drop this discussion... check?
>>>
>>> Gary
>>>
>>>
>>> On Wed, May 28, 2014 at 12:12 AM, Gary Gregory <[email protected]>
>>> wrote:
>>>
>>>> PluginAttribute.value() looks misnamed, why not call it "name"?
>>>>
>>>> This is better:
>>>>
>>>>     @PluginFactory
>>>>     public static ConsoleAppender createAppender(
>>>>             @PluginElement("Layout") Layout<? extends Serializable>
>>>> layout,
>>>>             @PluginElement("Filters") final Filter filter,
>>>>             @PluginAttribute(name= "target", defaultStringValue =
>>>> "SYSTEM_OUT") final String targetStr,
>>>>             @PluginAttribute("name") final String name,
>>>>             @PluginAttribute(name= "follow", defaultBooleanValue =
>>>> false) final String follow,
>>>>             @PluginAttribute(name= "ignoreExceptions",
>>>> defaultBooleanValue = true) final String ignore) {
>>>>
>>>> than:
>>>>
>>>>     @PluginFactory
>>>>     public static ConsoleAppender createAppender(
>>>>             @PluginElement("Layout") Layout<? extends Serializable>
>>>> layout,
>>>>             @PluginElement("Filters") final Filter filter,
>>>>             @PluginAttribute(value = "target", defaultStringValue =
>>>> "SYSTEM_OUT") final String targetStr,
>>>>             @PluginAttribute("name") final String name,
>>>>             @PluginAttribute(value = "follow", defaultBooleanValue =
>>>> false) final String follow,
>>>>             @PluginAttribute(value = "ignoreExceptions",
>>>> defaultBooleanValue = true) final String ignore) {
>>>>
>>>> IMO that is...
>>>>
>>>> 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
>>>>
>>>
>>>
>>>
>>> --
>>> 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]>
>>
>
>


-- 
Matt Sicker <[email protected]>

Reply via email to