diff options
author | Michi Henning <michi@zeroc.com> | 2005-07-15 01:50:32 +0000 |
---|---|---|
committer | Michi Henning <michi@zeroc.com> | 2005-07-15 01:50:32 +0000 |
commit | 0275da85d4593a8db0600a160d93dd9626d5dbbc (patch) | |
tree | ac583326d499bc739c2c4c94b6c99d2204018f28 /java/src/IceInternal/BasicStream.java | |
parent | fixed missing int->char conversion (diff) | |
download | ice-0275da85d4593a8db0600a160d93dd9626d5dbbc.tar.bz2 ice-0275da85d4593a8db0600a160d93dd9626d5dbbc.tar.xz ice-0275da85d4593a8db0600a160d93dd9626d5dbbc.zip |
Improved excpetion info for NoObjectFactoryException. When sliced to
Object, the original most derived type ID is now reported.
Diffstat (limited to 'java/src/IceInternal/BasicStream.java')
-rw-r--r-- | java/src/IceInternal/BasicStream.java | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/java/src/IceInternal/BasicStream.java b/java/src/IceInternal/BasicStream.java index 00154f06028..23678368f75 100644 --- a/java/src/IceInternal/BasicStream.java +++ b/java/src/IceInternal/BasicStream.java @@ -1267,17 +1267,19 @@ public class BasicStream return; } + String mostDerivedId = readTypeId(); + String id = new String(mostDerivedId); + while(true) { - String id = readTypeId(); - // // If we slice all the way down to Ice::Object, we throw // because Ice::Object is abstract. // if(id.equals(Ice.ObjectImpl.ice_staticId())) { - throw new Ice.NoObjectFactoryException("class sliced to Ice.Object, which is abstract", id); + throw new Ice.NoObjectFactoryException("class sliced to Ice.Object, which is abstract", + mostDerivedId); } // @@ -1334,6 +1336,7 @@ public class BasicStream TraceUtil.traceSlicing("class", id, _slicingCat, _instance.logger()); } skipSlice(); // Slice off this derived part -- we don't understand it. + id = readTypeId(); // Read next id for next iteration. continue; } else |