freemarker-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brian Pontarelli (JIRA)" <j...@apache.org>
Subject [jira] [Created] (FREEMARKER-39) DefaultObjectWrapperBuilder isn't a Builder
Date Sat, 05 Nov 2016 17:58:58 GMT
Brian Pontarelli created FREEMARKER-39:
------------------------------------------

             Summary: DefaultObjectWrapperBuilder isn't a Builder
                 Key: FREEMARKER-39
                 URL: https://issues.apache.org/jira/browse/FREEMARKER-39
             Project: Apache Freemarker
          Issue Type: Bug
          Components: engine
    Affects Versions: 2.3.23
            Reporter: Brian Pontarelli


This might not be considered a bug, but I'm logging it as one rather than an improvement.
The class {{DefaultObjectWrapperBuilder}} is not actually a builder right now and it makes
using it inline impossible. 

To make it a more standard Builder pattern, all of the setter methods should be updated so
that the return type is {{DefaultObjectWrapperBuilder}} and the method does a {{return this;}}
at the end. This will make method chaining possible and inline use also possible. Since it
uses inheritance extensively (you might want to consider unwinding this as well), you'll need
to use generics and return T. Here's the class definition so that T works:

{code:title=DefaultObjectWrapperBuilder.java}
public class DefaultObjectWrapperBuilder extends DefaultObjectWrapperConfiguration<DefaultObjectWrapperBuilder>
{code}

And the parent class is defined like this:

{code:title=DefaultObjectWrapperConfiguration.java}
public abstract class DefaultObjectWrapperConfiguration<T> extends BeansWrapperConfiguration<T>
{
{code}

That the final parent class is defined like this:

{code:title=BeansWrapperConfiguration.java}
public abstract class BeansWrapperConfiguration<T extends BeansWrapperConfiguration>
implements Cloneable
{code}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message