From 9a74d458e1bf3488225646313a33e1a34909e271 Mon Sep 17 00:00:00 2001 From: darcy Date: Fri, 16 Jan 2009 14:05:55 -0800 Subject: [PATCH] 6583626: Improve serialization support in javax.lang.model.type exception classes Reviewed-by: jjg --- .../model/type/MirroredTypeException.java | 14 ++++++++++-- .../model/type/MirroredTypesException.java | 22 ++++++++++++++----- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/share/classes/javax/lang/model/type/MirroredTypeException.java b/src/share/classes/javax/lang/model/type/MirroredTypeException.java index bf5904b8..db729c59 100644 --- a/src/share/classes/javax/lang/model/type/MirroredTypeException.java +++ b/src/share/classes/javax/lang/model/type/MirroredTypeException.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,7 +25,8 @@ package javax.lang.model.type; - +import java.io.ObjectInputStream; +import java.io.IOException; import java.lang.annotation.Annotation; import javax.lang.model.element.Element; @@ -67,4 +68,13 @@ public class MirroredTypeException extends RuntimeException { public TypeMirror getTypeMirror() { return type; } + + /** + * Explicitly set all transient fields. + */ + private void readObject(ObjectInputStream s) + throws IOException, ClassNotFoundException { + s.defaultReadObject(); + type = null; + } } diff --git a/src/share/classes/javax/lang/model/type/MirroredTypesException.java b/src/share/classes/javax/lang/model/type/MirroredTypesException.java index 4ed0383d..54efe41a 100644 --- a/src/share/classes/javax/lang/model/type/MirroredTypesException.java +++ b/src/share/classes/javax/lang/model/type/MirroredTypesException.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,12 +25,12 @@ package javax.lang.model.type; - import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.List; import java.util.Collections; - +import java.io.ObjectInputStream; +import java.io.IOException; import javax.lang.model.element.Element; @@ -49,8 +49,7 @@ public class MirroredTypesException extends RuntimeException { private static final long serialVersionUID = 269; - // Should this be non-final for a custum readObject method? - private final transient List types; // cannot be serialized + private transient List types; // cannot be serialized /** * Constructs a new MirroredTypesException for the specified types. @@ -58,7 +57,9 @@ public class MirroredTypesException extends RuntimeException { * @param types the types being accessed */ public MirroredTypesException(List types) { - super("Attempt to access Class objects for TypeMirrors " + types); + super("Attempt to access Class objects for TypeMirrors " + + (types = // defensive copy + new ArrayList(types)).toString() ); this.types = Collections.unmodifiableList(types); } @@ -72,4 +73,13 @@ public class MirroredTypesException extends RuntimeException { public List getTypeMirrors() { return types; } + + /** + * Explicitly set all transient fields. + */ + private void readObject(ObjectInputStream s) + throws IOException, ClassNotFoundException { + s.defaultReadObject(); + types = null; + } } -- GitLab