[webbeans-commits] Webbeans SVN: r1268 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event and 9 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Wed Jan 28 19:29:22 EST 2009


Author: pete.muir at jboss.org
Date: 2009-01-28 19:29:21 -0500 (Wed, 28 Jan 2009)
New Revision: 1268

Added:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/Exceptions.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/ExceptionHandlingTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/FooException.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/Lorry_Broken.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/Ship.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/ShipProducer_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/FooException.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Lorry.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/LorryProducer_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Ship.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ShipProducer_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/FooException.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/Lorry_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/Van_Broken.java
Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/standard/ManagerBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/ConstructorInjectionPoint.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/FieldInjectionPoint.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/MethodInjectionPoint.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedField.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedConstructor.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedField.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedMethod.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/metadata/BindingTypeModel.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ProducerMethodLifecycleTest.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/SimpleBeanLifecycleTest.java
Log:
WBRI-120

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/standard/ManagerBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/standard/ManagerBean.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/standard/ManagerBean.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -50,4 +50,10 @@
       // No-op
    }
    
+   @Override
+   public boolean isSerializable()
+   {
+      return true;
+   }
+   
 }
\ No newline at end of file

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -18,7 +18,6 @@
 package org.jboss.webbeans.event;
 
 import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -33,7 +32,6 @@
 import javax.event.Observes;
 import javax.inject.DefinitionException;
 import javax.inject.Disposes;
-import javax.inject.ExecutionException;
 import javax.inject.Initializer;
 import javax.inject.Produces;
 import javax.inject.manager.Bean;
@@ -213,24 +211,9 @@
          }
          else
          {
-            observerMethod.invokeWithSpecialValue(instance, Observes.class, event, manager, null);
+            observerMethod.invokeWithSpecialValue(instance, Observes.class, event, manager, null, ObserverException.class);
          }
       }
-      catch (ExecutionException e)
-      {
-         if ((e.getCause() != null) && (e.getCause() instanceof InvocationTargetException))
-         {
-            InvocationTargetException wrappedException = (InvocationTargetException) e.getCause();
-            if ((wrappedException.getCause() != null) && (RuntimeException.class.isAssignableFrom(wrappedException.getCause().getClass())))
-            {
-               throw (RuntimeException) wrappedException.getCause();
-            }
-            else
-            {
-               throw new ObserverException(wrappedException.getCause().getMessage(), wrappedException.getCause());
-            }
-         }
-      }
       finally
       {
          if (Dependent.class.equals(observerBean.getScopeType()))

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/ConstructorInjectionPoint.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/ConstructorInjectionPoint.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/ConstructorInjectionPoint.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -1,7 +1,10 @@
 package org.jboss.webbeans.injection;
 
+import static org.jboss.webbeans.injection.Exceptions.rethrowException;
+
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.util.AbstractList;
 import java.util.Iterator;
 import java.util.List;
@@ -78,7 +81,27 @@
    
    public T newInstance(ManagerImpl manager, CreationalContext<?> creationalContext)
    {
-      return delegate().newInstance(getParameterValues(getParameters(), null, null, manager, creationalContext));
+      try
+      {
+         return delegate().newInstance(getParameterValues(getParameters(), null, null, manager, creationalContext));
+      }
+      catch (IllegalArgumentException e)
+      {
+         rethrowException(e);
+      }
+      catch (InstantiationException e)
+      {
+         rethrowException(e);
+      }
+      catch (IllegalAccessException e)
+      {
+         rethrowException(e);
+      }
+      catch (InvocationTargetException e)
+      {
+         rethrowException(e);
+      }
+      return null;
    }
    
    @Override

Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/Exceptions.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/Exceptions.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/Exceptions.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,82 @@
+package org.jboss.webbeans.injection;
+
+import java.lang.reflect.InvocationTargetException;
+
+import javax.inject.CreationException;
+import javax.inject.ExecutionException;
+
+class Exceptions
+{
+   
+   private static void rethrowException(Throwable t, Class<? extends RuntimeException> exceptionToThrow)
+   {
+      if (t instanceof RuntimeException)
+      {
+         throw (RuntimeException) t;
+      }
+      else
+      {
+         RuntimeException e;
+         try
+         {
+            e = exceptionToThrow.newInstance();
+         }
+         catch (InstantiationException e1)
+         {
+            throw new ExecutionException(e1);
+         }
+         catch (IllegalAccessException e1)
+         {
+            throw new ExecutionException(e1);
+         }
+         e.initCause(t);
+         throw e;
+      }
+   }
+   
+   private static void rethrowException(Throwable t)
+   {
+      rethrowException(t, CreationException.class);
+   }
+   
+   public static void rethrowException(IllegalArgumentException e)
+   {
+       rethrowException(e.getCause());
+   }
+   
+   public static void rethrowException(IllegalArgumentException e, Class<? extends RuntimeException> exceptionToThrow)
+   {
+       rethrowException(e.getCause(), exceptionToThrow);
+   }
+   
+   public static void rethrowException(InstantiationException e, Class<? extends RuntimeException> exceptionToThrow)
+   {
+       rethrowException(e.getCause(), exceptionToThrow);
+   }
+   
+   public static void rethrowException(InstantiationException e)
+   {
+       rethrowException(e.getCause());
+   }
+   
+   public static void rethrowException(IllegalAccessException e)
+   {
+       rethrowException(e.getCause());
+   }
+   
+   public static void rethrowException(IllegalAccessException e, Class<? extends RuntimeException> exceptionToThrow)
+   {
+       rethrowException(e.getCause(), exceptionToThrow);
+   }
+   
+   public static void rethrowException(InvocationTargetException e, Class<? extends RuntimeException> exceptionToThrow)
+   {
+       rethrowException(e.getCause(), exceptionToThrow);
+   }
+   
+   public static void rethrowException(InvocationTargetException e)
+   {
+       rethrowException(e.getCause());
+   }
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/Exceptions.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/FieldInjectionPoint.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/FieldInjectionPoint.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/FieldInjectionPoint.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -1,5 +1,7 @@
 package org.jboss.webbeans.injection;
 
+import static org.jboss.webbeans.injection.Exceptions.rethrowException;
+
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
 import java.util.Set;
@@ -53,7 +55,34 @@
 
    public void inject(Object declaringInstance, ManagerImpl manager, CreationalContext<?> creationalContext)
    {
-      delegate().inject(declaringInstance, manager.getInstanceToInject(this, creationalContext));
+      try
+      {
+         delegate().set(declaringInstance, manager.getInstanceToInject(this, creationalContext));
+      }
+      catch (IllegalArgumentException e)
+      {
+         rethrowException(e);
+      }
+      catch (IllegalAccessException e)
+      {
+         rethrowException(e);
+      }
    }
+   
+   public void inject(Object declaringInstance, Object value)
+   {
+      try
+      {
+         delegate().set(declaringInstance, value);
+      }
+      catch (IllegalArgumentException e)
+      {
+         rethrowException(e);
+      }
+      catch (IllegalAccessException e)
+      {
+         rethrowException(e);
+      }
+   }
 
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/MethodInjectionPoint.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/MethodInjectionPoint.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/MethodInjectionPoint.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -1,6 +1,9 @@
 package org.jboss.webbeans.injection;
 
+import static org.jboss.webbeans.injection.Exceptions.rethrowException;
+
 import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.AbstractList;
 import java.util.Iterator;
@@ -78,12 +81,44 @@
    
    public T invoke(Object declaringInstance, ManagerImpl manager, CreationalContext<?> creationalContext)
    {
-      return delegate().invoke(declaringInstance, getParameterValues(getParameters(), null, null, manager, creationalContext));
+      try
+      {
+         return delegate().invoke(declaringInstance, getParameterValues(getParameters(), null, null, manager, creationalContext));
+      }
+      catch (IllegalArgumentException e)
+      {
+         rethrowException(e);
+      }
+      catch (IllegalAccessException e)
+      {
+         rethrowException(e);
+      }
+      catch (InvocationTargetException e)
+      {
+         rethrowException(e);
+      }
+      return null;
    }
    
-   public T invokeWithSpecialValue(Object declaringInstance, Class<? extends Annotation> annotatedParameter, Object parameter, ManagerImpl manager, CreationalContext<?> creationalContext)
+   public T invokeWithSpecialValue(Object declaringInstance, Class<? extends Annotation> annotatedParameter, Object parameter, ManagerImpl manager, CreationalContext<?> creationalContext, Class<? extends RuntimeException> exceptionTypeToThrow)
    {
-      return delegate().invoke(declaringInstance, getParameterValues(getParameters(), annotatedParameter, parameter, manager, creationalContext));
+      try
+      {
+         return delegate().invoke(declaringInstance, getParameterValues(getParameters(), annotatedParameter, parameter, manager, creationalContext));
+      }
+      catch (IllegalArgumentException e)
+      {
+         rethrowException(e, exceptionTypeToThrow);
+      }
+      catch (IllegalAccessException e)
+      {
+         rethrowException(e, exceptionTypeToThrow);
+      }
+      catch (InvocationTargetException e)
+      {
+         rethrowException(e, exceptionTypeToThrow);
+      }
+      return null;
    }
    
    @Override
@@ -110,7 +145,22 @@
    
    public void inject(Object declaringInstance, Object value)
    {
-      delegate().invoke(declaringInstance, value);
+      try
+      {
+         delegate().invoke(declaringInstance, value);
+      }
+      catch (IllegalArgumentException e)
+      {
+         rethrowException(e);
+      }
+      catch (IllegalAccessException e)
+      {
+         rethrowException(e);
+      }
+      catch (InvocationTargetException e)
+      {
+         rethrowException(e);
+      }
    }
 
    /**

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -19,6 +19,7 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.util.List;
 
 /**
@@ -53,7 +54,7 @@
     * 
     * @return The created instance
     */
-   public T newInstance(Object... parameters);
+   public T newInstance(Object... parameters) throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException;
 
    /**
     * Gets the declaring class of the annotation

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedField.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedField.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedField.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -45,19 +45,19 @@
     * @param declaringInstance The instance to inject into
     * @param value The value to inject
     */
-   public void inject(Object declaringInstance, Object value);
+   public void set(Object declaringInstance, Object value) throws IllegalArgumentException, IllegalAccessException;
    
    /**
     * Injects into the field using the value provided by the manager
     * 
-    * Unlike {@link #inject(Object, Manager)} the field injected into is 
+    * Unlike {@link #set(Object, Manager)} the field injected into is 
     * discovered from the declaring instance. This is slower, but safe to use
     * with proxies.
     * 
     * @param declaringInstance The instance to inject into
     * @param value The value to inject
     */
-   public void injectIntoInstance(Object declaringInstance, Object value);
+   public void setOnInstance(Object declaringInstance, Object value) throws IllegalArgumentException, SecurityException, IllegalAccessException, NoSuchFieldException;
    
    public T get(Object instance);
    

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -18,6 +18,7 @@
 package org.jboss.webbeans.introspector;
 
 import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.HashSet;
@@ -74,7 +75,7 @@
     * @param parameters The method parameters
     * @return A reference to the instance
     */
-   public T invoke(Object instance, Object... parameters);
+   public T invoke(Object instance, Object... parameters) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException;
    
    /**
     * Invokes the method on the class of the passed instance, not the declaring 
@@ -84,7 +85,7 @@
     * @param manager The Web Beans manager
     * @return A reference to the instance
     */
-   public T invokeOnInstance(Object instance, Object... parameters);
+   public T invokeOnInstance(Object instance, Object... parameters) throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException;
 
    /**
     * Gets the declaring class

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedConstructor.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedConstructor.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedConstructor.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -18,6 +18,7 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.util.List;
 import java.util.Set;
 
@@ -42,7 +43,7 @@
       return delegate().getParameters();
    }
 
-   public T newInstance(Object... parameters)
+   public T newInstance(Object... parameters) throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException
    {
       return delegate().newInstance(parameters);
    }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedField.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedField.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedField.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -46,14 +46,14 @@
       return delegate().getPropertyName();
    }
 
-   public void inject(Object declaringInstance, Object value)
+   public void set(Object declaringInstance, Object value) throws IllegalArgumentException, IllegalAccessException
    {
-      delegate().inject(declaringInstance, value);
+      delegate().set(declaringInstance, value);
    }
 
-   public void injectIntoInstance(Object declaringInstance, Object value)
+   public void setOnInstance(Object declaringInstance, Object value) throws IllegalArgumentException, SecurityException, IllegalAccessException, NoSuchFieldException
    {
-      delegate().injectIntoInstance(declaringInstance, value);
+      delegate().setOnInstance(declaringInstance, value);
    }
 
    public boolean isTransient()

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedMethod.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedMethod.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedMethod.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -17,12 +17,11 @@
 package org.jboss.webbeans.introspector;
 
 import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.List;
 import java.util.Set;
 
-import org.jboss.webbeans.ManagerImpl;
-
 public abstract class ForwardingAnnotatedMethod<T> extends ForwardingAnnotatedMember<T, Method> implements AnnotatedMethod<T>
 {
    
@@ -59,17 +58,12 @@
       return delegate().getPropertyName();
    }
 
-   public T invoke(Object instance, ManagerImpl manager)
+   public T invoke(Object instance, Object... parameters) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException
    {
-      return delegate().invoke(instance, manager);
-   }
-
-   public T invoke(Object instance, Object... parameters)
-   {
       return delegate().invoke(instance, parameters);
    }
 
-   public T invokeOnInstance(Object instance, Object... parameters)
+   public T invokeOnInstance(Object instance, Object... parameters) throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException
    {
       return delegate().invokeOnInstance(instance, parameters);
    }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -26,8 +26,6 @@
 import java.util.List;
 import java.util.Set;
 
-import javax.inject.ExecutionException;
-
 import org.jboss.webbeans.ManagerImpl;
 import org.jboss.webbeans.introspector.AnnotatedConstructor;
 import org.jboss.webbeans.introspector.AnnotatedParameter;
@@ -189,31 +187,16 @@
     * 
     * @param manager The Web Beans manager
     * @return An instance
+    * @throws InvocationTargetException 
+    * @throws IllegalAccessException 
+    * @throws InstantiationException 
+    * @throws IllegalArgumentException 
     * 
     * @see org.jboss.webbeans.introspector.AnnotatedConstructor#newInstance(ManagerImpl)
     */
-   public T newInstance(Object... parameters)
+   public T newInstance(Object... parameters) throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException
    {
-      try
-      {
-         return getDelegate().newInstance(parameters);
-      }
-      catch (IllegalArgumentException e)
-      {
-         throw new ExecutionException("Error instantiating " + toString, e);
-      }
-      catch (InstantiationException e)
-      {
-         throw new ExecutionException("Error instantiating " + toString, e);
-      }
-      catch (IllegalAccessException e)
-      {
-         throw new ExecutionException("Error instantiating " + toString, e);
-      }
-      catch (InvocationTargetException e)
-      {
-         throw new ExecutionException("Error instantiating " + toString, e);
-      }
+      return getDelegate().newInstance(parameters);
    }
 
    /**

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -113,14 +113,14 @@
       return actualTypeArguments;
    }
    
-   public void inject(Object instance, Object value)
+   public void set(Object instance, Object value) throws IllegalArgumentException, IllegalAccessException
    {
-      Reflections.setAndWrap(getDelegate(), instance, value);
+      field.set(instance, value);
    }
    
-   public void injectIntoInstance(Object instance, Object value)
+   public void setOnInstance(Object instance, Object value) throws IllegalArgumentException, SecurityException, IllegalAccessException, NoSuchFieldException
    {
-      Reflections.setAndWrap(getName(), instance, value);
+      instance.getClass().getField(getName()).set(instance, value);
    }
 
    @SuppressWarnings("unchecked")

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -18,6 +18,7 @@
 package org.jboss.webbeans.introspector.jlr;
 
 import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
@@ -84,6 +85,7 @@
    {
       super(AnnotationStore.of(method), method);
       this.method = method;
+      this.method.setAccessible(true);
       this.declaringClass = declaringClass;
       if (method.getGenericReturnType() instanceof ParameterizedType)
       {
@@ -236,17 +238,17 @@
       return getDelegate().hashCode();
    }
    
-   public T invokeOnInstance(Object instance, Object...parameters)
+   public T invokeOnInstance(Object instance, Object...parameters) throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException
    {
       @SuppressWarnings("unchecked")
-      T result = (T) Reflections.invokeAndWrap(getName(), getParameterTypesAsArray(), instance, parameters);
+      T result = (T) instance.getClass().getMethod(getName(), getParameterTypesAsArray()).invoke(instance, parameters);
       return result;
    }
 
-   public T invoke(Object instance, Object... parameters)
+   public T invoke(Object instance, Object... parameters) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException
    {
       @SuppressWarnings("unchecked")
-      T result = (T) Reflections.invokeAndWrap(getDelegate(), instance, parameters);
+      T result = (T) method.invoke(instance, parameters);
       return result;
    }
 

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/metadata/BindingTypeModel.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/metadata/BindingTypeModel.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/metadata/BindingTypeModel.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -18,11 +18,13 @@
 package org.jboss.webbeans.metadata;
 
 import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
 import java.util.Set;
 
 import javax.annotation.NonBinding;
 import javax.inject.BindingType;
 import javax.inject.DefinitionException;
+import javax.inject.ExecutionException;
 
 import org.jboss.webbeans.introspector.AnnotatedMethod;
 import org.jboss.webbeans.util.Reflections;
@@ -130,12 +132,28 @@
          {
             if (!nonBindingTypes.contains(annotatedMethod))
             {
-               Object thisValue = annotatedMethod.invoke(instance);
-               Object thatValue = annotatedMethod.invoke(other);
-               if (!thisValue.equals(thatValue))
+               try
                {
-                  return false;
+                  Object thisValue = annotatedMethod.invoke(instance);
+                  Object thatValue = annotatedMethod.invoke(other);
+                  if (!thisValue.equals(thatValue))
+                  {
+                     return false;
+                  }
                }
+               catch (IllegalArgumentException e)
+               {
+                  throw new ExecutionException(e);
+               }
+               catch (IllegalAccessException e)
+               {
+                  throw new ExecutionException(e);
+               }
+               catch (InvocationTargetException e)
+               {
+                  throw new ExecutionException(e);
+               }
+              
             }
          }
          return true;

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -436,97 +436,6 @@
    }
 
    /**
-    * Invokes a method and wraps exceptions
-    * 
-    * @param methodName The method name to find on the instance and invoke
-    * @param parameterTypes The method name to find on the instance and invoke
-    * @param instance The instance to invoke on
-    * @param parameterValues The parameters values
-    * @return The return value
-    */
-   public static Object invokeAndWrap(String methodName, Class<?>[] parameterTypes, Object instance, Object[] parameterValues)
-   {
-      try
-      {
-         return instance.getClass().getMethod(methodName, parameterTypes).invoke(instance, parameterValues);
-      }
-      catch (IllegalArgumentException e)
-      {
-         throw new ExecutionException("Error invoking method " + methodName + " on " + instance.getClass(), e);
-      }
-      catch (IllegalAccessException e)
-      {
-         throw new ExecutionException("Error invoking method " + methodName + " on " + instance.getClass(), e);
-      }
-      catch (InvocationTargetException e)
-      {
-         throw new ExecutionException("Error invoking method " + methodName + " on " + instance.getClass(), e);
-      }
-      catch (SecurityException e)
-      {
-         throw new ExecutionException("Error invoking method " + methodName + " on " + instance.getClass(), e);
-      }
-      catch (NoSuchMethodException e)
-      {
-         throw new ExecutionException("Error invoking method " + methodName + " on " + instance.getClass(), e);
-      }
-   }
-
-   /**
-    * Sets value of a field and wraps exceptions
-    * 
-    * @param field The field to set on
-    * @param target The instance to set on
-    * @param value The value to set
-    */
-   public static void setAndWrap(Field field, Object target, Object value)
-   {
-      try
-      {
-         field.set(target, value);
-      }
-      catch (IllegalArgumentException e)
-      {
-         throw new ExecutionException("Error setting field " + field.getName() + " on " + field.getDeclaringClass(), e);
-      }
-      catch (IllegalAccessException e)
-      {
-         throw new ExecutionException("Error setting field " + field.getName() + " on " + field.getDeclaringClass(), e);
-      }
-   }
-
-   /**
-    * Sets value of a field and wraps exceptions
-    * 
-    * @param field The field to set on
-    * @param target The instance to set on
-    * @param value The value to set
-    */
-   public static void setAndWrap(String fieldName, Object target, Object value)
-   {
-      try
-      {
-         target.getClass().getField(fieldName).set(target, value);
-      }
-      catch (IllegalArgumentException e)
-      {
-         throw new ExecutionException("Error setting field " + fieldName + " on " + target.getClass(), e);
-      }
-      catch (IllegalAccessException e)
-      {
-         throw new ExecutionException("Error setting field " + fieldName + " on " + target.getClass(), e);
-      }
-      catch (SecurityException e)
-      {
-         throw new ExecutionException("Error setting field " + fieldName + " on " + target.getClass(), e);
-      }
-      catch (NoSuchFieldException e)
-      {
-         throw new ExecutionException("Error setting field " + fieldName + " on " + target.getClass(), e);
-      }
-   }
-
-   /**
     * Gets value of a field and wraps exceptions
     * 
     * @param field The field to set on

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/ExceptionHandlingTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/ExceptionHandlingTest.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/ExceptionHandlingTest.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,64 @@
+package org.jboss.webbeans.test.unit.implementation.exceptions;
+
+import javax.inject.CreationException;
+
+import org.jboss.webbeans.test.unit.AbstractTest;
+import org.testng.annotations.Test;
+
+public class ExceptionHandlingTest extends AbstractTest
+{
+
+   @Test(expectedExceptions=FooException.class)
+   public void testCreationExceptionWrapsRealExceptionForSimpleBean() throws Exception
+   {
+      deployBeans(Lorry_Broken.class);
+      new RunInDependentContext()
+      {
+         
+         @Override
+         protected void execute() throws Exception
+         {
+            try
+            {
+               manager.getInstanceByType(Lorry_Broken.class);
+            }
+            catch (Exception e) 
+            {
+               if (e instanceof CreationException)
+               {
+                  throw (Exception) e.getCause();
+               }
+            }
+         }
+         
+      }.run();
+   }
+   
+
+   @Test(expectedExceptions=FooException.class)
+   public void testCreationExceptionWrapsRealExceptionForProducerBean() throws Exception
+   {
+      deployBeans(ShipProducer_Broken.class);
+      new RunInDependentContext()
+      {
+         
+         @Override
+         protected void execute() throws Exception
+         {
+            try
+            {
+               manager.getInstanceByType(Ship.class);
+            }
+            catch (Exception e) 
+            {
+               if (e instanceof CreationException)
+               {
+                  throw (Exception) e.getCause();
+               }
+            }
+         }
+         
+      }.run();
+   }
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/ExceptionHandlingTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/FooException.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/FooException.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/FooException.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.test.unit.implementation.exceptions;
+
+public class FooException extends Exception
+{
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/FooException.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/Lorry_Broken.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/Lorry_Broken.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/Lorry_Broken.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.test.unit.implementation.exceptions;
+
+class Lorry_Broken
+{
+   
+   public Lorry_Broken() throws Exception
+   {
+      throw new FooException();
+   }
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/Lorry_Broken.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/Ship.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/Ship.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/Ship.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.test.unit.implementation.exceptions;
+
+class Ship
+{
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/Ship.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/ShipProducer_Broken.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/ShipProducer_Broken.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/ShipProducer_Broken.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,14 @@
+package org.jboss.webbeans.test.unit.implementation.exceptions;
+
+import javax.inject.Produces;
+
+public class ShipProducer_Broken
+{
+   
+   @Produces
+   public Ship produceShip() throws FooException
+   {
+      throw new FooException();
+   }
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/implementation/exceptions/ShipProducer_Broken.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/FooException.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/FooException.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/FooException.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+class FooException extends RuntimeException
+{
+   
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/FooException.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Lorry.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Lorry.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Lorry.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+class Lorry
+{
+   
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Lorry.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/LorryProducer_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/LorryProducer_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/LorryProducer_Broken.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,14 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+import javax.inject.Produces;
+
+class LorryProducer_Broken
+{
+   
+   @Produces
+   public Lorry produceLorry() throws Exception
+   {
+      throw new Exception();
+   }
+   
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/LorryProducer_Broken.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ProducerMethodLifecycleTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ProducerMethodLifecycleTest.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ProducerMethodLifecycleTest.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -2,6 +2,7 @@
 
 import java.lang.reflect.Method;
 
+import javax.inject.CreationException;
 import javax.inject.IllegalProductException;
 import javax.inject.manager.Bean;
 
@@ -73,4 +74,34 @@
       createProducerMethodBean(method, spiderProducer).create(new MockCreationalContext<Object>());
    }
    
+   @Test(expectedExceptions=CreationException.class)
+   public void testCreationExceptionWrapsCheckedExceptionThrownFromCreate() throws Exception
+   {
+      deployBeans(LorryProducer_Broken.class);
+      new RunInDependentContext()
+      {
+         
+         protected void execute() throws Exception 
+         {
+            manager.getInstanceByType(Lorry.class);
+         }
+         
+      }.run();
+   }
+   
+   @Test(expectedExceptions=FooException.class)
+   public void testUncheckedExceptionThrownFromCreateNotWrapped() throws Exception
+   {
+      deployBeans(ShipProducer_Broken.class);
+      new RunInDependentContext()
+      {
+         
+         protected void execute() throws Exception 
+         {
+            manager.getInstanceByType(Ship.class);
+         }
+         
+      }.run();
+   }
+   
 }

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Ship.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Ship.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Ship.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+class Ship
+{
+   
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Ship.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ShipProducer_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ShipProducer_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ShipProducer_Broken.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,14 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+import javax.inject.Produces;
+
+class ShipProducer_Broken
+{
+   
+   @Produces
+   public Ship produceShip() throws FooException
+   {
+      throw new FooException();
+   }
+   
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ShipProducer_Broken.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/FooException.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/FooException.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/FooException.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.simple;
+
+class FooException extends RuntimeException
+{
+   
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/FooException.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/Lorry_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/Lorry_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/Lorry_Broken.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.tck.unit.implementation.simple;
+
+class Lorry_Broken
+{
+   
+   public Lorry_Broken() throws Exception
+   {
+      throw new Exception();
+   }
+   
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/Lorry_Broken.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/SimpleBeanLifecycleTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/SimpleBeanLifecycleTest.java	2009-01-28 23:42:07 UTC (rev 1267)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/SimpleBeanLifecycleTest.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -3,6 +3,7 @@
 import java.lang.annotation.Annotation;
 import java.util.List;
 
+import javax.inject.CreationException;
 import javax.inject.manager.Bean;
 
 import org.jboss.webbeans.tck.AbstractTest;
@@ -190,5 +191,35 @@
       TunaFarm tunaFarm = tunaFarmBean.create(new MockCreationalContext<TunaFarm>());
       assert tunaFarm.notInjectedTuna != manager.getInstance(tunaBean);
    }
+   
+   @Test(expectedExceptions=CreationException.class)
+   public void testCreationExceptionWrapsCheckedExceptionThrownFromCreate() throws Exception
+   {
+      deployBeans(Lorry_Broken.class);
+      new RunInDependentContext()
+      {
+         
+         protected void execute() throws Exception 
+         {
+            manager.getInstanceByType(Lorry_Broken.class);
+         }
+         
+      }.run();
+   }
+   
+   @Test(expectedExceptions=FooException.class)
+   public void testUncheckedExceptionThrownFromCreateNotWrapped() throws Exception
+   {
+      deployBeans(Van_Broken.class);
+      new RunInDependentContext()
+      {
+         
+         protected void execute() throws Exception 
+         {
+            manager.getInstanceByType(Van_Broken.class);
+         }
+         
+      }.run();
+   }
 	
 }

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/Van_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/Van_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/Van_Broken.java	2009-01-29 00:29:21 UTC (rev 1268)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.tck.unit.implementation.simple;
+
+class Van_Broken
+{
+   
+   public Van_Broken() throws Exception
+   {
+      throw new FooException();
+   }
+   
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/simple/Van_Broken.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain




More information about the weld-commits mailing list