I am working on a gwt-Evaluation project and we are working with
smartgwt, our first goal was to simply make a GUI working with local
TestData. Now we are supposed to split the client code from the
TestData which should be moved to the server. So I need to make RPC
calls to get the necessary data from the server services all the time
but I have a hard time getting it to work because of non-serializable
types I guess. This is a simplyfied code example.

My user-defined Class is not serializable it seems but I can't figure
out why.

ZeitbuchungDaten.class
[CODE]
package com.isp.ajaxtest.client;


import java.util.Date;

import com.google.gwt.user.client.rpc.IsSerializable;

public class ZeitbuchungDaten implements IsSerializable
{
  private int     idZeitbuchung;
  private int     idMitarbeiter;
  private int     idAuftrag;
  private Date    zeitpunktDerBuchung;
  private int     buchungsArt;
  private double  fertiggestelltInProzent;
  private double  geschaetzteRestzeitInStunden;
  private boolean endeGebucht;
  private int     startIdZeitbuchung;
  private int     endeIdZeitbuchung;
  private boolean storniert;
  private String  kommentarZurBuchung;

  public ZeitbuchungDaten( int idZeitbuchung, int idMitarbeiter, int
idAuftrag, Date zeitpunktDerBuchung,
                           int buchungsArt )
  {
    this.setIdZeitbuchung( idZeitbuchung );
    this.setIdMitarbeiter( idMitarbeiter );
    this.setIdAuftrag( idAuftrag );
    this.setZeitpunktDerBuchung( zeitpunktDerBuchung );
    this.setBuchungsArt( buchungsArt );
    this.setFertiggestelltInProzent( fertiggestelltInProzent );
    this.setGeschaetzteRestzeitInStunden
( geschaetzteRestzeitInStunden );
    this.setEndeGebucht( endeGebucht );
    this.setStartIdZeitbuchung( startIdZeitbuchung );
    this.setEndeIdZeitbuchung( endeIdZeitbuchung );
    this.setStorniert( storniert );
    this.setKommentarZurBuchung( kommentarZurBuchung );
  }
//Setter+Getter
}
[/CODE]

FakeDatenService.java
[CODE]
package com.isp.ajaxtest.client;

  import java.util.List;

import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

  @RemoteServiceRelativePath("fakeDaten")
  public interface FakeDatenService extends RemoteService {

    List<ZeitbuchungDaten> getAlleZeitbuchungen();
    List<ZeitbuchungDaten> getAlleZeitbuchungenByIdAuftrag(int
idAuftrag);
  }
[/CODE]
Same for FakeDatenServiceAsync.java

FakeDatenServiceImpl.java
[CODE]
package com.isp.ajaxtest.server;


import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

import com.isp.ajaxtest.client.ZeitbuchungDaten;

public class FakeDatenServiceImpl extends RemoteServiceServlet
implements FakeDatenService
{
  final List<ZeitbuchungDaten> alleZeitbuchungen = new
ArrayList<ZeitbuchungDaten>();

@SuppressWarnings("deprecation")
public FakeDatenServiceImpl()
{
    //Test Date Object
    final Date date = new Date();
    date.setDate( 22 );
    date.setYear( 108 );
    date.setMonth( 7 );

    //ZeitbuchungDatenContainer
    final ZeitbuchungDaten testZeitbuchung1 = new ZeitbuchungDaten( 1,
1, 1, date, 0 );
    testZeitbuchung1.setEndeGebucht( true );
    testZeitbuchung1.setEndeIdZeitbuchung( 2 );
    alleZeitbuchungen.add( testZeitbuchung1 );
    //many more hard-coded ZeitbuchungDatenObjects....

}

  public List<ZeitbuchungDaten> getAlleZeitbuchungen()
  {
    return alleZeitbuchungen;
  }

  public List<ZeitbuchungDaten> getAlleZeitbuchungenByIdAuftrag(int
idAuftrag)
  {
    List<ZeitbuchungDaten> alleZeitbuchungenByIdAuftrag = new
ArrayList<ZeitbuchungDaten>();

    for(int i = 0; i<alleZeitbuchungen.size();i++)
    {
     if(alleZeitbuchungen.get( i ).getIdAuftrag()==idAuftrag)
     {
      alleZeitbuchungenByIdAuftrag.add( alleZeitbuchungen.get(i) );
     }
    }

    return alleZeitbuchungenByIdAuftrag;
  }
}
[/CODE]

When I dont implement IsSerializable in ZeitbuchungDaten I get the GUI
running until I trigger the RPC call which results in this error:

"Caused by: com.google.gwt.user.client.rpc.SerializationException:
Type 'com.isp.ajaxtest.client.ZeitbuchungDaten' was not included in
the set of types which can be serialized by this SerializationPolicy
or its Class object could not be loaded. For security purposes, this
type will not be serialized."

When I implement it, I get this error immediately:

[DEBUG] Analyzing 'com.isp.ajaxtest.client.FakeDatenService' for
serializable types
[DEBUG] Analyzing methods:
public abstract
java.util.List<com.isp.ajaxtest.client.ZeitbuchungDaten>
getAlleZeitbuchungen()
   Return type:
java.util.List<com.isp.ajaxtest.client.ZeitbuchungDaten>
      java.util.List<com.isp.ajaxtest.client.ZeitbuchungDaten>
         Verifying instantiability
            java.util.Stack<com.isp.ajaxtest.client.ZeitbuchungDaten>
               Checking parameters of
'java.util.Stack<com.isp.ajaxtest.client.ZeitbuchungDaten>'
                  Checking type argument 0 of type
'java.util.Stack<E>' because it is directly exposed in this type or in
one of its subtypes
                     com.isp.ajaxtest.client.ZeitbuchungDaten
                        Type
'com.isp.ajaxtest.client.ZeitbuchungDaten' was not serializable and
has no concrete serializable subtypes
            java.util.Vector<com.isp.ajaxtest.client.ZeitbuchungDaten>
               Checking parameters of
'java.util.Vector<com.isp.ajaxtest.client.ZeitbuchungDaten>'
                  Checking type argument 0 of type
'java.util.Vector<E>' because it is directly exposed in this type or
in one of its subtypes
                     com.isp.ajaxtest.client.ZeitbuchungDaten
                        Type
'com.isp.ajaxtest.client.ZeitbuchungDaten' was not serializable and
has no concrete serializable subtypes
 
java.util.LinkedList<com.isp.ajaxtest.client.ZeitbuchungDaten>
               Checking parameters of
'java.util.LinkedList<com.isp.ajaxtest.client.ZeitbuchungDaten>'
                  Checking type argument 0 of type
'java.util.LinkedList<E>' because it is directly exposed in this type
or in one of its subtypes
                     com.isp.ajaxtest.client.ZeitbuchungDaten
                        Type
'com.isp.ajaxtest.client.ZeitbuchungDaten' was not serializable and
has no concrete serializable subtypes
 
java.util.Arrays.ArrayList<com.isp.ajaxtest.client.ZeitbuchungDaten>
               Checking parameters of
'java.util.Arrays.ArrayList<com.isp.ajaxtest.client.ZeitbuchungDaten>'
                  Checking type argument 0 of type
'java.util.Arrays.ArrayList<E>' because it is exposed as an array with
a maximum dimension of 1 in this type or one of its subtypes
                     com.isp.ajaxtest.client.ZeitbuchungDaten[]
                        Analyzing component type:
                           com.isp.ajaxtest.client.ZeitbuchungDaten
                              Type
'com.isp.ajaxtest.client.ZeitbuchungDaten' was not serializable and
has no concrete serializable subtypes
 
java.util.ArrayList<com.isp.ajaxtest.client.ZeitbuchungDaten>
               Checking parameters of
'java.util.ArrayList<com.isp.ajaxtest.client.ZeitbuchungDaten>'
                  Checking type argument 0 of type
'java.util.ArrayList<E>' because it is directly exposed in this type
or in one of its subtypes
                     com.isp.ajaxtest.client.ZeitbuchungDaten
                        Type
'com.isp.ajaxtest.client.ZeitbuchungDaten' was not serializable and
has no concrete serializable subtypes


How to fix this problem?

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