commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Henri Yandell (JIRA)" <j...@apache.org>
Subject [jira] Closed: (LANG-283) Visitors for Builders
Date Wed, 03 Mar 2010 09:31:27 GMT

     [ https://issues.apache.org/jira/browse/LANG-283?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Henri Yandell closed LANG-283.
------------------------------

    Resolution: Won't Fix

Closing as wontfix. Overcomplicates builders, plus the patch contains a huge amount of refactoring.

> Visitors for Builders
> ---------------------
>
>                 Key: LANG-283
>                 URL: https://issues.apache.org/jira/browse/LANG-283
>             Project: Commons Lang
>          Issue Type: New Feature
>          Components: lang.builder.*
>    Affects Versions: 2.2
>         Environment: Any
>            Reporter: Aldrin Leal
>            Priority: Trivial
>             Fix For: 3.0
>
>         Attachments: visitors.patch
>
>
>   While doing commons-lang stuff, I found the repetitive nature of
> Builder stuff. Therefore, i decided to:
>  a) Create a SingleBuilder (for ToString / HashCode) and a
> DualBuilder (CompareTo / Equals) interface, and make their classes
> implementing;
>  b) Create a SingleBuilderVisitor and DualBuilderVisitor;
>  c) Do the proper wiring, while creating new constructors using the visitors;
>  d) Create new tests and ensuring javadoc plays nice along;
>  There's a patch attached in this e-mail, done against the latest
> svn STABLE url for 2.2
> (http://svn.apache.org/repos/asf/jakarta/commons/proper/lang/branches/LANG_2_2_X/)
>  There might be errors, but methinks it's a great idea to declare a
> constant like this in your source code.
>  private static final EQUALS_VISITOR = new DualBuilderVisitor() {
>           public void visit(DualBuilder builder, Object lhs, Object rhs) {
>              Type lhsObj = (Type) lhs;
>              Type rhsObj = (Type) rhs;
>               builder.append(lhsObj.getId(),
> rhsObj.getId()).append(lhsObj.getName(), rhsObj.getName());
>           }
>  };
>  And then, declare and instantiate builders like as, say:
>  public boolean equals(Object anotherObj) {
>   return new EqualsVisitor(EQUALS_VISITOR, this, anotherObj);
>  }
>  Please note this implementation, overrall, also lets you easily use
> a single visitor for either equals and compareto, thus creating a
> single point of management for all your
> field-maintenance-in-value-objects-needs.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message