Hi there,
I am hitting a brickwall with serialization of a subclass of Location
(probably more a Java question actuall, but let's try anyway).

Location is not serializable.
I have a first subclass called FALocation that does not have any
instance variables. I have declared it serializable.

Then I have a second class called Waypoint that looks like this:

    public class Waypoint extends FALocation implements Serializable {

        /**
         *
         */
        private static final long serialVersionUID = 1L;

        /* Class variables
*******************************************************/
        private static int CLASS_VERSION=1; //Used to version parcels

        /* Instance variables
****************************************************/
        private transient String type=DataHelper.PT_TYPE_US;
        private transient String country;
        private transient String name=null;
        private transient String description=null;
        private transient int elevation = 0;
        private transient int population = 0; // Afterthought, added
to match the DB structure

        /* Constructors
**********************************************************/
        public Waypoint() {
            super();
        }

        public Waypoint(double lat, double lon, String name, String
description) {
            super(lat, lon);
            this.setName(name);
            this.setDescription(description);
        }

        public Waypoint(Location l) {
            super(l);
        }

        public Waypoint(String provider) {
            super(provider);
        }


        /* Implementing serializable */
        private void writeObject(java.io.ObjectOutputStream out)
throws IOException {
            Log.v("DroidFA", "Serialising \"%s\" (v%d).",
Waypoint.class.getSimpleName(), CLASS_VERSION);
            out.writeInt(CLASS_VERSION);

            out.writeObject(type);
            out.writeObject(country);
            out.writeObject(name);
            out.writeObject(description);
            out.writeInt(elevation);
            out.writeInt(population);
        }

        private void readObject(java.io.ObjectInputStream in) throws
IOException, ClassNotFoundException {

            int serialClassVersion = in.readInt();
            Log.v("DroidFA", "Deserialising \"%s\" (v%d).",
Waypoint.class.getSimpleName(),serialClassVersion);

            type = (String) in.readObject();
            country = (String) in.readObject();
            name = (String) in.readObject();
            description = (String) in.readObject();
            elevation = in.readInt();
            population = in.readInt();
        }
    }


Serialization works fine.

Deseriamization produces the followwing exception (the leg object
contains a waypoint).:

10-05 13:50:35.259: WARN/System.err(7867):
java.io.InvalidClassException: android.location.Location;
IllegalAccessException
10-05 13:50:35.267: WARN/System.err(7867):     at
java.io.ObjectInputStream.resolveConstructorClass(ObjectInputStream.java:
2010)
10-05 13:50:35.267: WARN/System.err(7867):     at
java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2095)
10-05 13:50:35.267: WARN/System.err(7867):     at
java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:
929)
10-05 13:50:35.267: WARN/System.err(7867):     at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:2285)
10-05 13:50:35.278: WARN/System.err(7867):     at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:2240)
10-05 13:50:35.278: WARN/System.err(7867):     at
com.droidfa.navigation.Leg.readObject(Leg.java:262)
.../...

Any help will be greatly appreciated.

Many thanks in advance,
Jean-Michel

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to