The documentation says that transactions can only be done within a
single entity group. Does this mean the tr tansaction in the
'removeMessage', is not safe?

In the following code, I need to break the link between the parent and
the child, ie by removing the child, and re-inserting it with no
parent. Perhaps what I am doing is crazy? (:

// Not meant to compile, it is for example only
public class UndeliveredMessages {

    private Key key;
    private long count = 0;
    private Set<Message> messages = HashSet<Message>();

    public void removeMessage(Message message) {
            Transaction tx = pm.currentTransaction();
            try {
                    count--;
                    messages.remove(message);
                    pm.makePersistent(this);
                    Message item = new Message();
                    item.setFrom(message.getFrom());
                    item.setTo(message.getTo());
                    item.setText(message.getText());
                    pm.makePersistent(message); // If this one fails,
will all of the above be rolled back?
                    tx.commit();
            } finally {
                    if (tx.isActive())
                            tx.rollback();
            }
    }

    public void addMessage(String from, String to, String message) {
            count++;
            messages.put(new Message(from, to, message));
            pm.makePersistent();
    }

    public Message getNextMessage() {
            if(!messages.isEmpty())
                    return messages.iterator().next();

            return null;
    }

}

This is a contrived example to help me understand if this will work. I
realise/suspect I could use "weak" references, ie just store a set of
references to the child objects, ie "Set<Key>".

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

Reply via email to