cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Huss <johnth...@gmail.com>
Subject Re: Copy/Clone Mutable Objects?
Date Mon, 08 Sep 2014 14:20:29 GMT
The answer is to use immutable data types.  Unfortunately that takes some
work in Java.  Anyway, it's not that difficult to write a Cayenne
ExtendedType subclass to allow using custom attribute types that are
immutable, if you can find or create an immutable data type that fits your
needs.  For byte[] you could use ImmutableList in guava:

http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/ImmutableList.html



On Mon, Sep 8, 2014 at 7: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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message