cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mike Kienenberger <mkien...@gmail.com>
Subject Re: Copy/Clone Mutable Objects?
Date Mon, 08 Sep 2014 13:07:06 GMT
Sure it will.


Object myMutableType = x;

entity.setType(myMutableType); // makes a copy of myMutableType with x value

myMutableType.changeTo(y);

(entity still has a copy that points to x rather than y)



On Mon, Sep 8, 2014 at 9:02 AM, Hugi Thordarson <hugi@karlmenn.is> wrote:
> That won't help with mutable types, since modifying them will not use the setter method.
>
> - hugi
>
>
>
> On 8.9.2014, at 12:58, Mike Kienenberger <mkienenb@gmail.com> wrote:
>
>> 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 <mgentry@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 <ari@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 <johnthuss@gmail.com> wrote:
>>>>>
>>>>>> Sure, use Joda time.
>>>>>> On Sep 6, 2014 8:15 PM, "Michael Gentry" <mgentry@masslight.net>
wrote:
>>>>>>
>>>>>>> Is that a realistic option?
>>>>>>>
>>>>>>>
>>>>>>> On Sat, Sep 6, 2014 at 6:55 PM, John Huss <johnthuss@gmail.com>
wrote:
>>>>>>>
>>>>>>>> My thoughts are: don't use Date.
>>>>>>>> On Sep 6, 2014 4:58 PM, "Michael Gentry" <mgentry@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
>>>>
>

Mime
View raw message