Bug 6564: Fix UndeclaredThrowableException from Proxy
[controller.git] / opendaylight / md-sal / sal-dom-config / src / main / java / org / opendaylight / controller / config / yang / config / legacy_entity_ownership_service_provider / LegacyEntityOwnershipServiceProviderModule.java
index e2585ac97b5897c2d494b12aaac2d3545f010e45..5fe9ff99def3f8ab626b9d01e85cf0a8856beefc 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.controller.config.yang.config.legacy_entity_ownership_s
 
 import com.google.common.reflect.AbstractInvocationHandler;
 import com.google.common.reflect.Reflection;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import org.opendaylight.controller.config.api.DependencyResolver;
 import org.opendaylight.controller.config.api.ModuleIdentifier;
@@ -50,7 +51,14 @@ public class LegacyEntityOwnershipServiceProviderModule extends AbstractLegacyEn
                     tracker.close();
                     return null;
                 } else {
-                    return method.invoke(service, args);
+                    try {
+                        return method.invoke(service, args);
+                    } catch (InvocationTargetException e) {
+                        // https://bugs.opendaylight.org/show_bug.cgi?id=6564
+                        // http://stackoverflow.com/a/10719613/421602
+                        // https://amitstechblog.wordpress.com/2011/07/24/java-proxies-and-undeclaredthrowableexception/
+                        throw e.getCause();
+                    }
                 }
             }
         });