How to serialize class with sub classes

Hi!

I have 2 types of objects: boxes and links. simplifyed code:

[code]
public class ObjectData {

public static final int BOX = 1;

public static final int LINK = 2;

public int type;

public String id;

public ObjectData() {
}

public ObjectData(int type) {
    this.type = type;
}

public static class BoxData extends ObjectData {
    
    public String boxName;
    
    public BoxData() {
        super(BOX);
    }
    
}

public static class LinkData extends ObjectData {
    
    public String linkName;
    
    public LinkData() {
        super(LINK);
    }
    
}

}
[/code]shared state:

[code]
public class MySharedState extends AbstractComponentState {

public ObjectData object;

}
[/code]but on client when I try to cast ObjectData to correct BoxData I got:

Caused by: java.lang.ClassCastException

How to serialize objects like this? it is really common task

Get your basics right buddy :slight_smile: Implement serializable interface on both (LinkData & BoxData) or on ObjectData

This solves your problem.

Cheers,
Krishna.

it is simplifyed example yes. it implements Serializable in real code. and it is cause ClassCastException

Can you please share the stacktrace of the exception?

it is client side exception:

Exception caught: undefinedcom.google.gwt.event.shared.UmbrellaException: Exception caught: undefined
at Unknown.fillInStackTrace_0(com.nofilis.vaadin.DefaultWidgetSet-0.js@23)
at Unknown.fillInStackTrace(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.Throwable_1(com.nofilis.vaadin.DefaultWidgetSet-0.js@8)
at Unknown.Exception_1(com.nofilis.vaadin.DefaultWidgetSet-0.js@15)
at Unknown.RuntimeException_1(com.nofilis.vaadin.DefaultWidgetSet-0.js@15)
at Unknown.UmbrellaException(com.nofilis.vaadin.DefaultWidgetSet-0.js@22)
at Unknown.UmbrellaException_0(com.nofilis.vaadin.DefaultWidgetSet-0.js@21)
at Unknown.$fireEvent(com.nofilis.vaadin.DefaultWidgetSet-0.js@13)
at Unknown.$fireEvent_2(com.nofilis.vaadin.DefaultWidgetSet-0.js@66)
at Unknown.fireEvent_6(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.$sendStateChangeEvents(com.nofilis.vaadin.DefaultWidgetSet-0.js@28)
at Unknown.execute_24(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.runWhenDependenciesLoaded(com.nofilis.vaadin.DefaultWidgetSet-0.js@30)
at Unknown.$handleUIDLMessage(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.$handleReceivedJSONMessage(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.$handleWhenCSSLoaded(com.nofilis.vaadin.DefaultWidgetSet-0.js@45)
at Unknown.$handleJSONText(com.nofilis.vaadin.DefaultWidgetSet-0.js@5)
at Unknown.$start_0(com.nofilis.vaadin.DefaultWidgetSet-0.js@5)
at Unknown.execute_19(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.$executeScheduled(com.nofilis.vaadin.DefaultWidgetSet-0.js@30)
at Unknown.runScheduledTasks(com.nofilis.vaadin.DefaultWidgetSet-0.js@86)
at Unknown.$flushPostEventPumpCommands(com.nofilis.vaadin.DefaultWidgetSet-0.js@47)
at Unknown.execute_2(com.nofilis.vaadin.DefaultWidgetSet-0.js@35)
at Unknown.execute_1(com.nofilis.vaadin.DefaultWidgetSet-0.js@14)
at Unknown.apply_0(com.nofilis.vaadin.DefaultWidgetSet-0.js@23)
at Unknown.entry0(com.nofilis.vaadin.DefaultWidgetSet-0.js@16)
at Unknown.eval(com.nofilis.vaadin.DefaultWidgetSet-0.js@14)
at Unknown.eval(com.nofilis.vaadin.DefaultWidgetSet-0.js@32)
at Unknown.eval(com.nofilis.vaadin.DefaultWidgetSet-0.js@5)
Caused by: java.lang.ClassCastException
at Unknown.fillInStackTrace_0(com.nofilis.vaadin.DefaultWidgetSet-0.js@23)
at Unknown.fillInStackTrace(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.Throwable(com.nofilis.vaadin.DefaultWidgetSet-0.js@8)
at Unknown.Exception(com.nofilis.vaadin.DefaultWidgetSet-0.js@13)
at Unknown.RuntimeException(com.nofilis.vaadin.DefaultWidgetSet-0.js@13)
at Unknown.ClassCastException(com.nofilis.vaadin.DefaultWidgetSet-0.js@20)
at Unknown.dynamicCast(com.nofilis.vaadin.DefaultWidgetSet-0.js@11)
at Unknown.onStateChanged_6(com.nofilis.vaadin.DefaultWidgetSet-0.js@9)
at Unknown.$dispatch_32(com.nofilis.vaadin.DefaultWidgetSet-0.js@12)
at Unknown.dispatch_33(com.nofilis.vaadin.DefaultWidgetSet-0.js@22)
at Unknown.dispatch(com.nofilis.vaadin.DefaultWidgetSet-0.js@8)
at Unknown.dispatchEvent_1(com.nofilis.vaadin.DefaultWidgetSet-0.js@11)
at Unknown.$doFire(com.nofilis.vaadin.DefaultWidgetSet-0.js@9)
at Unknown.$fireEvent_0(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.$fireEvent(com.nofilis.vaadin.DefaultWidgetSet-0.js@29)
at Unknown.$fireEvent_2(com.nofilis.vaadin.DefaultWidgetSet-0.js@66)
at Unknown.fireEvent_6(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.$sendStateChangeEvents(com.nofilis.vaadin.DefaultWidgetSet-0.js@28)
at Unknown.execute_24(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.runWhenDependenciesLoaded(com.nofilis.vaadin.DefaultWidgetSet-0.js@30)
at Unknown.$handleUIDLMessage(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.$handleReceivedJSONMessage(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.$handleWhenCSSLoaded(com.nofilis.vaadin.DefaultWidgetSet-0.js@45)
at Unknown.$handleJSONText(com.nofilis.vaadin.DefaultWidgetSet-0.js@5)
at Unknown.$start_0(com.nofilis.vaadin.DefaultWidgetSet-0.js@5)
at Unknown.execute_19(com.nofilis.vaadin.DefaultWidgetSet-0.js@3)
at Unknown.$executeScheduled(com.nofilis.vaadin.DefaultWidgetSet-0.js@30)
at Unknown.runScheduledTasks(com.nofilis.vaadin.DefaultWidgetSet-0.js@86)
at Unknown.$flushPostEventPumpCommands(com.nofilis.vaadin.DefaultWidgetSet-0.js@47)
at Unknown.execute_2(com.nofilis.vaadin.DefaultWidgetSet-0.js@35)
at Unknown.execute_1(com.nofilis.vaadin.DefaultWidgetSet-0.js@14)
at Unknown.apply_0(com.nofilis.vaadin.DefaultWidgetSet-0.js@23)
at Unknown.entry0(com.nofilis.vaadin.DefaultWidgetSet-0.js@16)
at Unknown.eval(com.nofilis.vaadin.DefaultWidgetSet-0.js@14)
at Unknown.eval(com.nofilis.vaadin.DefaultWidgetSet-0.js@32)
at Unknown.eval(com.nofilis.vaadin.DefaultWidgetSet-0.js@5)

This is something you are getting on the client side, on which I have very minimal knowledge. Anyway kindly check if you have compiled & packaged the widgetset properly.

I’m sorry buddy :frowning:

NP. Thanks)