Author: pete.muir(a)jboss.org
Date: 2010-02-17 16:52:15 -0500 (Wed, 17 Feb 2010)
New Revision: 5872
Added:
core/trunk/impl/src/main/java/org/jboss/weld/injection/SimpleInjectionPoint.java
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/ExtraSpecial.java
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Pig.java
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/PigSty.java
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Special.java
Removed:
core/trunk/impl/src/main/java/org/jboss/weld/injection/DummyInjectionPoint.java
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java
core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InstanceImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java
core/trunk/impl/src/main/java/org/jboss/weld/injection/CurrentInjectionPoint.java
core/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/InjectionPointTest.java
Log:
WELD-438
Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java 2010-02-17
17:29:27 UTC (rev 5871)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java 2010-02-17
21:52:15 UTC (rev 5872)
@@ -59,7 +59,6 @@
import org.jboss.weld.exceptions.IllegalProductException;
import org.jboss.weld.exceptions.WeldException;
import org.jboss.weld.injection.CurrentInjectionPoint;
-import org.jboss.weld.injection.DummyInjectionPoint;
import org.jboss.weld.introspector.WeldMember;
import org.jboss.weld.manager.BeanManagerImpl;
import org.jboss.weld.metadata.cache.MetaAnnotationStore;
@@ -256,35 +255,34 @@
throw new IllegalProductException(NON_SERIALIZABLE_PRODUCT_ERROR,
getProducer());
}
InjectionPoint injectionPoint =
Container.instance().services().get(CurrentInjectionPoint.class).peek();
- if (injectionPoint == null ||
injectionPoint.equals(DummyInjectionPoint.INSTANCE))
+ if (injectionPoint != null && injectionPoint.getBean() != null)
{
- return;
- }
- if (!instanceSerializable &&
Beans.isPassivatingScope(injectionPoint.getBean(), beanManager))
- {
- if (injectionPoint.getMember() instanceof Field)
+ if (!instanceSerializable &&
Beans.isPassivatingScope(injectionPoint.getBean(), beanManager))
{
- if (!injectionPoint.isTransient() && instance != null &&
!instanceSerializable)
+ if (injectionPoint.getMember() instanceof Field)
{
- throw new
IllegalProductException(NON_SERIALIZABLE_FIELD_INJECTION_ERROR, this, injectionPoint);
+ if (!injectionPoint.isTransient() && instance != null
&& !instanceSerializable)
+ {
+ throw new
IllegalProductException(NON_SERIALIZABLE_FIELD_INJECTION_ERROR, this, injectionPoint);
+ }
}
- }
- else if (injectionPoint.getMember() instanceof Method)
- {
- Method method = (Method) injectionPoint.getMember();
- if (method.isAnnotationPresent(Inject.class))
+ else if (injectionPoint.getMember() instanceof Method)
{
- throw new
IllegalProductException(NON_SERIALIZABLE_INITIALIZER_PARAM_INJECTION_ERROR, this,
injectionPoint);
+ Method method = (Method) injectionPoint.getMember();
+ if (method.isAnnotationPresent(Inject.class))
+ {
+ throw new
IllegalProductException(NON_SERIALIZABLE_INITIALIZER_PARAM_INJECTION_ERROR, this,
injectionPoint);
+ }
+ if (method.isAnnotationPresent(Produces.class))
+ {
+ throw new
IllegalProductException(NON_SERIALIZABLE_PRODUCER_PARAM_INJECTION_ERROR, this,
injectionPoint);
+ }
}
- if (method.isAnnotationPresent(Produces.class))
+ else if (injectionPoint.getMember() instanceof Constructor<?>)
{
- throw new
IllegalProductException(NON_SERIALIZABLE_PRODUCER_PARAM_INJECTION_ERROR, this,
injectionPoint);
+ throw new
IllegalProductException(NON_SERIALIZABLE_CONSTRUCTOR_PARAM_INJECTION_ERROR, this,
injectionPoint);
}
}
- else if (injectionPoint.getMember() instanceof Constructor<?>)
- {
- throw new
IllegalProductException(NON_SERIALIZABLE_CONSTRUCTOR_PARAM_INJECTION_ERROR, this,
injectionPoint);
- }
}
}
}
Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InstanceImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InstanceImpl.java 2010-02-17
17:29:27 UTC (rev 5871)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InstanceImpl.java 2010-02-17
21:52:15 UTC (rev 5872)
@@ -37,6 +37,7 @@
import org.jboss.weld.Container;
import org.jboss.weld.exceptions.InvalidObjectException;
import org.jboss.weld.injection.CurrentInjectionPoint;
+import org.jboss.weld.injection.SimpleInjectionPoint;
import org.jboss.weld.manager.BeanManagerImpl;
import org.jboss.weld.resolution.ResolvableBuilder;
import org.jboss.weld.util.Beans;
@@ -67,17 +68,18 @@
public T get()
{
Bean<?> bean = getBeanManager().getBean(new
ResolvableBuilder(getType()).addQualifiers(getQualifiers()).setDeclaringBean(getInjectionPoint().getBean()).create());
- // Push in an empty CC to ensure that we don't get the CC of whatever is
injecting the bean containing the Instance injection point
+ // Generate a correct injection point for the bean, we do this by taking the
original injection point and adjusting the qualifiers and type
+ InjectionPoint ip = new SimpleInjectionPoint(getInjectionPoint().isTransient(),
getInjectionPoint().isDelegate(), getType(), getQualifiers(),
getInjectionPoint().getMember(), getInjectionPoint().getBean(),
getInjectionPoint().getAnnotated());
try
- {
- Container.instance().services().get(CurrentInjectionPoint.class).pushDummy();
+ {
+ Container.instance().services().get(CurrentInjectionPoint.class).push(ip);
@SuppressWarnings("unchecked")
T instance = (T) getBeanManager().getReference(bean, getType(),
getBeanManager().createCreationalContext(bean));
return instance;
}
finally
{
- Container.instance().services().get(CurrentInjectionPoint.class).popDummy();
+ Container.instance().services().get(CurrentInjectionPoint.class).pop();
}
}
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java 2010-02-17
17:29:27 UTC (rev 5871)
+++
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java 2010-02-17
21:52:15 UTC (rev 5872)
@@ -33,6 +33,7 @@
import org.jboss.weld.context.CreationalContextImpl;
import org.jboss.weld.context.WeldCreationalContext;
import org.jboss.weld.injection.CurrentInjectionPoint;
+import org.jboss.weld.injection.SimpleInjectionPoint;
import org.jboss.weld.serialization.spi.ContextualStore;
import org.jboss.weld.util.reflection.SecureReflections;
import org.slf4j.cal10n.LocLogger;
@@ -134,16 +135,16 @@
creationalContext = currentCreationalContext.get().getCreationalContext(bean);
outer = false;
}
+ Context context =
Container.instance().deploymentManager().getContext(bean.getScope());
try
{
- Context context =
Container.instance().deploymentManager().getContext(bean.getScope());
// Ensure that there is no injection point associated
- Container.instance().services().get(CurrentInjectionPoint.class).pushDummy();
+
Container.instance().services().get(CurrentInjectionPoint.class).push(SimpleInjectionPoint.EMPTY_INJECTION_POINT);
return context.get(bean, creationalContext);
}
finally
{
- Container.instance().services().get(CurrentInjectionPoint.class).popDummy();
+ Container.instance().services().get(CurrentInjectionPoint.class).pop();
if (outer)
{
currentCreationalContext.remove();
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/injection/CurrentInjectionPoint.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/injection/CurrentInjectionPoint.java 2010-02-17
17:29:27 UTC (rev 5871)
+++
core/trunk/impl/src/main/java/org/jboss/weld/injection/CurrentInjectionPoint.java 2010-02-17
21:52:15 UTC (rev 5872)
@@ -73,19 +73,6 @@
return null;
}
}
-
- public void pushDummy()
- {
- currentInjectionPoint.get().push(DummyInjectionPoint.INSTANCE);
- }
-
- public void popDummy()
- {
- if (!currentInjectionPoint.get().isEmpty() &&
DummyInjectionPoint.INSTANCE.equals(currentInjectionPoint.get().peek()))
- {
- currentInjectionPoint.get().pop();
- }
- }
public void cleanup()
{
Deleted: core/trunk/impl/src/main/java/org/jboss/weld/injection/DummyInjectionPoint.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/injection/DummyInjectionPoint.java 2010-02-17
17:29:27 UTC (rev 5871)
+++
core/trunk/impl/src/main/java/org/jboss/weld/injection/DummyInjectionPoint.java 2010-02-17
21:52:15 UTC (rev 5872)
@@ -1,69 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat, Inc., and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jboss.weld.injection;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Member;
-import java.lang.reflect.Type;
-import java.util.Collections;
-import java.util.Set;
-
-import javax.enterprise.inject.spi.Annotated;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.InjectionPoint;
-
-public class DummyInjectionPoint implements InjectionPoint
-{
-
- public static final DummyInjectionPoint INSTANCE = new DummyInjectionPoint();
-
- public boolean isTransient()
- {
- return true;
- }
-
- public boolean isDelegate()
- {
- return false;
- }
-
- public Type getType()
- {
- return InjectionPoint.class;
- }
-
- public Set<Annotation> getQualifiers()
- {
- return Collections.emptySet();
- }
-
- public Member getMember()
- {
- return null;
- }
-
- public Bean<?> getBean()
- {
- return null;
- }
-
- public Annotated getAnnotated()
- {
- return null;
- }
-
-}
Copied: core/trunk/impl/src/main/java/org/jboss/weld/injection/SimpleInjectionPoint.java
(from rev 5857,
core/trunk/impl/src/main/java/org/jboss/weld/injection/DummyInjectionPoint.java)
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/injection/SimpleInjectionPoint.java
(rev 0)
+++
core/trunk/impl/src/main/java/org/jboss/weld/injection/SimpleInjectionPoint.java 2010-02-17
21:52:15 UTC (rev 5872)
@@ -0,0 +1,95 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat, Inc., and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.weld.injection;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Member;
+import java.lang.reflect.Type;
+import java.util.Collections;
+import java.util.Set;
+
+import javax.enterprise.inject.spi.Annotated;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.InjectionPoint;
+
+import org.jboss.weld.util.collections.Arrays2;
+
+public class SimpleInjectionPoint implements InjectionPoint
+{
+
+ public static final InjectionPoint EMPTY_INJECTION_POINT = new
SimpleInjectionPoint(false, false, Object.class, Collections.<Annotation>emptySet(),
null, null, null);
+
+ private final boolean _transient;
+ private final boolean delegate;
+ private final Type type;
+ private final Set<Annotation> qualifiers;
+ private final Member member;
+ private final Bean<?> bean;
+ private final Annotated annotated;
+
+ public SimpleInjectionPoint(boolean _transient, boolean delegate, Type type,
Set<Annotation> qualifiers, Member member, Bean<?> bean, Annotated annotated)
+ {
+ this._transient = _transient;
+ this.delegate = delegate;
+ this.type = type;
+ this.qualifiers = qualifiers;
+ this.member = member;
+ this.bean = bean;
+ this.annotated = annotated;
+ }
+
+ public SimpleInjectionPoint(boolean _transient, boolean delegate, Type type,
Annotation[] qualifiers, Member member, Bean<?> bean, Annotated annotated)
+ {
+ this(_transient, delegate, type, Arrays2.asSet(qualifiers), member, bean,
annotated);
+ }
+
+ public boolean isTransient()
+ {
+ return _transient;
+ }
+
+ public boolean isDelegate()
+ {
+ return delegate;
+ }
+
+ public Type getType()
+ {
+ return type;
+ }
+
+ public Set<Annotation> getQualifiers()
+ {
+ return qualifiers;
+ }
+
+ public Member getMember()
+ {
+ return member;
+ }
+
+ public Bean<?> getBean()
+ {
+ return bean;
+ }
+
+ public Annotated getAnnotated()
+ {
+ return annotated;
+ }
+
+}
Property changes on:
core/trunk/impl/src/main/java/org/jboss/weld/injection/SimpleInjectionPoint.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native
Modified: core/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java 2010-02-17 17:29:27 UTC
(rev 5871)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java 2010-02-17 21:52:15 UTC
(rev 5872)
@@ -124,8 +124,12 @@
*/
public static boolean isPassivatingScope(Bean<?> bean, BeanManagerImpl manager)
{
- if (bean instanceof SessionBean<?>)
+ if (bean == null)
{
+ return false;
+ }
+ else if (bean instanceof SessionBean<?>)
+ {
return ((SessionBean<?>) bean).getEjbDescriptor().isStateful();
}
else
Added:
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/ExtraSpecial.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/ExtraSpecial.java
(rev 0)
+++
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/ExtraSpecial.java 2010-02-17
21:52:15 UTC (rev 5872)
@@ -0,0 +1,46 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc., and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.weld.tests.injectionPoint;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.enterprise.util.AnnotationLiteral;
+import javax.inject.Qualifier;
+
+@Qualifier
+(a)Retention(RetentionPolicy.RUNTIME)
+@Target({FIELD, METHOD, TYPE, PARAMETER})
+public @interface ExtraSpecial
+{
+
+ static class ExtraSpecialLiteral extends AnnotationLiteral<ExtraSpecial>
implements ExtraSpecial
+ {
+
+ private ExtraSpecialLiteral() {}
+
+ }
+
+ public static final ExtraSpecial INSTANCE = new ExtraSpecialLiteral();
+
+}
Property changes on:
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/ExtraSpecial.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-02-17
17:29:27 UTC (rev 5871)
+++
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/InjectionPointTest.java 2010-02-17
21:52:15 UTC (rev 5872)
@@ -16,7 +16,10 @@
*/
package org.jboss.weld.tests.injectionPoint;
+import java.lang.reflect.ParameterizedType;
+
import javax.enterprise.inject.IllegalProductException;
+import javax.enterprise.inject.Instance;
import javax.enterprise.inject.spi.InjectionPoint;
import org.jboss.testharness.impl.packaging.Artifact;
@@ -59,5 +62,26 @@
{
assert
getReference(GrassyField.class).getCow().getName().equals("daisy");
}
+
+ @Test(description = "WELD-438")
+ public void testInjectionPointWhenInstanceGetIsUsed() throws Exception
+ {
+ Pig pig = getReference(PigSty.class).getPig();
+ assert pig != null;
+ assert pig.getInjectionPoint().getBean() != null;
+ assert pig.getInjectionPoint().getBean().getBeanClass().equals(PigSty.class);
+ assert
pig.getInjectionPoint().getMember().equals(PigSty.class.getDeclaredField("pig"));
+ assert pig.getInjectionPoint().getAnnotated() != null;
+ assert pig.getInjectionPoint().getAnnotated().getBaseType() instanceof
ParameterizedType;
+ ParameterizedType parameterizedType = ((ParameterizedType)
pig.getInjectionPoint().getAnnotated().getBaseType());
+ assert parameterizedType.getRawType().equals(Instance.class);
+ assert parameterizedType.getActualTypeArguments().length == 1;
+ assert parameterizedType.getActualTypeArguments()[0].equals(Pig.class);
+ assert pig.getInjectionPoint().getAnnotated().isAnnotationPresent(Special.class);
+ assert
!pig.getInjectionPoint().getAnnotated().isAnnotationPresent(ExtraSpecial.class);
+ assert Utils.annotationSetMatches(pig.injectionPoint.getQualifiers(),
Special.class, ExtraSpecial.class);
+ assert Pig.class.equals(pig.getInjectionPoint().getType());
+
+ }
}
Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Pig.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Pig.java
(rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Pig.java 2010-02-17
21:52:15 UTC (rev 5872)
@@ -0,0 +1,17 @@
+package org.jboss.weld.tests.injectionPoint;
+
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.inject.Inject;
+
+@Special @ExtraSpecial
+public class Pig
+{
+
+ @Inject InjectionPoint injectionPoint;
+
+ public InjectionPoint getInjectionPoint()
+ {
+ return injectionPoint;
+ }
+
+}
Property changes on:
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Pig.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native
Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/PigSty.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/PigSty.java
(rev 0)
+++
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/PigSty.java 2010-02-17
21:52:15 UTC (rev 5872)
@@ -0,0 +1,16 @@
+package org.jboss.weld.tests.injectionPoint;
+
+import javax.enterprise.inject.Instance;
+import javax.inject.Inject;
+
+public class PigSty
+{
+ @Inject @Special Instance<Pig> pig;
+
+ public Pig getPig()
+ {
+ return pig.select(ExtraSpecial.INSTANCE).get();
+ }
+
+}
+
Property changes on:
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/PigSty.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native
Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Special.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Special.java
(rev 0)
+++
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Special.java 2010-02-17
21:52:15 UTC (rev 5872)
@@ -0,0 +1,36 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc., and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.weld.tests.injectionPoint;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.inject.Qualifier;
+
+@Qualifier
+(a)Retention(RetentionPolicy.RUNTIME)
+@Target({FIELD, METHOD, TYPE, PARAMETER})
+public @interface Special
+{
+
+}
Property changes on:
core/trunk/tests/src/test/java/org/jboss/weld/tests/injectionPoint/Special.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native