summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/BasicStream.java
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2005-07-15 01:50:32 +0000
committerMichi Henning <michi@zeroc.com>2005-07-15 01:50:32 +0000
commit0275da85d4593a8db0600a160d93dd9626d5dbbc (patch)
treeac583326d499bc739c2c4c94b6c99d2204018f28 /java/src/IceInternal/BasicStream.java
parentfixed missing int->char conversion (diff)
downloadice-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.java9
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