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)