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

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Wed Aug 12 12:19:51 EDT 2009


Author: pete.muir at jboss.org
Date: 2009-08-12 12:19:48 -0400 (Wed, 12 Aug 2009)
New Revision: 3468

Added:
   ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/NewResolvableTransformer.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/NewLionConsumer.java
Modified:
   ri/trunk/api/src/main/java/javax/enterprise/inject/New.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/NewEnterpriseBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/NewSimpleBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/NewLiteral.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ForwardingResolvable.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/Resolvable.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ResolvableFactory.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeBeanResolver.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/deployment/structure/AccessibleManagerResolutionTest.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/NewEnterpriseBeanTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/literals/NewLiteral.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/BindingDefinitionTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/FoxLocal.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/InitializerSimpleBeanLocal.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/LionLocal.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/MonkeyLocal.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/NewEnterpriseBeanICTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/NewEnterpriseBeanTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/OrderLocal.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/WrappedEnterpriseBeanLocal.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/ExplicitContructorSimpleBean.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/Fox.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/InitializerSimpleBean.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/Lion.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/NewSimpleBeanTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/Order.java
Log:
WBRI-320, add support for @New(value=XXX.class)

Modified: ri/trunk/api/src/main/java/javax/enterprise/inject/New.java
===================================================================
--- ri/trunk/api/src/main/java/javax/enterprise/inject/New.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ ri/trunk/api/src/main/java/javax/enterprise/inject/New.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -40,4 +40,7 @@
 @BindingType
 public @interface New
 {
+   
+   Class<?> value() default New.class;
+   
 }

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -489,6 +489,7 @@
    public void addAccessibleBeanManager(BeanManagerImpl accessibleBeanManager)
    {
       accessibleManagers.add(accessibleBeanManager);
+      beanResolver.clear();
    }
    
    protected Set<BeanManagerImpl> getAccessibleManagers()

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/NewEnterpriseBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/NewEnterpriseBean.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/NewEnterpriseBean.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -17,7 +17,6 @@
 package org.jboss.webbeans.bean;
 
 import java.lang.annotation.Annotation;
-import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -35,7 +34,6 @@
  */
 public class NewEnterpriseBean<T> extends EnterpriseBean<T> implements NewBean
 {
-   private static Set<Annotation> NEW_BINDING_SET = new HashSet<Annotation>(Arrays.asList(new NewLiteral()));
 
    /**
     * Creates an instance of a NewEnterpriseBean from an annotated class
@@ -48,6 +46,8 @@
    {
       return new NewEnterpriseBean<T>(clazz, manager, environment);
    }
+   
+   private Set<Annotation> bindings;
 
    /**
     * Protected constructor
@@ -55,9 +55,19 @@
     * @param type An annotated class
     * @param manager The Web Beans manager
     */
-   protected NewEnterpriseBean(WBClass<T> type, BeanManagerImpl manager, BeanDeployerEnvironment environment)
+   protected NewEnterpriseBean(final WBClass<T> type, BeanManagerImpl manager, BeanDeployerEnvironment environment)
    {
       super(type, manager, environment);
+      this.bindings = new HashSet<Annotation>();
+      this.bindings.add(new NewLiteral()
+      {
+         
+         public Class<?> value()
+         {
+            return type.getJavaClass();
+         }
+         
+      });
    }
 
    /**
@@ -96,7 +106,7 @@
    @Override
    public Set<Annotation> getBindings()
    {
-      return NEW_BINDING_SET;
+      return bindings;
    }
    
    @Override

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/NewSimpleBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/NewSimpleBean.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/NewSimpleBean.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -17,7 +17,6 @@
 package org.jboss.webbeans.bean;
 
 import java.lang.annotation.Annotation;
-import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -34,7 +33,6 @@
  */
 public class NewSimpleBean<T> extends SimpleBean<T> implements NewBean
 {
-   private static Set<Annotation> NEW_BINDING_SET = new HashSet<Annotation>(Arrays.asList(new NewLiteral()));
 
    /**
     * Creates an instance of a NewSimpleBean from an annotated class
@@ -47,6 +45,8 @@
    {
       return new NewSimpleBean<T>(clazz, manager);
    }
+   
+   private Set<Annotation> bindings;
 
    /**
     * Protected constructor
@@ -54,9 +54,19 @@
     * @param type An annotated class
     * @param manager The Web Beans manager
     */
-   protected NewSimpleBean(WBClass<T> type, BeanManagerImpl manager)
+   protected NewSimpleBean(final WBClass<T> type, BeanManagerImpl manager)
    {
       super(type, manager);
+      this.bindings = new HashSet<Annotation>();
+      this.bindings.add(new NewLiteral()
+      {
+         
+         public Class<?> value()
+         {
+            return type.getJavaClass();
+         }
+         
+      });
    }
 
    /**
@@ -95,7 +105,7 @@
    @Override
    public Set<Annotation> getBindings()
    {
-      return NEW_BINDING_SET;
+      return bindings;
    }
 
    @Override

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/NewLiteral.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/NewLiteral.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/NewLiteral.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -24,4 +24,12 @@
  * 
  * @author Pete Muir
  */
-public class NewLiteral extends AnnotationLiteral<New> implements New {}
+public class NewLiteral extends AnnotationLiteral<New> implements New 
+{
+
+   public Class<?> value()
+   {
+      return New.class;
+   }
+
+}

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ForwardingResolvable.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ForwardingResolvable.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ForwardingResolvable.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -44,5 +44,33 @@
    {
       return delegate().isAssignableTo(clazz);
    }
+   
+   public <A extends Annotation> A getAnnotation(Class<A> annotationType)
+   {
+      return delegate().getAnnotation(annotationType);
+   }
+   
+   public Class<?> getJavaClass()
+   {
+      return delegate().getJavaClass();
+   }
 
+   @Override
+   public boolean equals(Object obj)
+   {
+      return delegate().equals(obj);
+   }
+
+   @Override
+   public int hashCode()
+   {
+      return delegate().hashCode();
+   }
+
+   @Override
+   public String toString()
+   {
+      return delegate().toString();
+   }
+
 }

Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/NewResolvableTransformer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/NewResolvableTransformer.java	                        (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/NewResolvableTransformer.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -0,0 +1,88 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,  
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.webbeans.resolution;
+
+import java.lang.annotation.Annotation;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.inject.New;
+
+import org.jboss.webbeans.literal.NewLiteral;
+
+/**
+ * @author pmuir
+ *
+ */
+public class NewResolvableTransformer implements ResolvableTransformer
+{
+
+   public Resolvable transform(final Resolvable element)
+   {
+      if (element.isAnnotationPresent(New.class) && element.getJavaClass() != null)
+      {
+         New originalNewAnnotation = element.getAnnotation(New.class);
+         if (originalNewAnnotation.value().equals(New.class))
+         {
+            final Set<Annotation> bindings = new HashSet<Annotation>(element.getBindings());
+            final New newNewAnnotation = new NewLiteral()
+            {
+               
+               @Override
+               public Class<?> value()
+               {
+                  return element.getJavaClass();
+               }
+               
+            };
+            bindings.remove(originalNewAnnotation);
+            bindings.add(newNewAnnotation);
+            return new ForwardingResolvable()
+            {
+               
+               @Override
+               protected Resolvable delegate()
+               {
+                  return element;
+               }
+               
+               @Override
+               public Set<Annotation> getBindings()
+               {
+                  return bindings;
+               }
+               
+               @Override
+               public <A extends Annotation> A getAnnotation(Class<A> annotationType)
+               {
+                  if (annotationType.equals(New.class))
+                  {
+                     return annotationType.cast(newNewAnnotation);
+                  }
+                  else
+                  {
+                     return delegate().getAnnotation(annotationType);
+                  }
+               }
+               
+            };
+         }
+      }
+      return element;
+   }
+
+}


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

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/Resolvable.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/Resolvable.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/Resolvable.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -21,20 +21,62 @@
 import java.util.Set;
 
 /**
- * Something that is resovable by the resolver
+ * Something that is resovable by the resolver. A resolvable is defined by it's
+ * bindings and type closure
  * 
  * @author pmuir
- *
+ * 
  */
 public interface Resolvable
 {
-   
+
+   /**
+    * Get the bindings to use for resolution. @Current will be returned if no
+    * bindings were specified
+    * 
+    * @return the bindings
+    */
    public Set<Annotation> getBindings();
-   
+
+   /**
+    * Check if an annotation is present
+    * 
+    * @param annotationType the annotation type to look for
+    * @return true if it is present
+    */
    public boolean isAnnotationPresent(Class<? extends Annotation> annotationType);
    
+   /**
+    * Get the instance of the Annotation
+    * 
+    * @param <A> the type of the annotation
+    * @param annotationType the type of the annotation
+    * @return the annotation instance
+    */
+   public <A extends Annotation> A getAnnotation(Class<A> annotationType); 
+
+   /**
+    * Check if this resolvable's type closure includes the clazz passed as an
+    * argument
+    * 
+    * @param clazz the class to check for
+    * @return true if clazz is present
+    */
    public boolean isAssignableTo(Class<?> clazz);
-   
+
+   /**
+    * The type closure of this resolvable
+    * 
+    * @return
+    */
    public Set<Type> getTypeClosure();
 
+   /**
+    * Get the underlying java class used to generate this resolvable, or null
+    * if no java class was used
+    * 
+    * @return the java class
+    */
+   public Class<?> getJavaClass();
+
 }

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ResolvableFactory.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ResolvableFactory.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ResolvableFactory.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -19,7 +19,9 @@
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
 import org.jboss.webbeans.introspector.WBAnnotated;
@@ -59,7 +61,7 @@
    {
 
       private final Set<Annotation> bindings;
-      private final Set<Class<? extends Annotation>> annotationTypes;
+      private final Map<Class<? extends Annotation>, Annotation> annotations;
       private final Set<Type> typeClosure;
 
       public ResolvableImpl(Set<Annotation> bindings, Set<Type> typeClosure)
@@ -69,11 +71,11 @@
          {
             this.bindings.add(new CurrentLiteral());
          }
-         this.annotationTypes = new HashSet<Class<? extends Annotation>>();
+         this.annotations = new HashMap<Class<? extends Annotation>, Annotation>();
          this.typeClosure = typeClosure;
          for (Annotation annotation : bindings)
          {
-            annotationTypes.add(annotation.annotationType());
+            annotations.put(annotation.annotationType(), annotation);
          }
       }
 
@@ -84,7 +86,7 @@
 
       public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
       {
-         return annotationTypes.contains(annotationType);
+         return annotations.containsKey(annotationType);
       }
 
       public Set<Type> getTypeClosure()
@@ -96,6 +98,17 @@
       {
          return Reflections.isAssignableFrom(clazz, typeClosure);
       }
+      
+      public <A extends Annotation> A getAnnotation(Class<A> annotationType)
+      {
+         return (A) annotations.get(annotationType);
+      }
+      
+      public Class<?> getJavaClass()
+      {
+         // No underlying java class
+         return null;
+      }
 
       @Override
       public String toString()

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeBeanResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeBeanResolver.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeBeanResolver.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -47,6 +47,7 @@
       TRANSFORMERS = new HashSet<ResolvableTransformer>();
       TRANSFORMERS.add(EventBean.TRANSFORMER);
       TRANSFORMERS.add(InstanceBean.TRANSFORMER);
+      TRANSFORMERS.add(new NewResolvableTransformer());
    }
 
    public TypeSafeBeanResolver(BeanManagerImpl manager, Iterable<T> beans)

Modified: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/deployment/structure/AccessibleManagerResolutionTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/deployment/structure/AccessibleManagerResolutionTest.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/deployment/structure/AccessibleManagerResolutionTest.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -1,7 +1,11 @@
 package org.jboss.webbeans.test.unit.deployment.structure;
 
+import java.util.Set;
+
+import javax.enterprise.inject.spi.Bean;
+
+import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.ContextualIdStore;
-import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.bean.RIBean;
 import org.jboss.webbeans.bean.SimpleBean;
 import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
@@ -41,7 +45,7 @@
    }
    
    @Test
-   public void testAccessibleSingleLevel()
+   public void testAccessibleDynamicallySingleLevel()
    {
       BeanManagerImpl root = BeanManagerImpl.newRootManager(services);
       BeanManagerImpl child = BeanManagerImpl.newRootManager(services);
@@ -49,6 +53,7 @@
       assert root.getBeans(Cow.class).size() == 1;
       assert child.getBeans(Cow.class).size() == 0;
       child.addAccessibleBeanManager(root);
+      Set<Bean<?>> beans = child.getBeans(Cow.class);
       assert child.getBeans(Cow.class).size() == 1;
       addBean(child, Chicken.class);
       assert child.getBeans(Chicken.class).size() == 1;

Modified: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/NewEnterpriseBeanTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/NewEnterpriseBeanTest.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/NewEnterpriseBeanTest.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -19,7 +19,15 @@
 public class NewEnterpriseBeanTest extends AbstractWebBeansTest
 {
    
-   private static final New NEW_LITERAL = new NewLiteral();
+   private static final New NEW_LITERAL = new NewLiteral()
+   {
+      
+      public java.lang.Class<?> value() 
+      {
+         return WrappedEnterpriseBean.class;
+      }
+      
+   };
    
    private EnterpriseBean<WrappedEnterpriseBeanLocal> wrappedEnterpriseBean;
    private NewEnterpriseBean<WrappedEnterpriseBeanLocal> newEnterpriseBean;
@@ -40,7 +48,7 @@
    public void testNewBeanHasImplementationClassOfInjectionPointType()
    {
       initNewBean();
-      assert newEnterpriseBean.getType().equals(WrappedEnterpriseBeanLocal.class);
+      assert newEnterpriseBean.getType().equals(WrappedEnterpriseBean.class);
    }
 
    @Test(groups = { "new" })

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/literals/NewLiteral.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/literals/NewLiteral.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/literals/NewLiteral.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -3,7 +3,7 @@
 import javax.enterprise.inject.AnnotationLiteral;
 import javax.enterprise.inject.New;
 
-public class NewLiteral extends AnnotationLiteral<New> implements New
+public abstract class NewLiteral extends AnnotationLiteral<New> implements New
 {
    
 }

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/BindingDefinitionTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/BindingDefinitionTest.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/BindingDefinitionTest.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -3,16 +3,17 @@
 import java.lang.annotation.Annotation;
 import java.util.Set;
 
+import javax.enterprise.inject.New;
 import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.InjectionPoint;
 
-import org.jboss.test.audit.annotations.SpecAssertion;
-import org.jboss.test.audit.annotations.SpecAssertions;
-import org.jboss.test.audit.annotations.SpecVersion;
 import org.jboss.jsr299.tck.AbstractJSR299Test;
 import org.jboss.jsr299.tck.literals.AnyLiteral;
 import org.jboss.jsr299.tck.literals.CurrentLiteral;
 import org.jboss.jsr299.tck.literals.NewLiteral;
+import org.jboss.test.audit.annotations.SpecAssertion;
+import org.jboss.test.audit.annotations.SpecAssertions;
+import org.jboss.test.audit.annotations.SpecVersion;
 import org.jboss.testharness.impl.packaging.Artifact;
 import org.testng.annotations.Test;
 
@@ -49,9 +50,18 @@
    @SpecAssertion(section = "2.3.1", id = "a0")
    public void testNewBindingAndAnyBindingMutualExclusive()
    {
-      Bean<OrderProcessor> order = getBeans(OrderProcessor.class, new NewLiteral()).iterator().next();
+      New newOrderProcessor = new NewLiteral()
+      {
+         
+         public Class<?> value()
+         {
+            return OrderProcessor.class;
+         }
+      };
+      assert getBeans(OrderProcessor.class, newOrderProcessor).size() == 1;
+      Bean<OrderProcessor> order = getBeans(OrderProcessor.class, newOrderProcessor).iterator().next();
       assert order.getBindings().size() == 1;
-      assert order.getBindings().iterator().next().equals(new NewLiteral());
+      assert order.getBindings().iterator().next().equals(newOrderProcessor);
    }
 
    @Test(groups = { "annotationDefinition", "rewrite" })

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/FoxLocal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/FoxLocal.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/FoxLocal.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -1,7 +1,10 @@
 package org.jboss.jsr299.tck.tests.implementation.enterprise.newBean;
 
 import javax.ejb.Local;
+import javax.enterprise.inject.New;
 
+import org.jboss.jsr299.tck.literals.NewLiteral;
+
 @Local
 public interface FoxLocal
 {
@@ -19,5 +22,14 @@
    public void disposeLitter(Litter litter);
 
    public boolean isLitterDisposed();
+   
+   public static final New NEW = new NewLiteral()
+   {
+      
+      public Class<?> value()
+      {
+         return Fox.class;
+      }
+   };
 
 }
\ No newline at end of file

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/InitializerSimpleBeanLocal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/InitializerSimpleBeanLocal.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/InitializerSimpleBeanLocal.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -1,10 +1,22 @@
 package org.jboss.jsr299.tck.tests.implementation.enterprise.newBean;
 
 import javax.ejb.Local;
+import javax.enterprise.inject.New;
 
+import org.jboss.jsr299.tck.literals.NewLiteral;
+
 @Local
 public interface InitializerSimpleBeanLocal
 {
+   public static final New NEW = new NewLiteral()
+   {
+      
+      public Class<?> value()
+      {
+         return InitializerSimpleBean.class;
+      }
+   };
+   
    public void initializer();
    public void businessMethod();
    public int getInitializerCalls();

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/LionLocal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/LionLocal.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/LionLocal.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -1,9 +1,21 @@
 package org.jboss.jsr299.tck.tests.implementation.enterprise.newBean;
 
 import javax.ejb.Local;
+import javax.enterprise.inject.New;
 
+import org.jboss.jsr299.tck.literals.NewLiteral;
+
 @Local
 public interface LionLocal
 {
    
+   public static final New NEW = new NewLiteral()
+   {
+      
+      public Class<?> value()
+      {
+         return Lion.class;
+      }
+   };
+   
 }
\ No newline at end of file

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/MonkeyLocal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/MonkeyLocal.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/MonkeyLocal.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -1,9 +1,21 @@
 package org.jboss.jsr299.tck.tests.implementation.enterprise.newBean;
 
 import javax.ejb.Local;
+import javax.enterprise.inject.New;
 
+import org.jboss.jsr299.tck.literals.NewLiteral;
+
 @Local
 public interface MonkeyLocal
 {
+   
+   public static final New NEW = new NewLiteral()
+   {
+      
+      public Class<?> value()
+      {
+         return Monkey.class;
+      }
+   };
 
 }

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/NewEnterpriseBeanICTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/NewEnterpriseBeanICTest.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/NewEnterpriseBeanICTest.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -7,7 +7,6 @@
 import javax.enterprise.inject.spi.Bean;
 
 import org.jboss.jsr299.tck.AbstractJSR299Test;
-import org.jboss.jsr299.tck.literals.NewLiteral;
 import org.jboss.test.audit.annotations.SpecAssertion;
 import org.jboss.test.audit.annotations.SpecVersion;
 import org.jboss.testharness.impl.packaging.Artifact;
@@ -22,13 +21,13 @@
 @SpecVersion("20090625")
 public class NewEnterpriseBeanICTest extends AbstractJSR299Test
 {
-
+   
    @Test(groups = { "new" })
    @SpecAssertion(section = "3.10", id = "m")
    public void testNewBeanHasSameInitializers()
    {
       InitializerSimpleBeanLocal bean = getInstanceByType(InitializerSimpleBeanLocal.class);
-      InitializerSimpleBeanLocal newBean = getInstanceByType(InitializerSimpleBeanLocal.class,new NewLiteral());
+      InitializerSimpleBeanLocal newBean = getInstanceByType(InitializerSimpleBeanLocal.class, InitializerSimpleBeanLocal.NEW);
       assert bean != newBean;
       assert bean.getInitializerCalls() == 2;
    }
@@ -44,7 +43,7 @@
    public void testNewBeanHasNoProducerMethods() throws Exception
    {
       FoxLocal fox = getInstanceByType(FoxLocal.class);
-      FoxLocal newFox = getInstanceByType(FoxLocal.class,new NewLiteral());
+      FoxLocal newFox = getInstanceByType(FoxLocal.class, FoxLocal.NEW);
       fox.setNextLitterSize(3);
       newFox.setNextLitterSize(5);
       Litter theOnlyLitter = getInstanceByType(Litter.class,new AnnotationLiteral<Tame>(){});
@@ -56,7 +55,7 @@
    public void testNewBeanHasNoDisposalMethods() throws Exception
    {
       FoxLocal fox = getInstanceByType(FoxLocal.class);
-      FoxLocal newFox = getInstanceByType(FoxLocal.class,new NewLiteral());
+      FoxLocal newFox = getInstanceByType(FoxLocal.class, FoxLocal.NEW);
       Set<Bean<Litter>> beans = getBeans(Litter.class, new AnnotationLiteral<Tame>() {});
       assert beans.size() == 1;
       Bean<Litter> litterBean = beans.iterator().next();

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/NewEnterpriseBeanTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/NewEnterpriseBeanTest.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/NewEnterpriseBeanTest.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -12,7 +12,6 @@
 import org.jboss.jsr299.tck.AbstractJSR299Test;
 import org.jboss.jsr299.tck.literals.AnyLiteral;
 import org.jboss.jsr299.tck.literals.CurrentLiteral;
-import org.jboss.jsr299.tck.literals.NewLiteral;
 import org.jboss.test.audit.annotations.SpecAssertion;
 import org.jboss.test.audit.annotations.SpecAssertions;
 import org.jboss.test.audit.annotations.SpecVersion;
@@ -34,29 +33,28 @@
    @SpecAssertion(section = "3.10", id = "p")
    public void testNewBeanIsDependentScoped()
    {
-      Set<Bean<WrappedEnterpriseBeanLocal>> beans = getBeans(WrappedEnterpriseBeanLocal.class, new NewLiteral());
+      Set<Bean<WrappedEnterpriseBeanLocal>> beans = getBeans(WrappedEnterpriseBeanLocal.class, WrappedEnterpriseBeanLocal.NEW);
       assert beans.size() == 1;
       newEnterpriseBean = beans.iterator().next();
       assert Dependent.class.equals(newEnterpriseBean.getScopeType());
    }
 
-   @Test(groups = { "new", "broken" })
+   @Test(groups = { "new" })
    @SpecAssertion(section = "3.10", id = "r")
-   // @New has a member value now!
    public void testNewBeanIsHasOnlyNewBinding()
    {
-      Set<Bean<WrappedEnterpriseBeanLocal>> beans = getBeans(WrappedEnterpriseBeanLocal.class, new NewLiteral());
+      Set<Bean<WrappedEnterpriseBeanLocal>> beans = getBeans(WrappedEnterpriseBeanLocal.class, WrappedEnterpriseBeanLocal.NEW);
       assert beans.size() == 1;
       newEnterpriseBean = beans.iterator().next();
       assert newEnterpriseBean.getBindings().size() == 1;
-      assert newEnterpriseBean.getBindings().iterator().next().annotationType().equals(new NewLiteral().annotationType());
+      assert newEnterpriseBean.getBindings().iterator().next().annotationType().equals(New.class);
    }
 
    @Test(groups = { "new" })
    @SpecAssertion(section = "3.10", id = "s")
    public void testNewBeanHasNoBeanELName()
    {
-      Set<Bean<WrappedEnterpriseBeanLocal>> beans = getBeans(WrappedEnterpriseBeanLocal.class, new NewLiteral());
+      Set<Bean<WrappedEnterpriseBeanLocal>> beans = getBeans(WrappedEnterpriseBeanLocal.class, WrappedEnterpriseBeanLocal.NEW);
       assert beans.size() == 1;
       newEnterpriseBean = beans.iterator().next();
       assert newEnterpriseBean.getName() == null;
@@ -67,7 +65,7 @@
    public void testNewBeanHasNoStereotypes()
    {
       Bean<MonkeyLocal> monkeyBean = getBeans(MonkeyLocal.class).iterator().next();
-      Bean<MonkeyLocal> newMonkeyBean = getBeans(MonkeyLocal.class, new NewLiteral()).iterator().next();
+      Bean<MonkeyLocal> newMonkeyBean = getBeans(MonkeyLocal.class, MonkeyLocal.NEW).iterator().next();
       assert monkeyBean.getScopeType().equals(RequestScoped.class);
       assert newMonkeyBean.getScopeType().equals(Dependent.class);
       assert monkeyBean.getName().equals("monkey");
@@ -89,25 +87,25 @@
    public void testForEachEnterpriseBeanANewBeanExists()
    {
       Bean<OrderLocal> orderBean = getBeans(OrderLocal.class).iterator().next();
-      Bean<OrderLocal> newOrderBean = getBeans(OrderLocal.class, new NewLiteral()).iterator().next();
+      Bean<OrderLocal> newOrderBean = getBeans(OrderLocal.class, OrderLocal.NEW).iterator().next();
       assert orderBean.getBindings().size() == 2;
       assert orderBean.getBindings().contains(new CurrentLiteral());
       assert orderBean.getBindings().contains(new AnyLiteral());
       
-      assert getBeans(OrderLocal.class, new NewLiteral()).size() == 1;
+      assert getBeans(OrderLocal.class, OrderLocal.NEW).size() == 1;
       assert newOrderBean.getBindings().size() == 1;
       assert newOrderBean.getBindings().iterator().next().annotationType().equals(New.class);
       
       assert orderBean.getTypes().equals(newOrderBean.getTypes());
       
       Bean<LionLocal> lionBean = getBeans(LionLocal.class, TAME_LITERAL).iterator().next();
-      Bean<LionLocal> newLionBean = getBeans(LionLocal.class, new NewLiteral()).iterator().next();
+      Bean<LionLocal> newLionBean = getBeans(LionLocal.class, LionLocal.NEW).iterator().next();
       assert getBeans(LionLocal.class, TAME_LITERAL).size() == 1;
       assert lionBean.getBindings().size() == 2;
       assert lionBean.getBindings().contains(TAME_LITERAL);
       assert lionBean.getBindings().contains(new AnyLiteral());
       
-      assert getBeans(LionLocal.class, new NewLiteral()).size() == 1;
+      assert getBeans(LionLocal.class, LionLocal.NEW).size() == 1;
       assert newLionBean.getBindings().size() == 1;
       assert newLionBean.getBindings().iterator().next().annotationType().equals(New.class);
       

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/OrderLocal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/OrderLocal.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/OrderLocal.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -1,9 +1,21 @@
 package org.jboss.jsr299.tck.tests.implementation.enterprise.newBean;
 
 import javax.ejb.Local;
+import javax.enterprise.inject.New;
 
+import org.jboss.jsr299.tck.literals.NewLiteral;
+
 @Local
 public interface OrderLocal
 {
    
+   public static final New NEW = new NewLiteral()
+   {
+      
+      public Class<?> value()
+      {
+         return Order.class;
+      }
+   };
+   
 }
\ No newline at end of file

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/WrappedEnterpriseBeanLocal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/WrappedEnterpriseBeanLocal.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/newBean/WrappedEnterpriseBeanLocal.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -1,9 +1,21 @@
 package org.jboss.jsr299.tck.tests.implementation.enterprise.newBean;
 
 import javax.ejb.Local;
+import javax.enterprise.inject.New;
 
+import org.jboss.jsr299.tck.literals.NewLiteral;
+
 @Local
 public interface WrappedEnterpriseBeanLocal
 {
    
+   public static final New NEW = new NewLiteral()
+   {
+      
+      public Class<?> value()
+      {
+         return WrappedEnterpriseBean.class;
+      }
+   };
+   
 }
\ No newline at end of file

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/ExplicitContructorSimpleBean.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/ExplicitContructorSimpleBean.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/ExplicitContructorSimpleBean.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -4,7 +4,10 @@
 
 import javax.enterprise.context.SessionScoped;
 import javax.enterprise.inject.Named;
+import javax.enterprise.inject.New;
 
+import org.jboss.jsr299.tck.literals.NewLiteral;
+
 @SessionScoped
 @Named("Fred")
 class ExplicitContructorSimpleBean implements Serializable
@@ -12,6 +15,15 @@
    private static final long serialVersionUID = 1L;
    private static int constructorCalls = 0;
    
+   public static final New NEW = new NewLiteral()
+   {
+      
+      public Class<?> value()
+      {
+         return ExplicitContructorSimpleBean.class;
+      }
+   };
+   
    public ExplicitContructorSimpleBean() {
       constructorCalls++;
    }

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/Fox.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/Fox.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/Fox.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -2,11 +2,25 @@
 
 import javax.enterprise.event.Observes;
 import javax.enterprise.inject.Disposes;
+import javax.enterprise.inject.New;
 import javax.enterprise.inject.Produces;
 
+import org.jboss.jsr299.tck.literals.NewLiteral;
+
 @AnimalStereotype
 class Fox
 {
+   
+   public static final New NEW = new NewLiteral()
+   {
+      
+      public Class<?> value()
+      {
+         return Fox.class;
+      }
+      
+   };
+   
    @Produces
    private Den den = new Den("FoxDen");
    

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/InitializerSimpleBean.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/InitializerSimpleBean.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/InitializerSimpleBean.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -6,11 +6,25 @@
 import javax.enterprise.inject.Current;
 import javax.enterprise.inject.Initializer;
 import javax.enterprise.inject.Named;
+import javax.enterprise.inject.New;
 
+import org.jboss.jsr299.tck.literals.NewLiteral;
+
 @SessionScoped
 @Named("Charlie")
 class InitializerSimpleBean implements Serializable
 {
+   
+   public static final New NEW = new NewLiteral()
+   {
+      
+      public Class<?> value()
+      {
+         return InitializerSimpleBean.class;
+      }
+      
+   };
+   
    private static final long serialVersionUID = 1L;
    private static int        initializerCalls = 0;
 

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/Lion.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/Lion.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/Lion.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -1,7 +1,20 @@
 package org.jboss.jsr299.tck.tests.implementation.simple.newSimpleBean;
 
+import javax.enterprise.inject.New;
+
+import org.jboss.jsr299.tck.literals.NewLiteral;
+
 @Tame
 class Lion
 {
    
+   public static final New NEW = new NewLiteral()
+   {
+      
+      public Class<?> value()
+      {
+         return Lion.class;
+      }
+   };
+   
 }

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/NewLionConsumer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/NewLionConsumer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/NewLionConsumer.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -0,0 +1,35 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,  
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.jsr299.tck.tests.implementation.simple.newSimpleBean;
+
+import javax.enterprise.inject.New;
+
+/**
+ * @author pmuir
+ *
+ */
+public class NewLionConsumer
+{
+   
+   @New Lion lion;
+   
+   public Lion getLion()
+   {
+      return lion;
+   }
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/NewLionConsumer.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/NewSimpleBeanTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/NewSimpleBeanTest.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/NewSimpleBeanTest.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -13,7 +13,6 @@
 import org.jboss.jsr299.tck.AbstractJSR299Test;
 import org.jboss.jsr299.tck.literals.AnyLiteral;
 import org.jboss.jsr299.tck.literals.CurrentLiteral;
-import org.jboss.jsr299.tck.literals.NewLiteral;
 import org.jboss.test.audit.annotations.SpecAssertion;
 import org.jboss.test.audit.annotations.SpecAssertions;
 import org.jboss.test.audit.annotations.SpecVersion;
@@ -35,29 +34,28 @@
    })
    public void testNewBeanIsDependentScoped()
    {
-      Set<Bean<ExplicitContructorSimpleBean>> beans = getBeans(ExplicitContructorSimpleBean.class, new NewLiteral());
+      Set<Bean<ExplicitContructorSimpleBean>> beans = getBeans(ExplicitContructorSimpleBean.class, ExplicitContructorSimpleBean.NEW);
       assert beans.size() == 1;
       Bean<ExplicitContructorSimpleBean> newSimpleBean = beans.iterator().next();
       assert Dependent.class.equals(newSimpleBean.getScopeType());
    }
 
-   @Test(groups = { "new", "broken" })
+   @Test(groups = { "new" })
    @SpecAssertion(section = "3.10", id = "r")
-   // @New has a member value now!
    public void testNewBeanHasOnlyNewBinding()
    {
-      Set<Bean<ExplicitContructorSimpleBean>> beans = getBeans(ExplicitContructorSimpleBean.class, new NewLiteral());
+      Set<Bean<ExplicitContructorSimpleBean>> beans = getBeans(ExplicitContructorSimpleBean.class, ExplicitContructorSimpleBean.NEW);
       assert beans.size() == 1;
       Bean<ExplicitContructorSimpleBean> newSimpleBean = beans.iterator().next();
       assert newSimpleBean.getBindings().size() == 1;
-      assert newSimpleBean.getBindings().iterator().next().annotationType().equals(new NewLiteral().annotationType());
+      assert newSimpleBean.getBindings().iterator().next().annotationType().equals(New.class);
    }
 
    @Test(groups = { "new" })
    @SpecAssertion(section = "3.10", id = "s")
    public void testNewBeanHasNoBeanELName()
    {
-      Set<Bean<ExplicitContructorSimpleBean>> beans = getBeans(ExplicitContructorSimpleBean.class, new NewLiteral());
+      Set<Bean<ExplicitContructorSimpleBean>> beans = getBeans(ExplicitContructorSimpleBean.class, ExplicitContructorSimpleBean.NEW);
       assert beans.size() == 1;
       Bean<ExplicitContructorSimpleBean> newSimpleBean = beans.iterator().next();
       assert newSimpleBean.getName() == null;
@@ -70,7 +68,7 @@
       Bean<Fox> foxBean = getBeans(Fox.class).iterator().next();
       assert foxBean.getScopeType().equals(RequestScoped.class);
       assert foxBean.getName().equals("fox");
-      Bean<Fox> newFoxBean = getBeans(Fox.class, new NewLiteral()).iterator().next();
+      Bean<Fox> newFoxBean = getBeans(Fox.class, Fox.NEW).iterator().next();
       assert newFoxBean.getScopeType().equals(Dependent.class);
       assert newFoxBean.getName() == null;
    }
@@ -88,7 +86,7 @@
    public void testNewBeanHasNoProducerFields() throws Exception
    {
       Fox fox = getInstanceByType(Fox.class);
-      Fox newFox = getInstanceByType(Fox.class,new NewLiteral());
+      Fox newFox = getInstanceByType(Fox.class, Fox.NEW);
       newFox.setDen(new Den("NewFoxDen"));
       Den theOnlyDen = getInstanceByType(Den.class);
       assert theOnlyDen.getName().equals(fox.getDen().getName());
@@ -99,7 +97,7 @@
    public void testNewBeanHasNoProducerMethods() throws Exception
    {
       Fox fox = getInstanceByType(Fox.class);
-      Fox newFox = getInstanceByType(Fox.class,new NewLiteral());
+      Fox newFox = getInstanceByType(Fox.class, Fox.NEW);
       fox.setNextLitterSize(3);
       newFox.setNextLitterSize(5);
       Litter theOnlyLitter = getInstanceByType(Litter.class);
@@ -111,7 +109,7 @@
    public void testNewBeanHasNoDisposerMethods() throws Exception
    {
       Fox fox = getInstanceByType(Fox.class);
-      Fox newFox = getInstanceByType(Fox.class,new NewLiteral());
+      Fox newFox = getInstanceByType(Fox.class, Fox.NEW);
       Bean<Litter> litterBean = getBeans(Litter.class).iterator().next();
       CreationalContext<Litter> creationalContext = getCurrentManager().createCreationalContext(litterBean);
       Litter litter = getInstanceByType(Litter.class);
@@ -128,18 +126,18 @@
       assert getCurrentManager().getBeans(Order.class).iterator().next().getBindings().size() == 2;
       assert getCurrentManager().getBeans(Order.class).iterator().next().getBindings().contains(new CurrentLiteral());
 
-      assert getBeans(Order.class, new NewLiteral()).size() == 1;
-      assert getBeans(Order.class, new NewLiteral()).iterator().next().getBindings().size() == 1;
-      assert getBeans(Order.class, new NewLiteral()).iterator().next().getBindings().iterator().next().annotationType().equals(New.class);
+      assert getBeans(Order.class, Order.NEW).size() == 1;
+      assert getBeans(Order.class, Order.NEW).iterator().next().getBindings().size() == 1;
+      assert getBeans(Order.class, Order.NEW).iterator().next().getBindings().iterator().next().annotationType().equals(New.class);
 
       assert getCurrentManager().getBeans(Lion.class, TAME_LITERAL).size() == 1;
       assert getCurrentManager().getBeans(Lion.class, TAME_LITERAL).iterator().next().getBindings().size() == 2;
       assert getCurrentManager().getBeans(Lion.class, TAME_LITERAL).iterator().next().getBindings().contains(TAME_LITERAL);
       assert getCurrentManager().getBeans(Lion.class, TAME_LITERAL).iterator().next().getBindings().contains(new AnyLiteral());
 
-      assert getBeans(Lion.class, new NewLiteral()).size() == 1;
-      assert getBeans(Lion.class, new NewLiteral()).iterator().next().getBindings().size() == 1;
-      assert getBeans(Lion.class, new NewLiteral()).iterator().next().getBindings().iterator().next().annotationType().equals(New.class);
+      assert getBeans(Lion.class, Lion.NEW).size() == 1;
+      assert getBeans(Lion.class, Lion.NEW).iterator().next().getBindings().size() == 1;
+      assert getBeans(Lion.class, Lion.NEW).iterator().next().getBindings().iterator().next().annotationType().equals(New.class);
    }
 
    @Test(groups = { "new" })
@@ -148,7 +146,7 @@
    {
       ExplicitContructorSimpleBean.setConstructorCalls(0);
       ExplicitContructorSimpleBean bean = getInstanceByType(ExplicitContructorSimpleBean.class);
-      ExplicitContructorSimpleBean newBean = getInstanceByType(ExplicitContructorSimpleBean.class,new NewLiteral());
+      ExplicitContructorSimpleBean newBean = getInstanceByType(ExplicitContructorSimpleBean.class, ExplicitContructorSimpleBean.NEW);
       assert bean != newBean;
       assert ExplicitContructorSimpleBean.getConstructorCalls() == 2;
    }
@@ -160,7 +158,7 @@
       InitializerSimpleBean.setInitializerCalls(0);
       InitializerSimpleBean bean = getInstanceByType(InitializerSimpleBean.class);
       bean.businessMethod();  // Cause proxy to initialize the bean
-      InitializerSimpleBean newBean = getInstanceByType(InitializerSimpleBean.class,new NewLiteral());
+      InitializerSimpleBean newBean = getInstanceByType(InitializerSimpleBean.class, InitializerSimpleBean.NEW);
       assert bean != newBean;
       assert InitializerSimpleBean.getInitializerCalls() == 2;
    }
@@ -170,8 +168,15 @@
    public void testNewBeanHasSameInjectedFields()
    {
       Bean<InitializerSimpleBean> simpleBean = getBeans(InitializerSimpleBean.class).iterator().next();
-      Bean<InitializerSimpleBean> newSimpleBean = getBeans(InitializerSimpleBean.class, new NewLiteral()).iterator().next();
+      Bean<InitializerSimpleBean> newSimpleBean = getBeans(InitializerSimpleBean.class, InitializerSimpleBean.NEW).iterator().next();
       assert !newSimpleBean.getInjectionPoints().isEmpty();
       assert simpleBean.getInjectionPoints().equals(newSimpleBean.getInjectionPoints());
    }
+   
+   @Test
+   @SpecAssertion(section="3.10", id="z")
+   public void testNewBeanWithNoMemberValue()
+   {
+      assert getInstanceByType(NewLionConsumer.class).getLion() instanceof Lion;
+   }
 }

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/Order.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/Order.java	2009-08-12 13:34:36 UTC (rev 3467)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/newSimpleBean/Order.java	2009-08-12 16:19:48 UTC (rev 3468)
@@ -2,9 +2,23 @@
 
 import java.io.Serializable;
 
+import javax.enterprise.inject.New;
+
+import org.jboss.jsr299.tck.literals.NewLiteral;
+
 class Order implements Serializable
 {
 
+   public static final New NEW = new NewLiteral()
+   {
+      
+      public Class<?> value()
+      {
+         return Order.class;
+      }
+      
+   };
+   
    private static final long serialVersionUID = 1L;
    public static boolean     constructed      = true;
 




More information about the weld-commits mailing list