[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