src/share/classes/java/io/ObjectOutputStream.java

Print this page

        

*** 33,43 **** import java.util.Arrays; import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import static java.io.ObjectStreamClass.processQueue; - import java.io.SerialCallbackContext; import sun.reflect.misc.ReflectUtil; /** * An ObjectOutputStream writes primitive data types and graphs of Java objects * to an OutputStream. The objects can be read (reconstituted) using an --- 33,42 ----
*** 456,466 **** if (curPut == null) { SerialCallbackContext ctx = curContext; if (ctx == null) { throw new NotActiveException("not in call to writeObject"); } ! Object curObj = ctx.getObj(); ObjectStreamClass curDesc = ctx.getDesc(); curPut = new PutFieldImpl(curDesc); } return curPut; } --- 455,465 ---- if (curPut == null) { SerialCallbackContext ctx = curContext; if (ctx == null) { throw new NotActiveException("not in call to writeObject"); } ! ctx.checkAndSetUsed(); ObjectStreamClass curDesc = ctx.getDesc(); curPut = new PutFieldImpl(curDesc); } return curPut; }
*** 1525,1542 **** } desc.checkDefaultSerialize(); int primDataSize = desc.getPrimDataSize(); if (primVals == null || primVals.length < primDataSize) { primVals = new byte[primDataSize]; } desc.getPrimFieldValues(obj, primVals); bout.write(primVals, 0, primDataSize, false); ObjectStreamField[] fields = desc.getFields(false); ! Object[] objVals = new Object[desc.getNumObjFields()]; int numPrimFields = fields.length - objVals.length; desc.getObjFieldValues(obj, objVals); for (int i = 0; i < objVals.length; i++) { if (extendedDebugInfo) { debugInfoStack.push( --- 1524,1545 ---- } desc.checkDefaultSerialize(); int primDataSize = desc.getPrimDataSize(); + if (primDataSize > 0) { if (primVals == null || primVals.length < primDataSize) { primVals = new byte[primDataSize]; } desc.getPrimFieldValues(obj, primVals); bout.write(primVals, 0, primDataSize, false); + } + int numObjFields = desc.getNumObjFields(); + if (numObjFields > 0) { ObjectStreamField[] fields = desc.getFields(false); ! Object[] objVals = new Object[numObjFields]; int numPrimFields = fields.length - objVals.length; desc.getObjFieldValues(obj, objVals); for (int i = 0; i < objVals.length; i++) { if (extendedDebugInfo) { debugInfoStack.push(
*** 1552,1561 **** --- 1555,1565 ---- debugInfoStack.pop(); } } } } + } /** * Attempts to write to stream fatal IOException that has caused * serialization to abort. */
*** 2462,2472 **** */ public String toString() { StringBuilder buffer = new StringBuilder(); if (!stack.isEmpty()) { for(int i = stack.size(); i > 0; i-- ) { ! buffer.append(stack.get(i-1) + ((i != 1) ? "\n" : "")); } } return buffer.toString(); } } --- 2466,2478 ---- */ public String toString() { StringBuilder buffer = new StringBuilder(); if (!stack.isEmpty()) { for(int i = stack.size(); i > 0; i-- ) { ! buffer.append(stack.get(i - 1)); ! if (i != 1) ! buffer.append('\n'); } } return buffer.toString(); } }