summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/InvocationObserverI.java
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2013-09-09 19:12:28 +0200
committerBenoit Foucher <benoit@zeroc.com>2013-09-09 19:12:28 +0200
commit8a0d1c7e34d8bd18bd85666cce94403a5158975c (patch)
tree36050a818282c0a92ee88a6ef28354e186c5aebe /java/src/IceInternal/InvocationObserverI.java
parentTest scripts improvements (diff)
downloadice-8a0d1c7e34d8bd18bd85666cce94403a5158975c.tar.bz2
ice-8a0d1c7e34d8bd18bd85666cce94403a5158975c.tar.xz
ice-8a0d1c7e34d8bd18bd85666cce94403a5158975c.zip
Fixed ICE-5196: allow setting an observer with IceMX enabled
Diffstat (limited to 'java/src/IceInternal/InvocationObserverI.java')
-rw-r--r--java/src/IceInternal/InvocationObserverI.java19
1 files changed, 17 insertions, 2 deletions
diff --git a/java/src/IceInternal/InvocationObserverI.java b/java/src/IceInternal/InvocationObserverI.java
index c36b8a581c3..dd98db9df23 100644
--- a/java/src/IceInternal/InvocationObserverI.java
+++ b/java/src/IceInternal/InvocationObserverI.java
@@ -11,7 +11,8 @@ package IceInternal;
import IceMX.*;
-public class InvocationObserverI extends IceMX.Observer<IceMX.InvocationMetrics>
+public class InvocationObserverI
+ extends IceMX.ObserverWithDelegate<IceMX.InvocationMetrics, Ice.Instrumentation.InvocationObserver>
implements Ice.Instrumentation.InvocationObserver
{
static public final class RemoteInvocationHelper extends MetricsHelper<RemoteMetrics>
@@ -117,21 +118,35 @@ public class InvocationObserverI extends IceMX.Observer<IceMX.InvocationMetrics>
userException()
{
forEach(_userException);
+ if(_delegate != null)
+ {
+ _delegate.userException();
+ }
}
public void
retried()
{
forEach(_incrementRetry);
+ if(_delegate != null)
+ {
+ _delegate.retried();
+ }
}
public Ice.Instrumentation.RemoteObserver
getRemoteObserver(Ice.ConnectionInfo con, Ice.Endpoint edpt, int requestId, int sz)
{
+ Ice.Instrumentation.RemoteObserver delegate = null;
+ if(_delegate != null)
+ {
+ delegate = _delegate.getRemoteObserver(con, edpt, requestId, sz);
+ }
return (Ice.Instrumentation.RemoteObserver)getObserver("Remote",
new RemoteInvocationHelper(con, edpt, requestId, sz),
RemoteMetrics.class,
- RemoteObserverI.class);
+ RemoteObserverI.class,
+ delegate);
}
final MetricsUpdate<InvocationMetrics> _incrementRetry = new MetricsUpdate<InvocationMetrics>()