I think it would be difficult to enforce, even if we wanted to
disallow it, since any non-primitive could be mutable.

What I might do is to change my templates so that certain types, like
Date and byte[], are automatically cloned in the setter methods,
though.


On Mon, Sep 8, 2014 at 8:54 AM, Michael Gentry <mgen...@masslight.net> wrote:
> I think everyone is getting wrapped up around Dates.  My general question
> was about mutable types.
>
>   byte[] data = { 1, 2, 3, 4 };
>   person.setData(data);
>   data[0] = 5;
>   for (int i = 0; i < person.getData().length; i++)
>       System.out.println("Data[" + i + "] = " + person.getData()[i]);
>
> Data[0] = 5
>
> Data[1] = 2
>
> Data[2] = 3
>
> Data[3] = 4
>
> Again, modifying the original value changes what is stored internally by
> Cayenne.
>
> Thanks,
>
> mrg
>
>
> On Mon, Sep 8, 2014 at 3:39 AM, Aristedes Maniatis <a...@maniatis.org> wrote:
>
>> And https://github.com/ThreeTen/threetenbp for Java 6/7 users.
>>
>> Ari
>>
>>
>> On 8/09/2014 4:42pm, Andrus Adamchik wrote:
>> > Also Java 8 Date and Time if Java 8 is an option:
>> >
>> >
>> http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html
>> >
>> > Andrus
>> >
>> > On Sep 8, 2014, at 4:17 AM, John Huss <johnth...@gmail.com> wrote:
>> >
>> >> Sure, use Joda time.
>> >> On Sep 6, 2014 8:15 PM, "Michael Gentry" <mgen...@masslight.net> wrote:
>> >>
>> >>> Is that a realistic option?
>> >>>
>> >>>
>> >>> On Sat, Sep 6, 2014 at 6:55 PM, John Huss <johnth...@gmail.com> wrote:
>> >>>
>> >>>> My thoughts are: don't use Date.
>> >>>> On Sep 6, 2014 4:58 PM, "Michael Gentry" <mgen...@masslight.net>
>> wrote:
>> >>>>
>> >>>>> Should Cayenne copy/clone mutable objects, such as Date?
>> >>>>>
>> >>>>> For example, if I modify a date after setting it in a Cayenne object
>> >>>>> (person), it modifies the value stored by Cayenne:
>> >>>>>
>> >>>>>  SimpleDateFormat timeFormat = new SimpleDateFormat ("yyyy-MM-dd");
>> >>>>>  Date d1 = timeFormat.parse("2014-02-01");
>> >>>>>  person.setStartDate(d1);
>> >>>>>  d1.setYear(2013 - 1900); // Date hackery
>> >>>>>  System.out.println("Start Date = " + person.getStartDate());
>> >>>>>
>> >>>>> This outputs:
>> >>>>>
>> >>>>> Start Date = Fri Feb 01 00:00:00 EST 2013
>> >>>>>
>> >>>>> I've never actually experienced an issue with Cayenne not copying a
>> >>>>> Date/etc, but was wondering your thoughts on this.
>> >>>>>
>> >>>>> Thanks,
>> >>>>>
>> >>>>> mrg
>> >>>>>
>> >>>>
>> >>>
>> >
>>
>> --
>> -------------------------->
>> Aristedes Maniatis
>> GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A
>>

Reply via email to