[webbeans-commits] Webbeans SVN: r1616 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector and 18 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Fri Feb 20 14:30:01 EST 2009


Author: pete.muir at jboss.org
Date: 2009-02-20 14:30:00 -0500 (Fri, 20 Feb 2009)
New Revision: 1616

Added:
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/examples/ExampleTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/AndalusianChicken.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Animal.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/AnimalStereotype.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/AnotherDeploymentType.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/BeanWithStaticProducerMethod.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Bite.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/BlackWidow.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Chicken.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DaddyLongLegs.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DeadlyAnimal.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DeadlySpider.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DefangedTarantula.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Egg.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/FunnelWeaver.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/LadybirdSpider.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/ProducerMethodDefinitionTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Spider.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/SpiderDeploymentType.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/SpiderProducer.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Tame.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Tarantula.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/WolfSpider.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Yummy.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/FunnelWeaver.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/NotABusinessMethodTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/SpiderProducer.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedDisposes/
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedDisposes/ParameterAnnotatedDisposesTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedDisposes/SpiderProducer_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedObserves/
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedObserves/ParameterAnnotatedObservesTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedObserves/SpiderProducer_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/FunnelWeaver.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/ParameterizedTypeWithTypeParameterTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/SpiderProducer.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/FunnelWeaver.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/PamaterizedTypeWithWildcardTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/SpiderProducer.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/Animal.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/AnimalStereotype.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/SpiderProducer_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/StereotypeEnforcesRequiredTypesTest.java
   tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/unit/implementation/
   tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/unit/implementation/producer/
   tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/unit/implementation/producer/method/
   tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/
   tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/beans.xml
Removed:
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/examples/Tests.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/ProducerMethodDefinitionTest.java
Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.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/util/Proxies.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
   tck/trunk/api/src/main/java/org/jboss/jsr299/tck/spi/Beans.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/AbstractTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/SpiderProducer.java
Log:
convert producer method tests to @Artifact (one broken) and fix a bug in the RI reflection layer

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java	2009-02-20 16:09:48 UTC (rev 1615)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -158,8 +158,7 @@
     */
    protected void initTypes()
    {
-      types = new HashSet<Type>();
-      Reflections.getTypeHierachy(getType(), types);
+      types = new Reflections.HierarchyDiscovery<Type>(getAnnotatedItem().getUnderlyingType()).getFlattenedTypes();
    }
 
    /**

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java	2009-02-20 16:09:48 UTC (rev 1615)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -116,10 +116,7 @@
    {
       try
       {
-         if (getAnnotatedItem() != null)
-         {
-            this.type = getAnnotatedItem().getType();
-         }
+         this.type = getAnnotatedItem().getType();
       }
       catch (ClassCastException e)
       {

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java	2009-02-20 16:09:48 UTC (rev 1615)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -126,6 +126,8 @@
     * @return The type of the element
     */
    public Class<T> getType();
+   
+   public Type getUnderlyingType();
 
    /**
     * Extends Java Class assignability such that actual type parameters are also

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java	2009-02-20 16:09:48 UTC (rev 1615)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -118,6 +118,11 @@
    {
       return delegate().getType();
    }
+   
+   public Type getUnderlyingType()
+   {
+      return delegate().getUnderlyingType();
+   }
 
    /**
     * @see org.jboss.webbeans.introspector.AnnotatedItem

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java	2009-02-20 16:09:48 UTC (rev 1615)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -18,6 +18,7 @@
 package org.jboss.webbeans.introspector.jlr;
 
 import java.lang.annotation.Annotation;
+import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.Arrays;
 import java.util.Set;
@@ -52,8 +53,11 @@
       
    }
 
+   public Type getUnderlyingType()
+   {
+      return getType();
+   }
    
-   
    // Cached string representation
    private String toString;
    private final AnnotationStore annotationStore;
@@ -166,9 +170,16 @@
                return true;
             }
          }
-         else
+         else if (type instanceof ParameterizedType)
          {
-            
+            ParameterizedType parameterizedType = (ParameterizedType) type;
+            if (parameterizedType.getRawType() instanceof Class)
+            {
+               if (isAssignableFrom((Class<?>) parameterizedType.getRawType(), parameterizedType.getActualTypeArguments()))
+               {
+                  return true;
+               }
+            }
          }
       }
       return false;

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-02-20 16:09:48 UTC (rev 1615)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -48,6 +48,8 @@
 
    // The actual type arguments
    private final Type[] actualTypeArguments;
+   private final Type underlyingType;
+   private final Class<T> type;
    // The underlying method
    private final Method method;
 
@@ -87,12 +89,15 @@
       this.method = method;
       this.method.setAccessible(true);
       this.declaringClass = declaringClass;
+      this.type = (Class<T>) method.getReturnType();
       if (method.getGenericReturnType() instanceof ParameterizedType)
       {
-         this.actualTypeArguments = ((ParameterizedType) method.getGenericReturnType()).getActualTypeArguments();
+         this.underlyingType = method.getGenericReturnType();
+         this.actualTypeArguments = ((ParameterizedType) underlyingType).getActualTypeArguments();
       }
       else
       {
+         this.underlyingType = type;
          this.actualTypeArguments = new Type[0];
       }
 
@@ -132,58 +137,33 @@
       }
    }
 
-   /**
-    * Gets the annotated method
-    * 
-    * @return The method
-    */
    public Method getAnnotatedMethod()
    {
       return method;
    }
 
-   /**
-    * Gets the delegate
-    * 
-    * @return The delegate
-    */
    public Method getDelegate()
    {
       return method;
    }
 
-   /**
-    * Gets the type of the method
-    * 
-    * @return The return type of the method
-    */
    @SuppressWarnings("unchecked")
    public Class<T> getType()
    {
-      return (Class<T>) method.getReturnType();
+      return type;
    }
+   
+   @Override
+   public Type getUnderlyingType()
+   {
+      return underlyingType;
+   }
 
-   /**
-    * Gets the actual type arguments
-    * 
-    * @return The actual type arguments
-    * 
-    * @see org.jboss.webbeans.introspector.AnnotatedMethod#getActualTypeArguments()
-    */
    public Type[] getActualTypeArguments()
    {
       return actualTypeArguments;
    }
 
-   /**
-    * Gets the annotated parameters
-    * 
-    * If the parameters are null, they are initialized first
-    * 
-    * @return The annotated parameters
-    * 
-    * @see org.jboss.webbeans.introspector.AnnotatedMethod#getParameters()
-    */
    public List<AnnotatedParameter<?>> getParameters()
    {
       return Collections.unmodifiableList(parameters);
@@ -194,25 +174,11 @@
       return method.getParameterTypes();
    }
 
-   /**
-    * Gets the parameter abstractions with a given annotation type
-    * 
-    * If the parameter abstractions are null, they are initialized first
-    * 
-    * @param annotationType The annotation type to match
-    * @return The list of abstracted parameters with given annotation type
-    *         present. An empty list is returned if there are no matches
-    */
    public List<AnnotatedParameter<?>> getAnnotatedParameters(Class<? extends Annotation> annotationType)
    {
       return Collections.unmodifiableList(annotatedParameters.get(annotationType));
    }
 
-   /**
-    * Compares two annotated methods (delegates)
-    * 
-    * @return True if equals, false otherwise
-    */
    @Override
    public boolean equals(Object other)
    {
@@ -252,35 +218,16 @@
       return result;
    }
 
-   /**
-    * Gets the name of the property
-    * 
-    * @return The name
-    * 
-    * @see org.jboss.webbeans.introspector.AnnotatedMethod#getPropertyName()
-    */
    public String getPropertyName()
    {
       return propertyName;
    }
 
-   /**
-    * Gets the declaring class
-    * 
-    * @return The declaring class
-    * 
-    * @see org.jboss.webbeans.introspector.AnnotatedMethod#getDeclaringClass()
-    */
    public AnnotatedType<?> getDeclaringClass()
    {
       return declaringClass;
    }
 
-   /**
-    * Gets a string representation of the method
-    * 
-    * @return A string representation
-    */
    @Override
    public String toString()
    {

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Proxies.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Proxies.java	2009-02-20 16:09:48 UTC (rev 1615)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Proxies.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -16,6 +16,7 @@
  */
 package org.jboss.webbeans.util;
 
+import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
@@ -142,7 +143,23 @@
     */
    public static boolean isTypeProxyable(Type type)
    {
-      Class<?> clazz = (Class<?>) type;
+      if (type instanceof Class)
+      {
+         return isClassProxyable((Class<?>) type);
+      }
+      else if (type instanceof ParameterizedType)
+      {
+         Type rawType = ((ParameterizedType) type).getRawType();
+         if (rawType instanceof Class)
+         {
+            return isClassProxyable((Class<?>) rawType);
+         }
+      }
+      return false;
+   }
+      
+   private static boolean isClassProxyable(Class<?> clazz)
+   {
       if (clazz.isInterface())
       {
          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-02-20 16:09:48 UTC (rev 1615)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -43,6 +43,66 @@
  */
 public class Reflections
 {
+   
+   public static class HierarchyDiscovery<T extends Type>
+   {
+      
+      private final T type;
+     
+      private Set<T> types;
+      
+      public HierarchyDiscovery(T type)
+      {
+         this.type = type;
+      }
+      
+      protected void add(T type)
+      {
+         types.add(type);
+      }
+      
+      public Set<T> getFlattenedTypes()
+      {
+         if (types == null)
+         {
+            this.types = new HashSet<T>();
+            discoverTypes(type);
+         }
+         return types;
+      }
+      
+      
+      private void discoverTypes(T type)
+      {
+         if (type != null)
+         {
+            add(type);
+            if (type instanceof Class)
+            {
+               discoverFromClass((Class<?>) type);
+            }
+            else if (type instanceof ParameterizedType)
+            {
+               Type rawType = ((ParameterizedType) type).getRawType();
+               if (rawType instanceof Class)
+               {
+                  discoverFromClass((Class<?>) rawType);
+               }
+            }
+         }
+      }
+      
+      @SuppressWarnings("unchecked")
+      private void discoverFromClass(Class<?> clazz)
+      {
+         discoverTypes((T) clazz.getSuperclass());
+         for (Class<?> c : clazz.getInterfaces())
+         {
+            discoverTypes((T) c);
+         }
+      }
+      
+   }
 
    /**
     * Gets the property name from a getter method
@@ -336,38 +396,19 @@
     * reached. For each steps, adds all interfaces of the class to the set.
     * Since the data structure is a set, duplications are eliminated
     * 
+    * 
+    * @deprecated see {@link HierarchyDiscovery} 
     * @param clazz The class to examine
     * @return The set of classes and interfaces in the hierarchy
     * @see #getTypeHierachy(Class, Set)
     */
+   @Deprecated
    public static Set<Class<?>> getTypeHierachy(Class<?> clazz)
    {
-      Set<Class<?>> classes = new HashSet<Class<?>>();
-      getTypeHierachy(clazz, classes);
-      return classes;
+      return new HierarchyDiscovery<Class<?>>(clazz).getFlattenedTypes();
    }
 
    /**
-    * Gets the flattened type hierarchy for a class, including all super classes
-    * and the entire interface type hierarchy
-    * 
-    * @param clazz the class to examine
-    * @param classes the set of types
-    */
-   public static void getTypeHierachy(Class<?> clazz, Set<? super Class<?>> classes)
-   {
-      if (clazz != null)
-      {
-         classes.add(clazz);
-         getTypeHierachy(clazz.getSuperclass(), classes);
-         for (Class<?> c : clazz.getInterfaces())
-         {
-            getTypeHierachy(c, classes);
-         }
-      }
-   }
-
-   /**
     * Checks the bindingType to make sure the annotation was declared properly
     * as a binding type (annotated with @BindingType).
     * 

Copied: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/examples/ExampleTest.java (from rev 1612, ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/examples/Tests.java)
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/examples/ExampleTest.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/examples/ExampleTest.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,90 @@
+package org.jboss.webbeans.test.examples;
+
+import java.util.Arrays;
+
+import javax.inject.Production;
+import javax.inject.Standard;
+
+import org.jboss.webbeans.test.unit.AbstractTest;
+import org.testng.annotations.Test;
+
+public class ExampleTest extends AbstractTest
+{
+   @Test
+   public void testGameGenerator() throws Exception {
+     setupGameGenerator();
+     
+     new RunInDependentContext()
+     {
+        
+        @Override
+        protected void execute() throws Exception
+        {
+           Game game1 = manager.getInstanceByType(Game.class);
+           Game game2 = manager.getInstanceByType(Game.class);
+           assert game1!=game2;
+           assert game1.getNumber()!=game2.getNumber();
+           Generator gen1 = manager.getInstanceByType(Generator.class);
+           Generator gen2 = manager.getInstanceByType(Generator.class);
+           assert gen1.getRandom()!=null;
+           assert gen1.getRandom()==gen2.getRandom();
+        }
+        
+     }.run();
+   }
+
+   private void setupGameGenerator() throws NoSuchMethodException
+   {
+      deployBeans(Game.class, Generator.class);
+   }
+   
+   @Test
+   public void testMockSentenceTranslator() throws Exception {
+      
+      manager.setEnabledDeploymentTypes(Arrays.asList(Standard.class, Production.class, Mock.class));
+      setupTextTranslator();
+      
+      new RunInDependentContext()
+      {
+         
+         @Override
+         protected void execute() throws Exception
+         {
+            TextTranslator tt2 = manager.getInstanceByType(TextTranslator.class);
+            assert "Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.".equals( tt2.translate("Hello world. How's tricks?") );
+         }
+         
+      }.run();  
+   }
+
+   @Test
+   public void testSentenceTranslator() throws Exception {
+      setupTextTranslator();
+      
+      new RunInDependentContext()
+      {
+         
+         @Override
+         protected void execute() throws Exception
+         {
+            TextTranslator tt1 = manager.getInstanceByType(TextTranslator.class);
+            try 
+            {
+               tt1.translate("hello world");
+               assert false;
+            }
+            catch (UnsupportedOperationException uoe)
+            {
+               //expected
+            }
+         }
+         
+      }.run();
+   }
+   
+   private void setupTextTranslator()
+   {
+      deployBeans(SentenceParser.class, SentenceTranslator.class, MockSentenceTranslator.class, TextTranslator.class);
+   }
+   
+}

Deleted: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/examples/Tests.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/examples/Tests.java	2009-02-20 16:09:48 UTC (rev 1615)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/examples/Tests.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -1,90 +0,0 @@
-package org.jboss.webbeans.test.examples;
-
-import java.util.Arrays;
-
-import javax.inject.Production;
-import javax.inject.Standard;
-
-import org.jboss.webbeans.test.unit.AbstractTest;
-import org.testng.annotations.Test;
-
-public class Tests extends AbstractTest
-{
-   @Test
-   public void testGameGenerator() throws Exception {
-     setupGameGenerator();
-     
-     new RunInDependentContext()
-     {
-        
-        @Override
-        protected void execute() throws Exception
-        {
-           Game game1 = manager.getInstanceByType(Game.class);
-           Game game2 = manager.getInstanceByType(Game.class);
-           assert game1!=game2;
-           assert game1.getNumber()!=game2.getNumber();
-           Generator gen1 = manager.getInstanceByType(Generator.class);
-           Generator gen2 = manager.getInstanceByType(Generator.class);
-           assert gen1.getRandom()!=null;
-           assert gen1.getRandom()==gen2.getRandom();
-        }
-        
-     }.run();
-   }
-
-   private void setupGameGenerator() throws NoSuchMethodException
-   {
-      deployBeans(Game.class, Generator.class);
-   }
-   
-   @Test
-   public void testMockSentenceTranslator() throws Exception {
-      
-      manager.setEnabledDeploymentTypes(Arrays.asList(Standard.class, Production.class, Mock.class));
-      setupTextTranslator();
-      
-      new RunInDependentContext()
-      {
-         
-         @Override
-         protected void execute() throws Exception
-         {
-            TextTranslator tt2 = manager.getInstanceByType(TextTranslator.class);
-            assert "Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.".equals( tt2.translate("Hello world. How's tricks?") );
-         }
-         
-      }.run();  
-   }
-
-   @Test
-   public void testSentenceTranslator() throws Exception {
-      setupTextTranslator();
-      
-      new RunInDependentContext()
-      {
-         
-         @Override
-         protected void execute() throws Exception
-         {
-            TextTranslator tt1 = manager.getInstanceByType(TextTranslator.class);
-            try 
-            {
-               tt1.translate("hello world");
-               assert false;
-            }
-            catch (UnsupportedOperationException uoe)
-            {
-               //expected
-            }
-         }
-         
-      }.run();
-   }
-   
-   private void setupTextTranslator()
-   {
-      deployBeans(SentenceParser.class, SentenceTranslator.class, MockSentenceTranslator.class, TextTranslator.class);
-   }
-   
-}

Modified: tck/trunk/api/src/main/java/org/jboss/jsr299/tck/spi/Beans.java
===================================================================
--- tck/trunk/api/src/main/java/org/jboss/jsr299/tck/spi/Beans.java	2009-02-20 16:09:48 UTC (rev 1615)
+++ tck/trunk/api/src/main/java/org/jboss/jsr299/tck/spi/Beans.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -1,6 +1,5 @@
 package org.jboss.jsr299.tck.spi;
 
-import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 
 import javax.inject.manager.Bean;
@@ -104,20 +103,6 @@
     */
    public boolean isEntityBean(Class<?> clazz);
    
-   /**
-    * Create a new producer field bean from the given method.
-    * 
-    * @param <T> The type of the bean
-    * @param field the producer field
-    * @param declaringBean
-    * @return the producer bean
-    * 
-    * Deprecated, {@link StandaloneContainers#deploy(Iterable, Iterable)} should
-    * be used. This method will be removed when the TCK is released.
-    */
-   @Deprecated
-   public <T> Bean<T> createProducerFieldBean(Field field, Bean<?> declaringBean);
-   
    public boolean isProxy(Object instance);
    
 }

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/AbstractTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/AbstractTest.java	2009-02-20 16:09:48 UTC (rev 1615)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/AbstractTest.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -6,7 +6,6 @@
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -88,13 +87,7 @@
    {
       return getCurrentConfiguration().getBeans().createProducerMethodBean(method, producerBean);
    }
-
-   @Deprecated
-   public <T> Bean<T> createProducerFieldBean(Field field, Bean<?> producerBean)
-   {
-      return getCurrentConfiguration().getBeans().createProducerFieldBean(field, producerBean);
-   }
-
+   
    /**
     * Used to deploy simple beans in a standalone container.
     * 

Deleted: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/ProducerMethodDefinitionTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/ProducerMethodDefinitionTest.java	2009-02-20 16:09:48 UTC (rev 1615)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/ProducerMethodDefinitionTest.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -1,286 +0,0 @@
-package org.jboss.jsr299.tck.unit.implementation.producer.method;
-
-import java.lang.reflect.Method;
-
-import javax.context.RequestScoped;
-import javax.inject.Current;
-import javax.inject.DefinitionException;
-import javax.inject.Production;
-import javax.inject.manager.Bean;
-
-import org.hibernate.tck.annotations.SpecAssertion;
-import org.hibernate.tck.annotations.SpecAssertions;
-import org.jboss.jsr299.tck.AbstractDeclarativeTest;
-import org.testng.annotations.Test;
-
-/**
- * 
- * Spec version: PRD2
- * 
- */
-public class ProducerMethodDefinitionTest extends AbstractDeclarativeTest
-{
-
-   @Test(groups = "producerMethod")
-   @SpecAssertion(section = "2.5.3", id = "g")
-   public void testProducerMethodInheritsDeploymentTypeOfDeclaringWebBean() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("produceTameTarantula");
-      Bean<Tarantula> tarantulaModel = createProducerMethodBean(method, bean);
-      tarantulaModel.getDeploymentType().equals(AnotherDeploymentType.class);
-   }
-
-   @Test(groups = "producerMethod")
-   @SpecAssertion(section = "3.4", id = "b")
-   public void testStaticMethod() throws Exception
-   {
-      Bean<BeanWithStaticProducerMethod> bean = createSimpleBean(BeanWithStaticProducerMethod.class);
-      getCurrentManager().addBean(bean);
-      Method method = BeanWithStaticProducerMethod.class.getMethod("getString");
-      createProducerMethodBean(method, bean);
-   }
-
-   @Test(groups = { "stub", "producerMethod", "enterpriseBeans" }, expectedExceptions = DefinitionException.class)
-   @SpecAssertion(section = "3.4", id = "d")
-   public void testProducerMethodIsNotBusinessMethod() throws Exception
-   {
-      assert false;
-   }
-
-   @Test(groups = "producerMethod")
-   @SpecAssertion(section = "3.4", id = "g")
-   public void testParameterizedReturnType() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("getFunnelWeaverSpider");
-      createProducerMethodBean(method, bean);
-   }
-
-   @Test(groups = "producerMethod", expectedExceptions = DefinitionException.class)
-   @SpecAssertion(section = "3.4", id = "h")
-   public void testParameterizedReturnTypeWithWildcard() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("getAnotherFunnelWeaver");
-      createProducerMethodBean(method, bean);
-   }
-
-   @Test(groups = "producerMethod", expectedExceptions = DefinitionException.class)
-   @SpecAssertion(section = "3.4", id = "i")
-   public void testParameterizedReturnTypeWithTypeParameter() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("getFunnelWeaver");
-      createProducerMethodBean(method, bean);
-   }
-
-   @Test(groups = "producerMethod")
-   @SpecAssertions( { @SpecAssertion(section = "3.4", id = "b"), 
-      @SpecAssertion(section = "2.3.1", id = "a") })
-   public void testDefaultBindingType() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("produceTarantula");
-      Bean<Tarantula> tarantulaModel = createProducerMethodBean(method, bean);
-      assert tarantulaModel.getBindings().size() == 1;
-      assert tarantulaModel.getBindings().iterator().next().annotationType().equals(Current.class);
-   }
-
-   @Test(groups = "producerMethod")
-   @SpecAssertions({
-      @SpecAssertion(section = "3.4.1", id = "c"),
-      @SpecAssertion(section="2.2", id = "l")
-   })
-   public void testApiTypeForClassReturn() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("produceTarantula");
-      Bean<Tarantula> tarantulaModel = createProducerMethodBean(method, bean);
-      assert tarantulaModel.getTypes().size() == 6;
-      assert tarantulaModel.getTypes().contains(Tarantula.class);
-      assert tarantulaModel.getTypes().contains(DeadlySpider.class);
-      assert tarantulaModel.getTypes().contains(Spider.class);
-      assert tarantulaModel.getTypes().contains(Animal.class);
-      assert tarantulaModel.getTypes().contains(DeadlyAnimal.class);
-      assert tarantulaModel.getTypes().contains(Object.class);
-   }
-
-   @Test(groups = "producerMethod")
-   @SpecAssertion(section = "3.4.1", id = "a")
-   public void testApiTypeForInterfaceReturn() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("makeASpider");
-      Bean<Animal> animalModel = createProducerMethodBean(method, bean);
-      assert animalModel.getTypes().size() == 2;
-      assert animalModel.getTypes().contains(Animal.class);
-      assert animalModel.getTypes().contains(Object.class);
-   }
-
-   @Test(groups = "producerMethod")
-   @SpecAssertion(section = "3.4.1", id = "b")
-   public void testApiTypeForPrimitiveReturn() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("getWolfSpiderSize");
-      Bean<Integer> intModel = createProducerMethodBean(method, bean);
-      assert intModel.getTypes().size() == 2;
-      assert intModel.getTypes().contains(int.class);
-      assert intModel.getTypes().contains(Object.class);
-   }
-
-   @Test(groups = "producerMethod")
-   @SpecAssertions( { @SpecAssertion(section = "3.4.1", id = "b"), 
-      @SpecAssertion(section = "2.2", id = "j") })
-   public void testApiTypeForArrayTypeReturn() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("getSpiders");
-      Bean<Spider[]> spidersModel = createProducerMethodBean(method, bean);
-      assert spidersModel.getTypes().size() == 2;
-      assert spidersModel.getTypes().contains(Spider[].class);
-      assert spidersModel.getTypes().contains(Object.class);
-   }
-
-   @Test(groups = "producerMethod")
-   @SpecAssertion(section = "3.4.2", id = "be")
-   public void testBindingType() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("produceTameTarantula");
-      Bean<Tarantula> tarantulaModel = createProducerMethodBean(method, bean);
-      assert tarantulaModel.getBindings().size() == 1;
-      assert tarantulaModel.getBindings().iterator().next().annotationType().equals(Tame.class);
-   }
-
-   @Test(groups = "producerMethod")
-   @SpecAssertion(section = "3.4.2", id = "ba")
-   public void testScopeType() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("produceDaddyLongLegs");
-      Bean<DaddyLongLegs> daddyLongLegsModel = createProducerMethodBean(method, bean);
-      assert daddyLongLegsModel.getScopeType().equals(RequestScoped.class);
-
-      // TODO Inherit scope from returned web bean?
-   }
-
-   @Test(groups = "producerMethod")
-   @SpecAssertions({
-      @SpecAssertion(section = "3.4.2", id = "bc"),
-      @SpecAssertion(section = "2.5.3", id = "b")
-   })
-   public void testDeploymentType() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("getLadybirdSpider");
-      Bean<LadybirdSpider> ladybirdSpiderModel = createProducerMethodBean(method, bean);
-      assert ladybirdSpiderModel.getDeploymentType().equals(Production.class);
-   }
-
-   @Test(groups = "producerMethod")
-   @SpecAssertions({
-      @SpecAssertion(section = "3.4.2", id = "bb"),
-      @SpecAssertion(section = "2.6.1", id = "b")
-   })
-   public void testNamedMethod() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("produceBlackWidow");
-      Bean<BlackWidow> blackWidowSpiderModel = createProducerMethodBean(method, bean);
-      assert blackWidowSpiderModel.getName().equals("blackWidow");
-   }
-
-   @Test(groups = "producerMethod")
-   @SpecAssertions({
-      @SpecAssertion(section = "3.4.2", id = "bb"),
-      @SpecAssertion(section = "2.6.1", id = "d"),
-      @SpecAssertion(section = "2.4.12", id = "a")
-   })
-   public void testDefaultNamedMethod() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("produceDaddyLongLegs");
-      Bean<DaddyLongLegs> daddyLongLegsSpiderModel = createProducerMethodBean(method, bean);
-      assert daddyLongLegsSpiderModel.getName().equals("produceDaddyLongLegs");
-   }
-
-   @Test(groups = "producerMethod", expectedExceptions = DefinitionException.class)
-   @SpecAssertion(section = "3.4.2", id = "d")
-   public void testProducerMethodWithParameterAnnotatedDisposes() throws Exception
-   {
-      Bean<SpiderProducer_Broken> bean = createSimpleBean(SpiderProducer_Broken.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer_Broken.class.getMethod("dispose", String.class);
-      createProducerMethodBean(method, bean);
-   }
-
-   @Test(groups = "producerMethod", expectedExceptions = DefinitionException.class)
-   @SpecAssertion(section = "3.4.2", id = "e")
-   public void testProducerMethodWithParameterAnnotatedObserves() throws Exception
-   {
-      Bean<SpiderProducer_Broken> bean = createSimpleBean(SpiderProducer_Broken.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer_Broken.class.getMethod("observe", String.class);
-      createProducerMethodBean(method, bean);
-   }
-
-   // Review 2.2
-   @Test(groups = "producerMethod")
-   @SpecAssertions({ 
-      @SpecAssertion(section = "2.7.2", id = "b"), 
-      @SpecAssertion(section = "3.4.2", id = "ba"), 
-      @SpecAssertion(section = "2.4.5", id = "c"),
-      @SpecAssertion(section = "3.4.2", id = "bd")
-   })
-   public void testStereotypeSpecifiesScope() throws Exception
-   {
-      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer.class.getMethod("produceWolfSpider");
-      Bean<WolfSpider> wolfSpider = createProducerMethodBean(method, bean);
-      // assert wolfSpiderModel.getMergedStereotypes().getRequiredTypes().size()
-      // == 1;
-      // assert
-      // wolfSpiderModel.getMergedStereotypes().getRequiredTypes().contains(Animal.class);
-      assert wolfSpider.getScopeType().equals(RequestScoped.class);
-   }
-
-   @Test(groups = "producerMethod", expectedExceptions = DefinitionException.class)
-   @SpecAssertions({ 
-      @SpecAssertion(section = "2.7.2", id = "b"), 
-      @SpecAssertion(section = "3.4.2", id = "bc"), 
-      @SpecAssertion(section = "2.7.4", id = "b")
-   })
-   public void testStereotypeEnforcesTypes() throws Exception
-   {
-      Bean<SpiderProducer_Broken> bean = createSimpleBean(SpiderProducer_Broken.class);
-      getCurrentManager().addBean(bean);
-      Method method = SpiderProducer_Broken.class.getMethod("produceInteger");
-      createProducerMethodBean(method, bean);
-   }
-
-   @Test
-   @SpecAssertion(section = "4.2", id = "d")
-   public void testNonStaticProducerMethodNotInherited()
-   {
-      deployBeans(InfertileChicken.class);
-      assert getCurrentManager().resolveByType(Egg.class).size() == 0;
-   }
-
-}

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/SpiderProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/SpiderProducer.java	2009-02-20 16:09:48 UTC (rev 1615)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/SpiderProducer.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -35,12 +35,7 @@
    {
       return new FunnelWeaver<Object>();
    }
-   
-   @Produces public <T> FunnelWeaver<T> getFunnelWeaver()
-   {
-      return new FunnelWeaver<T>();
-   }
-   
+
    @Produces public Animal makeASpider()
    {
       return new WolfSpider();

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/AndalusianChicken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/AndalusianChicken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/AndalusianChicken.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,16 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+import javax.inject.Specializes;
+
+ at Specializes
+ at AnotherDeploymentType
+class AndalusianChicken extends Chicken
+{
+   private static Egg egg = new Egg();
+
+   @Override
+   public Egg getEgg()
+   {
+      return egg;
+   }
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Animal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Animal.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Animal.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+interface Animal
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/AnimalStereotype.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/AnimalStereotype.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/AnimalStereotype.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,21 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.annotation.Stereotype;
+import javax.context.RequestScoped;
+
+ at Stereotype(requiredTypes=Animal.class)
+ at Target( { TYPE, METHOD, FIELD })
+ at Retention(RUNTIME)
+ at RequestScoped
+ at interface AnimalStereotype
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/AnotherDeploymentType.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/AnotherDeploymentType.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/AnotherDeploymentType.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,20 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.DeploymentType;
+
+ at Target( { TYPE, METHOD })
+ at Retention(RUNTIME)
+ at Documented
+ at DeploymentType
+ at interface AnotherDeploymentType
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/BeanWithStaticProducerMethod.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/BeanWithStaticProducerMethod.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/BeanWithStaticProducerMethod.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,15 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+import javax.inject.Produces;
+import javax.inject.Production;
+
+ at Production
+class BeanWithStaticProducerMethod
+{
+
+   @Produces public static String getString()
+   {
+      return "Pete";
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Bite.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Bite.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Bite.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+public interface Bite
+{
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/BlackWidow.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/BlackWidow.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/BlackWidow.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+class BlackWidow extends Spider implements DeadlySpider
+{
+
+}
Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Chicken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Chicken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Chicken.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,19 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+import javax.inject.Produces;
+
+class Chicken
+{
+   private static Egg egg = new Egg();
+   
+   @Produces @Yummy
+   public Egg produceEgg()
+   {
+      return getEgg();
+   }
+
+   public Egg getEgg()
+   {
+      return egg;
+   }
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DaddyLongLegs.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DaddyLongLegs.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DaddyLongLegs.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+class DaddyLongLegs extends Spider
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DeadlyAnimal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DeadlyAnimal.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DeadlyAnimal.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+interface DeadlyAnimal
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DeadlySpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DeadlySpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DeadlySpider.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+interface DeadlySpider extends DeadlyAnimal
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DefangedTarantula.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DefangedTarantula.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/DefangedTarantula.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+class DefangedTarantula extends Tarantula
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Egg.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Egg.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Egg.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+class Egg
+{
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/FunnelWeaver.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/FunnelWeaver.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/FunnelWeaver.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+class FunnelWeaver<T>
+{
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/LadybirdSpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/LadybirdSpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/LadybirdSpider.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,16 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+import java.io.Serializable;
+
+import javax.context.ApplicationScoped;
+
+ at ApplicationScoped
+class LadybirdSpider extends Spider implements Serializable
+{
+
+   public void spinWeb()
+   {
+      
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/ProducerMethodDefinitionTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/ProducerMethodDefinitionTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/ProducerMethodDefinitionTest.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,201 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+import java.lang.annotation.Annotation;
+
+import javax.context.RequestScoped;
+import javax.inject.AnnotationLiteral;
+import javax.inject.Current;
+import javax.inject.TypeLiteral;
+import javax.inject.manager.Bean;
+
+import org.hibernate.tck.annotations.SpecAssertion;
+import org.hibernate.tck.annotations.SpecAssertions;
+import org.jboss.jsr299.tck.AbstractDeclarativeTest;
+import org.jboss.jsr299.tck.impl.packaging.Artifact;
+import org.jboss.jsr299.tck.impl.packaging.jsr299.BeansXml;
+import org.testng.annotations.Test;
+
+/**
+ * 
+ * Spec version: PRD2
+ * 
+ */
+ at Artifact
+ at BeansXml("beans.xml")
+public class ProducerMethodDefinitionTest extends AbstractDeclarativeTest
+{
+   
+   private static final Annotation TAME_LITERAL = new AnnotationLiteral<Tame>() {}; 
+
+   @Test(groups = "producerMethod")
+   @SpecAssertion(section = "2.5.3", id = "g")
+   public void testProducerMethodInheritsDeploymentTypeOfDeclaringWebBean() throws Exception
+   {
+      assert getCurrentManager().resolveByType(Tarantula.class, TAME_LITERAL).size() == 1;
+      assert getCurrentManager().resolveByType(Tarantula.class, TAME_LITERAL).iterator().next().getDeploymentType().equals(AnotherDeploymentType.class);
+   }
+
+   @Test(groups = "producerMethod")
+   @SpecAssertion(section = "3.4", id = "b")
+   public void testStaticMethod() throws Exception
+   {
+      assert getCurrentManager().resolveByType(String.class).size() == 1;
+      assert getCurrentManager().getInstanceByType(String.class).equals(BeanWithStaticProducerMethod.getString());
+   }
+
+   @Test(groups = "producerMethod")
+   @SpecAssertion(section = "3.4", id = "g")
+   public void testParameterizedReturnType() throws Exception
+   {
+      assert getCurrentManager().resolveByType(new TypeLiteral<FunnelWeaver<Spider>>() {}).size() == 1;
+   }
+
+   @Test(groups = "producerMethod")
+   @SpecAssertions({
+      @SpecAssertion(section = "3.4", id = "b"), 
+      @SpecAssertion(section = "2.3.1", id = "a") 
+   })
+   public void testDefaultBindingType() throws Exception
+   {
+      assert getCurrentManager().resolveByType(Tarantula.class).size() == 1;
+      assert getCurrentManager().resolveByType(Tarantula.class).iterator().next().getBindings().size() == 1;
+      assert getCurrentManager().resolveByType(Tarantula.class).iterator().next().getBindings().iterator().next().annotationType().equals(Current.class);
+   }
+
+   @Test(groups = "producerMethod")
+   @SpecAssertions({
+      @SpecAssertion(section = "3.4.1", id = "c"),
+      @SpecAssertion(section="2.2", id = "l")
+   })
+   public void testApiTypeForClassReturn() throws Exception
+   {
+      assert getCurrentManager().resolveByType(Tarantula.class).size() == 1;
+      Bean<Tarantula> tarantula = getCurrentManager().resolveByType(Tarantula.class).iterator().next();
+      
+      assert tarantula.getTypes().size() == 6;
+      assert tarantula.getTypes().contains(Tarantula.class);
+      assert tarantula.getTypes().contains(DeadlySpider.class);
+      assert tarantula.getTypes().contains(Spider.class);
+      assert tarantula.getTypes().contains(Animal.class);
+      assert tarantula.getTypes().contains(DeadlyAnimal.class);
+      assert tarantula.getTypes().contains(Object.class);
+   }
+
+   @Test(groups = "producerMethod")
+   @SpecAssertion(section = "3.4.1", id = "a")
+   public void testApiTypeForInterfaceReturn() throws Exception
+   {
+      assert getCurrentManager().resolveByType(Bite.class).size() == 1;
+      Bean<Bite> animal = getCurrentManager().resolveByType(Bite.class).iterator().next();
+      assert animal.getTypes().size() == 2;
+      assert animal.getTypes().contains(Bite.class);
+      assert animal.getTypes().contains(Object.class);
+   }
+
+   @Test(groups = "producerMethod")
+   @SpecAssertion(section = "3.4.1", id = "b")
+   public void testApiTypeForPrimitiveReturn() throws Exception
+   {
+      assert getCurrentManager().resolveByType(Integer.class).size() == 1;
+      Bean<Integer> integer = getCurrentManager().resolveByType(Integer.class).iterator().next();
+      assert integer.getTypes().size() == 2;
+      assert integer.getTypes().contains(int.class);
+      assert integer.getTypes().contains(Object.class);
+   }
+
+   @Test(groups = "producerMethod")
+   @SpecAssertions({
+      @SpecAssertion(section = "3.4.1", id = "b"), 
+      @SpecAssertion(section = "2.2", id = "j") 
+   })
+   public void testApiTypeForArrayTypeReturn() throws Exception
+   {
+      assert getCurrentManager().resolveByType(Spider[].class).size() == 1;
+      Bean<Spider[]> spiders = getCurrentManager().resolveByType(Spider[].class).iterator().next();
+      assert spiders.getTypes().size() == 2;
+      assert spiders.getTypes().contains(Spider[].class);
+      assert spiders.getTypes().contains(Object.class);
+   }
+
+   @Test(groups = "producerMethod")
+   @SpecAssertion(section = "3.4.2", id = "be")
+   public void testBindingType() throws Exception
+   {
+      assert getCurrentManager().resolveByType(Tarantula.class, TAME_LITERAL).size() == 1;
+      Bean<Tarantula> tarantula = getCurrentManager().resolveByType(Tarantula.class, TAME_LITERAL).iterator().next();
+      assert tarantula.getBindings().size() == 1;
+      assert tarantula.getBindings().iterator().next().annotationType().equals(Tame.class);
+   }
+
+   @Test(groups = "producerMethod")
+   @SpecAssertion(section = "3.4.2", id = "ba")
+   public void testScopeType() throws Exception
+   {
+      assert getCurrentManager().resolveByType(DaddyLongLegs.class).size() == 1;
+      Bean<DaddyLongLegs> daddyLongLegs = getCurrentManager().resolveByType(DaddyLongLegs.class).iterator().next();
+      assert daddyLongLegs.getScopeType().equals(RequestScoped.class);
+   }
+
+   @Test(groups = "producerMethod")
+   @SpecAssertions({
+      @SpecAssertion(section = "3.4.2", id = "bc"),
+      @SpecAssertion(section = "2.5.3", id = "b")
+   })
+   public void testDeploymentType() throws Exception
+   {
+      assert getCurrentManager().resolveByType(LadybirdSpider.class).size() == 1;
+      Bean<LadybirdSpider> ladybirdSpider = getCurrentManager().resolveByType(LadybirdSpider.class).iterator().next();
+      assert ladybirdSpider.getDeploymentType().equals(SpiderDeploymentType.class);
+   }
+
+   @Test(groups = "producerMethod")
+   @SpecAssertions({
+      @SpecAssertion(section = "3.4.2", id = "bb"),
+      @SpecAssertion(section = "2.6.1", id = "b")
+   })
+   public void testNamedMethod() throws Exception
+   {
+      assert getCurrentManager().resolveByType(BlackWidow.class).size() == 1;
+      Bean<BlackWidow> blackWidowSpider = getCurrentManager().resolveByType(BlackWidow.class).iterator().next();
+      assert blackWidowSpider.getName().equals("blackWidow");
+   }
+
+   @Test(groups = "producerMethod")
+   @SpecAssertions({
+      @SpecAssertion(section = "3.4.2", id = "bb"),
+      @SpecAssertion(section = "2.6.1", id = "d"),
+      @SpecAssertion(section = "2.4.12", id = "a")
+   })
+   public void testDefaultNamedMethod() throws Exception
+   {
+      assert getCurrentManager().resolveByType(DaddyLongLegs.class).size() == 1;
+      Bean<DaddyLongLegs> daddyLongLegsSpider = getCurrentManager().resolveByType(DaddyLongLegs.class).iterator().next();
+      assert daddyLongLegsSpider.getName().equals("produceDaddyLongLegs");
+   }
+
+
+
+
+   // Review 2.2
+   @Test(groups = "producerMethod")
+   @SpecAssertions({ 
+      @SpecAssertion(section = "2.7.2", id = "b"), 
+      @SpecAssertion(section = "3.4.2", id = "ba"), 
+      @SpecAssertion(section = "2.4.5", id = "c"),
+      @SpecAssertion(section = "3.4.2", id = "bd")
+   })
+   public void testStereotypeSpecifiesScope() throws Exception
+   {
+      assert getCurrentManager().resolveByType(WolfSpider.class).size() == 1;
+      Bean<WolfSpider> wolfSpider = getCurrentManager().resolveByType(WolfSpider.class).iterator().next();
+      assert wolfSpider.getScopeType().equals(RequestScoped.class);
+   }
+
+   @Test(groups="underInvestigation")
+   @SpecAssertion(section = "4.2", id = "d")
+   public void testNonStaticProducerMethodNotInherited()
+   {
+      assert getCurrentManager().resolveByType(Egg.class, new AnnotationLiteral<Yummy>() {}).size() == 0;
+   }
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Spider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Spider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Spider.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,7 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+
+class Spider implements Animal
+{
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/SpiderDeploymentType.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/SpiderDeploymentType.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/SpiderDeploymentType.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,20 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.DeploymentType;
+
+ at Target( { TYPE, METHOD })
+ at Retention(RUNTIME)
+ at Documented
+ at DeploymentType
+ at interface SpiderDeploymentType
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/SpiderProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/SpiderProducer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/SpiderProducer.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,73 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+import javax.annotation.Named;
+import javax.context.RequestScoped;
+import javax.inject.Produces;
+
+ at AnotherDeploymentType
+class SpiderProducer
+{
+   
+   private static Spider[] ALL_SPIDERS = { new Tarantula(), new LadybirdSpider(), new DaddyLongLegs() };
+   
+   @Produces @Tame public Tarantula produceTameTarantula()
+   {
+      return new DefangedTarantula();
+   }
+   
+   @Produces public Tarantula produceTarantula()
+   {
+      return new Tarantula();
+   }
+   
+   @Produces public Spider getNullSpider()
+   {
+      return null;
+   }
+   
+   @Produces public FunnelWeaver<Spider> getFunnelWeaverSpider()
+   {
+      return new FunnelWeaver<Spider>();
+   }
+
+   @Produces public Animal makeASpider()
+   {
+      return new WolfSpider();
+   }
+   
+   @Produces public int getWolfSpiderSize()
+   {
+      return 4;
+   }
+   
+   @Produces public Spider[] getSpiders()
+   {
+      return ALL_SPIDERS;
+   }
+   
+   @Produces @Named @RequestScoped public DaddyLongLegs produceDaddyLongLegs()
+   {
+      return new DaddyLongLegs();
+   }
+
+   @Produces @Named @SpiderDeploymentType public LadybirdSpider getLadybirdSpider()
+   {
+      return new LadybirdSpider();
+   }
+
+   @Produces @Named("blackWidow") public BlackWidow produceBlackWidow()
+   {
+      return new BlackWidow();
+   }
+   
+   @Produces @AnimalStereotype public WolfSpider produceWolfSpider()
+   {
+      return new WolfSpider();
+   }
+   
+   @Produces public Bite getBite()
+   {
+      return new Bite() {};
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Tame.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Tame.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Tame.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,22 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+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 static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.BindingType;
+
+ at Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+ at interface Tame
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Tarantula.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Tarantula.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Tarantula.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+class Tarantula extends Spider implements DeadlySpider
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/WolfSpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/WolfSpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/WolfSpider.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+class WolfSpider implements Animal
+{
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Yummy.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Yummy.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/Yummy.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,22 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.definition;
+
+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 static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.BindingType;
+
+ at Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+ at interface Yummy
+{
+
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/FunnelWeaver.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/FunnelWeaver.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/FunnelWeaver.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.notBusinessMethod;
+
+class FunnelWeaver<T>
+{
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/NotABusinessMethodTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/NotABusinessMethodTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/NotABusinessMethodTest.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,22 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.notBusinessMethod;
+
+import javax.inject.DefinitionException;
+
+import org.hibernate.tck.annotations.SpecAssertion;
+import org.jboss.jsr299.tck.impl.packaging.Artifact;
+import org.jboss.jsr299.tck.impl.packaging.ExpectedDeploymentException;
+import org.testng.annotations.Test;
+
+ at Artifact
+ at ExpectedDeploymentException(DefinitionException.class)
+public class NotABusinessMethodTest
+{
+
+   @Test(groups = { "stub", "producerMethod", "enterpriseBeans" })
+   @SpecAssertion(section = "3.4", id = "d")
+   public void testProducerMethodIsNotBusinessMethod() throws Exception
+   {
+      assert false;
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/SpiderProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/SpiderProducer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/notBusinessMethod/SpiderProducer.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,14 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.notBusinessMethod;
+
+import javax.inject.Produces;
+
+class SpiderProducer
+{
+   
+   @Produces public FunnelWeaver<?> getAnotherFunnelWeaver()
+   {
+      return new FunnelWeaver<Object>();
+   }
+
+      
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedDisposes/ParameterAnnotatedDisposesTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedDisposes/ParameterAnnotatedDisposesTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedDisposes/ParameterAnnotatedDisposesTest.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,24 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.parameterAnnotatedDisposes;
+
+import javax.inject.DefinitionException;
+
+import org.hibernate.tck.annotations.SpecAssertion;
+import org.jboss.jsr299.tck.AbstractDeclarativeTest;
+import org.jboss.jsr299.tck.impl.packaging.Artifact;
+import org.jboss.jsr299.tck.impl.packaging.ExpectedDeploymentException;
+import org.testng.annotations.Test;
+
+ at Artifact
+ at ExpectedDeploymentException(DefinitionException.class)
+public class ParameterAnnotatedDisposesTest extends AbstractDeclarativeTest
+{
+   
+
+   @Test(groups = "producerMethod")
+   @SpecAssertion(section = "3.4.2", id = "d")
+   public void testProducerMethodWithParameterAnnotatedDisposes() throws Exception
+   {
+      assert false;
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedDisposes/SpiderProducer_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedDisposes/SpiderProducer_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedDisposes/SpiderProducer_Broken.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,17 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.parameterAnnotatedDisposes;
+
+import javax.inject.Disposes;
+import javax.inject.Produces;
+import javax.inject.Production;
+
+ at Production
+class SpiderProducer_Broken
+{
+   
+   @Produces
+   public String dispose(@Disposes String foo)
+   {
+      return "foo";
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedObserves/ParameterAnnotatedObservesTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedObserves/ParameterAnnotatedObservesTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedObserves/ParameterAnnotatedObservesTest.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,23 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.parameterAnnotatedObserves;
+
+import javax.inject.DefinitionException;
+
+import org.hibernate.tck.annotations.SpecAssertion;
+import org.jboss.jsr299.tck.AbstractDeclarativeTest;
+import org.jboss.jsr299.tck.impl.packaging.Artifact;
+import org.jboss.jsr299.tck.impl.packaging.ExpectedDeploymentException;
+import org.testng.annotations.Test;
+
+ at Artifact
+ at ExpectedDeploymentException(DefinitionException.class)
+public class ParameterAnnotatedObservesTest extends AbstractDeclarativeTest
+{
+   
+   @Test(groups = "producerMethod")
+   @SpecAssertion(section = "3.4.2", id = "e")
+   public void testProducerMethodWithParameterAnnotatedObserves() throws Exception
+   {
+      assert false;
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedObserves/SpiderProducer_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedObserves/SpiderProducer_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parameterAnnotatedObserves/SpiderProducer_Broken.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,17 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.parameterAnnotatedObserves;
+
+import javax.event.Observes;
+import javax.inject.Produces;
+import javax.inject.Production;
+
+ at Production
+class SpiderProducer_Broken
+{
+   
+   @Produces
+   public String observe(@Observes String foo)
+   {
+      return "foo";
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/FunnelWeaver.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/FunnelWeaver.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/FunnelWeaver.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.parametermizedTypeWithTypeParameter;
+
+class FunnelWeaver<T>
+{
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/ParameterizedTypeWithTypeParameterTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/ParameterizedTypeWithTypeParameterTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/ParameterizedTypeWithTypeParameterTest.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,24 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.parametermizedTypeWithTypeParameter;
+
+import javax.inject.DefinitionException;
+
+import org.hibernate.tck.annotations.SpecAssertion;
+import org.jboss.jsr299.tck.AbstractDeclarativeTest;
+import org.jboss.jsr299.tck.impl.packaging.Artifact;
+import org.jboss.jsr299.tck.impl.packaging.ExpectedDeploymentException;
+import org.testng.annotations.Test;
+
+ at Artifact
+ at ExpectedDeploymentException(DefinitionException.class)
+public class ParameterizedTypeWithTypeParameterTest extends AbstractDeclarativeTest
+{
+   
+
+   @Test(groups = "producerMethod")
+   @SpecAssertion(section = "3.4", id = "i")
+   public void testParameterizedReturnTypeWithTypeParameter() throws Exception
+   {
+      assert false;
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/SpiderProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/SpiderProducer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithTypeParameter/SpiderProducer.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,13 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.parametermizedTypeWithTypeParameter;
+
+import javax.inject.Produces;
+
+class SpiderProducer
+{
+   
+   @Produces public <T> FunnelWeaver<T> getFunnelWeaver()
+   {
+      return new FunnelWeaver<T>();
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/FunnelWeaver.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/FunnelWeaver.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/FunnelWeaver.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.parametermizedTypeWithWildcard;
+
+class FunnelWeaver<T>
+{
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/PamaterizedTypeWithWildcardTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/PamaterizedTypeWithWildcardTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/PamaterizedTypeWithWildcardTest.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,23 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.parametermizedTypeWithWildcard;
+
+import javax.inject.DefinitionException;
+
+import org.hibernate.tck.annotations.SpecAssertion;
+import org.jboss.jsr299.tck.AbstractDeclarativeTest;
+import org.jboss.jsr299.tck.impl.packaging.Artifact;
+import org.jboss.jsr299.tck.impl.packaging.ExpectedDeploymentException;
+import org.testng.annotations.Test;
+
+ at Artifact
+ at ExpectedDeploymentException(DefinitionException.class)
+public class PamaterizedTypeWithWildcardTest extends AbstractDeclarativeTest
+{
+  
+   @Test(groups = "producerMethod")
+   @SpecAssertion(section = "3.4", id = "h")
+   public void testParameterizedReturnTypeWithWildcard() throws Exception
+   {
+      assert false;
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/SpiderProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/SpiderProducer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/parametermizedTypeWithWildcard/SpiderProducer.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,13 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.parametermizedTypeWithWildcard;
+
+import javax.inject.Produces;
+
+class SpiderProducer
+{
+   
+   @Produces public FunnelWeaver<?> getFunnelWeaver()
+   {
+      return new FunnelWeaver<Object>();
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/Animal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/Animal.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/Animal.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.stereotypeEnforcesRequiredTypes;
+
+interface Animal
+{
+
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/AnimalStereotype.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/AnimalStereotype.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/AnimalStereotype.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,21 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.stereotypeEnforcesRequiredTypes;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.annotation.Stereotype;
+import javax.context.RequestScoped;
+
+ at Stereotype(requiredTypes=Animal.class)
+ at Target( { TYPE, METHOD, FIELD })
+ at Retention(RUNTIME)
+ at RequestScoped
+ at interface AnimalStereotype
+{
+
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/SpiderProducer_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/SpiderProducer_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/SpiderProducer_Broken.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,15 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.stereotypeEnforcesRequiredTypes;
+
+import javax.inject.Produces;
+import javax.inject.Production;
+
+ at Production
+class SpiderProducer_Broken
+{
+   
+   @Produces @AnimalStereotype public Integer produceInteger()
+   {
+      return 1;
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/StereotypeEnforcesRequiredTypesTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/StereotypeEnforcesRequiredTypesTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/unit/implementation/producer/method/stereotypeEnforcesRequiredTypes/StereotypeEnforcesRequiredTypesTest.java	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,29 @@
+package org.jboss.jsr299.tck.unit.implementation.producer.method.stereotypeEnforcesRequiredTypes;
+
+import javax.inject.DefinitionException;
+
+import org.hibernate.tck.annotations.SpecAssertion;
+import org.hibernate.tck.annotations.SpecAssertions;
+import org.jboss.jsr299.tck.AbstractDeclarativeTest;
+import org.jboss.jsr299.tck.impl.packaging.Artifact;
+import org.jboss.jsr299.tck.impl.packaging.ExpectedDeploymentException;
+import org.testng.annotations.Test;
+
+ at Artifact
+ at ExpectedDeploymentException(DefinitionException.class)
+public class StereotypeEnforcesRequiredTypesTest extends AbstractDeclarativeTest
+{
+   
+
+   @Test(groups = "producerMethod")
+   @SpecAssertions({ 
+      @SpecAssertion(section = "2.7.2", id = "b"), 
+      @SpecAssertion(section = "3.4.2", id = "bc"), 
+      @SpecAssertion(section = "2.7.4", id = "b")
+   })
+   public void testStereotypeEnforcesTypes() throws Exception
+   {
+      assert false;
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/beans.xml
===================================================================
--- tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/beans.xml	                        (rev 0)
+++ tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/beans.xml	2009-02-20 19:30:00 UTC (rev 1616)
@@ -0,0 +1,9 @@
+<Beans xmlns="urn:java:ee"
+       xmlns:test="urn:java:org.jboss.jsr299.tck.unit.implementation.producer.method.definition"> 
+   <Deploy>
+      <Standard />
+      <Production />
+      <test:AnotherDeploymentType />
+      <test:SpiderDeploymentType />
+   </Deploy>
+</Beans>


Property changes on: tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/unit/implementation/producer/method/definition/beans.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain




More information about the weld-commits mailing list