--- a/corba/src/java.corba/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Thu Jul 16 13:51:50 2015 -0700
+++ b/corba/src/java.corba/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Thu Jul 16 19:30:33 2015 -0700
@@ -2430,8 +2430,8 @@
private void throwAwayData(ValueMember[] fields,
com.sun.org.omg.SendingContext.CodeBase sender)
throws InvalidClassException, StreamCorruptedException,
- ClassNotFoundException, IOException
- {
+ ClassNotFoundException, IOException {
+
for (int i = 0; i < fields.length; ++i) {
try {
@@ -2566,8 +2566,7 @@
}
- private static void setObjectField(Object o, Class c, String fieldName, Object v)
- {
+ private static void setObjectField(Object o, Class c, String fieldName, Object v) {
try {
Field fld = c.getDeclaredField( fieldName ) ;
Class fieldCl = fld.getType();
@@ -2577,9 +2576,15 @@
long key = bridge.objectFieldOffset( fld ) ;
bridge.putObject( o, key, v ) ;
} catch (Exception e) {
- throw utilWrapper.errorSetObjectField( e, fieldName,
- o.toString(),
- v.toString() ) ;
+ if (o != null) {
+ throw utilWrapper.errorSetObjectField( e, fieldName,
+ o.toString(),
+ v.toString() ) ;
+ } else {
+ throw utilWrapper.errorSetObjectField( e, fieldName,
+ "null " + c.getName() + " object",
+ v.toString() ) ;
+ }
}
}
@@ -2587,12 +2592,22 @@
{
try {
Field fld = c.getDeclaredField( fieldName ) ;
- long key = bridge.objectFieldOffset( fld ) ;
- bridge.putBoolean( o, key, v ) ;
+ if ((fld != null) && (fld.getType() == Boolean.TYPE)) {
+ long key = bridge.objectFieldOffset( fld ) ;
+ bridge.putBoolean( o, key, v ) ;
+ } else {
+ throw new InvalidObjectException("Field Type mismatch");
+ }
} catch (Exception e) {
+ if (o != null) {
throw utilWrapper.errorSetBooleanField( e, fieldName,
o.toString(),
new Boolean(v) ) ;
+ } else {
+ throw utilWrapper.errorSetBooleanField( e, fieldName,
+ "null " + c.getName() + " object",
+ new Boolean(v) ) ;
+ }
}
}
@@ -2600,12 +2615,22 @@
{
try {
Field fld = c.getDeclaredField( fieldName ) ;
- long key = bridge.objectFieldOffset( fld ) ;
- bridge.putByte( o, key, v ) ;
+ if ((fld != null) && (fld.getType() == Byte.TYPE)) {
+ long key = bridge.objectFieldOffset( fld ) ;
+ bridge.putByte( o, key, v ) ;
+ } else {
+ throw new InvalidObjectException("Field Type mismatch");
+ }
} catch (Exception e) {
- throw utilWrapper.errorSetByteField( e, fieldName,
- o.toString(),
- new Byte(v) ) ;
+ if (o != null) {
+ throw utilWrapper.errorSetByteField( e, fieldName,
+ o.toString(),
+ new Byte(v) ) ;
+ } else {
+ throw utilWrapper.errorSetByteField( e, fieldName,
+ "null " + c.getName() + " object",
+ new Byte(v) ) ;
+ }
}
}
@@ -2613,12 +2638,22 @@
{
try {
Field fld = c.getDeclaredField( fieldName ) ;
- long key = bridge.objectFieldOffset( fld ) ;
- bridge.putChar( o, key, v ) ;
+ if ((fld != null) && (fld.getType() == Character.TYPE)) {
+ long key = bridge.objectFieldOffset( fld ) ;
+ bridge.putChar( o, key, v ) ;
+ } else {
+ throw new InvalidObjectException("Field Type mismatch");
+ }
} catch (Exception e) {
- throw utilWrapper.errorSetCharField( e, fieldName,
- o.toString(),
- new Character(v) ) ;
+ if (o != null) {
+ throw utilWrapper.errorSetCharField( e, fieldName,
+ o.toString(),
+ new Character(v) ) ;
+ } else {
+ throw utilWrapper.errorSetCharField( e, fieldName,
+ "null " + c.getName() + " object",
+ new Character(v) ) ;
+ }
}
}
@@ -2626,12 +2661,22 @@
{
try {
Field fld = c.getDeclaredField( fieldName ) ;
- long key = bridge.objectFieldOffset( fld ) ;
- bridge.putShort( o, key, v ) ;
+ if ((fld != null) && (fld.getType() == Short.TYPE)) {
+ long key = bridge.objectFieldOffset( fld ) ;
+ bridge.putShort( o, key, v ) ;
+ } else {
+ throw new InvalidObjectException("Field Type mismatch");
+ }
} catch (Exception e) {
+ if (o != null) {
throw utilWrapper.errorSetShortField( e, fieldName,
o.toString(),
new Short(v) ) ;
+ } else {
+ throw utilWrapper.errorSetShortField( e, fieldName,
+ "null " + c.getName() + " object",
+ new Short(v) ) ;
+ }
}
}
@@ -2639,12 +2684,22 @@
{
try {
Field fld = c.getDeclaredField( fieldName ) ;
- long key = bridge.objectFieldOffset( fld ) ;
- bridge.putInt( o, key, v ) ;
+ if ((fld != null) && (fld.getType() == Integer.TYPE)) {
+ long key = bridge.objectFieldOffset( fld ) ;
+ bridge.putInt( o, key, v ) ;
+ } else {
+ throw new InvalidObjectException("Field Type mismatch");
+ }
} catch (Exception e) {
- throw utilWrapper.errorSetIntField( e, fieldName,
- o.toString(),
- new Integer(v) ) ;
+ if (o != null) {
+ throw utilWrapper.errorSetIntField( e, fieldName,
+ o.toString(),
+ new Integer(v) ) ;
+ } else {
+ throw utilWrapper.errorSetIntField( e, fieldName,
+ "null " + c.getName() + " object",
+ new Integer(v) ) ;
+ }
}
}
@@ -2652,12 +2707,22 @@
{
try {
Field fld = c.getDeclaredField( fieldName ) ;
- long key = bridge.objectFieldOffset( fld ) ;
- bridge.putLong( o, key, v ) ;
+ if ((fld != null) && (fld.getType() == Long.TYPE)) {
+ long key = bridge.objectFieldOffset( fld ) ;
+ bridge.putLong( o, key, v ) ;
+ } else {
+ throw new InvalidObjectException("Field Type mismatch");
+ }
} catch (Exception e) {
- throw utilWrapper.errorSetLongField( e, fieldName,
- o.toString(),
- new Long(v) ) ;
+ if (o != null) {
+ throw utilWrapper.errorSetLongField( e, fieldName,
+ o.toString(),
+ new Long(v) ) ;
+ } else {
+ throw utilWrapper.errorSetLongField( e, fieldName,
+ "null " + c.getName() + " object",
+ new Long(v) ) ;
+ }
}
}
@@ -2665,12 +2730,22 @@
{
try {
Field fld = c.getDeclaredField( fieldName ) ;
- long key = bridge.objectFieldOffset( fld ) ;
- bridge.putFloat( o, key, v ) ;
+ if ((fld != null) && (fld.getType() == Float.TYPE)) {
+ long key = bridge.objectFieldOffset( fld ) ;
+ bridge.putFloat( o, key, v ) ;
+ } else {
+ throw new InvalidObjectException("Field Type mismatch");
+ }
} catch (Exception e) {
- throw utilWrapper.errorSetFloatField( e, fieldName,
- o.toString(),
- new Float(v) ) ;
+ if (o != null) {
+ throw utilWrapper.errorSetFloatField( e, fieldName,
+ o.toString(),
+ new Float(v) ) ;
+ } else {
+ throw utilWrapper.errorSetFloatField( e, fieldName,
+ "null " + c.getName() + " object",
+ new Float(v) ) ;
+ }
}
}
@@ -2678,12 +2753,22 @@
{
try {
Field fld = c.getDeclaredField( fieldName ) ;
- long key = bridge.objectFieldOffset( fld ) ;
- bridge.putDouble( o, key, v ) ;
+ if ((fld != null) && (fld.getType() == Double.TYPE)) {
+ long key = bridge.objectFieldOffset( fld ) ;
+ bridge.putDouble( o, key, v ) ;
+ } else {
+ throw new InvalidObjectException("Field Type mismatch");
+ }
} catch (Exception e) {
- throw utilWrapper.errorSetDoubleField( e, fieldName,
- o.toString(),
- new Double(v) ) ;
+ if (o != null) {
+ throw utilWrapper.errorSetDoubleField( e, fieldName,
+ o.toString(),
+ new Double(v) ) ;
+ } else {
+ throw utilWrapper.errorSetDoubleField( e, fieldName,
+ "null " + c.getName() + " object",
+ new Double(v) ) ;
+ }
}
}