commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Barrie Treloar (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (LANG-378) Add new ToStyle to support MultiLine with Indent
Date Tue, 07 Jun 2011 07:58:59 GMT

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

Barrie Treloar updated LANG-378:
--------------------------------

    Attachment: LANG-378-patch.txt

*Background*

  Because the ToStringStyle instances are meant to be singletons it is important that they
be thread safe.
  
  This is currently achieved in the architecture by not making the setter methods public,
and avoiding the use of any state.
  
  The downside to this implementation is that subclases of ToStringStyle may inadvertantly
break this compact by using
  the setters outside of initialisation.
  
*Overview*

  Created an immutable data class (ToStringStyleData) to hold all the state needed by ToStringStyle.
 

  A builder class (ToStringStyleDataBuilder) was created to create instances of the data class.

  In ToStringStyle the methods appendArrayStart, appendArraySeparator, appendArrayEnd were
created and used internally instead of directly appending styleData.arrayStart, styleData.arraySeparator,
styleData.arrayEnd as this allows subclasses to alter their behaviour.

  Modified subclasses as needed to make use of data and builder classes.

  Modified test cases and added new test cases for MultiLineWithIndentToStringStyle
  
*Details*

*Source File changes*

* New MultiLineWithIndentToStringStyle "ToStringStyle" created that has ThreadLocal state
"MultiLineWithIndentToStringStyleData" containing the indentation string and indentation level.

* StandardToStringStyle has had all getter and setter methods deprecated.  The setter methods
also no longer do anything as changing state is not thread safe.

* ToStringStyle 
** all fields moved into an immutable Data class "ToStringStyleData", which can be build via
the Builder class "ToStringStyleDataBuilder".
** all getter and setter methods for these fields deprecated as the setters are not thread
safe and the getters can use the styleData variable directly.
** appendArrayStart, appendArraySeparator, appendArrayEnd methods created and used internally
instead of directly appending styleData.arrayStart, styleData.arraySeparator, styleData.arrayEnd
** All internal subclasses upgraded to use ToStringStyleDataBuilder to create their specific
instance of ToStringStyleData
  
*Test File changes*

* ToStringStyleDataBuilderTest created from ToStringStyleTest as it wasn't really testing
ToStringStyle but the StyleData handling of nulls passed in to setters of strings.

* BuilderTestSuite modified to use ToStringStyleDataBuilderTest

* StandardToStringStyleTest modified to use style data builder

* Fixed defect in tearDown() that was not resetting the default style back to ToStringStyle.DEFAULT_STYLE

* MultiLineWithIndentToStringStyleTest created with 22 example classes and expected output.
  Note: This class had to copy in IOUtils.toString from commons-io

*Patch Included*
Patched against LANG_2_2_X rev 452939


> Add new ToStyle to support MultiLine with Indent
> ------------------------------------------------
>
>                 Key: LANG-378
>                 URL: https://issues.apache.org/jira/browse/LANG-378
>             Project: Commons Lang
>          Issue Type: New Feature
>          Components: lang.builder.*
>    Affects Versions: 2.3
>            Reporter: Barrie Treloar
>            Priority: Minor
>             Fix For: 3.x
>
>         Attachments: LANG-378-patch.txt, LANG-378-patch.txt, MultiLineWithIndentToStyle.zip
>
>
> Multiline support  places everything on a new line with no indentation to help in readability.
> Attached is a patch (with tests) to support Multiline behaviour with indentation.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message