mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-14 00:49:42 +00:00
8014987: Augment serialization handling
Reviewed-by: alanb, coffeys, skoivu
This commit is contained in:
parent
455cd24c95
commit
be5469fc71
@ -490,11 +490,12 @@ public class ObjectInputStream
|
||||
public void defaultReadObject()
|
||||
throws IOException, ClassNotFoundException
|
||||
{
|
||||
if (curContext == null) {
|
||||
SerialCallbackContext ctx = curContext;
|
||||
if (ctx == null) {
|
||||
throw new NotActiveException("not in call to readObject");
|
||||
}
|
||||
Object curObj = curContext.getObj();
|
||||
ObjectStreamClass curDesc = curContext.getDesc();
|
||||
Object curObj = ctx.getObj();
|
||||
ObjectStreamClass curDesc = ctx.getDesc();
|
||||
bin.setBlockDataMode(false);
|
||||
defaultReadFields(curObj, curDesc);
|
||||
bin.setBlockDataMode(true);
|
||||
@ -528,11 +529,12 @@ public class ObjectInputStream
|
||||
public ObjectInputStream.GetField readFields()
|
||||
throws IOException, ClassNotFoundException
|
||||
{
|
||||
if (curContext == null) {
|
||||
SerialCallbackContext ctx = curContext;
|
||||
if (ctx == null) {
|
||||
throw new NotActiveException("not in call to readObject");
|
||||
}
|
||||
Object curObj = curContext.getObj();
|
||||
ObjectStreamClass curDesc = curContext.getDesc();
|
||||
Object curObj = ctx.getObj();
|
||||
ObjectStreamClass curDesc = ctx.getDesc();
|
||||
bin.setBlockDataMode(false);
|
||||
GetFieldImpl getField = new GetFieldImpl(curDesc);
|
||||
getField.readFields();
|
||||
@ -1967,7 +1969,6 @@ public class ObjectInputStream
|
||||
private void defaultReadFields(Object obj, ObjectStreamClass desc)
|
||||
throws IOException
|
||||
{
|
||||
// REMIND: is isInstance check necessary?
|
||||
Class<?> cl = desc.forClass();
|
||||
if (cl != null && obj != null && !cl.isInstance(obj)) {
|
||||
throw new ClassCastException();
|
||||
|
||||
@ -430,11 +430,12 @@ public class ObjectOutputStream
|
||||
* <code>OutputStream</code>
|
||||
*/
|
||||
public void defaultWriteObject() throws IOException {
|
||||
if ( curContext == null ) {
|
||||
SerialCallbackContext ctx = curContext;
|
||||
if (ctx == null) {
|
||||
throw new NotActiveException("not in call to writeObject");
|
||||
}
|
||||
Object curObj = curContext.getObj();
|
||||
ObjectStreamClass curDesc = curContext.getDesc();
|
||||
Object curObj = ctx.getObj();
|
||||
ObjectStreamClass curDesc = ctx.getDesc();
|
||||
bout.setBlockDataMode(false);
|
||||
defaultWriteFields(curObj, curDesc);
|
||||
bout.setBlockDataMode(true);
|
||||
@ -452,11 +453,12 @@ public class ObjectOutputStream
|
||||
*/
|
||||
public ObjectOutputStream.PutField putFields() throws IOException {
|
||||
if (curPut == null) {
|
||||
if (curContext == null) {
|
||||
SerialCallbackContext ctx = curContext;
|
||||
if (ctx == null) {
|
||||
throw new NotActiveException("not in call to writeObject");
|
||||
}
|
||||
Object curObj = curContext.getObj();
|
||||
ObjectStreamClass curDesc = curContext.getDesc();
|
||||
Object curObj = ctx.getObj();
|
||||
ObjectStreamClass curDesc = ctx.getDesc();
|
||||
curPut = new PutFieldImpl(curDesc);
|
||||
}
|
||||
return curPut;
|
||||
@ -1516,7 +1518,11 @@ public class ObjectOutputStream
|
||||
private void defaultWriteFields(Object obj, ObjectStreamClass desc)
|
||||
throws IOException
|
||||
{
|
||||
// REMIND: perform conservative isInstance check here?
|
||||
Class<?> cl = desc.forClass();
|
||||
if (cl != null && obj != null && !cl.isInstance(obj)) {
|
||||
throw new ClassCastException();
|
||||
}
|
||||
|
||||
desc.checkDefaultSerialize();
|
||||
|
||||
int primDataSize = desc.getPrimDataSize();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user