< prev index next >
src/java.base/share/classes/java/io/ObjectStreamClass.java
Print this page
rev 52891 : 8224541: Better mapping of serial ENUMs
Reviewed-by: mschoene, rhalade, robm, rriggs, smarks, andrew
rev 52892 : 8224549: Less Blocking Array Queues
Reviewed-by: bchristi, rhalade, rriggs, mschoene, robm
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2020, Oracle and/or its affiliates. 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -852,10 +852,21 @@
if (!initialized)
throw new InternalError("Unexpected call when not initialized");
}
/**
+ * Throws InvalidClassException if not initialized.
+ * To be called in cases where an uninitialized class descriptor indicates
+ * a problem in the serialization stream.
+ */
+ final void checkInitialized() throws InvalidClassException {
+ if (!initialized) {
+ throw new InvalidClassException("Class descriptor should be initialized");
+ }
+ }
+
+ /**
* Throws an InvalidClassException if object instances referencing this
* class descriptor should not be allowed to deserialize. This method does
* not apply to deserialization of enum constants.
*/
void checkDeserialize() throws InvalidClassException {
@@ -1107,10 +1118,14 @@
}
}
} catch (IllegalAccessException ex) {
// should not occur, as access checks have been suppressed
throw new InternalError(ex);
+ } catch (InstantiationError err) {
+ var ex = new InstantiationException();
+ ex.initCause(err);
+ throw ex;
}
} else {
throw new UnsupportedOperationException();
}
}
< prev index next >