Hi,

I am writing a simple app in GAE to persist some objects in the GAE
datastore. I am using JDO. However, the object is not able to persist.
I am currently running the program in the eclipse plugin. Please see
below for the code snippet and the logs:

public String addAccount(UserAccount account) throws ServiceException
{
                xLogger.fine("Entering addAccount");
                boolean userExists = false;
                //Assuming that all other fields including registeredBy is set 
by
the calling function
                //TODO: Encrypt the password before storing to the database
                //Set the memberSince and lastLogin timestamp to now
                Date now = new Date();
                account.setTimeStamp(now);
                account.setMemberSince(now);
                String accountId = account.getUserId();
                xLogger.info("addAccount: userId is {0}", accountId);
                PersistenceManager pm = PMF.get().getPersistenceManager();
                //We use an atomic transaction here to check if the user already
exists, and if not, create it
                Transaction tx = pm.currentTransaction();
                try {
                        tx.begin();
                        try {
                                //First check if the user already exists in the 
database
                                @SuppressWarnings("unused")
                                UserAccount user = 
pm.getObjectById(UserAccount.class, accountId);
                                //If we get here, it means the user exists
                                xLogger.warn("addAccount: FAILED!! user {0} 
already exists",
accountId);
                                userExists = true;
                        } catch (JDOObjectNotFoundException e) {
                                xLogger.fine("addAccount: User {0} does not 
exist. Adding user to
database", accountId);
                                pm.makePersistent(account);
                        }
                        tx.commit();
                } finally {
                        if (tx.isActive()) {
                                xLogger.warn("addAccount: Rolling back 
transaction");
                                tx.rollback();
                        }
                        pm.close();
                        if (userExists == true) {
                                throw new ServiceException("User already 
exists");
                        }
                        xLogger.fine("Exiting addAccount");
                        return accountId;
                }
        }


Aug 26, 2009 5:21:12 PM org.lggi.samaanguru.utils.XLog log
FINE: Entering addAccount
Aug 26, 2009 5:21:12 PM org.lggi.samaanguru.utils.XLog log
INFO: addAccount: userId is user1
Aug 26, 2009 5:21:12 PM org.datanucleus.state.LifeCycleState
changeState
FINE: Object
"org.lggi.samaanguru.entity.useracco...@30a6d6" 
(id="org.lggi.samaanguru.entity.UserAccount:user1")
has a lifecycle change : "HOLLOW"->"P_CLEAN"
Aug 26, 2009 5:21:12 PM org.datanucleus.ConnectionManagerImpl
allocateConnection
FINE: Connection added to the pool :
org.datanucleus.store.appengine.DatastoreConnectionFactoryImpl
$datastoremanagedconnect...@163d844
Aug 26, 2009 5:21:12 PM org.datanucleus.ConnectionManagerImpl
allocateConnection
FINE: Connection found in the pool :
org.datanucleus.store.appengine.DatastoreConnectionFactoryImpl
$datastoremanagedconnect...@163d844
Aug 26, 2009 5:21:12 PM org.lggi.samaanguru.utils.XLog log
FINE: addAccount: User user1 does not exist. Adding user to database
Aug 26, 2009 5:21:12 PM org.datanucleus.ConnectionManagerImpl
allocateConnection
FINE: Connection found in the pool :
org.datanucleus.store.appengine.DatastoreConnectionFactoryImpl
$datastoremanagedconnect...@163d844
Aug 26, 2009 5:21:12 PM org.datanucleus.ObjectManagerImpl
performReachabilityAtCommit
FINE: Performing check of objects for "persistence-by-
reachability" (commit) ...
Aug 26, 2009 5:21:12 PM org.datanucleus.ObjectManagerImpl
performReachabilityAtCommit
FINE: Performing reachability algorithm on object with id "user1"
Aug 26, 2009 5:21:12 PM org.datanucleus.state.JDOStateManagerImpl
runReachability
FINE: Object
"org.lggi.samaanguru.entity.useracco...@b5a19" (id="user1") lifecycle
state "P_NEW" added to the list of reachables on commit.
Aug 26, 2009 5:21:12 PM
org.datanucleus.store.fieldmanager.ReachabilityFieldManager
storeObjectField
FINE: Performing reachability on field
"org.lggi.samaanguru.entity.UserAccount.kiosks" which is null
Aug 26, 2009 5:21:12 PM
org.datanucleus.store.fieldmanager.ReachabilityFieldManager
storeObjectField
FINE: Performing reachability on field
"org.lggi.samaanguru.entity.UserAccount.gender" which is null
Aug 26, 2009 5:21:12 PM
org.datanucleus.store.fieldmanager.ReachabilityFieldManager
storeObjectField
FINE: Performing reachability on field
"org.lggi.samaanguru.entity.UserAccount.birthdate" which is null
Aug 26, 2009 5:21:12 PM
org.datanucleus.store.fieldmanager.ReachabilityFieldManager
storeObjectField
FINE: Performing reachability on field
"org.lggi.samaanguru.entity.UserAccount.ageType" which is null
Aug 26, 2009 5:21:12 PM org.datanucleus.ObjectManagerImpl
performReachabilityAtCommit
FINE: Completed check of objects for "persistence-by-
reachability" (commit).
Aug 26, 2009 5:21:12 PM org.datanucleus.state.LifeCycleState
changeState
FINE: Object
"org.lggi.samaanguru.entity.useracco...@b5a19" 
(id="org.lggi.samaanguru.entity.UserAccount:user1")
has a lifecycle change : "P_NEW"->"P_NONTRANS"
Aug 26, 2009 5:21:12 PM org.datanucleus.ConnectionManagerImpl$1
managedConnectionPostClose
FINE: Connection removed from the pool :
org.datanucleus.store.appengine.DatastoreConnectionFactoryImpl
$datastoremanagedconnect...@163d844
Aug 26, 2009 5:21:12 PM org.lggi.samaanguru.utils.XLog log
FINE: Exiting addAccount

Any help will be greatly appreciated.

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-java@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
-~----------~----~----~----~------~----~------~--~---

Reply via email to