[appengine-java] Re: JDO Collection of Serializables

2010-08-09 Thread Saqib Ali
@laserjim,

Did you figure this one out? I am running into the same issue.



On Jul 7, 10:46 am, laserjim laser...@gmail.com wrote:
 Hey,

 I've attached some example code for reference:

 public class FooObject implements Serializable
 {
     private final String name;
     public FooObject(String name)
     {
         this.name = name;
     }
     public String toString()
     {
         return name;
     }

 }

 @PersistenceCapable
 public class Entity
 {
     @Element(serialized=true)
     ListFooObject foos = new ArrayListFooObject();

     public void addFoo(FooObject foo)
     {
         foos.add(foo);
     }
     public ListFooObject getFoos()
     {
         return foos;
     }

 }

 Please let me know if you see the problem.

 Thanks!

 On Jul 7, 10:30 am, laserjim laser...@gmail.com wrote:



  Hey,

  I agree that your comments above are true for serialized fields, but I
  can't find any documentation indicating such a behavior for
  collections (I assume supported collections here, as described in
  dataclasses#Collections).  My understanding is that a collection
  should behave correctly (inserts, deletes, etc) unless the list its
  self is serialized.  Can you provide a counter-example?

  With regards to the article Max Ross wrote (very good article by the
  way), the trick he used (where he made a copy in order to change the
  reference) was intended to dirty the state when a member is
  modified.  My FooObjects are immutable, so I don't think this applies
  to me.  Max Ross' article is completely consistent with my
  understanding of the documentation, but it's entirely possible I
  missed something, so let me know if this doesn't sound right to you.

  I BELIEVE the issue I'm running into is rooted in the exception I get
  when trying to persist a populated instance of the list: FooObject is
  not a supported property type.  I'm just not understanding why it
  isn't supported.  I would have expected that any serializable object
  would be permitted, especially if the @Element(serialized=true)
  annotation is specified.

  Basically, I'm looking for a code fragment that demonstrates the
  persistence of a collection of (more than one) non-standard
  serializable objects.

  Any ideas?

  Thanks!

  On Jul 7, 5:05 am, l.denardo lorenzo.dena...@gmail.com wrote:

   Hello,
   I guess your problem is the behavior of serialized fields (including
   collections of them, as far as I know), which is explained in Max
   Ross's post.
   Or something related to that.

   Anyway, some property fields are marked as updated and hence saved
   in the datastore only if you update the reference to the field, and
   they're not updated if you just use modifiers to operate on them.
   In practice, something like

    ArrayListFoo list = retrieve from datastore
   list.add(Foo foo)
   close persistence manager

   Does not modify the list in the datastore, so if it's saved as an
   empty list at creation it remains empty.
   Doing

    ArrayListFoo list = retrieve from datastore
    ArrayList copy = new ArrayList(list);
    copy.add(Foo foo)
    list = copy;
   close PM

   Usually makes everything work, since the original list field is marked
   as updated and persisted.
   As far as I know this is true both for serialized fields and for many
   collections.

   Regards
   Lorenzo

   On Jul 7, 1:28 pm, laserjim laser...@gmail.com wrote:

Hello Lorenzo,

Thanks, but perhaps my question wasn't clear.  I'm trying to make a
list of serialized objects, NOT a serialized list of objects.

For instance, assuming FooObject implements Serializable...

@Element(serialized=true)
ListFooObject foos = new ArrayListFooObject();

Unfortunately, the list is always empty.  Not quite sure why.

Thanks!

On Jul 7, 2:59 am, l.denardo lorenzo.dena...@gmail.com wrote:

 If you are using a serialized field you must add the serialized=true
 clause to your annotation

 @Persistent(serialized=true)
 MySerializableObject serializable;

 Also notice that JDO does not automatically detect if you update only
 the inner fields of the object you save, so you must substitute it
 with a copy to have it persisted.
 See this post for a very good overview and an explanation of the fact
 above:

http://groups.google.com/group/google-appengine-java/browse_thread/th...

 Regards
 Lorenzo

 On Jul 7, 1:33 am, laserjim laser...@gmail.com wrote:

  Hello,

  I'm still trying to persist a list of serializable objects. I would
  expect this to be a standard collection as described 
  here:http://code.google.com/appengine/docs/java/datastore/dataclasses.html...

  FooObject is serializable, but my attempt gave me an exception:
  FooObject is not a supported property type.

  Everything works as expected if I replace my serializable class
  (FooObject) with String.

  How can I persist my list of FooObjects using JDO?

   

[appengine-java] Re: JDO Collection of Serializables

2010-07-11 Thread Luis Daniel Mesa Velasquez
Are lists @Persistent by default? or is the @Element doing it for you?

On Jul 7, 12:46 pm, laserjim laser...@gmail.com wrote:
 Hey,

 I've attached some example code for reference:

 public class FooObject implements Serializable
 {
     private final String name;
     public FooObject(String name)
     {
         this.name = name;
     }
     public String toString()
     {
         return name;
     }

 }

 @PersistenceCapable
 public class Entity
 {
     @Element(serialized=true)
     ListFooObject foos = new ArrayListFooObject();

     public void addFoo(FooObject foo)
     {
         foos.add(foo);
     }
     public ListFooObject getFoos()
     {
         return foos;
     }

 }

 Please let me know if you see the problem.

 Thanks!

 On Jul 7, 10:30 am, laserjim laser...@gmail.com wrote:



  Hey,

  I agree that your comments above are true for serialized fields, but I
  can't find any documentation indicating such a behavior for
  collections (I assume supported collections here, as described in
  dataclasses#Collections).  My understanding is that a collection
  should behave correctly (inserts, deletes, etc) unless the list its
  self is serialized.  Can you provide a counter-example?

  With regards to the article Max Ross wrote (very good article by the
  way), the trick he used (where he made a copy in order to change the
  reference) was intended to dirty the state when a member is
  modified.  My FooObjects are immutable, so I don't think this applies
  to me.  Max Ross' article is completely consistent with my
  understanding of the documentation, but it's entirely possible I
  missed something, so let me know if this doesn't sound right to you.

  I BELIEVE the issue I'm running into is rooted in the exception I get
  when trying to persist a populated instance of the list: FooObject is
  not a supported property type.  I'm just not understanding why it
  isn't supported.  I would have expected that any serializable object
  would be permitted, especially if the @Element(serialized=true)
  annotation is specified.

  Basically, I'm looking for a code fragment that demonstrates the
  persistence of a collection of (more than one) non-standard
  serializable objects.

  Any ideas?

  Thanks!

  On Jul 7, 5:05 am, l.denardo lorenzo.dena...@gmail.com wrote:

   Hello,
   I guess your problem is the behavior of serialized fields (including
   collections of them, as far as I know), which is explained in Max
   Ross's post.
   Or something related to that.

   Anyway, some property fields are marked as updated and hence saved
   in the datastore only if you update the reference to the field, and
   they're not updated if you just use modifiers to operate on them.
   In practice, something like

    ArrayListFoo list = retrieve from datastore
   list.add(Foo foo)
   close persistence manager

   Does not modify the list in the datastore, so if it's saved as an
   empty list at creation it remains empty.
   Doing

    ArrayListFoo list = retrieve from datastore
    ArrayList copy = new ArrayList(list);
    copy.add(Foo foo)
    list = copy;
   close PM

   Usually makes everything work, since the original list field is marked
   as updated and persisted.
   As far as I know this is true both for serialized fields and for many
   collections.

   Regards
   Lorenzo

   On Jul 7, 1:28 pm, laserjim laser...@gmail.com wrote:

Hello Lorenzo,

Thanks, but perhaps my question wasn't clear.  I'm trying to make a
list of serialized objects, NOT a serialized list of objects.

For instance, assuming FooObject implements Serializable...

@Element(serialized=true)
ListFooObject foos = new ArrayListFooObject();

Unfortunately, the list is always empty.  Not quite sure why.

Thanks!

On Jul 7, 2:59 am, l.denardo lorenzo.dena...@gmail.com wrote:

 If you are using a serialized field you must add the serialized=true
 clause to your annotation

 @Persistent(serialized=true)
 MySerializableObject serializable;

 Also notice that JDO does not automatically detect if you update only
 the inner fields of the object you save, so you must substitute it
 with a copy to have it persisted.
 See this post for a very good overview and an explanation of the fact
 above:

http://groups.google.com/group/google-appengine-java/browse_thread/th...

 Regards
 Lorenzo

 On Jul 7, 1:33 am, laserjim laser...@gmail.com wrote:

  Hello,

  I'm still trying to persist a list of serializable objects. I would
  expect this to be a standard collection as described 
  here:http://code.google.com/appengine/docs/java/datastore/dataclasses.html...

  FooObject is serializable, but my attempt gave me an exception:
  FooObject is not a supported property type.

  Everything works as expected if I replace my serializable class
  (FooObject) with String.

  How can I persist my list of FooObjects using JDO?

  Thanks!


[appengine-java] Re: JDO Collection of Serializables

2010-07-07 Thread l.denardo
If you are using a serialized field you must add the serialized=true
clause to your annotation

@Persistent(serialized=true)
MySerializableObject serializable;

Also notice that JDO does not automatically detect if you update only
the inner fields of the object you save, so you must substitute it
with a copy to have it persisted.
See this post for a very good overview and an explanation of the fact
above:

http://groups.google.com/group/google-appengine-java/browse_thread/thread/747ceed8396c0ed8/b311227fbe4d9304?lnk=gstq=serialized+fields+snippets+work#b311227fbe4d9304

Regards
Lorenzo

On Jul 7, 1:33 am, laserjim laser...@gmail.com wrote:
 Hello,

 I'm still trying to persist a list of serializable objects. I would
 expect this to be a standard collection as described 
 here:http://code.google.com/appengine/docs/java/datastore/dataclasses.html...

 FooObject is serializable, but my attempt gave me an exception:
 FooObject is not a supported property type.

 Everything works as expected if I replace my serializable class
 (FooObject) with String.

 How can I persist my list of FooObjects using JDO?

 Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: JDO Collection of Serializables

2010-07-07 Thread laserjim
Hello Lorenzo,

Thanks, but perhaps my question wasn't clear.  I'm trying to make a
list of serialized objects, NOT a serialized list of objects.

For instance, assuming FooObject implements Serializable...

@Element(serialized=true)
ListFooObject foos = new ArrayListFooObject();

Unfortunately, the list is always empty.  Not quite sure why.

Thanks!


On Jul 7, 2:59 am, l.denardo lorenzo.dena...@gmail.com wrote:
 If you are using a serialized field you must add the serialized=true
 clause to your annotation

 @Persistent(serialized=true)
 MySerializableObject serializable;

 Also notice that JDO does not automatically detect if you update only
 the inner fields of the object you save, so you must substitute it
 with a copy to have it persisted.
 See this post for a very good overview and an explanation of the fact
 above:

 http://groups.google.com/group/google-appengine-java/browse_thread/th...

 Regards
 Lorenzo

 On Jul 7, 1:33 am, laserjim laser...@gmail.com wrote:



  Hello,

  I'm still trying to persist a list of serializable objects. I would
  expect this to be a standard collection as described 
  here:http://code.google.com/appengine/docs/java/datastore/dataclasses.html...

  FooObject is serializable, but my attempt gave me an exception:
  FooObject is not a supported property type.

  Everything works as expected if I replace my serializable class
  (FooObject) with String.

  How can I persist my list of FooObjects using JDO?

  Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: JDO Collection of Serializables

2010-07-07 Thread l.denardo
Hello,
I guess your problem is the behavior of serialized fields (including
collections of them, as far as I know), which is explained in Max
Ross's post.
Or something related to that.

Anyway, some property fields are marked as updated and hence saved
in the datastore only if you update the reference to the field, and
they're not updated if you just use modifiers to operate on them.
In practice, something like

 ArrayListFoo list = retrieve from datastore
list.add(Foo foo)
close persistence manager

Does not modify the list in the datastore, so if it's saved as an
empty list at creation it remains empty.
Doing

 ArrayListFoo list = retrieve from datastore
 ArrayList copy = new ArrayList(list);
 copy.add(Foo foo)
 list = copy;
close PM

Usually makes everything work, since the original list field is marked
as updated and persisted.
As far as I know this is true both for serialized fields and for many
collections.

Regards
Lorenzo

On Jul 7, 1:28 pm, laserjim laser...@gmail.com wrote:
 Hello Lorenzo,

 Thanks, but perhaps my question wasn't clear.  I'm trying to make a
 list of serialized objects, NOT a serialized list of objects.

 For instance, assuming FooObject implements Serializable...

 @Element(serialized=true)
 ListFooObject foos = new ArrayListFooObject();

 Unfortunately, the list is always empty.  Not quite sure why.

 Thanks!

 On Jul 7, 2:59 am, l.denardo lorenzo.dena...@gmail.com wrote:

  If you are using a serialized field you must add the serialized=true
  clause to your annotation

  @Persistent(serialized=true)
  MySerializableObject serializable;

  Also notice that JDO does not automatically detect if you update only
  the inner fields of the object you save, so you must substitute it
  with a copy to have it persisted.
  See this post for a very good overview and an explanation of the fact
  above:

 http://groups.google.com/group/google-appengine-java/browse_thread/th...

  Regards
  Lorenzo

  On Jul 7, 1:33 am, laserjim laser...@gmail.com wrote:

   Hello,

   I'm still trying to persist a list of serializable objects. I would
   expect this to be a standard collection as described 
   here:http://code.google.com/appengine/docs/java/datastore/dataclasses.html...

   FooObject is serializable, but my attempt gave me an exception:
   FooObject is not a supported property type.

   Everything works as expected if I replace my serializable class
   (FooObject) with String.

   How can I persist my list of FooObjects using JDO?

   Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: JDO Collection of Serializables

2010-07-07 Thread laserjim
Hey,

I agree that your comments above are true for serialized fields, but I
can't find any documentation indicating such a behavior for
collections (I assume supported collections here, as described in
dataclasses#Collections).  My understanding is that a collection
should behave correctly (inserts, deletes, etc) unless the list its
self is serialized.  Can you provide a counter-example?

With regards to the article Max Ross wrote (very good article by the
way), the trick he used (where he made a copy in order to change the
reference) was intended to dirty the state when a member is
modified.  My FooObjects are immutable, so I don't think this applies
to me.  Max Ross' article is completely consistent with my
understanding of the documentation, but it's entirely possible I
missed something, so let me know if this doesn't sound right to you.

I BELIEVE the issue I'm running into is rooted in the exception I get
when trying to persist a populated instance of the list: FooObject is
not a supported property type.  I'm just not understanding why it
isn't supported.  I would have expected that any serializable object
would be permitted, especially if the @Element(serialized=true)
annotation is specified.

Basically, I'm looking for a code fragment that demonstrates the
persistence of a collection of (more than one) non-standard
serializable objects.

Any ideas?

Thanks!


On Jul 7, 5:05 am, l.denardo lorenzo.dena...@gmail.com wrote:
 Hello,
 I guess your problem is the behavior of serialized fields (including
 collections of them, as far as I know), which is explained in Max
 Ross's post.
 Or something related to that.

 Anyway, some property fields are marked as updated and hence saved
 in the datastore only if you update the reference to the field, and
 they're not updated if you just use modifiers to operate on them.
 In practice, something like

  ArrayListFoo list = retrieve from datastore
 list.add(Foo foo)
 close persistence manager

 Does not modify the list in the datastore, so if it's saved as an
 empty list at creation it remains empty.
 Doing

  ArrayListFoo list = retrieve from datastore
  ArrayList copy = new ArrayList(list);
  copy.add(Foo foo)
  list = copy;
 close PM

 Usually makes everything work, since the original list field is marked
 as updated and persisted.
 As far as I know this is true both for serialized fields and for many
 collections.

 Regards
 Lorenzo

 On Jul 7, 1:28 pm, laserjim laser...@gmail.com wrote:



  Hello Lorenzo,

  Thanks, but perhaps my question wasn't clear.  I'm trying to make a
  list of serialized objects, NOT a serialized list of objects.

  For instance, assuming FooObject implements Serializable...

  @Element(serialized=true)
  ListFooObject foos = new ArrayListFooObject();

  Unfortunately, the list is always empty.  Not quite sure why.

  Thanks!

  On Jul 7, 2:59 am, l.denardo lorenzo.dena...@gmail.com wrote:

   If you are using a serialized field you must add the serialized=true
   clause to your annotation

   @Persistent(serialized=true)
   MySerializableObject serializable;

   Also notice that JDO does not automatically detect if you update only
   the inner fields of the object you save, so you must substitute it
   with a copy to have it persisted.
   See this post for a very good overview and an explanation of the fact
   above:

  http://groups.google.com/group/google-appengine-java/browse_thread/th...

   Regards
   Lorenzo

   On Jul 7, 1:33 am, laserjim laser...@gmail.com wrote:

Hello,

I'm still trying to persist a list of serializable objects. I would
expect this to be a standard collection as described 
here:http://code.google.com/appengine/docs/java/datastore/dataclasses.html...

FooObject is serializable, but my attempt gave me an exception:
FooObject is not a supported property type.

Everything works as expected if I replace my serializable class
(FooObject) with String.

How can I persist my list of FooObjects using JDO?

Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: JDO Collection of Serializables

2010-07-07 Thread laserjim
Hey,

I've attached some example code for reference:

public class FooObject implements Serializable
{
private final String name;
public FooObject(String name)
{
this.name = name;
}
public String toString()
{
return name;
}
}


@PersistenceCapable
public class Entity
{
@Element(serialized=true)
ListFooObject foos = new ArrayListFooObject();

public void addFoo(FooObject foo)
{
foos.add(foo);
}
public ListFooObject getFoos()
{
return foos;
}
}


Please let me know if you see the problem.

Thanks!


On Jul 7, 10:30 am, laserjim laser...@gmail.com wrote:
 Hey,

 I agree that your comments above are true for serialized fields, but I
 can't find any documentation indicating such a behavior for
 collections (I assume supported collections here, as described in
 dataclasses#Collections).  My understanding is that a collection
 should behave correctly (inserts, deletes, etc) unless the list its
 self is serialized.  Can you provide a counter-example?

 With regards to the article Max Ross wrote (very good article by the
 way), the trick he used (where he made a copy in order to change the
 reference) was intended to dirty the state when a member is
 modified.  My FooObjects are immutable, so I don't think this applies
 to me.  Max Ross' article is completely consistent with my
 understanding of the documentation, but it's entirely possible I
 missed something, so let me know if this doesn't sound right to you.

 I BELIEVE the issue I'm running into is rooted in the exception I get
 when trying to persist a populated instance of the list: FooObject is
 not a supported property type.  I'm just not understanding why it
 isn't supported.  I would have expected that any serializable object
 would be permitted, especially if the @Element(serialized=true)
 annotation is specified.

 Basically, I'm looking for a code fragment that demonstrates the
 persistence of a collection of (more than one) non-standard
 serializable objects.

 Any ideas?

 Thanks!

 On Jul 7, 5:05 am, l.denardo lorenzo.dena...@gmail.com wrote:



  Hello,
  I guess your problem is the behavior of serialized fields (including
  collections of them, as far as I know), which is explained in Max
  Ross's post.
  Or something related to that.

  Anyway, some property fields are marked as updated and hence saved
  in the datastore only if you update the reference to the field, and
  they're not updated if you just use modifiers to operate on them.
  In practice, something like

   ArrayListFoo list = retrieve from datastore
  list.add(Foo foo)
  close persistence manager

  Does not modify the list in the datastore, so if it's saved as an
  empty list at creation it remains empty.
  Doing

   ArrayListFoo list = retrieve from datastore
   ArrayList copy = new ArrayList(list);
   copy.add(Foo foo)
   list = copy;
  close PM

  Usually makes everything work, since the original list field is marked
  as updated and persisted.
  As far as I know this is true both for serialized fields and for many
  collections.

  Regards
  Lorenzo

  On Jul 7, 1:28 pm, laserjim laser...@gmail.com wrote:

   Hello Lorenzo,

   Thanks, but perhaps my question wasn't clear.  I'm trying to make a
   list of serialized objects, NOT a serialized list of objects.

   For instance, assuming FooObject implements Serializable...

   @Element(serialized=true)
   ListFooObject foos = new ArrayListFooObject();

   Unfortunately, the list is always empty.  Not quite sure why.

   Thanks!

   On Jul 7, 2:59 am, l.denardo lorenzo.dena...@gmail.com wrote:

If you are using a serialized field you must add the serialized=true
clause to your annotation

@Persistent(serialized=true)
MySerializableObject serializable;

Also notice that JDO does not automatically detect if you update only
the inner fields of the object you save, so you must substitute it
with a copy to have it persisted.
See this post for a very good overview and an explanation of the fact
above:

   http://groups.google.com/group/google-appengine-java/browse_thread/th...

Regards
Lorenzo

On Jul 7, 1:33 am, laserjim laser...@gmail.com wrote:

 Hello,

 I'm still trying to persist a list of serializable objects. I would
 expect this to be a standard collection as described 
 here:http://code.google.com/appengine/docs/java/datastore/dataclasses.html...

 FooObject is serializable, but my attempt gave me an exception:
 FooObject is not a supported property type.

 Everything works as expected if I replace my serializable class
 (FooObject) with String.

 How can I persist my list of FooObjects using JDO?

 Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to