[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