8076376: Enhance IIOP operations

Reviewed-by: rriggs, coffeys, ahgross, skoivu
This commit is contained in:
Mark Sheppard 2015-04-20 00:27:38 +01:00
parent 7c256783a5
commit 233f940f00

@ -2430,8 +2430,8 @@ public class IIOPInputStream
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 @@ public class IIOPInputStream
}
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 @@ public class IIOPInputStream
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 @@ public class IIOPInputStream
{
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 @@ public class IIOPInputStream
{
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 @@ public class IIOPInputStream
{
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 @@ public class IIOPInputStream
{
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 @@ public class IIOPInputStream
{
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 @@ public class IIOPInputStream
{
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 @@ public class IIOPInputStream
{
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 @@ public class IIOPInputStream
{
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) ) ;
}
}
}