Try debugging this method:

public static String invokeAndEncodeResponse(Object target,
      Method serviceMethod, Object[] args,

In RPC class.

Juan

2011/3/5 GrahamH <[email protected]>

> Hey all,
>
> I'm trying to add a SystemAccount class to my project by using the
> emailAddress of the loginInfo as an ID for my SystemAccount class.
> I've added a SystemAccountService and SystemAccountServiceAsync
> interfaces that contains the method to addAccount() and getAccount()
> which would be stored as persistent JDO objects.  Then on the server
> side i have the code for these methods.
>
> The solution GWT compiles no problem, but when i run the application
> and go to the entry page it pops up a javascript alert saying 'The
> response could not be deserialized" and i can't find out why.
>
> Ill list what i have in my classes
>
> SystemAccount:
>
> import java.io.Serializable;
>
> import javax.jdo.annotations.IdGeneratorStrategy;
> import javax.jdo.annotations.IdentityType;
> import javax.jdo.annotations.PersistenceCapable;
> import javax.jdo.annotations.Persistent;
> import javax.jdo.annotations.PrimaryKey;
>
> @PersistenceCapable(identityType = IdentityType.APPLICATION)
> public class SystemAccount implements Serializable  {
>
>        private static final long serialVersionUID = 1L;
>        @PrimaryKey
>        @Persistent
>        private String emailAddress;
>        public static final int SYSTEMADMIN = 0;
>        public static final int POOLADMIN = 1;
>        public static final int POOLUSER = 2;
>        @Persistent
>        private String nickname;
>        @Persistent
>        private int accountType;
>
>        public SystemAccount() {
>                accountType = POOLUSER;
>                nickname = "";
>        }
>
>          public String getEmailAddress() {
>            return emailAddress;
>          }
>
>          public void setEmailAddress(String emailAddress) {
>            this.emailAddress = emailAddress;
>          }
>
>          public String getNickname() {
>            return nickname;
>          }
>
>          public void setNickname(String nickname) {
>            this.nickname = nickname;
>          }
>
>          public int getAccountType() {
>            return accountType;
>          }
>
>          public void setAccountType(int type) {
>            this.accountType = type;
>          }
>
> }
>
>
> SystemAccountService :
>
> import com.google.gwt.user.client.rpc.RemoteService;
> import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
>
> @RemoteServiceRelativePath("systemaccount")
> public interface SystemAccountService extends RemoteService {
>  public SystemAccount getAccount(String emailAddress);
>  public void addAccount(SystemAccount Account);
> }
>
> SystemAccountServiceAsync:
>
> import com.google.gwt.user.client.rpc.AsyncCallback;
>
> public interface SystemAccountServiceAsync {
>  public void getAccount(String emailAddress,
> AsyncCallback<SystemAccount> async);
>  public void addAccount(SystemAccount Account, AsyncCallback<Void>
> async);
> }
>
>
> SystemAccountServiceImpl:
>
> import com.google.gwt.user.server.rpc.RemoteServiceServlet;
>
> import javax.jdo.JDOHelper;
> import javax.jdo.PersistenceManager;
> import javax.jdo.PersistenceManagerFactory;
>
> import cs.ubc.ca.cs310.HockeyPool.client.SystemAccount;
> import cs.ubc.ca.cs310.HockeyPool.client.SystemAccountService;
>
> public class SystemAccountServiceImpl extends RemoteServiceServlet
> implements
>    SystemAccountService {
>
> /**
>         *
>         */
>        private static final long serialVersionUID = 1L;
> private static final PersistenceManagerFactory pmFactory =
> JDOHelper.getPersistenceManagerFactory("transactions-optional");
> public static PersistenceManagerFactory getPersistenceManagerFactory()
> {
>        return pmFactory;
> }
>
> public void addAccount(SystemAccount Account) {
>        PersistenceManager pm =
> getPersistenceManagerFactory().getPersistenceManager();
>        try {
>                pm.currentTransaction().begin();
>                pm.makePersistent(Account);
>                pm.flush();
>                pm.currentTransaction().commit();
>        } finally {
>                pm.close();
>        }
>
> }
>
> public SystemAccount getAccount(String emailAddress) {
>        PersistenceManager pm =
> getPersistenceManagerFactory().getPersistenceManager();
>
>        SystemAccount account = null;
>        try {
>                pm.currentTransaction().begin();
>                account = pm.getObjectById(SystemAccount.class,
> emailAddress);
>        } catch (Exception e) {
>                pm.currentTransaction().rollback();
>                e.printStackTrace();
>        } finally  {
>                pm.close();
>        }
>        return account;
> }
>
> }
>
> For getAccount i didn't know how to check if the account actually
> exists as a persistent object so i tried to retrieve it and if that
> failed then i would just assume that the account doesn't exist yet.
> So if somebody could also tell me a better way to do that that would
> be great.
>
> But my main issue is getting past the 'the response could not be
> deserialized' error
>
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google Web Toolkit" 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-web-toolkit?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" 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-web-toolkit?hl=en.

Reply via email to