I have an abstract class Person which contains, among other things,
the following code:



@PersistenceCapable(identityType = IdentityType.APPLICATION)
public abstract class Person {

        @Persistent(valueStrategy = IdGeneratorStrategy.UNSPECIFIED)
        @PrimaryKey
        private String username;                // the username of this person
        @Persistent
        private String passwordHash;    // the hashed password of this person



and another abstract class Staff which extends it...



@PersistenceCapable
public abstract class Staff extends Person {

        /**
         * @see com.appspot.cs3099d.nhit.model.Person
         */
        public Staff(String userName, String password, String title, String
fname,
                        List<String> mnames, String lname) {
                super(userName, password, title, fname, mnames, lname);
        }



and a class Administrator which extends this...



@PersistenceCapable
public class Administrator extends Staff {

        /**
         * @see com.appspot.cs3099d.nhit.model.Staff
         */
        public Administrator(String userName, String password, String title,
                        String fname, List<String> mnames, String lname) {
                super(userName, password, title, fname, mnames, lname);
        }



I am trying to store a new Administrator object in the datastore
inside a RemoteServiceServlet...



                Person p = new Administrator
("user","userpassword","","super",null,"user");

                PersistenceManager pm = PMF.get().getPersistenceManager();
                pm.makePersistent(p);

                pm.close();



And I receive this error...



checking initialisation conditions
retrieved initialisation conditions
12-Dec-2009 15:30:23
com.google.appengine.tools.development.ApiProxyLocalImpl log
SEVERE: [1260631823692000] javax.servlet.ServletContext log: Exception
while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method
'public abstract void
com.appspot.cs3099d.nhit.client.InitService.initialise()' threw an
unexpected exception: javax.jdo.JDOFatalInternalException: Cannot
instantiate abstract class.
        at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure
(RPC.java:360)
        at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse
(RPC.java:546)
        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.appspot.cs3099d.nhit.server.user.LogInVerificationFilter.doFilter
(LogInVerificationFilter.java:47)
        at com.appspot.cs3099d.nhit.server.HttpFilter.doFilter
(HttpFilter.java:34)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
        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:205)
        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)
Caused by: javax.jdo.JDOFatalInternalException: Cannot instantiate
abstract class.
        at com.appspot.cs3099d.nhit.model.Person.jdoNewInstance(Person.java)
        at org.datanucleus.state.JDOStateManagerImpl.saveFields
(JDOStateManagerImpl.java:1048)
        at
org.datanucleus.state.JDOStateManagerImpl.initialiseForPersistentNew
(JDOStateManagerImpl.java:400)
        at
org.datanucleus.state.StateManagerFactory.newStateManagerForPersistentNew
(StateManagerFactory.java:151)
        at org.datanucleus.ObjectManagerImpl.persistObjectInternal
(ObjectManagerImpl.java:1297)
        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.appspot.cs3099d.nhit.server.InitServiceImpl.initialise
(InitServiceImpl.java:43)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        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)
        ... 30 more



I couldn't find anything on this anywhere. The Javadoc page for this
exception says this: "This class represents errors in the
implementation for which no user error handling is possible. The error
should be reported to the JDO vendor for corrective action." I hope
this is the right place!! ;)

(Also I hope that post's not too badly formatted, couldn't find
guidelines for posting code)

--

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


Reply via email to