I'm trying to save some data in my app, quite similar to almost all
other data I've previously saved.  However, I'm now getting this stack
trace:

java.lang.ClassCastException: oid is not instanceof
javax.jdo.identity.ObjectIdentity
        at com.resmark.client.model.RatePlan.jdoCopyKeyFieldsFromObjectId
(RatePlan.java)
        at
org.datanucleus.store.mapped.mapping.PersistenceCapableMapping.setObjectAsValue
(PersistenceCapableMapping.java:657)
        at
org.datanucleus.store.mapped.mapping.PersistenceCapableMapping.setObject
(PersistenceCapableMapping.java:364)
        at org.datanucleus.store.appengine.DatastoreRelationFieldManager
$1.setObjectViaMapping(DatastoreRelationFieldManager.java:132)
        at org.datanucleus.store.appengine.DatastoreRelationFieldManager
$1.apply(DatastoreRelationFieldManager.java:108)
        at
org.datanucleus.store.appengine.DatastoreRelationFieldManager.storeRelations
(DatastoreRelationFieldManager.java:80)
        at
org.datanucleus.store.appengine.DatastoreFieldManager.storeRelations
(DatastoreFieldManager.java:795)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPostProcess
(DatastorePersistenceHandler.java:288)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects
(DatastorePersistenceHandler.java:241)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject
(DatastorePersistenceHandler.java:225)
        at org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent
(JDOStateManagerImpl.java:3185)
        at org.datanucleus.state.JDOStateManagerImpl.makePersistent
(JDOStateManagerImpl.java:3161)
        at org.datanucleus.ObjectManagerImpl.persistObjectInternal
(ObjectManagerImpl.java:1298)
        at org.datanucleus.ObjectManagerImpl.persistObject
(ObjectManagerImpl.java:1175)
        at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent
(JDOPersistenceManager.java:669)
        at org.datanucleus.jdo.JDOPersistenceManager.makePersistent
(JDOPersistenceManager.java:694)
        at com.resmark.server.model.service.BaseDataService.create
(BaseDataService.java:227)
        at com.resmark.server.SetupServiceImpl.updateOrCreate
(SetupServiceImpl.java:120)
        at com.resmark.server.SetupServiceImpl.updateOrCreateBundle
(SetupServiceImpl.java:67)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.google.appengine.tools.development.agent.runtime.Runtime.invoke
(Runtime.java:100)
        at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse
(RPC.java:527)
        at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall
(RemoteServiceServlet.java:166)
        at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost
(RemoteServiceServlet.java:86)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
487)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1093)
        at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter
(TransactionCleanupFilter.java:43)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
        at com.google.appengine.tools.development.StaticFileFilter.doFilter
(StaticFileFilter.java:121)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
        at org.mortbay.jetty.servlet.ServletHandler.handle
(ServletHandler.java:360)
        at org.mortbay.jetty.security.SecurityHandler.handle
(SecurityHandler.java:216)
        at org.mortbay.jetty.servlet.SessionHandler.handle
(SessionHandler.java:181)
        at org.mortbay.jetty.handler.ContextHandler.handle
(ContextHandler.java:712)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
405)
        at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle
(DevAppEngineWebAppContext.java:54)
        at org.mortbay.jetty.handler.HandlerWrapper.handle
(HandlerWrapper.java:139)
        at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:342)
        at org.mortbay.jetty.handler.HandlerWrapper.handle
(HandlerWrapper.java:139)
        at org.mortbay.jetty.Server.handle(Server.java:313)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
506)
        at org.mortbay.jetty.HttpConnection$RequestHandler.content
(HttpConnection.java:844)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
        at org.mortbay.io.nio.SelectChannelEndPoint.run
(SelectChannelEndPoint.java:396)
        at org.mortbay.thread.BoundedThreadPool$PoolThread.run
(BoundedThreadPool.java:442)


I've seen this come up when a data model has a many-to-one
relationship and a one-to-one relationship with the same data type,
but I'm not doing that.

here is the code referenced:
@PersistenceCapable(identityType=IdentityType.APPLICATION)
public class Bundle  implements Serializable {
        @PrimaryKey
        @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)
        private Key id;

        @Persistent
        private String name;
        @Persistent
        private Text description;

        @Persistent
        private RatePlan ratePlan;
        @Persistent
        private PricingModel pricingModel;

        @Persistent
        private List<BundledActivity> activities = new
ArrayList<BundledActivity>();
        ....
}



@PersistenceCapable(identityType=IdentityType.APPLICATION)
public class RatePlan implements Serializable {

        @PrimaryKey
        @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)
        public Key id;

        @Persistent
        private String name;

        @Persistent
        private BigDecimal adultPrice;
        @Persistent
        private BigDecimal youthPrice;
        @Persistent
        private BigDecimal unitPrice;

        @Persistent
        private PricingModel pricingModel;

        @Persistent
        private boolean active = true;
        .....
}


@PersistenceCapable(identityType=IdentityType.APPLICATION)
public class BundledActivity implements Serializable {

        @PrimaryKey
        @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)
        private Key id;

        @Embedded
        @Persistent
        private ActivityFK activity;
        @Persistent
        private RatePlan ratePlan;
        @Persistent
        private int day;

        @Persistent
        @Extension(vendorName="datanucleus", key="gae.parent-pk",
value="true")
        private Key bundleId;
        .....
}

@PersistenceCapable(identityType=IdentityType.NONDURABLE)
public class ActivityFK  implements Serializable {

        @Persistent
        private Key key;
        @Persistent
        private String name;
        @Persistent
        private PricingModel pricingModel;
        ....
}

public enum PricingModel implements Serializable {
        PER_GUEST, PER_UNIT, BOTH;
}


perhaps there's something I'm missing about the model.  I've done
almost the same thing in most of my other data model objects and their
relationships.  I think about the only thing that's different here is
the @Extension annotation, but that's not where the error is
happening.  Any suggestions would be very welcome.

Thanks!
-bryce

--

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.


Reply via email to