From 191724a9eb132d232f8ab081658aa40ea1eb2778 Mon Sep 17 00:00:00 2001
Subject: [PATCH] OWB-1309 fix missing NoSuchMethodException

---
 pom.xml                                       |  2 +-
 .../web/tomcat7/TomcatInstanceManager.java    | 53 ++++++++++++++-----
 2 files changed, 40 insertions(+), 15 deletions(-)

diff --git a/pom.xml b/pom.xml
index ba45ccc..316f27e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,7 +78,7 @@
         <geronimo_interceptor.version>1.0</geronimo_interceptor.version>
         <geronimo_validation.version>1.1</geronimo_validation.version>
         <tomcat6.version>6.0.35</tomcat6.version>
-        <tomcat7.version>7.0.54</tomcat7.version>
+        <tomcat7.version>7.0.99</tomcat7.version>
         <openejb.version>3.1.4</openejb.version>
         <myfaces.version>1.2.9</myfaces.version>
         <myfaces2.version>2.2.3</myfaces2.version>
diff --git a/webbeans-tomcat7/src/main/java/org/apache/webbeans/web/tomcat7/TomcatInstanceManager.java b/webbeans-tomcat7/src/main/java/org/apache/webbeans/web/tomcat7/TomcatInstanceManager.java
index eb127e6..d271d4e 100644
--- a/webbeans-tomcat7/src/main/java/org/apache/webbeans/web/tomcat7/TomcatInstanceManager.java
+++ b/webbeans-tomcat7/src/main/java/org/apache/webbeans/web/tomcat7/TomcatInstanceManager.java
@@ -27,6 +27,7 @@ import javax.naming.NamingException;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.InstanceManager;
+import org.apache.webbeans.util.ExceptionUtil;
 
 public class TomcatInstanceManager implements InstanceManager
 {
@@ -70,24 +71,40 @@ public class TomcatInstanceManager implements InstanceManager
     public Object newInstance(Class<?> aClass) throws IllegalAccessException, InvocationTargetException, NamingException, InstantiationException
     {
         // Creates a defaut instance
-        Object object = this.processor.newInstance(aClass);
+        try
+        {
+            Object object = this.processor.newInstance(aClass);
 
-        // Inject dependencies
-        inject(object);
+            // Inject dependencies
+            inject(object);
 
-        return object;
+            return object;
+        }
+        catch (Exception e)
+        {
+            // sadly this is required as the Tomcat InstanceManager introduced an additional Exception in their signature :(
+            throw ExceptionUtil.throwAsRuntimeException(e);
+        }
     }
 
     @Override
     public Object newInstance(String str) throws IllegalAccessException, InvocationTargetException, NamingException, InstantiationException, ClassNotFoundException
     {
-        // Creates a defaut instance
-        Object object = this.processor.newInstance(str);
+        try
+        {
+            // Creates a defaut instance
+            Object object = this.processor.newInstance(str);
 
-        // Inject dependencies
-        inject(object);
+            // Inject dependencies
+            inject(object);
 
-        return object;
+            return object;
+        }
+        catch (Exception e)
+        {
+            // sadly this is required as the Tomcat InstanceManager introduced an additional Exception in their signature :(
+            throw ExceptionUtil.throwAsRuntimeException(e);
+        }
     }
 
     @Override
@@ -100,13 +117,21 @@ public class TomcatInstanceManager implements InstanceManager
     @Override
     public Object newInstance(String str, ClassLoader cl) throws IllegalAccessException, InvocationTargetException, NamingException, InstantiationException, ClassNotFoundException
     {
-        // Creates a defaut instance
-        Object object = this.processor.newInstance(str, cl);
+        try
+        {
+            // Creates a defaut instance
+            Object object = this.processor.newInstance(str, cl);
 
-        // Inject dependencies
-        inject(object);
+            // Inject dependencies
+            inject(object);
 
-        return object;
+            return object;
+        }
+        catch (Exception e)
+        {
+            // sadly this is required as the Tomcat InstanceManager introduced an additional Exception in their signature :(
+            throw ExceptionUtil.throwAsRuntimeException(e);
+        }
     }
 
     private void inject(Object object)
-- 
2.23.0

