Hi guys,

I am unable to serialize my own Exception class. I have created an 
exception class as follows:

public class KeyNotFoundException extends java.lang.Exception {
    private String key;
    private String resourceBundleName;

    /**
     * The key was not found in the resource bundle
     *
     * @param resourceBundleName The resource bundle name
     * @param key                The key
     */
    public KeyNotFoundException(String resourceBundleName, String key) {
        super("The resource bundle '" + resourceBundleName + "' does not 
have the key '" + key + "'");
        this.resourceBundleName = resourceBundleName;
        this.key = key;
    }

    /**
     * Get the key
     *
     * @return The key
     */
    public String getKey() {
        return key;
    }

    /**
     * Get the resource bundle name
     *
     * @return The resource bundle name
     */
    public String getResourceBundleName() {
        return resourceBundleName;
    }
}

This obviously needs a CustomFieldSerializer, so I created this one:

public class KeyNotFoundException_CustomFieldSerializer extends 
CustomFieldSerializer<KeyNotFoundException> {
    /**
     * Deserialize the KeyNotFoundException from the stream
     *
     * @param streamReader The stream that contains the KeyNotFoundException
     * @param instance     The instance to stream the details to
     * @throws SerializationException If unable to deserialize the instance
     */
    public static void deserialize(SerializationStreamReader streamReader, 
KeyNotFoundException instance) throws SerializationException {
        instance.setStackTrace((StackTraceElement[]) 
streamReader.readObject());
    }

    /**
     * Create a new instance of a KeyNotFoundException from the stream
     *
     * @param streamReader The stream that contains the KeyNotFoundException
     * @return The KeyNotFoundException
     * @throws SerializationException If unable to serialize the instance
     */
    public static KeyNotFoundException 
instantiate(SerializationStreamReader streamReader) throws 
SerializationException {
        String resourceBundleName = streamReader.readString();
        String key = streamReader.readString();
        return new KeyNotFoundException(resourceBundleName, key);
    }

    /**
     * Serialize the KeyNotFoundException to the stream
     *
     * @param streamWriter The stream to serialize the KeyNotFoundException 
to
     * @param instance     The KeyNotFoundException to serialize
     * @throws SerializationException If unable to serialize the instance
     */
    public static void serialize(SerializationStreamWriter streamWriter, 
KeyNotFoundException instance) throws SerializationException {
        // Serialize the constructor parameters
        streamWriter.writeString(instance.getResourceBundleName());
        streamWriter.writeString(instance.getKey());

        // Serialize instance variables
        streamWriter.writeObject(instance.getStackTrace());
    }

    @Override
    public void deserializeInstance(SerializationStreamReader streamReader, 
KeyNotFoundException instance) throws SerializationException {
        deserialize(streamReader, instance);
    }

    @Override
    public boolean hasCustomInstantiateInstance() {
        return true;
    }

    @Override
    public KeyNotFoundException 
instantiateInstance(SerializationStreamReader streamReader) throws 
SerializationException {
        return instantiate(streamReader);
    }

    @Override
    public void serializeInstance(SerializationStreamWriter streamWriter, 
KeyNotFoundException instance) throws SerializationException {
        serialize(streamWriter, instance);
    }
}

This does not work. The StackTraceElement is not whitelisted. What do I 
need to do to get this working correctly! Its very frustrating!


-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to