[weld-commits] Weld SVN: r4746 - in cdi-tck/trunk/impl/src/main: java/org/jboss/jsr299/tck/tests/decorators/custom and 2 other directories.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Sat Nov 7 15:05:46 EST 2009


Author: jharting
Date: 2009-11-07 15:05:46 -0500 (Sat, 07 Nov 2009)
New Revision: 4746

Added:
   cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/
   cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/AfterBeanDiscoveryObserver.java
   cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/Bus.java
   cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/CustomDecoratorImplementation.java
   cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/CustomDecoratorTest.java
   cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/Vehicle.java
   cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/VehicleDecorator.java
   cdi-tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/tests/decorators/custom/
   cdi-tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/tests/decorators/custom/beans.xml
   cdi-tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/tests/decorators/custom/javax.enterprise.inject.spi.Extension
Log:
Test for custom implementation of the Decorator interface.

Added: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/AfterBeanDiscoveryObserver.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/AfterBeanDiscoveryObserver.java	                        (rev 0)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/AfterBeanDiscoveryObserver.java	2009-11-07 20:05:46 UTC (rev 4746)
@@ -0,0 +1,30 @@
+package org.jboss.jsr299.tck.tests.decorators.custom;
+
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.AfterBeanDiscovery;
+import javax.enterprise.inject.spi.AnnotatedField;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.Extension;
+import javax.inject.Inject;
+
+
+public class AfterBeanDiscoveryObserver implements Extension
+{
+   @Inject
+   private BeanManager manager;
+   
+   private static CustomDecoratorImplementation decorator;
+   
+   @SuppressWarnings("unchecked")
+   public void addInterceptors(@Observes AfterBeanDiscovery event) {
+      AnnotatedField<VehicleDecorator> annotatedField = (AnnotatedField<VehicleDecorator>) manager.createAnnotatedType(VehicleDecorator.class).getFields().iterator().next();
+      decorator = new CustomDecoratorImplementation(annotatedField);
+      
+      event.addBean(decorator);
+   }
+
+   public static CustomDecoratorImplementation getDecorator()
+   {
+      return decorator;
+   }
+}

Added: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/Bus.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/Bus.java	                        (rev 0)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/Bus.java	2009-11-07 20:05:46 UTC (rev 4746)
@@ -0,0 +1,15 @@
+package org.jboss.jsr299.tck.tests.decorators.custom;
+
+class Bus implements Vehicle
+{
+
+   public String start()
+   {
+      return "Bus started";
+   }
+
+   public String stop()
+   {
+      return "Bus stopped";
+   }
+}

Added: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/CustomDecoratorImplementation.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/CustomDecoratorImplementation.java	                        (rev 0)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/CustomDecoratorImplementation.java	2009-11-07 20:05:46 UTC (rev 4746)
@@ -0,0 +1,168 @@
+package org.jboss.jsr299.tck.tests.decorators.custom;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Member;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.context.Dependent;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.Annotated;
+import javax.enterprise.inject.spi.AnnotatedField;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.Decorator;
+import javax.enterprise.inject.spi.InjectionPoint;
+
+class CustomDecoratorImplementation implements Decorator<VehicleDecorator>
+{
+
+   private boolean getDecoratedTypesCalled = false;
+   private boolean getDelegateQualifiersCalled = false;
+   private boolean getDelegateTypeCalled = false;
+
+   private AnnotatedField<VehicleDecorator> annotatedField;
+   private Set<Type> decoratedTypes = new HashSet<Type>();
+
+   public CustomDecoratorImplementation(AnnotatedField<VehicleDecorator> annotatedField)
+   {
+      this.annotatedField = annotatedField;
+      decoratedTypes.add(Vehicle.class);
+   }
+
+   public Set<Type> getDecoratedTypes()
+   {
+      getDecoratedTypesCalled = true;
+      return decoratedTypes;
+   }
+
+   public Set<Annotation> getDelegateQualifiers()
+   {
+      getDelegateQualifiersCalled = true;
+      return Collections.emptySet();
+   }
+
+   public Type getDelegateType()
+   {
+      getDelegateTypeCalled = true;
+      return Vehicle.class;
+   }
+
+   public Class<?> getBeanClass()
+   {
+      return VehicleDecorator.class;
+   }
+
+   public Set<InjectionPoint> getInjectionPoints()
+   {
+      InjectionPoint ip = new InjectionPoint()
+      {
+
+         public boolean isTransient()
+         {
+            return false;
+         }
+
+         public boolean isDelegate()
+         {
+            return true;
+         }
+
+         public Type getType()
+         {
+            return Bus.class;
+         }
+
+         public Set<Annotation> getQualifiers()
+         {
+            return Collections.emptySet();
+         }
+
+         public Member getMember()
+         {
+            try
+            {
+               return VehicleDecorator.class.getDeclaredField("delegate");
+            }
+            catch (Exception e)
+            {
+               throw new RuntimeException(e);
+            }
+         }
+
+         public Bean<?> getBean()
+         {
+            return AfterBeanDiscoveryObserver.getDecorator();
+         }
+
+         public Annotated getAnnotated()
+         {
+            return annotatedField;
+         }
+      };
+
+      return new HashSet<InjectionPoint>(Arrays.asList(ip));
+   }
+
+   public String getName()
+   {
+      return null;
+   }
+
+   public Set<Annotation> getQualifiers()
+   {
+      return Collections.emptySet();
+   }
+
+   public Class<? extends Annotation> getScope()
+   {
+      return Dependent.class;
+   }
+
+   public Set<Class<? extends Annotation>> getStereotypes()
+   {
+      return Collections.emptySet();
+   }
+
+   public Set<Type> getTypes()
+   {
+      return new HashSet<Type>(Arrays.asList(VehicleDecorator.class, Object.class));
+   }
+
+   public boolean isAlternative()
+   {
+      return false;
+   }
+
+   public boolean isNullable()
+   {
+      return false;
+   }
+
+   public VehicleDecorator create(CreationalContext<VehicleDecorator> arg0)
+   {
+      return new VehicleDecorator();
+   }
+
+   public void destroy(VehicleDecorator arg0, CreationalContext<VehicleDecorator> arg1)
+   {
+      arg1.release();
+   }
+
+   public boolean isGetDecoratedTypesCalled()
+   {
+      return getDecoratedTypesCalled;
+   }
+
+   public boolean isGetDelegateQualifiersCalled()
+   {
+      return getDelegateQualifiersCalled;
+   }
+
+   public boolean isGetDelegateTypeCalled()
+   {
+      return getDelegateTypeCalled;
+   }
+}

Added: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/CustomDecoratorTest.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/CustomDecoratorTest.java	                        (rev 0)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/CustomDecoratorTest.java	2009-11-07 20:05:46 UTC (rev 4746)
@@ -0,0 +1,49 @@
+/*
+ * 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.decorators.custom;
+
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.HashSet;
+
+import org.jboss.jsr299.tck.AbstractJSR299Test;
+import org.jboss.test.audit.annotations.SpecAssertion;
+import org.jboss.test.audit.annotations.SpecVersion;
+import org.jboss.testharness.impl.packaging.Artifact;
+import org.jboss.testharness.impl.packaging.IntegrationTest;
+import org.jboss.testharness.impl.packaging.jsr299.BeansXml;
+import org.testng.annotations.Test;
+
+ at Artifact
+ at BeansXml("beans.xml")
+ at SpecVersion(spec = "cdi", version = "20091101")
+ at IntegrationTest
+public class CustomDecoratorTest extends AbstractJSR299Test
+{
+   @Test(groups = "ri-broken")
+   @SpecAssertion(section = "8.3", id = "b")
+   // WELD-269
+   public void testCustomImplementationOfDecoratorInterface() {
+      assert AfterBeanDiscoveryObserver.getDecorator().isGetDecoratedTypesCalled();
+      assert AfterBeanDiscoveryObserver.getDecorator().isGetDelegateQualifiersCalled();
+      assert AfterBeanDiscoveryObserver.getDecorator().isGetDelegateTypeCalled();
+      assert !getCurrentManager().resolveDecorators(new HashSet<Type>(Arrays.asList(Vehicle.class))).isEmpty();
+      assert !getCurrentManager().resolveDecorators(new HashSet<Type>(Arrays.asList(Bus.class))).isEmpty();
+      assert getInstanceByType(Vehicle.class).start().equals("Bus started and decorated.");
+      assert getInstanceByType(Vehicle.class).start().equals("Bus stopped and decorated.");
+   }
+}

Added: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/Vehicle.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/Vehicle.java	                        (rev 0)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/Vehicle.java	2009-11-07 20:05:46 UTC (rev 4746)
@@ -0,0 +1,7 @@
+package org.jboss.jsr299.tck.tests.decorators.custom;
+
+interface Vehicle
+{
+   String start();
+   String stop();
+}

Added: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/VehicleDecorator.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/VehicleDecorator.java	                        (rev 0)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/decorators/custom/VehicleDecorator.java	2009-11-07 20:05:46 UTC (rev 4746)
@@ -0,0 +1,20 @@
+package org.jboss.jsr299.tck.tests.decorators.custom;
+
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+class VehicleDecorator implements Vehicle
+{
+   @Inject @Delegate
+   private Vehicle delegate;
+
+   public String start()
+   {
+      return delegate.start() + " and decorated.";
+   }
+
+   public String stop()
+   {
+      return delegate.stop() + " and decorated.";
+   }
+}

Added: cdi-tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/tests/decorators/custom/beans.xml
===================================================================
--- cdi-tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/tests/decorators/custom/beans.xml	                        (rev 0)
+++ cdi-tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/tests/decorators/custom/beans.xml	2009-11-07 20:05:46 UTC (rev 4746)
@@ -0,0 +1,5 @@
+<beans> 
+   <decorators>
+      <class>org.jboss.jsr299.tck.tests.decorators.custom.VehicleDecorator</class>
+   </decorators>
+</beans>

Added: cdi-tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/tests/decorators/custom/javax.enterprise.inject.spi.Extension
===================================================================
--- cdi-tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/tests/decorators/custom/javax.enterprise.inject.spi.Extension	                        (rev 0)
+++ cdi-tck/trunk/impl/src/main/resources/org/jboss/jsr299/tck/tests/decorators/custom/javax.enterprise.inject.spi.Extension	2009-11-07 20:05:46 UTC (rev 4746)
@@ -0,0 +1 @@
+org.jboss.jsr299.tck.tests.decorators.custom.AfterBeanDiscoveryObserver
\ No newline at end of file



More information about the weld-commits mailing list