summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/BasicStream.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceInternal/BasicStream.java')
-rw-r--r--java/src/IceInternal/BasicStream.java37
1 files changed, 27 insertions, 10 deletions
diff --git a/java/src/IceInternal/BasicStream.java b/java/src/IceInternal/BasicStream.java
index 3acac5097bf..e746bebc71a 100644
--- a/java/src/IceInternal/BasicStream.java
+++ b/java/src/IceInternal/BasicStream.java
@@ -35,6 +35,7 @@ public class BasicStream
_traceSlicing = -1;
_marshalFacets = true;
+ _sliceObjects = true;
_messageSizeMax = _instance.messageSizeMax(); // Cached for efficiency.
}
@@ -1164,20 +1165,29 @@ public class BasicStream
if(v == null)
{
- //
- // Performance sensitive, so we use lazy initialization for tracing.
- //
- if(_traceSlicing == -1)
+ if(_sliceObjects)
{
- _traceSlicing = _instance.traceLevels().slicing;
- _slicingCat = _instance.traceLevels().slicingCat;
+ //
+ // Performance sensitive, so we use lazy initialization for tracing.
+ //
+ if(_traceSlicing == -1)
+ {
+ _traceSlicing = _instance.traceLevels().slicing;
+ _slicingCat = _instance.traceLevels().slicingCat;
+ }
+ if(_traceSlicing > 0)
+ {
+ TraceUtil.traceSlicing("class", id, _slicingCat, _instance.logger());
+ }
+ skipSlice(); // Slice off this derived part -- we don't understand it.
+ continue;
}
- if(_traceSlicing > 0)
+ else
{
- TraceUtil.traceSlicing("class", id, _slicingCat, _instance.logger());
+ Ice.NoObjectFactoryException ex = new Ice.NoObjectFactoryException();
+ ex.type = id;
+ throw ex;
}
- skipSlice(); // Slice off this derived part -- we don't understand it.
- continue;
}
Integer i = new Integer(index);
@@ -1319,6 +1329,12 @@ public class BasicStream
_marshalFacets = b;
}
+ public void
+ sliceObjects(boolean b)
+ {
+ _sliceObjects = b;
+ }
+
void
writeInstance(Ice.Object v, Integer index)
{
@@ -1654,6 +1670,7 @@ public class BasicStream
private String _slicingCat;
private boolean _marshalFacets;
+ private boolean _sliceObjects;
private int _messageSizeMax;
}