8076392: Improve IIOPInputStream consistency
Reviewed-by: rriggs, coffeys, skoivu, ahgross
This commit is contained in:
parent
a3837043b0
commit
6837e39407
@ -567,6 +567,11 @@ public class IIOPInputStream
|
||||
// XXX I18N, logging needed.
|
||||
throw new NotActiveException("defaultReadObjectDelegate");
|
||||
|
||||
if (!currentClassDesc.forClass().isAssignableFrom(
|
||||
currentObject.getClass())) {
|
||||
throw new IOException("Object Type mismatch");
|
||||
}
|
||||
|
||||
// The array will be null unless fields were retrieved
|
||||
// remotely because of a serializable version difference.
|
||||
// Bug fix for 4365188. See the definition of
|
||||
@ -2257,6 +2262,27 @@ public class IIOPInputStream
|
||||
|
||||
try {
|
||||
Class fieldCl = fields[i].getClazz();
|
||||
if ((objectValue != null)
|
||||
&& (!fieldCl.isAssignableFrom(
|
||||
objectValue.getClass()))) {
|
||||
throw new IllegalArgumentException("Field mismatch");
|
||||
}
|
||||
Field classField = null;
|
||||
try {
|
||||
classField = cl.getDeclaredField(fields[i].getName());
|
||||
} catch (NoSuchFieldException nsfEx) {
|
||||
throw new IllegalArgumentException(nsfEx);
|
||||
} catch (SecurityException secEx) {
|
||||
throw new IllegalArgumentException(secEx.getCause());
|
||||
}
|
||||
Class<?> declaredFieldClass = classField.getType();
|
||||
|
||||
// check input field type is a declared field type
|
||||
// input field is a subclass of the declared field
|
||||
if (!declaredFieldClass.isAssignableFrom(fieldCl)) {
|
||||
throw new IllegalArgumentException(
|
||||
"Field Type mismatch");
|
||||
}
|
||||
if (objectValue != null && !fieldCl.isInstance(objectValue)) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user