[weld-commits] Weld SVN: r5477 - in core/trunk: impl/src/main/java/org/jboss/weld/injection and 3 other directories.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Fri Jan 15 08:53:22 EST 2010


Author: pete.muir at jboss.org
Date: 2010-01-15 08:53:21 -0500 (Fri, 15 Jan 2010)
New Revision: 5477

Added:
   core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Cow.java
   core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/CowShed.java
   core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Field.java
   core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/GrassyField.java
Modified:
   core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/injection/ConstructorInjectionPoint.java
   core/trunk/impl/src/main/java/org/jboss/weld/injection/FieldInjectionPoint.java
   core/trunk/impl/src/main/java/org/jboss/weld/injection/MethodInjectionPoint.java
   core/trunk/impl/src/main/java/org/jboss/weld/injection/ParameterInjectionPoint.java
   core/trunk/impl/src/main/java/org/jboss/weld/injection/WeldInjectionPoint.java
   core/trunk/impl/src/main/java/org/jboss/weld/logging/messages/ReflectionMessage.java
   core/trunk/impl/src/main/resources/org/jboss/weld/messages/reflection_en.properties
   core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/InjectionPointTest.java
Log:
Test for FieldInjectionPoint, better exceptions

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java	2010-01-15 13:41:30 UTC (rev 5476)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java	2010-01-15 13:53:21 UTC (rev 5477)
@@ -256,15 +256,22 @@
                   // Without this, the chaining of decorators will fail as the incomplete instance will be resolved
                   ctx.push(instance);
                }
-               InjectionPoint originalInjectionPoint = null;
+               
                if (hasDecorators())
                {
-                  originalInjectionPoint = attachCorrectInjectionPoint();
+                  InjectionPoint originalInjectionPoint = null;
+                  try
+                  {
+                     originalInjectionPoint = attachCorrectInjectionPoint();
+                     instance = applyDecorators(instance, ctx, originalInjectionPoint);
+                     
+                  }
+                  finally
+                  {
+                     Container.instance().services().get(CurrentInjectionPoint.class).pop();
+                     Container.instance().services().get(CurrentInjectionPoint.class).push(originalInjectionPoint);
+                  }
                }
-               if (hasDecorators())
-               {
-                  instance = applyDecorators(instance, ctx, originalInjectionPoint);
-               }
                if (isInterceptionCandidate() && (hasCdiBoundInterceptors() || hasDirectlyDefinedInterceptors()))
                {
                   instance = applyInterceptors(instance, ctx);

Modified: core/trunk/impl/src/main/java/org/jboss/weld/injection/ConstructorInjectionPoint.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/injection/ConstructorInjectionPoint.java	2010-01-15 13:41:30 UTC (rev 5476)
+++ core/trunk/impl/src/main/java/org/jboss/weld/injection/ConstructorInjectionPoint.java	2010-01-15 13:53:21 UTC (rev 5477)
@@ -36,6 +36,7 @@
 import javax.enterprise.inject.spi.Annotated;
 import javax.enterprise.inject.spi.Bean;
 
+import org.jboss.weld.exceptions.ForbiddenStateException;
 import org.jboss.weld.exceptions.InvalidObjectException;
 import org.jboss.weld.exceptions.InvalidOperationException;
 import org.jboss.weld.introspector.ConstructorSignature;
@@ -43,6 +44,7 @@
 import org.jboss.weld.introspector.WeldClass;
 import org.jboss.weld.introspector.WeldConstructor;
 import org.jboss.weld.introspector.WeldParameter;
+import org.jboss.weld.logging.messages.ReflectionMessage;
 import org.jboss.weld.manager.BeanManagerImpl;
 
 public class ConstructorInjectionPoint<T> extends ForwardingWeldConstructor<T> implements WeldInjectionPoint<T, Constructor<T>>, Serializable
@@ -234,6 +236,12 @@
       
       private Object readResolve()
       {
+         WeldConstructor<T> constructor = getWeldConstructor();
+         Bean<T> bean = getDeclaringBean();
+         if (constructor == null || bean == null)
+         {
+            throw new ForbiddenStateException(ReflectionMessage.UNABLE_TO_GET_CONSTRUCTOR_ON_DESERIALIZATION, getDeclaringBeanId(), getWeldClass(), signature);
+         }
          return ConstructorInjectionPoint.of(getDeclaringBean(), getWeldConstructor());
       }
       

Modified: core/trunk/impl/src/main/java/org/jboss/weld/injection/FieldInjectionPoint.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/injection/FieldInjectionPoint.java	2010-01-15 13:41:30 UTC (rev 5476)
+++ core/trunk/impl/src/main/java/org/jboss/weld/injection/FieldInjectionPoint.java	2010-01-15 13:53:21 UTC (rev 5477)
@@ -36,9 +36,11 @@
 import javax.inject.Inject;
 
 import org.jboss.interceptor.util.InterceptionUtils;
+import org.jboss.weld.exceptions.ForbiddenStateException;
 import org.jboss.weld.exceptions.InvalidObjectException;
 import org.jboss.weld.introspector.ForwardingWeldField;
 import org.jboss.weld.introspector.WeldField;
+import org.jboss.weld.logging.messages.ReflectionMessage;
 import org.jboss.weld.manager.BeanManagerImpl;
 
 public class FieldInjectionPoint<T, X> extends ForwardingWeldField<T, X> implements WeldInjectionPoint<T, Field>, Serializable
@@ -163,6 +165,12 @@
       
       private Object readResolve()
       {
+         WeldField<T, ?> field = getWeldField();
+         Bean<T> bean = getDeclaringBean();
+         if (field == null || bean == null)
+         {
+            throw new ForbiddenStateException(ReflectionMessage.UNABLE_TO_GET_FIELD_ON_DESERIALIZATION, getDeclaringBeanId(), getWeldClass(), fieldName);
+         }
          return FieldInjectionPoint.of(getDeclaringBean(), getWeldField());
       }
       

Modified: core/trunk/impl/src/main/java/org/jboss/weld/injection/MethodInjectionPoint.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/injection/MethodInjectionPoint.java	2010-01-15 13:41:30 UTC (rev 5476)
+++ core/trunk/impl/src/main/java/org/jboss/weld/injection/MethodInjectionPoint.java	2010-01-15 13:53:21 UTC (rev 5477)
@@ -35,11 +35,13 @@
 import javax.enterprise.inject.spi.Annotated;
 import javax.enterprise.inject.spi.Bean;
 
+import org.jboss.weld.exceptions.ForbiddenStateException;
 import org.jboss.weld.exceptions.InvalidObjectException;
 import org.jboss.weld.introspector.ForwardingWeldMethod;
 import org.jboss.weld.introspector.MethodSignature;
 import org.jboss.weld.introspector.WeldMethod;
 import org.jboss.weld.introspector.WeldParameter;
+import org.jboss.weld.logging.messages.ReflectionMessage;
 import org.jboss.weld.manager.BeanManagerImpl;
 
 public class MethodInjectionPoint<T, X> extends ForwardingWeldMethod<T, X> implements WeldInjectionPoint<T, Method>
@@ -324,6 +326,12 @@
       
       private Object readResolve()
       {
+         WeldMethod<T, ?> method = getWeldMethod();
+         Bean<T> bean = getDeclaringBean();
+         if (method == null || bean == null)
+         {
+            throw new ForbiddenStateException(ReflectionMessage.UNABLE_TO_GET_METHOD_ON_DESERIALIZATION, getDeclaringBeanId(), getWeldClass(), signature);
+         }
          return MethodInjectionPoint.of(getDeclaringBean(), getWeldMethod());
       }
       

Modified: core/trunk/impl/src/main/java/org/jboss/weld/injection/ParameterInjectionPoint.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/injection/ParameterInjectionPoint.java	2010-01-15 13:41:30 UTC (rev 5476)
+++ core/trunk/impl/src/main/java/org/jboss/weld/injection/ParameterInjectionPoint.java	2010-01-15 13:53:21 UTC (rev 5477)
@@ -44,6 +44,7 @@
 import org.jboss.weld.introspector.WeldConstructor;
 import org.jboss.weld.introspector.WeldMethod;
 import org.jboss.weld.introspector.WeldParameter;
+import org.jboss.weld.logging.messages.ReflectionMessage;
 import org.jboss.weld.manager.BeanManagerImpl;
 
 public class ParameterInjectionPoint<T, X> extends ForwardingWeldParameter<T, X> implements WeldInjectionPoint<T, Object>, Serializable
@@ -167,6 +168,12 @@
       
       private Object readResolve()
       {
+         WeldParameter<T, ?> parameter = getWeldParameter();
+         Bean<T> bean = getDeclaringBean();
+         if (parameter == null || bean == null)
+         {
+            throw new ForbiddenStateException(ReflectionMessage.UNABLE_TO_GET_PARAMETER_ON_DESERIALIZATION, getDeclaringBeanId(), getWeldClass(), methodSignature, parameterPosition);
+         }
          return ParameterInjectionPoint.of(getDeclaringBean(), getWeldParameter());
       }
       

Modified: core/trunk/impl/src/main/java/org/jboss/weld/injection/WeldInjectionPoint.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/injection/WeldInjectionPoint.java	2010-01-15 13:41:30 UTC (rev 5476)
+++ core/trunk/impl/src/main/java/org/jboss/weld/injection/WeldInjectionPoint.java	2010-01-15 13:53:21 UTC (rev 5477)
@@ -53,6 +53,11 @@
       {
          return Container.instance().services().get(ClassTransformer.class).loadClass(declaringClass);
       }
+      
+      protected String getDeclaringBeanId()
+      {
+         return declaringBeanId;
+      }
 
    }
    

Modified: core/trunk/impl/src/main/java/org/jboss/weld/logging/messages/ReflectionMessage.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/logging/messages/ReflectionMessage.java	2010-01-15 13:41:30 UTC (rev 5476)
+++ core/trunk/impl/src/main/java/org/jboss/weld/logging/messages/ReflectionMessage.java	2010-01-15 13:53:21 UTC (rev 5477)
@@ -28,6 +28,10 @@
    @MessageId("000606") UNABLE_TO_GET_PARAMETER_NAME,
    @MessageId("000607") ANNOTATION_MAP_NULL,
    @MessageId("000608") DECLARED_ANNOTATION_MAP_NULL,
-   @MessageId("000609") CLEANING_JAVASSIST_PROXY_CLASS;
+   @MessageId("000609") CLEANING_JAVASSIST_PROXY_CLASS,
+   @MessageId("000610") UNABLE_TO_GET_CONSTRUCTOR_ON_DESERIALIZATION,
+   @MessageId("000611") UNABLE_TO_GET_METHOD_ON_DESERIALIZATION,
+   @MessageId("000612") UNABLE_TO_GET_FIELD_ON_DESERIALIZATION,
+   @MessageId("000613") UNABLE_TO_GET_PARAMETER_ON_DESERIALIZATION;
    
 }

Modified: core/trunk/impl/src/main/resources/org/jboss/weld/messages/reflection_en.properties
===================================================================
--- core/trunk/impl/src/main/resources/org/jboss/weld/messages/reflection_en.properties	2010-01-15 13:41:30 UTC (rev 5476)
+++ core/trunk/impl/src/main/resources/org/jboss/weld/messages/reflection_en.properties	2010-01-15 13:53:21 UTC (rev 5477)
@@ -7,4 +7,8 @@
 UNABLE_TO_GET_PARAMETER_NAME=Unable to determine name of parameter
 ANNOTATION_MAP_NULL=annotationMap cannot be null
 DECLARED_ANNOTATION_MAP_NULL=declaredAnnotationMap cannot be null
-CLEANING_JAVASSIST_PROXY_CLASS=Cleaning Javassist proxy. Class {0}
\ No newline at end of file
+CLEANING_JAVASSIST_PROXY_CLASS=Cleaning Javassist proxy. Class {0}
+UNABLE_TO_GET_FIELD_ON_DESERIALIZATION=Unable to deserialize field. Declaring bean id {0}, declaring class {1}, field name {2}
+UNABLE_TO_GET_CONSTRUCTOR_ON_DESERIALIZATION=Unable to deserialize constructor. Declaring bean id {0}, declaring class {1}, signature {2}
+UNABLE_TO_GET_METHOD_ON_DESERIALIZATION=Unable to deserialize method. Declaring bean id {0}, declaring class {1}, signature {2}
+UNABLE_TO_GET_PARAMETER_ON_DESERIALIZATION=Unable to deserialize paramter. Declaring bean id {0}, declaring class {1}, parameter {3} of method with signature {2}
\ No newline at end of file

Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Cow.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Cow.java	                        (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Cow.java	2010-01-15 13:53:21 UTC (rev 5477)
@@ -0,0 +1,18 @@
+package org.jboss.weld.tests.injectionPoint;
+
+public class Cow
+{
+   
+   private final String name;
+
+   public Cow(String name)
+   {
+      this.name = name;
+   }
+   
+   public String getName()
+   {
+      return name;
+   }
+   
+}


Property changes on: core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Cow.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + native

Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/CowShed.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/CowShed.java	                        (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/CowShed.java	2010-01-15 13:53:21 UTC (rev 5477)
@@ -0,0 +1,20 @@
+package org.jboss.weld.tests.injectionPoint;
+
+import javax.enterprise.inject.Produces;
+import javax.enterprise.inject.spi.InjectionPoint;
+
+import org.jboss.weld.injection.FieldInjectionPoint;
+
+public class CowShed
+{
+
+   @Produces
+   public Cow get(InjectionPoint ip)
+   {
+      assert ip instanceof FieldInjectionPoint<?, ?>;
+      FieldInjectionPoint<?, ?> fip = (FieldInjectionPoint<?, ?>) ip;
+      assert fip.getDeclaringType().getJavaClass().equals(Field.class);
+      return new Cow("daisy");
+   }
+   
+}


Property changes on: core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/CowShed.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + native

Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Field.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Field.java	                        (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Field.java	2010-01-15 13:53:21 UTC (rev 5477)
@@ -0,0 +1,15 @@
+package org.jboss.weld.tests.injectionPoint;
+
+import javax.inject.Inject;
+
+public class Field
+{
+   
+   @Inject Cow cow;
+   
+   public Cow getCow()
+   {
+      return cow;
+   }
+
+}


Property changes on: core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Field.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + native

Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/GrassyField.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/GrassyField.java	                        (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/GrassyField.java	2010-01-15 13:53:21 UTC (rev 5477)
@@ -0,0 +1,6 @@
+package org.jboss.weld.tests.injectionPoint;
+
+public class GrassyField extends Field
+{
+
+}


Property changes on: core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/GrassyField.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + native

Modified: core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/InjectionPointTest.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/InjectionPointTest.java	2010-01-15 13:41:30 UTC (rev 5476)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/InjectionPointTest.java	2010-01-15 13:53:21 UTC (rev 5477)
@@ -37,5 +37,11 @@
       InjectionPoint ip1 = Utils.deserialize(Utils.serialize(ip));
       assert ip1.getMember().getName().equals("str");
    }
+   
+   @Test
+   public void testGetDeclaringType()
+   {
+      assert getReference(GrassyField.class).getCow().getName().equals("daisy");
+   }
 
 }



More information about the weld-commits mailing list