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]>
