You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2014/12/30 14:24:11 UTC

karaf git commit: [KARAF-3346] Fix JMX exception at shutdown

Repository: karaf
Updated Branches:
  refs/heads/karaf-2.x b43d91444 -> dbb390af9


[KARAF-3346] Fix JMX exception at shutdown


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/dbb390af
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/dbb390af
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/dbb390af

Branch: refs/heads/karaf-2.x
Commit: dbb390af9fe6929e552698556b381edd68b17147
Parents: b43d914
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Tue Dec 30 14:23:36 2014 +0100
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Tue Dec 30 14:23:36 2014 +0100

----------------------------------------------------------------------
 .../management/boot/KarafMBeanServerBuilder.java      | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/dbb390af/management/boot/src/main/java/org/apache/karaf/management/boot/KarafMBeanServerBuilder.java
----------------------------------------------------------------------
diff --git a/management/boot/src/main/java/org/apache/karaf/management/boot/KarafMBeanServerBuilder.java b/management/boot/src/main/java/org/apache/karaf/management/boot/KarafMBeanServerBuilder.java
index ad84235..9c5e014 100644
--- a/management/boot/src/main/java/org/apache/karaf/management/boot/KarafMBeanServerBuilder.java
+++ b/management/boot/src/main/java/org/apache/karaf/management/boot/KarafMBeanServerBuilder.java
@@ -62,6 +62,20 @@ public class KarafMBeanServerBuilder extends MBeanServerBuilder {
                 }
                 guard.invoke(proxy, method, args);
             }
+            if (method.getName().equals("equals")
+                    && method.getParameterTypes().length == 1
+                    && method.getParameterTypes()[0] == Object.class) {
+                Object target = args[0];
+                if (target != null && Proxy.isProxyClass(target.getClass())) {
+                    InvocationHandler handler = Proxy.getInvocationHandler(target);
+                    if (handler instanceof MBeanInvocationHandler) {
+                        args[0] = ((MBeanInvocationHandler) handler).wrapped;
+                    }
+                }
+            } else if (method.getName().equals("finalize") && method.getParameterTypes().length == 0) {
+                // special case finalize, don't route through to delegate because that will get its own call
+                return null;
+            }
             try {
                 return method.invoke(wrapped, args);
             } catch (InvocationTargetException ite) {