Hi all guys!!! :)
I'd suggest to apply Jacopo's suggestion, making strategies' fields as
final would help classes becoming thread-safe; to fix the issue of
construction described by Stephen, it would be useful adding builder
classes (optionally implemented as static inner classes).
WDYT? HTH, that's just my opinion,
Simo

http://people.apache.org/~simonetripodi/
http://www.99soft.org/



On Sat, Jan 29, 2011 at 2:33 PM, Jacopo Cappellato
<jacopo.cappell...@gmail.com> wrote:
> Thank you Stephen,
>
> I understand this; alternatively we could implement a factory method that 
> clones DEFAULT_STRATEGY, EXCEL_STRATEGY, TDF_STRATEGY; but I will definitely 
> postpone any decision, it is not a big deal for me and we can wait for 
> additional feedback.
>
> Jacopo
>
> On Jan 29, 2011, at 1:16 PM, Stephen Colebourne wrote:
>
>> Traditionally, many commons projects has taken no position on the
>> correct way to instantiate objects, whether via constructor or bean
>> methods. This was to allow construction from tools such as Velocity.
>> It is also still easier to construct using Spring via bean methods
>> rather than the constructor.
>>
>> These days, immutability and concurrency are more important, so this
>> change may be applicable, buts its good to understand the history and
>> wide use cases of classes like these.
>>
>> Stephen
>>
>>
>> On 29 January 2011 12:04, Jacopo Cappellato <jacopo.cappell...@gmail.com> 
>> wrote:
>>> Hi all,
>>>
>>> in my opinion all the setter methods should be removed from the CSVStrategy 
>>> class: in this way the fields will only be set using the constructors and 
>>> they will become readonly.
>>> The main issue I see with the current implementation is that a calling 
>>> method can modify the values of the fields of the following static objects 
>>> declared in CSVStrategy (changing the default behavior for all subsequent 
>>> code that uses for example CSVStrategy.DEFAULT_STRATEGY):
>>>
>>>    public static CSVStrategy DEFAULT_STRATEGY = new CSVStrategy(',', '"', 
>>> COMMENTS_DISABLED, ESCAPE_DISABLED, true,
>>>                                                                 true, 
>>> false, true);
>>>    public static CSVStrategy EXCEL_STRATEGY   = new CSVStrategy(',', '"', 
>>> COMMENTS_DISABLED, ESCAPE_DISABLED, false,
>>>                                                                 false, 
>>> false, false);
>>>    public static CSVStrategy TDF_STRATEGY     = new CSVStrategy('\t', '"', 
>>> COMMENTS_DISABLED, ESCAPE_DISABLED, true,
>>>                                                                 true, 
>>> false, true);
>>>
>>> What do you think?
>>>
>>> Jacopo
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> For additional commands, e-mail: dev-h...@commons.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to