[webbeans-commits] Webbeans SVN: r3847 - in ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit: interceptor and 1 other directories.
by webbeans-commits@lists.jboss.org
Author: marius.bogoevici
Date: 2009-10-05 04:02:32 -0400 (Mon, 05 Oct 2009)
New Revision: 3847
Added:
ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/interceptor/
ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/interceptor/simple/
ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/interceptor/simple/beans.xml
Log:
.. and the configuration file for the test.
Added: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/interceptor/simple/beans.xml
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/interceptor/simple/beans.xml (rev 0)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/interceptor/simple/beans.xml 2009-10-05 08:02:32 UTC (rev 3847)
@@ -0,0 +1,9 @@
+<beans>
+ <interceptors>
+ <class>org.jboss.webbeans.test.unit.interceptor.simple.SimpleInterceptor</class>
+ <class>org.jboss.webbeans.test.unit.interceptor.simple.TwoBindingsInterceptor</class>
+ </interceptors>
+ <decorators>
+ <class>org.jboss.webbeans.test.unit.interceptor.simple.SimpleDecorator</class>
+ </decorators>
+</beans>
14 years, 6 months
[webbeans-commits] Webbeans SVN: r3846 - in ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit: interceptor and 1 other directories.
by webbeans-commits@lists.jboss.org
Author: marius.bogoevici
Date: 2009-10-05 03:59:14 -0400 (Mon, 05 Oct 2009)
New Revision: 3846
Added:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/PrimaryInterceptionBinding.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SecondaryInterceptionBinding.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleBean.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleBeanImpl.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleDecorator.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleInterceptor.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleInterceptorTest.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/TwoBindingsInterceptor.java
Log:
A couple of interceptor tests.
Added: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/PrimaryInterceptionBinding.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/PrimaryInterceptionBinding.java (rev 0)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/PrimaryInterceptionBinding.java 2009-10-05 07:59:14 UTC (rev 3846)
@@ -0,0 +1,34 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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.test.unit.interceptor.simple;
+
+import javax.interceptor.InterceptorBinding;
+import java.lang.annotation.*;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
+
+/**
+ * @author <a href="mailto:mariusb@redhat.com">Marius Bogoevici</a>
+ */
+@InterceptorBinding
+@Documented
+@Retention(RUNTIME)
+@Target({METHOD, TYPE})
+public @interface PrimaryInterceptionBinding
+{
+}
Added: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SecondaryInterceptionBinding.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SecondaryInterceptionBinding.java (rev 0)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SecondaryInterceptionBinding.java 2009-10-05 07:59:14 UTC (rev 3846)
@@ -0,0 +1,38 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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.test.unit.interceptor.simple;
+
+import javax.interceptor.InterceptorBinding;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * @author <a href="mailto:mariusb@redhat.com">Marius Bogoevici</a>
+ */
+@InterceptorBinding
+@Documented
+@Retention(RUNTIME)
+@Target({METHOD, TYPE})
+@PrimaryInterceptionBinding
+public @interface SecondaryInterceptionBinding
+{
+}
Added: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleBean.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleBean.java (rev 0)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleBean.java 2009-10-05 07:59:14 UTC (rev 3846)
@@ -0,0 +1,26 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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.test.unit.interceptor.simple;
+
+/**
+ * @author <a href="mailto:mariusb@redhat.com">Marius Bogoevici</a>
+ */
+public interface SimpleBean
+{
+ String doSomething();
+}
Added: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleBeanImpl.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleBeanImpl.java (rev 0)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleBeanImpl.java 2009-10-05 07:59:14 UTC (rev 3846)
@@ -0,0 +1,46 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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.test.unit.interceptor.simple;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * @author <a href="mailto:mariusb@redhat.com">Marius Bogoevici</a>
+ */
+//@PrimaryInterceptionBinding
+public class SimpleBeanImpl implements SimpleBean
+{
+
+ public static boolean businessMethodInvoked = false;
+
+ public static boolean postConstructCalled = false;
+
+ @SecondaryInterceptionBinding
+ public String doSomething()
+ {
+ businessMethodInvoked = true;
+ return "Hello!";
+ }
+
+ @PostConstruct
+ public void doPostConstruct()
+ {
+ postConstructCalled = true;
+ }
+
+}
Copied: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleDecorator.java (from rev 3834, ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/decorator/simple/SimpleDecorator1.java)
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleDecorator.java (rev 0)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleDecorator.java 2009-10-05 07:59:14 UTC (rev 3846)
@@ -0,0 +1,39 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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.test.unit.interceptor.simple;
+
+import org.jboss.webbeans.test.unit.interceptor.simple.SimpleBean;
+
+import javax.decorator.Decorates;
+import javax.decorator.Decorator;
+
+/**
+ *
+ * @author <a href="kabir.khan(a)jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+@Decorator
+public class SimpleDecorator
+{
+ @Decorates
+ SimpleBean delegate;
+
+ public String doSomething()
+ {
+ return "decorated-" + delegate.doSomething() + "-decorated";
+ }
+}
\ No newline at end of file
Added: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleInterceptor.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleInterceptor.java (rev 0)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleInterceptor.java 2009-10-05 07:59:14 UTC (rev 3846)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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.test.unit.interceptor.simple;
+
+import javax.interceptor.Interceptor;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * @author <a href="mailto:mariusb@redhat.com">Marius Bogoevici</a>
+ */
+@Interceptor @PrimaryInterceptionBinding
+public class SimpleInterceptor
+{
+ public static boolean postConstructCalled = false;
+ public static boolean aroundInvokeCalled = false;
+ public static boolean preDestroyCalled = false;
+
+ @PostConstruct
+ public void doPostConstruct(InvocationContext context) throws Exception
+ {
+ postConstructCalled = true;
+ context.proceed();
+ }
+
+ @AroundInvoke
+ public Object doAround(InvocationContext context) throws Exception
+ {
+ aroundInvokeCalled = true;
+ return context.proceed();
+ }
+
+ @PreDestroy
+ public void doPreDestroy(InvocationContext context) throws Exception
+ {
+ preDestroyCalled = true;
+ context.proceed();
+ }
+}
Added: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleInterceptorTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleInterceptorTest.java (rev 0)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/SimpleInterceptorTest.java 2009-10-05 07:59:14 UTC (rev 3846)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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.test.unit.interceptor.simple;
+
+import org.jboss.webbeans.test.AbstractWebBeansTest;
+import org.jboss.webbeans.metadata.cache.InterceptorBindingModel;
+import org.jboss.webbeans.metadata.TypeStore;
+import org.jboss.webbeans.resources.ClassTransformer;
+import org.jboss.testharness.impl.packaging.Artifact;
+import org.jboss.testharness.impl.packaging.jsr299.BeansXml;
+import org.testng.annotations.Test;
+
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.context.spi.CreationalContext;
+import java.util.Set;
+import java.lang.annotation.Annotation;
+
+/**
+ * @author <a href="mailto:mariusb@redhat.com">Marius Bogoevici</a>
+ */
+@Artifact
+@BeansXml("beans.xml")
+public class SimpleInterceptorTest extends AbstractWebBeansTest
+{
+
+ @Test
+ public void testInterceptorModel()
+ {
+ InterceptorBindingModel<SecondaryInterceptionBinding> interceptorBindingModel
+ = new InterceptorBindingModel<SecondaryInterceptionBinding>(SecondaryInterceptionBinding.class, new ClassTransformer(new TypeStore()));
+ Set<Annotation> annotations = interceptorBindingModel.getInheritedInterceptionBindingTypes();
+ assert annotations.size() != 0;
+ }
+
+ @Test
+ public void testSimpleInterceptor()
+ {
+ Bean bean = getCurrentManager().getBeans(SimpleBeanImpl.class).iterator().next();
+ CreationalContext creationalContext = getCurrentManager().createCreationalContext(bean);
+ SimpleBeanImpl simpleBean = (SimpleBeanImpl)bean.create(creationalContext);
+ String result = simpleBean.doSomething();
+ assert "decorated-Hello!-decorated".equals(result);
+ bean.destroy(simpleBean, creationalContext);
+ assert SimpleInterceptor.aroundInvokeCalled;
+ assert !SimpleInterceptor.postConstructCalled;
+ assert !SimpleInterceptor.preDestroyCalled;
+ assert TwoBindingsInterceptor.aroundInvokeCalled;
+ assert SimpleBeanImpl.postConstructCalled;
+
+ }
+}
Added: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/TwoBindingsInterceptor.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/TwoBindingsInterceptor.java (rev 0)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/interceptor/simple/TwoBindingsInterceptor.java 2009-10-05 07:59:14 UTC (rev 3846)
@@ -0,0 +1,39 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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.test.unit.interceptor.simple;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+import javax.interceptor.Interceptor;
+
+/**
+ * @author <a href="mailto:mariusb@redhat.com">Marius Bogoevici</a>
+ */
+@SecondaryInterceptionBinding
+@Interceptor
+public class TwoBindingsInterceptor
+{
+ public static boolean aroundInvokeCalled = false;
+
+ @AroundInvoke
+ public Object doAround(InvocationContext context) throws Exception
+ {
+ aroundInvokeCalled = true;
+ return context.proceed();
+ }
+}
14 years, 6 months
[webbeans-commits] Webbeans SVN: r3845 - in ri/trunk/impl: src/main/java/org/jboss/webbeans and 7 other directories.
by webbeans-commits@lists.jboss.org
Author: marius.bogoevici
Date: 2009-10-05 03:58:32 -0400 (Mon, 05 Oct 2009)
New Revision: 3845
Added:
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/InterceptorImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/InterceptorBindingModel.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/InterceptorResolvable.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeInterceptorResolver.java
Modified:
ri/trunk/impl/pom.xml
ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ManagedBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDeployer.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBAnnotated.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/MetaAnnotationStore.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/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeDisposerResolver.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeObserverResolver.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeResolver.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Beans.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/BeansXmlParser.java
Log:
Implementation of Interceptors based on @InterceptionBinding.
Modified: ri/trunk/impl/pom.xml
===================================================================
--- ri/trunk/impl/pom.xml 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/pom.xml 2009-10-05 07:58:32 UTC (rev 3845)
@@ -114,7 +114,16 @@
<artifactId>jsf-api</artifactId>
<optional>true</optional>
</dependency>
-
+
+ <dependency>
+ <groupId>org.jboss.interceptors</groupId>
+ <artifactId>interceptors</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
</dependencies>
<build>
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -60,6 +60,7 @@
import org.jboss.webbeans.bean.DecoratorImpl;
import org.jboss.webbeans.bean.SessionBean;
+import org.jboss.webbeans.bean.InterceptorImpl;
import org.jboss.webbeans.bean.proxy.ClientProxyProvider;
import org.jboss.webbeans.bootstrap.api.ServiceRegistry;
import org.jboss.webbeans.context.CreationalContextImpl;
@@ -77,17 +78,12 @@
import org.jboss.webbeans.manager.api.WebBeansManager;
import org.jboss.webbeans.metadata.cache.MetaAnnotationStore;
import org.jboss.webbeans.metadata.cache.ScopeModel;
-import org.jboss.webbeans.resolution.NameBasedResolver;
-import org.jboss.webbeans.resolution.ResolvableFactory;
-import org.jboss.webbeans.resolution.ResolvableWBClass;
-import org.jboss.webbeans.resolution.TypeSafeBeanResolver;
-import org.jboss.webbeans.resolution.TypeSafeDecoratorResolver;
-import org.jboss.webbeans.resolution.TypeSafeObserverResolver;
-import org.jboss.webbeans.resolution.TypeSafeResolver;
+import org.jboss.webbeans.resolution.*;
import org.jboss.webbeans.resources.ClassTransformer;
import org.jboss.webbeans.util.Beans;
import org.jboss.webbeans.util.Proxies;
import org.jboss.webbeans.util.Reflections;
+import org.jboss.interceptor.registry.InterceptorRegistry;
import com.google.common.base.Function;
import com.google.common.base.Supplier;
@@ -103,11 +99,12 @@
* Interceptors etc. as well as providing resolution
*
* @author Pete Muir
- *
+ * @author Marius Bogoevici
*/
public class BeanManagerImpl implements WebBeansManager, Serializable
{
-
+
+
private static class CurrentActivity
{
@@ -214,8 +211,9 @@
* archives
*/
private transient final TypeSafeBeanResolver<Bean<?>> beanResolver;
- private transient final TypeSafeResolver<DecoratorImpl<?>> decoratorResolver;
- private transient final TypeSafeResolver<ObserverMethod<?,?>> observerResolver;
+ private transient final TypeSafeResolver<? extends Resolvable, DecoratorImpl<?>> decoratorResolver;
+ private transient final TypeSafeResolver<? extends Resolvable, InterceptorImpl<?>> interceptorResolver;
+ private transient final TypeSafeResolver<? extends Resolvable, ObserverMethod<?,?>> observerResolver;
private transient final NameBasedResolver nameBasedResolver;
private transient final ELResolver webbeansELResolver;
private transient Namespace rootNamespace;
@@ -231,6 +229,7 @@
*/
private transient final List<Bean<?>> beans;
private transient final List<DecoratorImpl<?>> decorators;
+ private transient final List<InterceptorImpl<?>> interceptors;
private transient final List<String> namespaces;
private transient final List<ObserverMethod<?,?>> observers;
@@ -256,6 +255,11 @@
private transient final ThreadLocal<Stack<InjectionPoint>> currentInjectionPoint;
/**
+ * Interception model
+ */
+ private transient final InterceptorRegistry<Class<?>, Interceptor> managedBeanBoundInterceptorsRegistry = new InterceptorRegistry<Class<?>, Interceptor>();
+
+ /**
* Create a new, root, manager
*
* @param serviceRegistry
@@ -277,6 +281,7 @@
serviceRegistry,
new CopyOnWriteArrayList<Bean<?>>(),
new CopyOnWriteArrayList<DecoratorImpl<?>>(),
+ new CopyOnWriteArrayList<InterceptorImpl<?>>(),
new CopyOnWriteArrayList<ObserverMethod<?,?>>(),
new CopyOnWriteArrayList<String>(),
new ConcurrentHashMap<EjbDescriptor<?>, SessionBean<?>>(),
@@ -288,6 +293,7 @@
new ArrayList<Class<?>>(),
new ArrayList<Class<? extends Annotation>>(),
new ArrayList<Class<?>>(),
+ new ArrayList<Class<?>>(),
id,
new AtomicInteger());
}
@@ -304,6 +310,7 @@
services,
new CopyOnWriteArrayList<Bean<?>>(),
new CopyOnWriteArrayList<DecoratorImpl<?>>(),
+ new CopyOnWriteArrayList<InterceptorImpl<?>>(),
new CopyOnWriteArrayList<ObserverMethod<?,?>>(),
new CopyOnWriteArrayList<String>(),
rootManager.getEnterpriseBeans(),
@@ -315,6 +322,7 @@
new ArrayList<Class<?>>(),
new ArrayList<Class<? extends Annotation>>(),
new ArrayList<Class<?>>(),
+ new ArrayList<Class<?>>(),
id,
new AtomicInteger());
}
@@ -338,7 +346,8 @@
return new BeanManagerImpl(
parentManager.getServices(),
beans,
- parentManager.getDecorators(),
+ parentManager.getDecorators(),
+ parentManager.getInterceptors(),
registeredObservers,
namespaces,
parentManager.getEnterpriseBeans(),
@@ -350,6 +359,7 @@
parentManager.getEnabledPolicyClasses(),
parentManager.getEnabledPolicyStereotypes(),
parentManager.getEnabledDecoratorClasses(),
+ parentManager.getEnabledInterceptorClasses(),
new StringBuilder().append(parentManager.getChildIds().incrementAndGet()).toString(),
parentManager.getChildIds());
}
@@ -363,7 +373,8 @@
private BeanManagerImpl(
ServiceRegistry serviceRegistry,
List<Bean<?>> beans,
- List<DecoratorImpl<?>> decorators,
+ List<DecoratorImpl<?>> decorators,
+ List<InterceptorImpl<?>> interceptors,
List<ObserverMethod<?,?>> observers,
List<String> namespaces,
Map<EjbDescriptor<?>, SessionBean<?>> enterpriseBeans,
@@ -374,13 +385,15 @@
Map<Contextual<?>, Contextual<?>> specializedBeans,
Collection<Class<?>> enabledPolicyClasses,
Collection<Class<? extends Annotation>> enabledPolicyStereotypes,
- List<Class<?>> enabledDecoratorClasses,
+ List<Class<?>> enabledDecoratorClasses,
+ List<Class<?>> enabledInterceptorClasses,
String id,
AtomicInteger childIds)
{
this.services = serviceRegistry;
this.beans = beans;
this.decorators = decorators;
+ this.interceptors = interceptors;
this.enterpriseBeans = enterpriseBeans;
this.passivationCapableBeans = riBeans;
this.clientProxyProvider = clientProxyProvider;
@@ -391,6 +404,7 @@
this.enabledPolicyClasses = enabledPolicyClasses;
this.enabledPolicyStereotypes = enabledPolicyStereotypes;
setEnabledDecoratorClasses(enabledDecoratorClasses);
+ setEnabledInterceptorClasses(enabledInterceptorClasses);
this.namespaces = namespaces;
this.id = id;
this.childIds = new AtomicInteger();
@@ -403,6 +417,7 @@
// TODO Currently we build the accessible bean list on the fly, we need to set it in stone once bootstrap is finished...
this.beanResolver = new TypeSafeBeanResolver<Bean<?>>(this, createDynamicAccessibleIterable(Transform.BEAN));
this.decoratorResolver = new TypeSafeDecoratorResolver(this, createDynamicAccessibleIterable(Transform.DECORATOR_BEAN));
+ this.interceptorResolver = new TypeSafeInterceptorResolver(this, createDynamicAccessibleIterable(Transform.INTERCEPTOR_BEAN));
this.observerResolver = new TypeSafeObserverResolver(this, createDynamicAccessibleIterable(Transform.EVENT_OBSERVER));
this.nameBasedResolver = new NameBasedResolver(this, createDynamicAccessibleIterable(Transform.BEAN));
this.webbeansELResolver = new WebBeansELResolver(this);
@@ -486,6 +501,16 @@
}
};
+
+ public static Transform<InterceptorImpl<?>> INTERCEPTOR_BEAN = new Transform<InterceptorImpl<?>>()
+ {
+
+ public Iterable<InterceptorImpl<?>> transform(BeanManagerImpl beanManager)
+ {
+ return beanManager.getInterceptors();
+ }
+
+ };
public static Transform<ObserverMethod<?,?>> EVENT_OBSERVER = new Transform<ObserverMethod<?,?>>()
{
@@ -519,6 +544,7 @@
protected Set<BeanManagerImpl> getAccessibleManagers()
{
+
return accessibleManagers;
}
@@ -559,6 +585,14 @@
return resolveObserverMethods(event.getClass(), bindings);
}
+ public void addInterceptor(InterceptorImpl<?> bean)
+ {
+ interceptors.add(bean);
+ //TODO decide if interceptor is passivationCapable
+ interceptorResolver.clear();
+ }
+
+
@SuppressWarnings("unchecked")
private <T> Set<ObserverMethod<?, T>> resolveObserverMethods(Type eventType, Annotation... bindings)
{
@@ -776,6 +810,11 @@
{
return Collections.unmodifiableList(decorators);
}
+
+ public List<InterceptorImpl<?>> getInterceptors()
+ {
+ return Collections.unmodifiableList(interceptors);
+ }
public Iterable<Bean<?>> getAccessibleBeans()
{
@@ -1058,7 +1097,7 @@
*/
public List<Interceptor<?>> resolveInterceptors(InterceptionType type, Annotation... interceptorBindings)
{
- throw new UnsupportedOperationException();
+ return new ArrayList<Interceptor<?>>(interceptorResolver.resolve(ResolvableFactory.of(type,interceptorBindings)));
}
/**
@@ -1281,7 +1320,14 @@
public Set<Annotation> getInterceptorBindingTypeDefinition(Class<? extends Annotation> bindingType)
{
- throw new UnsupportedOperationException("Not yet implemented");
+ if (getServices().get(MetaAnnotationStore.class).getInterceptorBindingModel(bindingType).isValid())
+ {
+ return getServices().get(MetaAnnotationStore.class).getInterceptorBindingModel(bindingType).getInheritedInterceptionBindingTypes();
+ }
+ else
+ {
+ throw new IllegalArgumentException("Not a interception binding :" + bindingType);
+ }
}
public Bean<?> getPassivationCapableBean(String id)
@@ -1308,7 +1354,7 @@
public boolean isInterceptorBindingType(Class<? extends Annotation> annotationType)
{
- throw new UnsupportedOperationException("Not yet implemented");
+ return getServices().get(MetaAnnotationStore.class).getInterceptorBindingModel(annotationType).isValid();
}
public boolean isNormalScope(Class<? extends Annotation> annotationType)
@@ -1385,4 +1431,8 @@
services.cleanup();
}
+ public InterceptorRegistry<Class<?>, Interceptor> getManagedBeanInterceptorRegistry()
+ {
+ return managedBeanBoundInterceptorsRegistry;
+ }
}
Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/InterceptorImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/InterceptorImpl.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/InterceptorImpl.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -0,0 +1,95 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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.bean;
+
+import org.jboss.interceptor.model.InterceptorClassMetadata;
+import org.jboss.interceptor.registry.InterceptorClassMetadataRegistry;
+import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.webbeans.introspector.WBClass;
+import org.jboss.webbeans.metadata.cache.MetaAnnotationStore;
+
+import javax.enterprise.inject.spi.InterceptionType;
+import javax.enterprise.inject.spi.Interceptor;
+import javax.interceptor.InvocationContext;
+import java.lang.annotation.Annotation;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Marius Bogoevici
+ */
+public class InterceptorImpl<T> extends ManagedBean<T> implements Interceptor<T>
+{
+ private final InterceptorClassMetadata interceptorClassMetadata;
+
+ private final Set<Annotation> interceptorBindingTypes;
+
+ protected InterceptorImpl(WBClass<T> type, BeanManagerImpl manager)
+ {
+ super(type, new StringBuilder().append(Interceptor.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(type.getName()).toString(), manager);
+ this.interceptorClassMetadata = InterceptorClassMetadataRegistry.getRegistry().getInterceptorClassMetadata(type.getJavaClass());
+ this.interceptorBindingTypes = new HashSet<Annotation>();
+ for (Annotation annotation: getAnnotatedItem().getAnnotations())
+ {
+ if (manager.isInterceptorBindingType(annotation.annotationType()))
+ {
+ interceptorBindingTypes.add(annotation);
+ interceptorBindingTypes.addAll(getManager().getServices().get(MetaAnnotationStore.class).getInterceptorBindingModel(annotation.annotationType()).getInheritedInterceptionBindingTypes());
+ }
+ }
+
+ }
+
+ public static <T> InterceptorImpl<T> of(WBClass<T> type, BeanManagerImpl manager)
+ {
+ return new InterceptorImpl(type, manager);
+ }
+
+ public Set<Annotation> getInterceptorBindingTypes()
+ {
+ return interceptorBindingTypes;
+ }
+
+ public Object intercept(InterceptionType type, T instance, InvocationContext ctx)
+ {
+ try
+ {
+ return ctx.proceed();
+ } catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public boolean intercepts(InterceptionType type)
+ {
+ return interceptorClassMetadata.getInterceptorMethods(org.jboss.interceptor.model.InterceptionType.valueOf(type.name())).size() > 0;
+ }
+
+ @Override
+ public void postConstruct(T instance)
+ {
+ // do nothing on PostConstruct
+ }
+
+ @Override
+ public void preDestroy(T instance)
+ {
+ // do nothing on PreDestroy
+ }
+}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ManagedBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ManagedBean.java 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ManagedBean.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -16,16 +16,28 @@
*/
package org.jboss.webbeans.bean;
-import java.util.Set;
-
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.spi.Decorator;
import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InterceptionType;
+import javax.enterprise.inject.spi.Interceptor;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import org.jboss.interceptor.model.InterceptionModelBuilder;
+import org.jboss.interceptor.proxy.DirectClassInterceptionHandler;
+import org.jboss.interceptor.proxy.InterceptionHandler;
+import org.jboss.interceptor.proxy.InterceptionHandlerFactory;
+import org.jboss.interceptor.proxy.InterceptorProxyCreatorImpl;
+import org.jboss.interceptor.util.InterceptionUtils;
import org.jboss.webbeans.BeanManagerImpl;
import org.jboss.webbeans.DefinitionException;
+import org.jboss.webbeans.DeploymentException;
import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
import org.jboss.webbeans.injection.ConstructorInjectionPoint;
import org.jboss.webbeans.injection.InjectionContextImpl;
@@ -43,9 +55,9 @@
/**
* Represents a simple bean
- *
+ *
* @author Pete Muir
- *
+ * @author Marius Bogoevici
* @param <T> The type (class) of the bean
*/
public class ManagedBean<T> extends AbstractClassBean<T>
@@ -62,11 +74,10 @@
private ManagedBean<?> specializedBean;
-
/**
* Creates a simple, annotation defined Web Bean
- *
+ *
* @param <T> The type
* @param clazz The class
* @param manager the current manager
@@ -79,7 +90,7 @@
/**
* Constructor
- *
+ *
* @param type The type of the bean
* @param manager The Web Beans manager
*/
@@ -93,7 +104,7 @@
/**
* Creates an instance of the bean
- *
+ *
* @return The instance
*/
public T create(CreationalContext<T> creationalContext)
@@ -105,14 +116,21 @@
}
T instance = produce(creationalContext);
inject(instance, creationalContext);
- postConstruct(instance);
if (hasDecorators())
{
instance = applyDecorators(instance, creationalContext, originalInjectionPoint);
}
+ if (isInterceptionCandidate() && hasInterceptors())
+ {
+ instance = applyInterceptors(instance, creationalContext);
+ InterceptionUtils.executePostConstruct(instance);
+ } else
+ {
+ postConstruct(instance);
+ }
return instance;
}
-
+
public T produce(CreationalContext<T> ctx)
{
T instance = constructor.newInstance(manager, ctx);
@@ -124,7 +142,7 @@
}
return instance;
}
-
+
public void inject(final T instance, final CreationalContext<T> ctx)
{
new InjectionContextImpl<T>(getManager(), this, instance)
@@ -135,9 +153,9 @@
Beans.injectEEFields(instance, getManager(), ejbInjectionPoints, persistenceContextInjectionPoints, persistenceUnitInjectionPoints, resourceInjectionPoints);
Beans.injectFieldsAndInitializers(instance, ctx, getManager(), getInjectableFields(), getInitializerMethods());
}
-
+
}.run();
-
+
}
protected InjectionPoint attachCorrectInjectionPoint()
@@ -148,8 +166,7 @@
DecoratorImpl<?> decoratorBean = (DecoratorImpl<?>) decorator;
InjectionPoint outerDelegateInjectionPoint = decoratorBean.getDelegateInjectionPoint();
return getManager().replaceOrPushCurrentInjectionPoint(outerDelegateInjectionPoint);
- }
- else
+ } else
{
throw new IllegalStateException("Cannot operate on user defined decorator");
}
@@ -157,14 +174,19 @@
/**
* Destroys an instance of the bean
- *
+ *
* @param instance The instance
*/
public void destroy(T instance, CreationalContext<T> creationalContext)
{
try
{
- preDestroy(instance);
+ if (!isInterceptionCandidate() || !hasInterceptors())
+ preDestroy(instance);
+ else
+ {
+ InterceptionUtils.executePredestroy(instance);
+ }
creationalContext.release();
}
catch (Exception e)
@@ -187,6 +209,8 @@
initPostConstruct();
initPreDestroy();
initEEInjectionPoints();
+ if (isInterceptionCandidate())
+ initInterceptors();
}
}
@@ -198,6 +222,42 @@
this.resourceInjectionPoints = Beans.getResourceInjectionPoints(this, getAnnotatedItem(), manager);
}
+ private void initInterceptors()
+ {
+ InterceptionModelBuilder<Class<?>, Interceptor> builder = InterceptionModelBuilder.newBuilderFor(getType(), (Class) Interceptor.class);
+
+ List<Annotation> classBindingAnnotations = new ArrayList<Annotation>();
+
+ for (Annotation annotation : getType().getAnnotations())
+ {
+ if (manager.isInterceptorBindingType(annotation.annotationType()))
+ {
+ classBindingAnnotations.add(annotation);
+ }
+ }
+
+ builder.interceptPostConstruct().with(manager.resolveInterceptors(InterceptionType.POST_CONSTRUCT, classBindingAnnotations.toArray(new Annotation[0])).toArray(new Interceptor<?>[]{}));
+ builder.interceptPreDestroy().with(manager.resolveInterceptors(InterceptionType.PRE_DESTROY, classBindingAnnotations.toArray(new Annotation[0])).toArray(new Interceptor<?>[]{}));
+
+ List<WBMethod<?, ?>> businessMethods = Beans.getInterceptableBusinessMethods(getAnnotatedItem());
+ for (WBMethod<?, ?> method : businessMethods)
+ {
+ List<Annotation> methodBindingAnnotations = new ArrayList<Annotation>(classBindingAnnotations);
+ for (Annotation annotation : method.getAnnotations())
+ {
+ if (manager.isInterceptorBindingType(annotation.annotationType()))
+ {
+ methodBindingAnnotations.add(annotation);
+ methodBindingAnnotations.addAll(manager.getServices().get(MetaAnnotationStore.class).getInterceptorBindingModel(annotation.annotationType()).getInheritedInterceptionBindingTypes());
+ }
+ }
+ List<Interceptor<?>> methodBoundInterceptors = manager.resolveInterceptors(InterceptionType.AROUND_INVOKE, methodBindingAnnotations.toArray(new Annotation[]{}));
+ builder.interceptAroundInvoke(((AnnotatedMethod)method).getJavaMember()).with(methodBoundInterceptors.toArray(new Interceptor[]{}));
+ }
+ manager.getManagedBeanInterceptorRegistry().registerInterceptionModel(getType(), builder.build());
+ }
+
+
/**
* Validates the type
*/
@@ -230,7 +290,7 @@
DecoratorImpl<?> decoratorBean = (DecoratorImpl<?>) decorator;
for (WBMethod<?, ?> decoratorMethod : decoratorBean.getAnnotatedItem().getWBMethods())
{
- WBMethod<?, ?> method = getAnnotatedItem().getWBMethod(decoratorMethod.getSignature());
+ WBMethod<?, ?> method = getAnnotatedItem().getWBMethod(decoratorMethod.getSignature());
if (method != null && !method.isStatic() && !method.isPrivate() && method.isFinal())
{
throw new DefinitionException("Decorated bean method " + method + " (decorated by "+ decoratorMethod + ") cannot be declarted final");
@@ -260,7 +320,7 @@
}
}
}
-
+
protected void checkConstructor()
{
if (!constructor.getAnnotatedWBParameters(Disposes.class).isEmpty())
@@ -294,8 +354,7 @@
if (!(specializedBean instanceof ManagedBean))
{
throw new DefinitionException(toString() + " doesn't have a simple bean as a superclass " + specializedBean);
- }
- else
+ } else
{
this.specializedBean = (ManagedBean<?>) specializedBean;
}
@@ -314,7 +373,7 @@
/**
* Returns the constructor
- *
+ *
* @return The constructor
*/
public WBConstructor<T> getConstructor()
@@ -324,7 +383,7 @@
/**
* Gets a string representation
- *
+ *
* @return The string representation
*/
@Override
@@ -332,7 +391,7 @@
{
return getDescription("simple bean");
}
-
+
protected String getDescription(String beanType)
{
StringBuilder buffer = new StringBuilder();
@@ -356,4 +415,35 @@
return specializedBean;
}
+ private boolean isInterceptionCandidate()
+ {
+ return !Beans.isInterceptor(getAnnotatedItem()) && !Beans.isDecorator(getAnnotatedItem());
+ }
+
+ private boolean hasInterceptors()
+ {
+ return manager.getManagedBeanInterceptorRegistry().getInterceptionModel(getType()).getAllInterceptors().size() > 0;
+ }
+
+ private T applyInterceptors(T instance, final CreationalContext<T> creationalContext)
+ {
+ try
+ {
+ InterceptionHandlerFactory<Interceptor> factory = new InterceptionHandlerFactory<Interceptor>()
+ {
+ public InterceptionHandler createFor(final Interceptor interceptor)
+ {
+ final Object instance = getManager().getReference(interceptor, creationalContext);
+ return new DirectClassInterceptionHandler<Interceptor>(instance, interceptor.getBeanClass());
+ }
+ };
+ instance = new InterceptorProxyCreatorImpl<Interceptor>(manager.getManagedBeanInterceptorRegistry(), factory).createProxyFromInstance(instance, getType());
+
+ } catch (Exception e)
+ {
+ throw new DeploymentException(e);
+ }
+ return instance;
+ }
+
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDeployer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDeployer.java 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDeployer.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -16,9 +16,9 @@
*/
package org.jboss.webbeans.bootstrap;
+import java.util.Set;
import java.lang.reflect.Member;
import java.lang.reflect.Type;
-import java.util.Set;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.Disposes;
@@ -40,6 +40,7 @@
import org.jboss.webbeans.bean.ProducerMethod;
import org.jboss.webbeans.bean.RIBean;
import org.jboss.webbeans.bean.SessionBean;
+import org.jboss.webbeans.bean.InterceptorImpl;
import org.jboss.webbeans.bean.ee.EEResourceProducerField;
import org.jboss.webbeans.bean.ee.PersistenceContextProducerField;
import org.jboss.webbeans.bootstrap.events.ProcessObserverMethodImpl;
@@ -90,6 +91,12 @@
manager.addDecorator(bean);
log.debug("Bean: " + bean);
}
+ for (InterceptorImpl<?> bean: getEnvironment().getInterceptors())
+ {
+ bean.initialize(getEnvironment());
+ manager.addInterceptor(bean);
+ log.debug("Interceptor: " + bean);
+ }
for (RIBean<?> bean : beans)
{
bean.initialize(getEnvironment());
@@ -237,6 +244,12 @@
DecoratorImpl<T> bean = DecoratorImpl.of(annotatedClass, manager);
getEnvironment().addBean(bean);
}
+
+ protected <T> void createInterceptor(WBClass<T> annotatedClass)
+ {
+ InterceptorImpl<T> bean = InterceptorImpl.of(annotatedClass, manager);
+ getEnvironment().addBean(bean);
+ }
protected <T> void createEnterpriseBean(InternalEjbDescriptor<T> ejbDescriptor)
{
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -109,7 +109,7 @@
}
else if (managedBeanOrDecorator && clazz.isAnnotationPresent(Interceptor.class))
{
- //createInterceptor(clazz);
+ createInterceptor(clazz);
}
else if (managedBeanOrDecorator && !clazz.isAbstract())
{
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -34,6 +34,7 @@
import org.jboss.webbeans.bean.ProducerField;
import org.jboss.webbeans.bean.ProducerMethod;
import org.jboss.webbeans.bean.RIBean;
+import org.jboss.webbeans.bean.InterceptorImpl;
import org.jboss.webbeans.bean.builtin.AbstractBuiltInBean;
import org.jboss.webbeans.bean.builtin.ExtensionBean;
import org.jboss.webbeans.ejb.EjbDescriptors;
@@ -53,6 +54,7 @@
private final List<DisposalMethod<?, ?>> allDisposalBeans;
private final Set<DisposalMethod<?, ?>> resolvedDisposalBeans;
private final Set<DecoratorImpl<?>> decorators;
+ private final Set<InterceptorImpl<?>> interceptors;
private final EjbDescriptors ejbDescriptors;
private final TypeSafeDisposerResolver disposalMethodResolver;
@@ -64,6 +66,7 @@
this.resolvedDisposalBeans = new HashSet<DisposalMethod<?, ?>>();
this.beans = new HashSet<RIBean<?>>();
this.decorators = new HashSet<DecoratorImpl<?>>();
+ this.interceptors = new HashSet<InterceptorImpl<?>>();
this.observers = new HashSet<ObserverMethodImpl<?, ?>>();
this.ejbDescriptors = ejbDescriptors;
this.disposalMethodResolver = new TypeSafeDisposerResolver(manager, allDisposalBeans);
@@ -131,6 +134,11 @@
{
decorators.add(bean);
}
+
+ public void addBean(InterceptorImpl<?> bean)
+ {
+ interceptors.add(bean);
+ }
public void addBean(DisposalMethod<?, ?> bean)
{
@@ -152,6 +160,11 @@
return Collections.unmodifiableSet(decorators);
}
+ public Set<InterceptorImpl<?>> getInterceptors()
+ {
+ return Collections.unmodifiableSet(interceptors);
+ }
+
public Set<ObserverMethodImpl<?, ?>> getObservers()
{
return Collections.unmodifiableSet(observers);
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBAnnotated.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBAnnotated.java 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBAnnotated.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -27,6 +27,7 @@
import javax.enterprise.inject.stereotype.Stereotype;
import javax.inject.Qualifier;
import javax.inject.Scope;
+import javax.interceptor.InterceptorBinding;
/**
* AnnotatedItem provides a uniform access to the annotations on an annotated
@@ -40,7 +41,7 @@
// The set of meta-annotations to map
@SuppressWarnings("unchecked")
- public static final Set<Class<? extends Annotation>> MAPPED_METAANNOTATIONS = new HashSet<Class<? extends Annotation>>(Arrays.asList(Qualifier.class, Stereotype.class, Scope.class, NormalScope.class));
+ public static final Set<Class<? extends Annotation>> MAPPED_METAANNOTATIONS = new HashSet<Class<? extends Annotation>>(Arrays.asList(Qualifier.class, Stereotype.class, Scope.class, NormalScope.class, InterceptorBinding.class));
/**
* Gets all annotations which are annotated with the given meta annotation
Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/InterceptorBindingModel.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/InterceptorBindingModel.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/InterceptorBindingModel.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -0,0 +1,113 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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.metadata.cache;
+
+import org.jboss.webbeans.resources.ClassTransformer;
+import org.jboss.webbeans.util.collections.Arrays2;
+import org.jboss.webbeans.log.Log;
+import org.jboss.webbeans.log.Logging;
+import org.jboss.webbeans.introspector.WBMethod;
+
+import javax.interceptor.InterceptorBinding;
+import javax.enterprise.inject.Nonbinding;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Set;
+
+/**
+ * @author Marius Bogoevici
+ */
+public class InterceptorBindingModel<T extends Annotation> extends AnnotationModel<T>
+{
+ private static final Set<Class<? extends Annotation>> META_ANNOTATIONS = Arrays2.<Class<? extends Annotation>>asSet(InterceptorBinding.class);
+ private static final Log log = Logging.getLog(BindingTypeModel.class);
+ private Set<WBMethod<?,?>> nonBindingTypes;
+ private Set<Annotation> inheritedInterceptionBindingTypes;
+ private Set<Annotation> metaAnnotations;
+
+ public InterceptorBindingModel(Class<T> type, ClassTransformer transformer)
+ {
+ super(type, transformer);
+ initNonBindingTypes();
+ initInterceptionBindingTypes();
+ this.metaAnnotations = getAnnotatedAnnotation().getAnnotations();
+ }
+
+ protected Set<Class<? extends Annotation>> getMetaAnnotationTypes()
+ {
+ return META_ANNOTATIONS;
+ }
+
+ public Set<Annotation> getMetaAnnotations()
+ {
+ return metaAnnotations;
+ }
+
+ protected void initNonBindingTypes()
+ {
+ nonBindingTypes = getAnnotatedAnnotation().getAnnotatedMembers(Nonbinding.class);
+ }
+
+ protected void initInterceptionBindingTypes()
+ {
+ inheritedInterceptionBindingTypes = getAnnotatedAnnotation().getMetaAnnotations(InterceptorBinding.class);
+ }
+
+ public Set<Annotation> getInheritedInterceptionBindingTypes()
+ {
+ return inheritedInterceptionBindingTypes;
+ }
+
+ public boolean isEqual(Annotation instance, Annotation other)
+ {
+ if (instance.annotationType().equals(getRawType()) && other.annotationType().equals(getRawType()))
+ {
+ for (WBMethod<?, ?> annotatedMethod : getAnnotatedAnnotation().getMembers())
+ {
+ if (!nonBindingTypes.contains(annotatedMethod))
+ {
+ try
+ {
+ Object thisValue = annotatedMethod.invoke(instance);
+ Object thatValue = annotatedMethod.invoke(other);
+ if (!thisValue.equals(thatValue))
+ {
+ return false;
+ }
+ }
+ catch (IllegalArgumentException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (InvocationTargetException e)
+ {
+ throw new RuntimeException(e);
+ }
+
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/MetaAnnotationStore.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/MetaAnnotationStore.java 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/MetaAnnotationStore.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -38,7 +38,9 @@
private ConcurrentCache<Class<? extends Annotation>, ScopeModel<?>> scopes = new ConcurrentCache<Class<? extends Annotation>, ScopeModel<?>>();
// The binding type models
private ConcurrentCache<Class<? extends Annotation>, BindingTypeModel<?>> bindingTypes = new ConcurrentCache<Class<? extends Annotation>, BindingTypeModel<?>>();
-
+ // the interceptor bindings
+ private ConcurrentCache<Class<? extends Annotation>, InterceptorBindingModel<?>> interceptorBindings = new ConcurrentCache<Class<? extends Annotation>, InterceptorBindingModel<?>>();
+
private final ClassTransformer classTransformer;
public MetaAnnotationStore(ClassTransformer classTransformer)
@@ -124,6 +126,7 @@
buffer.append("Registered binding type models: " + bindingTypes.size() + "\n");
buffer.append("Registered scope type models: " + scopes.size() + "\n");
buffer.append("Registered stereotype models: " + stereotypes.size() + "\n");
+ buffer.append("Registered interceptor binding models: " + interceptorBindings.size() + "\n");
return buffer.toString();
}
@@ -134,4 +137,16 @@
stereotypes.clear();
}
+ public <T extends Annotation> InterceptorBindingModel getInterceptorBindingModel(final Class<T> interceptorBinding)
+ {
+ return interceptorBindings.putIfAbsent(interceptorBinding, new Callable<InterceptorBindingModel<T>>()
+ {
+
+ public InterceptorBindingModel<T> call() throws Exception
+ {
+ return new InterceptorBindingModel<T>(interceptorBinding, classTransformer);
+ }
+
+ });
+ }
}
Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/InterceptorResolvable.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/InterceptorResolvable.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/InterceptorResolvable.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -0,0 +1,30 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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 javax.enterprise.inject.spi.InterceptionType;
+
+/**
+ * @author Marius Bogoevici
+ */
+public interface InterceptorResolvable extends Resolvable
+{
+
+ InterceptionType getInterceptionType();
+
+}
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-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ResolvableFactory.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -23,12 +23,15 @@
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import java.util.Collections;
import org.jboss.webbeans.bean.AbstractClassBean;
import org.jboss.webbeans.introspector.WBAnnotated;
import org.jboss.webbeans.literal.DefaultLiteral;
import org.jboss.webbeans.util.Reflections;
+import javax.enterprise.inject.spi.InterceptionType;
+
public class ResolvableFactory
{
@@ -56,6 +59,11 @@
return new ResolvableImpl(new HashSet<Annotation>(Arrays.asList(bindings)), typeClosure, declaringBean);
}
+ public static Resolvable of(InterceptionType interceptionType, Annotation... bindings)
+ {
+ return new InterceptorResolvableImpl(new HashSet<Annotation>(Arrays.asList(bindings)), interceptionType );
+ }
+
private ResolvableFactory() {}
private static class ResolvableImpl implements Resolvable
@@ -126,4 +134,20 @@
}
+ private static class InterceptorResolvableImpl extends ResolvableImpl implements InterceptorResolvable
+ {
+ private final InterceptionType interceptionType;
+
+ private InterceptorResolvableImpl(Set<Annotation> bindings, InterceptionType interceptionType)
+ {
+ super(bindings, Collections.singleton((Type)Object.class), null);
+ this.interceptionType = interceptionType;
+ }
+
+ public InterceptionType getInterceptionType()
+ {
+ return interceptionType;
+ }
+ }
+
}
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-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeBeanResolver.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -34,7 +34,7 @@
* @author pmuir
*
*/
-public class TypeSafeBeanResolver<T extends Bean<?>> extends TypeSafeResolver<T>
+public class TypeSafeBeanResolver<T extends Bean<?>> extends TypeSafeResolver<Resolvable, T>
{
public static final Set<ResolvableTransformer> TRANSFORMERS;
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeDisposerResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeDisposerResolver.java 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeDisposerResolver.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -28,7 +28,7 @@
* @author pmuir
*
*/
-public class TypeSafeDisposerResolver extends TypeSafeResolver<DisposalMethod<?, ?>>
+public class TypeSafeDisposerResolver extends TypeSafeResolver<Resolvable, DisposalMethod<?, ?>>
{
private final BeanManagerImpl manager;
Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeInterceptorResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeInterceptorResolver.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeInterceptorResolver.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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 org.jboss.webbeans.bean.InterceptorImpl;
+import org.jboss.webbeans.bean.DecoratorImpl;
+import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.webbeans.util.Reflections;
+import org.jboss.webbeans.util.Beans;
+
+import java.util.*;
+
+/**
+ * @author <a href="mailto:mariusb@redhat.com">Marius Bogoevici</a>
+ */
+public class TypeSafeInterceptorResolver extends TypeSafeResolver<InterceptorResolvable,InterceptorImpl<?>>
+{
+ private BeanManagerImpl manager;
+
+
+ public TypeSafeInterceptorResolver(BeanManagerImpl manager, Iterable<InterceptorImpl<?>> interceptors)
+ {
+ super(interceptors);
+ this.manager = manager;
+ }
+
+ @Override
+ protected boolean matches(InterceptorResolvable resolvable, InterceptorImpl<?> bean)
+ {
+ return bean.intercepts(resolvable.getInterceptionType())
+ && bean.getInterceptorBindingTypes().size() > 0
+ && Beans.containsAllInterceptionBindings(bean.getInterceptorBindingTypes(), resolvable.getQualifiers(), getManager())
+ && getManager().getEnabledInterceptorClasses().contains(bean.getType());
+ }
+
+
+ @Override
+ protected Set<InterceptorImpl<?>> sortResult(Set<InterceptorImpl<?>> matchedInterceptors)
+ {
+ Set<InterceptorImpl<?>> sortedBeans = new TreeSet<InterceptorImpl<?>>(new Comparator<InterceptorImpl<?>>()
+ {
+
+ public int compare(InterceptorImpl<?> o1, InterceptorImpl<?> o2)
+ {
+ List<Class<?>> enabledInterceptors = getManager().getEnabledInterceptorClasses();
+ int p1 = enabledInterceptors.indexOf(((InterceptorImpl<?>) o1).getType());
+ int p2 = enabledInterceptors.indexOf(((InterceptorImpl<?>) o2).getType());
+ return p1 - p2;
+ }
+
+ });
+ sortedBeans.addAll(matchedInterceptors);
+ return sortedBeans;
+ }
+
+ protected Set<InterceptorImpl<?>> filterResult(Set<InterceptorImpl<?>> matched)
+ {
+ return matched;
+ }
+
+ protected Iterable<ResolvableTransformer> getTransformers()
+ {
+ return Collections.EMPTY_SET;
+ }
+
+ public BeanManagerImpl getManager()
+ {
+ return manager;
+ }
+}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeObserverResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeObserverResolver.java 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeObserverResolver.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -29,7 +29,7 @@
* @author pmuir
*
*/
-public class TypeSafeObserverResolver extends TypeSafeResolver<ObserverMethod<?,?>>
+public class TypeSafeObserverResolver extends TypeSafeResolver<Resolvable, ObserverMethod<?,?>>
{
private final BeanManagerImpl manager;
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeResolver.java 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeResolver.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -27,8 +27,9 @@
* Implementation of type safe bean resolution
*
* @author Pete Muir
+ * @author Marius Bogoevici
*/
-public abstract class TypeSafeResolver<T>
+public abstract class TypeSafeResolver<R extends Resolvable,T>
{
private static final long serialVersionUID = 1L;
@@ -140,7 +141,7 @@
Set<T> result = new HashSet<T>();
for (T bean : iterable)
{
- if (matches(resolvable, bean))
+ if (matches((R)resolvable.delegate(), bean))
{
result.add(bean);
}
@@ -148,7 +149,7 @@
return result;
}
- protected abstract boolean matches(Resolvable resolvable, T t);
+ protected abstract boolean matches(R resolvable, T t);
/**
* Gets a string representation
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Beans.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Beans.java 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Beans.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -18,6 +18,8 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
+import java.lang.reflect.Member;
+import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -30,6 +32,7 @@
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.decorator.Decorates;
+import javax.decorator.Decorator;
import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.event.Observes;
@@ -37,7 +40,10 @@
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.Interceptor;
+import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.inject.Inject;
+import javax.interceptor.AroundInvoke;
import org.jboss.webbeans.BeanManagerImpl;
import org.jboss.webbeans.DefinitionException;
@@ -53,17 +59,15 @@
import org.jboss.webbeans.injection.spi.EjbInjectionServices;
import org.jboss.webbeans.injection.spi.JpaInjectionServices;
import org.jboss.webbeans.injection.spi.ResourceInjectionServices;
-import org.jboss.webbeans.introspector.MethodSignature;
-import org.jboss.webbeans.introspector.WBClass;
-import org.jboss.webbeans.introspector.WBConstructor;
-import org.jboss.webbeans.introspector.WBField;
-import org.jboss.webbeans.introspector.WBMethod;
-import org.jboss.webbeans.introspector.WBParameter;
+import org.jboss.webbeans.introspector.*;
import org.jboss.webbeans.log.Log;
import org.jboss.webbeans.log.Logging;
import org.jboss.webbeans.metadata.cache.BindingTypeModel;
import org.jboss.webbeans.metadata.cache.MetaAnnotationStore;
+import org.jboss.webbeans.metadata.cache.InterceptorBindingModel;
import org.jboss.webbeans.persistence.PersistenceApiAbstraction;
+import org.jboss.interceptor.model.InterceptionType;
+import org.jboss.interceptor.model.InterceptionTypeRegistry;
import com.google.common.base.Supplier;
import com.google.common.collect.Multimap;
@@ -218,6 +222,35 @@
return null;
}
}
+
+ public static List<WBMethod<?,?>> getInterceptableBusinessMethods(WBClass<?> type)
+ {
+ List<WBMethod<?, ?>> annotatedMethods = new ArrayList<WBMethod<?, ?>>();
+ for (WBMethod<?, ?> annotatedMethod : type.getWBMethods())
+ {
+ int modifiers = ((WBMember) annotatedMethod).getJavaMember().getModifiers();
+ boolean businessMethod = !annotatedMethod.isStatic()
+ && (Modifier.isPublic(modifiers)
+ || Modifier.isProtected(modifiers))
+ && !annotatedMethod.isAnnotationPresent(Inject.class)
+ && !annotatedMethod.isAnnotationPresent(Produces.class)
+ && annotatedMethod.getAnnotatedWBParameters(Disposes.class).isEmpty()
+ && annotatedMethod.getAnnotatedWBParameters(Observes.class).isEmpty();
+
+ if (businessMethod)
+ {
+ for (InterceptionType interceptionType : InterceptionTypeRegistry.getSupportedInterceptionTypes())
+ {
+ businessMethod = !annotatedMethod.isAnnotationPresent(InterceptionTypeRegistry.getAnnotationClass(interceptionType));
+ if (!businessMethod)
+ break;
+ }
+ if (businessMethod)
+ annotatedMethods.add(annotatedMethod);
+ }
+ }
+ return annotatedMethods;
+ }
public static Set<WBInjectionPoint<?, ?>> getEjbInjectionPoints(Bean<?> declaringBean, WBClass<?> type, BeanManagerImpl manager)
@@ -425,6 +458,28 @@
}
return true;
}
+
+ public static boolean containsAllInterceptionBindings(Set<Annotation> expectedBindings, Set<Annotation> existingBindings, BeanManagerImpl manager)
+ {
+ for (Annotation binding : expectedBindings)
+ {
+ InterceptorBindingModel<?> bindingType = manager.getServices().get(MetaAnnotationStore.class).getInterceptorBindingModel(binding.annotationType());
+ boolean matchFound = false;
+ // TODO Something wrong with annotation proxy hashcode in JDK/AnnotationLiteral hashcode, so always do a full check, don't use contains
+ for (Annotation otherBinding : existingBindings)
+ {
+ if (bindingType.isEqual(binding, otherBinding))
+ {
+ matchFound = true;
+ }
+ }
+ if (!matchFound)
+ {
+ return false;
+ }
+ }
+ return true;
+ }
/**
@@ -655,5 +710,15 @@
initializer.invoke(instance, manager, creationalContext, CreationException.class);
}
}
+
+ public static <T> boolean isInterceptor(WBClass<T> annotatedItem)
+ {
+ return annotatedItem.isAnnotationPresent(javax.interceptor.Interceptor.class);
+ }
+
+ public static <T> boolean isDecorator(WBClass<T> annotatedItem)
+ {
+ return annotatedItem.isAnnotationPresent(Decorator.class);
+ }
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/BeansXmlParser.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/BeansXmlParser.java 2009-10-05 07:23:57 UTC (rev 3844)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/BeansXmlParser.java 2009-10-05 07:58:32 UTC (rev 3845)
@@ -103,7 +103,7 @@
public List<Class<?>> getEnabledInterceptorClasses()
{
- return Collections.emptyList();
+ return enabledInterceptorClasses;
}
public BeansXmlParser(ResourceLoader resourceLoader, Iterable<URL> beansXml)
14 years, 6 months
[webbeans-commits] Webbeans SVN: r3844 - ri/trunk/version-matrix.
by webbeans-commits@lists.jboss.org
Author: marius.bogoevici
Date: 2009-10-05 03:23:57 -0400 (Mon, 05 Oct 2009)
New Revision: 3844
Modified:
ri/trunk/version-matrix/pom.xml
Log:
Add dependency on org.jboss.interceptors to the matrix.
Modified: ri/trunk/version-matrix/pom.xml
===================================================================
--- ri/trunk/version-matrix/pom.xml 2009-10-05 03:34:45 UTC (rev 3843)
+++ ri/trunk/version-matrix/pom.xml 2009-10-05 07:23:57 UTC (rev 3844)
@@ -274,6 +274,12 @@
<artifactId>jboss-ejb3-api</artifactId>
<version>3.1.0-Alpha1</version>
</dependency>
+
+ <dependency>
+ <groupId>org.jboss.interceptors</groupId>
+ <artifactId>interceptors</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>com.sun.facelets</groupId>
14 years, 6 months
[webbeans-commits] Webbeans SVN: r3843 - in tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests: definition/qualifier and 3 other directories.
by webbeans-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2009-10-04 23:34:45 -0400 (Sun, 04 Oct 2009)
New Revision: 3843
Added:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Animal.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Barn.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/BorderCollie.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Cat.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Chunky.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ChunkyQualifier.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ClippedBorderCollie.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Cod.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/DeadlyAnimal.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/DeadlySpider.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/DefangedTarantula.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/EnglishBorderCollie.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Hairy.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/HairyQualifier.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Horse.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/LongHairedDog.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/MiniatureShetlandPony.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Order.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/OrderProcessor.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Produced.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/QualifierDefinitionTest.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ScottishFish.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ShetlandPony.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Species.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Spider.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/SpiderProducer.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Synchronous.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/SynchronousQualifier.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Tame.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/TameQualifier.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Tarantula.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Tuna.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Whitefish.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/WhitefishQualifier.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/BorderCollie.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/BorderCollieLocal.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/EnglishBorderCollie.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/EnglishBorderCollieLocal.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/EnterpriseQualifierDefinitionTest.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/FamousCat.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/FamousCatLocal.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/Hairless.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/HairlessCat.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/HairlessQualifier.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/Hairy.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/HairyQualifier.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/LongHairedDog.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/Skinny.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/SkinnyHairlessCat.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/SkinnyHairlessCatLocal.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/SkinnyQualifier.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/TameSkinnyHairlessCat.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/TameSkinnyHairlessCatLocal.java
Removed:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/
Modified:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/definition/EnterpriseBeanDefinitionTest.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/definition/OuterClass.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/definition/SimpleBeanDefinitionTest.java
Log:
rename, minor
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Animal.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Animal.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Animal.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Animal.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+interface Animal
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Barn.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Barn.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Barn.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Barn.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,11 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+import javax.inject.Inject;
+
+
+class Barn
+{
+ @Inject @Tame
+ public Tarantula petSpider;
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/BorderCollie.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/BorderCollie.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/BorderCollie.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/BorderCollie.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+class BorderCollie extends LongHairedDog
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Cat.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Cat.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Cat.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Cat.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,9 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+
+
+@Synchronous
+class Cat
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Chunky.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Chunky.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Chunky.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Chunky.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,24 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+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.Qualifier;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@Qualifier
+@interface Chunky
+{
+
+ boolean realChunky();
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ChunkyQualifier.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/ChunkyBinding.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ChunkyQualifier.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ChunkyQualifier.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,19 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+import javax.enterprise.inject.AnnotationLiteral;
+
+class ChunkyQualifier extends AnnotationLiteral<Chunky> implements Chunky
+{
+ private boolean chunky;
+
+ public ChunkyQualifier(boolean chunky)
+ {
+ this.chunky = chunky;
+ }
+
+ public boolean realChunky()
+ {
+ return chunky;
+ }
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ClippedBorderCollie.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/ClippedBorderCollie.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ClippedBorderCollie.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ClippedBorderCollie.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,7 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+@Hairy(clipped=true)
+class ClippedBorderCollie extends BorderCollie
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Cod.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Cod.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Cod.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Cod.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,11 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+import javax.inject.Named;
+
+@Whitefish
+@Chunky(realChunky=true)
+@Named("whitefish")
+class Cod implements ScottishFish
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/DeadlyAnimal.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/DeadlyAnimal.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/DeadlyAnimal.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/DeadlyAnimal.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+interface DeadlyAnimal
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/DeadlySpider.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/DeadlySpider.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/DeadlySpider.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/DeadlySpider.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+interface DeadlySpider extends DeadlyAnimal
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/DefangedTarantula.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/DefangedTarantula.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/DefangedTarantula.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/DefangedTarantula.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,11 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+class DefangedTarantula extends Tarantula
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 4125502808853107948L;
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/EnglishBorderCollie.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/EnglishBorderCollie.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/EnglishBorderCollie.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/EnglishBorderCollie.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+class EnglishBorderCollie extends BorderCollie
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Hairy.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Hairy.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Hairy.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Hairy.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,26 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+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.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.Qualifier;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@Qualifier
+@Inherited
+@interface Hairy
+{
+
+ public boolean clipped();
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/HairyQualifier.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/HairyBinding.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/HairyQualifier.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/HairyQualifier.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,19 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+import javax.enterprise.inject.AnnotationLiteral;
+
+public class HairyQualifier extends AnnotationLiteral<Hairy> implements Hairy
+{
+ private boolean clipped;
+
+ public HairyQualifier(boolean clipped)
+ {
+ this.clipped = clipped;
+ }
+
+ public boolean clipped()
+ {
+ return clipped;
+ }
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Horse.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Horse.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Horse.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Horse.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,7 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+@Species
+class Horse
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/LongHairedDog.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/LongHairedDog.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/LongHairedDog.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/LongHairedDog.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,7 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+@Hairy(clipped=false)
+class LongHairedDog
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/MiniatureShetlandPony.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/MiniatureShetlandPony.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/MiniatureShetlandPony.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/MiniatureShetlandPony.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+class MiniatureShetlandPony extends ShetlandPony
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Order.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Order.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Order.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Order.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,9 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+import javax.inject.Inject;
+
+class Order
+{
+ @Inject
+ public Order(OrderProcessor processor) {}
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/OrderProcessor.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/OrderProcessor.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/OrderProcessor.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/OrderProcessor.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,7 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+
+public class OrderProcessor
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Produced.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Produced.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Produced.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Produced.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,22 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+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.Qualifier;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@Qualifier
+@interface Produced
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/QualifierDefinitionTest.java (from rev 3830, 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/qualifier/QualifierDefinitionTest.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/QualifierDefinitionTest.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,157 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+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.jsr299.tck.AbstractJSR299Test;
+import org.jboss.jsr299.tck.literals.AnyLiteral;
+import org.jboss.jsr299.tck.literals.DefaultLiteral;
+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;
+
+@Artifact
+@SpecVersion(spec="cdi", version="PFD2")
+public class QualifierDefinitionTest extends AbstractJSR299Test
+{
+ @Test
+ @SpecAssertions({
+ @SpecAssertion(section = "2.3.1", id = "a0"),
+ @SpecAssertion(section = "2.3.1", id = "aa")
+ })
+ public void testDefaultQualifierDeclaredInJava()
+ {
+ Bean<Order> order = getBeans(Order.class).iterator().next();
+ assert order.getQualifiers().size() == 2;
+ assert order.getQualifiers().contains(new DefaultLiteral());
+ assert order.getQualifiers().contains(new AnyLiteral());
+ }
+
+ @Test
+ @SpecAssertions({
+ @SpecAssertion(section = "2.3.1", id = "b"),
+ @SpecAssertion(section = "11.1", id = "c")
+ })
+ public void testDefaultQualifierForInjectionPoint()
+ {
+ Bean<Order> order = getBeans(Order.class).iterator().next();
+ InjectionPoint injectionPoint = order.getInjectionPoints().iterator().next();
+ assert injectionPoint.getBean().getQualifiers().contains(new DefaultLiteral());
+ }
+
+ @Test
+ @SpecAssertion(section = "2.3.1", id = "a0")
+ public void testNewQualifierAndAnyBindingMutualExclusive()
+ {
+ 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.getQualifiers().size() == 1;
+ assert order.getQualifiers().iterator().next().equals(newOrderProcessor);
+ }
+
+ @Test(groups = { "annotationDefinition", "rewrite" })
+ @SpecAssertion(section = "2.3.2", id = "ba")
+ public void testQualifierDeclaresBindingAnnotation()
+ {
+ // Probably can use new SPI for this...
+ assert !getBeans(Tarantula.class, new TameQualifier()).isEmpty();
+ }
+
+ @Test
+ @SpecAssertions({
+ @SpecAssertion(section = "2.3.3", id = "a"),
+ @SpecAssertion(section="3.1.3", id="be")
+ })
+ public void testQualifiersDeclaredInJava()
+ {
+ Bean<Cat> cat = getBeans(Cat.class, new SynchronousQualifier()).iterator().next();
+ assert cat.getQualifiers().size() == 2;
+ assert cat.getQualifiers().contains(new SynchronousQualifier());
+ }
+
+ @Test
+ @SpecAssertions({
+ @SpecAssertion(section = "2.3.3", id = "d")
+ })
+ public void testMultipleQualifiers()
+ {
+ Bean<?> model = getBeans(Cod.class, new ChunkyQualifier(true), new WhitefishQualifier()).iterator().next();
+ assert model.getQualifiers().size() == 4;
+ }
+
+ @Test(groups = { "injection", "producerMethod" })
+ @SpecAssertion(section = "2.3.5", id = "a")
+ public void testFieldInjectedFromProducerMethod() throws Exception
+ {
+ Bean<Barn> barnBean = getBeans(Barn.class).iterator().next();
+ Barn barn = barnBean.create(getCurrentManager().createCreationalContext(barnBean));
+ assert barn.petSpider != null;
+ assert barn.petSpider instanceof DefangedTarantula;
+ }
+
+ @Test
+ @SpecAssertion(section = "4.1", id = "aa")
+ public void testQualifierDeclaredInheritedIsInherited() throws Exception
+ {
+ Set<? extends Annotation> bindings = getBeans(BorderCollie.class, new HairyQualifier(false)).iterator().next().getQualifiers();
+ assert bindings.size() == 2;
+ assert bindings.contains(new HairyQualifier(false));
+ assert bindings.contains(new AnyLiteral());
+ }
+
+ @Test
+ @SpecAssertion(section = "4.1", id = "aaa")
+ public void testQualifierNotDeclaredInheritedIsNotInherited()
+ {
+ Set<? extends Annotation> bindings = getBeans(ShetlandPony.class).iterator().next().getQualifiers();
+ assert bindings.size() == 2;
+ assert bindings.contains(new DefaultLiteral());
+ assert bindings.contains(new AnyLiteral());
+ }
+
+ @Test
+ @SpecAssertion(section = "4.1", id = "aa")
+ public void testQualifierDeclaredInheritedIsBlockedByIntermediateClass()
+ {
+ Set<? extends Annotation> bindings = getBeans(ClippedBorderCollie.class, new HairyQualifier(true)).iterator().next().getQualifiers();
+ assert bindings.size() == 2;
+ Annotation hairyLiteral = new HairyQualifier(true);
+ assert bindings.contains(hairyLiteral);
+ assert bindings.contains(new AnyLiteral());
+ }
+
+ @Test
+ @SpecAssertion(section = "4.1", id = "ag")
+ public void testQualifierDeclaredInheritedIsIndirectlyInherited()
+ {
+ Set<? extends Annotation> bindings = getBeans(EnglishBorderCollie.class, new HairyQualifier(false)).iterator().next().getQualifiers();
+ assert bindings.size() == 2;
+ assert bindings.contains(new HairyQualifier(false));
+ }
+
+ @Test
+ @SpecAssertion(section = "4.1", id = "aga")
+ public void testQualifierNotDeclaredInheritedIsNotIndirectlyInherited()
+ {
+ Set<? extends Annotation> bindings = getBeans(MiniatureShetlandPony.class).iterator().next().getQualifiers();
+ assert bindings.size() == 2;
+ assert bindings.contains(new DefaultLiteral());
+ assert bindings.contains(new AnyLiteral());
+ }
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ScottishFish.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/ScottishFish.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ScottishFish.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ScottishFish.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,7 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+
+interface ScottishFish extends Animal
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ShetlandPony.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/ShetlandPony.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ShetlandPony.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/ShetlandPony.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+class ShetlandPony extends Horse
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Species.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Species.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Species.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Species.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,22 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+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.Qualifier;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@Qualifier
+@interface Species
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Spider.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Spider.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Spider.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Spider.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,12 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+
+class Spider implements Animal
+{
+
+ public final void layEggs()
+ {
+
+ }
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/SpiderProducer.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/SpiderProducer.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/SpiderProducer.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/SpiderProducer.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,18 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+import javax.enterprise.inject.Produces;
+
+class SpiderProducer
+{
+
+ @Produces @Tame public Tarantula produceTameTarantula()
+ {
+ return new DefangedTarantula();
+ }
+
+ @Produces @Produced public Spider produceSpiderFromInjection(@Tame Tarantula tarantula)
+ {
+ return tarantula;
+ }
+
+}
\ No newline at end of file
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Synchronous.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Synchronous.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Synchronous.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Synchronous.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,22 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+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.Qualifier;
+
+@Target( { FIELD, PARAMETER, METHOD, TYPE })
+@Retention(RUNTIME)
+@Documented
+@Qualifier
+@interface Synchronous
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/SynchronousQualifier.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/SynchronousBinding.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/SynchronousQualifier.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/SynchronousQualifier.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,8 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+import javax.enterprise.inject.AnnotationLiteral;
+
+class SynchronousQualifier extends AnnotationLiteral<Synchronous> implements Synchronous
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Tame.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Tame.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Tame.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Tame.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,22 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+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.Qualifier;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@Qualifier
+@interface Tame
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/TameQualifier.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/TameBinding.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/TameQualifier.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/TameQualifier.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,8 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+import javax.enterprise.inject.AnnotationLiteral;
+
+class TameQualifier extends AnnotationLiteral<Tame> implements Tame
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Tarantula.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Tarantula.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Tarantula.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Tarantula.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,13 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+import java.io.Serializable;
+
+class Tarantula extends Spider implements DeadlySpider, Serializable
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Tuna.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Tuna.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Tuna.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Tuna.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,14 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+import javax.enterprise.context.RequestScoped;
+
+@RequestScoped
+class Tuna
+{
+
+ public String getName()
+ {
+ return "Ophir";
+ }
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Whitefish.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/Whitefish.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Whitefish.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/Whitefish.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,22 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+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.Qualifier;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@Qualifier
+@interface Whitefish
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/WhitefishQualifier.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/WhitefishBinding.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/WhitefishQualifier.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/WhitefishQualifier.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,8 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier;
+
+import javax.enterprise.inject.AnnotationLiteral;
+
+class WhitefishQualifier extends AnnotationLiteral<Whitefish> implements Whitefish
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/BorderCollie.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/BorderCollie.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/BorderCollie.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/BorderCollie.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,9 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.ejb.Stateless;
+
+@Stateless
+public class BorderCollie extends LongHairedDog implements BorderCollieLocal
+{
+
+}
\ No newline at end of file
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/BorderCollieLocal.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/BorderCollieLocal.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/BorderCollieLocal.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/BorderCollieLocal.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,9 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.ejb.Local;
+
+@Local
+public interface BorderCollieLocal
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/EnglishBorderCollie.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/EnglishBorderCollie.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/EnglishBorderCollie.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/EnglishBorderCollie.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,9 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.ejb.Stateless;
+
+@Stateless
+class EnglishBorderCollie extends BorderCollie implements EnglishBorderCollieLocal
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/EnglishBorderCollieLocal.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/EnglishBorderCollieLocal.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/EnglishBorderCollieLocal.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/EnglishBorderCollieLocal.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,9 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.ejb.Local;
+
+@Local
+public interface EnglishBorderCollieLocal
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/EnterpriseQualifierDefinitionTest.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/EnterpriseBindingDefinitionTest.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/EnterpriseQualifierDefinitionTest.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/EnterpriseQualifierDefinitionTest.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,61 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import java.lang.annotation.Annotation;
+import java.util.Set;
+
+import javax.enterprise.inject.Any;
+import javax.enterprise.inject.spi.Bean;
+
+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.Packaging;
+import org.jboss.testharness.impl.packaging.PackagingType;
+import org.testng.annotations.Test;
+
+/**
+ * TODO This test specifically tests session beans even though the assertions are true
+ * for all managed beans. So likely there should be a parallel set of tests for session
+ * and other managed beans.
+ *
+ */
+@Artifact
+@IntegrationTest
+(a)Packaging(PackagingType.EAR)
+@SpecVersion(spec="cdi", version="PFD2")
+public class EnterpriseQualifierDefinitionTest extends AbstractJSR299Test
+{
+ @SuppressWarnings("unchecked")
+ @Test
+ @SpecAssertion(section = "4.1", id = "al")
+ public void testQualifierDeclaredInheritedIsInherited() throws Exception
+ {
+ Set<? extends Annotation> qualifiers = getBeans(BorderCollieLocal.class, new HairyQualifier(false)).iterator().next().getQualifiers();
+ assert annotationSetMatches(qualifiers, Any.class, Hairy.class);
+ }
+
+ @Test
+ @SpecAssertion(section = "4.1", id = "ala")
+ public void testQualifierNotDeclaredInheritedIsNotInherited() throws Exception
+ {
+ assert getBeans(TameSkinnyHairlessCatLocal.class, new SkinnyQualifier()).size() == 0;
+ }
+
+ @Test
+ @SpecAssertion(section = "4.1", id = "ap")
+ public void testQualifierDeclaredInheritedIsIndirectlyInherited()
+ {
+ Set<? extends Annotation> qualifiers = getBeans(EnglishBorderCollieLocal.class, new HairyQualifier(false)).iterator().next().getQualifiers();
+ assert annotationSetMatches(qualifiers, Any.class, Hairy.class);
+ }
+
+ @Test
+ @SpecAssertion(section = "4.1", id = "apa")
+ public void testQualifierNotDeclaredInheritedIsNotIndirectlyInherited()
+ {
+ Set<Bean<FamousCatLocal>> beans = getBeans(FamousCatLocal.class, new SkinnyQualifier());
+ assert beans.size() == 0;
+ }
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/FamousCat.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/FamousCat.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/FamousCat.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/FamousCat.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,9 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.ejb.Stateless;
+
+@Stateless
+class FamousCat extends TameSkinnyHairlessCat implements FamousCatLocal
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/FamousCatLocal.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/FamousCatLocal.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/FamousCatLocal.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/FamousCatLocal.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,9 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.ejb.Local;
+
+@Local
+public interface FamousCatLocal
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/Hairless.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/Hairless.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/Hairless.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/Hairless.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,24 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+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.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.Qualifier;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@Qualifier
+@Inherited
+@interface Hairless
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/HairlessCat.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/HairlessCat.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/HairlessCat.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/HairlessCat.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,7 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+@Hairless
+class HairlessCat
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/HairlessQualifier.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/HairlessBinding.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/HairlessQualifier.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/HairlessQualifier.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,8 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.enterprise.inject.AnnotationLiteral;
+
+public class HairlessQualifier extends AnnotationLiteral<Hairless> implements Hairless
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/Hairy.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/Hairy.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/Hairy.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/Hairy.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,25 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+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.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.Qualifier;
+
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@Qualifier
+@Inherited
+@interface Hairy
+{
+ public boolean clipped();
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/HairyQualifier.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/HairyBinding.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/HairyQualifier.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/HairyQualifier.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,19 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.enterprise.inject.AnnotationLiteral;
+
+public class HairyQualifier extends AnnotationLiteral<Hairy> implements Hairy
+{
+ private boolean clipped;
+
+ public HairyQualifier(boolean clipped)
+ {
+ this.clipped = clipped;
+ }
+
+ public boolean clipped()
+ {
+ return clipped;
+ }
+
+}
\ No newline at end of file
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/LongHairedDog.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/LongHairedDog.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/LongHairedDog.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/LongHairedDog.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,7 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+@Hairy(clipped=false)
+class LongHairedDog
+{
+
+}
\ No newline at end of file
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/Skinny.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/Skinny.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/Skinny.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/Skinny.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,22 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+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.Qualifier;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@Qualifier
+@interface Skinny
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/SkinnyHairlessCat.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/SkinnyHairlessCat.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/SkinnyHairlessCat.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/SkinnyHairlessCat.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,10 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.ejb.Stateless;
+
+@Stateless
+@Skinny
+class SkinnyHairlessCat extends HairlessCat implements SkinnyHairlessCatLocal
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/SkinnyHairlessCatLocal.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/SkinnyHairlessCatLocal.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/SkinnyHairlessCatLocal.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/SkinnyHairlessCatLocal.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,9 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.ejb.Local;
+
+@Local
+public interface SkinnyHairlessCatLocal
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/SkinnyQualifier.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/SkinnyBinding.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/SkinnyQualifier.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/SkinnyQualifier.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,8 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.enterprise.inject.AnnotationLiteral;
+
+public class SkinnyQualifier extends AnnotationLiteral<Skinny> implements Skinny
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/TameSkinnyHairlessCat.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/TameSkinnyHairlessCat.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/TameSkinnyHairlessCat.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/TameSkinnyHairlessCat.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,9 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.ejb.Stateless;
+
+@Stateless
+class TameSkinnyHairlessCat extends SkinnyHairlessCat implements TameSkinnyHairlessCatLocal
+{
+
+}
Copied: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/TameSkinnyHairlessCatLocal.java (from rev 3830, tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/binding/enterprise/TameSkinnyHairlessCatLocal.java)
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/TameSkinnyHairlessCatLocal.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/qualifier/enterprise/TameSkinnyHairlessCatLocal.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -0,0 +1,9 @@
+package org.jboss.jsr299.tck.tests.definition.qualifier.enterprise;
+
+import javax.ejb.Local;
+
+@Local
+public interface TameSkinnyHairlessCatLocal
+{
+
+}
Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/definition/EnterpriseBeanDefinitionTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/definition/EnterpriseBeanDefinitionTest.java 2009-10-05 02:53:26 UTC (rev 3842)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/enterprise/definition/EnterpriseBeanDefinitionTest.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -51,7 +51,6 @@
@Test(groups = { "enterpriseBeans" })
@SpecAssertions( {
- @SpecAssertion(section = "3.1.1", id = "f"),
@SpecAssertion(section = "3.2.2", id = "aa"),
@SpecAssertion(section = "3.2.3", id = "c") } )
public void testBeanTypesAreLocalInterfacesWithoutWildcardTypesOrTypeVariablesWithSuperInterfaces()
Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/definition/OuterClass.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/definition/OuterClass.java 2009-10-05 02:53:26 UTC (rev 3842)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/definition/OuterClass.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -4,10 +4,10 @@
class OuterClass
{
- class InnerClass_NotBeean
+ class InnerClass_NotBean
{
- public InnerClass_NotBeean()
+ public InnerClass_NotBean()
{
}
Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/definition/SimpleBeanDefinitionTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/definition/SimpleBeanDefinitionTest.java 2009-10-05 02:53:26 UTC (rev 3842)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/definition/SimpleBeanDefinitionTest.java 2009-10-05 03:34:45 UTC (rev 3843)
@@ -1,7 +1,7 @@
package org.jboss.jsr299.tck.tests.implementation.simple.definition;
import org.jboss.jsr299.tck.AbstractJSR299Test;
-import org.jboss.jsr299.tck.tests.implementation.simple.definition.OuterClass.InnerClass_NotBeean;
+import org.jboss.jsr299.tck.tests.implementation.simple.definition.OuterClass.InnerClass_NotBean;
import org.jboss.jsr299.tck.tests.implementation.simple.definition.OuterClass.StaticInnerClass;
import org.jboss.test.audit.annotations.SpecAssertion;
import org.jboss.test.audit.annotations.SpecAssertions;
@@ -36,7 +36,7 @@
})
public void testNonStaticInnerClassDeclaredInJavaNotDiscovered()
{
- assert getBeans(InnerClass_NotBeean.class).size() == 0;
+ assert getBeans(InnerClass_NotBean.class).size() == 0;
}
@Test
@@ -46,17 +46,6 @@
assert getBeans(Car.class).size() == 0;
}
- //Not sure yet whether this is needed
-// @Test
-// public void testClassesImplementingServletInterfacesNotDiscoveredAsSimpleBeans()
-// {
-// assert getBeans(MockFilter.class).size() == 0;
-// assert getBeans(MockHttpSessionListener.class).size() == 0;
-// assert getBeans(MockServlet.class).size() == 0;
-// assert getBeans(MockServletContextListener.class).size() == 0;
-// assert getBeans(MockServletRequestListener.class).size() == 0;
-// }
-
@Test
@SpecAssertion(section="3.1.1", id="f")
public void testClassesImplementingEnterpriseBeanInterfaceNotDiscoveredAsSimpleBean()
14 years, 6 months
[webbeans-commits] Webbeans SVN: r3842 - tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/bean/genericbroken.
by webbeans-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2009-10-04 22:53:26 -0400 (Sun, 04 Oct 2009)
New Revision: 3842
Removed:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/bean/genericbroken/Bar.java
Log:
removed unnecessary class
Deleted: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/bean/genericbroken/Bar.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/bean/genericbroken/Bar.java 2009-10-04 15:45:57 UTC (rev 3841)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/definition/bean/genericbroken/Bar.java 2009-10-05 02:53:26 UTC (rev 3842)
@@ -1,8 +0,0 @@
-package org.jboss.jsr299.tck.tests.definition.bean.genericbroken;
-
-import javax.inject.Inject;
-
-class Bar
-{
- @Inject FooBroken fooBroken;
-}
14 years, 6 months
[webbeans-commits] Webbeans SVN: r3841 - in ri/trunk: inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util and 4 other directories.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-10-04 11:45:57 -0400 (Sun, 04 Oct 2009)
New Revision: 3841
Added:
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Any.java
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/BeanDisambiguator.java
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Plain.java
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Spare.java
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotated.java
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedCallable.java
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedConstructor.java
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedField.java
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedMember.java
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedMethod.java
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedParameter.java
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedType.java
ri/trunk/inject-tck-runner/src/test/resources/META-INF/
ri/trunk/inject-tck-runner/src/test/resources/META-INF/services/
ri/trunk/inject-tck-runner/src/test/resources/META-INF/services/javax.enterprise.inject.spi.Extension
Modified:
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/AtInjectTCK.java
ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/SpareTireProducer.java
ri/trunk/version-matrix/pom.xml
Log:
Pass 330 TCK unmodified
Added: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Any.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Any.java (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Any.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1,47 @@
+/*
+ * 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.atinject.tck;
+
+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.Qualifier;
+
+/**
+ * A built-in binding type that is implicitly applied to all beans which do not
+ * have the {@link New} built-in binding type.
+ *
+ * @author Gavin King
+ * @author David Allen
+ */
+
+@Qualifier
+@Retention(RUNTIME)
+@Target( { TYPE, METHOD, FIELD, PARAMETER })
+@Documented
+public @interface Any
+{
+
+}
Property changes on: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Any.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/AtInjectTCK.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/AtInjectTCK.java 2009-10-04 15:43:27 UTC (rev 3840)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/AtInjectTCK.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -15,6 +15,7 @@
import org.atinject.tck.auto.Tire;
import org.atinject.tck.auto.V8Engine;
import org.atinject.tck.auto.accessories.Cupholder;
+import org.atinject.tck.auto.accessories.SpareTire;
import org.jboss.webbeans.mock.MockEELifecycle;
import org.jboss.webbeans.mock.TestContainer;
@@ -36,6 +37,7 @@
Cupholder.class,
FuelTank.class,
Tire.class,
+ SpareTire.class,
// Two producer method which allow us to expose SpareTire and Drivers seat with qualifiers
DriversSeatProducer.class,
SpareTireProducer.class
@@ -58,6 +60,7 @@
// Obtain a reference to the Car and pass it to the TCK to generate the testsuite
Bean<?> bean = beanManager.resolve(beanManager.getBeans(Car.class));
Car instance = (Car) beanManager.getReference(bean, Car.class, beanManager.createCreationalContext(bean));
+
return Tck.testsFor(instance, false /* supportsStatic */, true /* supportsPrivate */);
}
}
\ No newline at end of file
Added: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/BeanDisambiguator.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/BeanDisambiguator.java (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/BeanDisambiguator.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1,413 @@
+package org.jboss.webbeans.atinject.tck;
+
+import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.AnnotationLiteral;
+import javax.enterprise.inject.spi.AnnotatedConstructor;
+import javax.enterprise.inject.spi.AnnotatedField;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedParameter;
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.Extension;
+import javax.enterprise.inject.spi.ProcessAnnotatedType;
+import javax.inject.Inject;
+
+import org.atinject.tck.auto.Convertible;
+import org.atinject.tck.auto.Tire;
+import org.jboss.webbeans.atinject.tck.util.ForwardingAnnotatedConstructor;
+import org.jboss.webbeans.atinject.tck.util.ForwardingAnnotatedField;
+import org.jboss.webbeans.atinject.tck.util.ForwardingAnnotatedMethod;
+import org.jboss.webbeans.atinject.tck.util.ForwardingAnnotatedParameter;
+import org.jboss.webbeans.atinject.tck.util.ForwardingAnnotatedType;
+
+public class BeanDisambiguator implements Extension
+{
+
+ private static final Annotation PLAIN_LITERAL = new AnnotationLiteral<Plain>()
+ {
+ };
+
+ /**
+ * Modufy the class metadata that 299 will use when building beans
+ */
+ public void observe(@Observes ProcessAnnotatedType<?> pat)
+ {
+ addPlainQualifierToTireBean(pat);
+ addPlainQualifierToConvertibleConstructor(pat);
+ addPlainQualifierToConvertiblePlainTireField(pat);
+ addPlainQualifierToConvertibleInjectInstanceMethodWithManyArgs(pat);
+ }
+
+ /**
+ * Adjust the injectInstanceMethodWithManyArgs injectable method on {@link Convertible} so that parameters
+ * 2 and 6 ({@code plainTire} and {@code plainTireProvider}) additionally have the @Plain annotation
+ */
+ private <X> void addPlainQualifierToConvertibleInjectInstanceMethodWithManyArgs(ProcessAnnotatedType<X> pat)
+ {
+ if (pat.getAnnotatedType().getJavaClass().equals(Convertible.class))
+ {
+ final AnnotatedType<X> original = pat.getAnnotatedType();
+
+ final Set<AnnotatedMethod<? super X>> methods = new HashSet<AnnotatedMethod<? super X>>();
+ for (final AnnotatedMethod<? super X> method : original.getMethods())
+ {
+ if (method.getJavaMember().getName().equals("injectInstanceMethodWithManyArgs"))
+ {
+ methods.add(qualifyParameterWithPlain(method, 2, 6));
+ }
+ else
+ {
+ methods.add(method);
+ }
+ }
+
+ pat.setAnnotatedType(new ForwardingAnnotatedType<X>()
+ {
+
+ @Override
+ protected AnnotatedType<X> delegate()
+ {
+ return original;
+ }
+
+ @Override
+ public Set<AnnotatedMethod<? super X>> getMethods()
+ {
+ return methods;
+ }
+
+ });
+ }
+ }
+
+
+ /**
+ * Add the @Plain qualifier to the field {@code fieldPlainTire} and @{code fieldPlainTireProvider} of {@link Convertible}
+ *
+ */
+ private <X> void addPlainQualifierToConvertiblePlainTireField(ProcessAnnotatedType<X> pat)
+ {
+ if (pat.getAnnotatedType().getJavaClass().equals(Convertible.class))
+ {
+ final AnnotatedType<X> original = pat.getAnnotatedType();
+
+ final Set<AnnotatedField<? super X>> fields = new HashSet<AnnotatedField<? super X>>();
+
+ for (final AnnotatedField<? super X> field : original.getFields())
+ {
+ if (field.getJavaMember().getName().equals("fieldPlainTire") || field.getJavaMember().getName().equals("fieldPlainTireProvider"))
+ {
+ fields.add(addPlainQualifierToField(field));
+ }
+ else
+ {
+ fields.add(field);
+ }
+ }
+
+ pat.setAnnotatedType(new ForwardingAnnotatedType<X>()
+ {
+
+ @Override
+ public Set<AnnotatedField<? super X>> getFields()
+ {
+ return fields;
+ }
+
+ @Override
+ protected AnnotatedType<X> delegate()
+ {
+ return original;
+ }
+
+ });
+ }
+ }
+
+ /**
+ * Add the @Plain qualifier to the parameters 2 and 6 ({@code plainTire} and {@code plainTireProvider}) of the constructor of {@link Convertible}
+ *
+ */
+ private <X> void addPlainQualifierToConvertibleConstructor(ProcessAnnotatedType<X> pat)
+ {
+ if (pat.getAnnotatedType().getJavaClass().equals(Convertible.class))
+ {
+ final AnnotatedType<X> original = pat.getAnnotatedType();
+
+ final Set<AnnotatedConstructor<X>> constructors = new HashSet<AnnotatedConstructor<X>>();
+ for (final AnnotatedConstructor<X> constructor : original.getConstructors())
+ {
+ if (constructor.isAnnotationPresent(Inject.class))
+ {
+ constructors.add(qualifyParameterWithPlain(constructor, 2, 6));
+ }
+ else
+ {
+ constructors.add(constructor);
+ }
+ }
+
+ pat.setAnnotatedType(new ForwardingAnnotatedType<X>()
+ {
+
+ @Override
+ protected AnnotatedType<X> delegate()
+ {
+ return original;
+ }
+
+ @Override
+ public Set<AnnotatedConstructor<X>> getConstructors()
+ {
+ return constructors;
+ }
+
+ });
+ }
+ }
+
+ /**
+ * Add the @Plain annotation to the {@link Tire} class
+ *
+ */
+ private <X> void addPlainQualifierToTireBean(ProcessAnnotatedType<X> pat)
+ {
+ if (pat.getAnnotatedType().getJavaClass().equals(Tire.class))
+ {
+ final Set<Annotation> annotations = new HashSet<Annotation>();
+ annotations.addAll(pat.getAnnotatedType().getAnnotations());
+ annotations.add(PLAIN_LITERAL);
+ final AnnotatedType<X> original = pat.getAnnotatedType();
+ pat.setAnnotatedType(new ForwardingAnnotatedType<X>()
+ {
+
+ @Override
+ protected AnnotatedType<X> delegate()
+ {
+ return original;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <A extends Annotation> A getAnnotation(Class<A> annotationType)
+ {
+ if (annotationType.equals(Plain.class))
+ {
+ return (A) PLAIN_LITERAL;
+ }
+ else
+ {
+ return delegate().getAnnotation(annotationType);
+ }
+ }
+
+ @Override
+ public Set<Annotation> getAnnotations()
+ {
+ return annotations;
+ }
+
+ @Override
+ public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ if (annotationType.equals(Plain.class))
+ {
+ return true;
+ }
+ else
+ {
+ return delegate().isAnnotationPresent(annotationType);
+ }
+ }
+
+ });
+ }
+ }
+
+ /**
+ * Utility method to add the @Plain qualifier to a list of parameters
+ */
+ private <X> List<AnnotatedParameter<X>> qualifyParameterWithPlain(final List<AnnotatedParameter<X>> parameters, Integer... position)
+ {
+ Collection<Integer> positions = Arrays.asList(position);
+ final List<AnnotatedParameter<X>> newParameters = new ArrayList<AnnotatedParameter<X>>();
+
+ for (final AnnotatedParameter<X> parameter : parameters)
+ {
+ if (positions.contains(parameter.getPosition()))
+ {
+ newParameters.add(addPlainQualifierToParameter(parameter));
+ }
+ else
+ {
+ newParameters.add(parameter);
+ }
+ }
+
+ return newParameters;
+
+ }
+
+ /**
+ * Utility method to add the @Plain qualifier to a method
+ */
+ private <X> AnnotatedMethod<X> qualifyParameterWithPlain(final AnnotatedMethod<X> method, Integer... position)
+ {
+ final List<AnnotatedParameter<X>> parameters = qualifyParameterWithPlain(method.getParameters(), position);
+ return new ForwardingAnnotatedMethod<X>()
+ {
+
+ @Override
+ public List<AnnotatedParameter<X>> getParameters()
+ {
+ return parameters;
+ }
+
+ @Override
+ protected AnnotatedMethod<X> delegate()
+ {
+ return method;
+ }
+
+ };
+ }
+
+ /**
+ * Utility method to add the @Plain qualifier to a constructor
+ */
+ private <X> AnnotatedConstructor<X> qualifyParameterWithPlain(final AnnotatedConstructor<X> constructor, Integer... position)
+ {
+ final List<AnnotatedParameter<X>> parameters = qualifyParameterWithPlain(constructor.getParameters(), position);
+ return new ForwardingAnnotatedConstructor<X>()
+ {
+
+ @Override
+ public List<AnnotatedParameter<X>> getParameters()
+ {
+ return parameters;
+ }
+
+ @Override
+ protected AnnotatedConstructor<X> delegate()
+ {
+ return constructor;
+ }
+
+ };
+ }
+
+ /**
+ * Utility method to add the @Plain qualifier to a parameter
+ */
+ private <X> AnnotatedParameter<X> addPlainQualifierToParameter(final AnnotatedParameter<X> parameter)
+ {
+ final Set<Annotation> annotations = new HashSet<Annotation>();
+ annotations.addAll(parameter.getAnnotations());
+ annotations.add(PLAIN_LITERAL);
+ return new ForwardingAnnotatedParameter<X>()
+ {
+
+ @Override
+ protected AnnotatedParameter<X> delegate()
+ {
+ return parameter;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <A extends Annotation> A getAnnotation(Class<A> annotationType)
+ {
+ if (annotationType.equals(Plain.class))
+ {
+ return (A) PLAIN_LITERAL;
+ }
+ else
+ {
+ return delegate().getAnnotation(annotationType);
+ }
+ }
+
+ @Override
+ public Set<Annotation> getAnnotations()
+ {
+ return annotations;
+ }
+
+ @Override
+ public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ if (annotationType.equals(Plain.class))
+ {
+ return true;
+ }
+ else
+ {
+ return delegate().isAnnotationPresent(annotationType);
+ }
+ }
+
+ };
+ }
+
+ /**
+ * Utility method to add the @Plain qualifier to a field
+ */
+ private <X> AnnotatedField<X> addPlainQualifierToField(final AnnotatedField<X> field)
+ {
+ final Set<Annotation> annotations = new HashSet<Annotation>();
+ annotations.addAll(field.getAnnotations());
+ annotations.add(PLAIN_LITERAL);
+ return new ForwardingAnnotatedField<X>()
+ {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <A extends Annotation> A getAnnotation(Class<A> annotationType)
+ {
+ if (annotationType.equals(Plain.class))
+ {
+ return (A) PLAIN_LITERAL;
+ }
+ else
+ {
+ return delegate().getAnnotation(annotationType);
+ }
+ }
+
+ @Override
+ public Set<Annotation> getAnnotations()
+ {
+ return annotations;
+ }
+
+ @Override
+ public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ if (annotationType.equals(Plain.class))
+ {
+ return true;
+ }
+ else
+ {
+ return delegate().isAnnotationPresent(annotationType);
+ }
+ }
+
+ @Override
+ protected AnnotatedField<X> delegate()
+ {
+ return field;
+ }
+
+ };
+ }
+
+
+}
Property changes on: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/BeanDisambiguator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Plain.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Plain.java (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Plain.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1,39 @@
+/*
+ * 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.atinject.tck;
+
+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.Qualifier;
+
+@Qualifier
+@Retention(RUNTIME)
+@Target( { TYPE, METHOD, FIELD, PARAMETER })
+@Documented
+public @interface Plain
+{
+
+}
Property changes on: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Plain.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Spare.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Spare.java (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Spare.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1,39 @@
+/*
+ * 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.atinject.tck;
+
+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.Qualifier;
+
+@Qualifier
+@Retention(RUNTIME)
+@Target( { TYPE, METHOD, FIELD, PARAMETER })
+@Documented
+public @interface Spare
+{
+
+}
Property changes on: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/Spare.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/SpareTireProducer.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/SpareTireProducer.java 2009-10-04 15:43:27 UTC (rev 3840)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/SpareTireProducer.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -17,7 +17,7 @@
}
@Override
- @Produces @Named("spare")
+ @Produces @Named("spare") @Spare
public SpareTire produce()
{
return super.produce();
Added: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotated.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotated.java (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotated.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1,81 @@
+/*
+ * 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.atinject.tck.util;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.enterprise.inject.spi.Annotated;
+
+/**
+ * Base class to allow implementation of the decorator pattern
+ *
+ * @author Pete Muir
+ *
+ * @param <T> the base type
+ * @param <S> the annotated element type
+ */
+public abstract class ForwardingAnnotated implements Annotated
+{
+
+ protected abstract Annotated delegate();
+
+ public <A extends Annotation> A getAnnotation(Class<A> annotationType)
+ {
+ return delegate().getAnnotation(annotationType);
+ }
+
+ public Set<Annotation> getAnnotations()
+ {
+ return delegate().getAnnotations();
+ }
+
+ public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ return delegate().isAnnotationPresent(annotationType);
+ }
+
+ public Type getBaseType()
+ {
+ return delegate().getBaseType();
+ }
+
+ public Set<Type> getTypeClosure()
+ {
+ return delegate().getTypeClosure();
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ return delegate().equals(obj);
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return delegate().hashCode();
+ }
+
+ @Override
+ public String toString()
+ {
+ return delegate().toString();
+ }
+
+}
\ No newline at end of file
Property changes on: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotated.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedCallable.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedCallable.java (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedCallable.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1,19 @@
+package org.jboss.webbeans.atinject.tck.util;
+
+import java.util.List;
+
+import javax.enterprise.inject.spi.AnnotatedCallable;
+import javax.enterprise.inject.spi.AnnotatedParameter;
+
+public abstract class ForwardingAnnotatedCallable<X> extends ForwardingAnnotatedMember<X> implements AnnotatedCallable<X>
+{
+
+ @Override
+ protected abstract AnnotatedCallable<X> delegate();
+
+ public List<AnnotatedParameter<X>> getParameters()
+ {
+ return delegate().getParameters();
+ }
+
+}
Property changes on: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedCallable.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedConstructor.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedConstructor.java (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedConstructor.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1,19 @@
+package org.jboss.webbeans.atinject.tck.util;
+
+import java.lang.reflect.Constructor;
+
+import javax.enterprise.inject.spi.AnnotatedConstructor;
+
+public abstract class ForwardingAnnotatedConstructor<X> extends ForwardingAnnotatedCallable<X> implements AnnotatedConstructor<X>
+{
+
+ @Override
+ protected abstract AnnotatedConstructor<X> delegate();
+
+ @Override
+ public Constructor<X> getJavaMember()
+ {
+ return delegate().getJavaMember();
+ }
+
+}
Property changes on: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedConstructor.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedField.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedField.java (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedField.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1,19 @@
+package org.jboss.webbeans.atinject.tck.util;
+
+import java.lang.reflect.Field;
+
+import javax.enterprise.inject.spi.AnnotatedField;
+
+public abstract class ForwardingAnnotatedField<X> extends ForwardingAnnotatedMember<X> implements AnnotatedField<X>
+{
+
+ @Override
+ protected abstract AnnotatedField<X> delegate();
+
+ @Override
+ public Field getJavaMember()
+ {
+ return delegate().getJavaMember();
+ }
+
+}
Property changes on: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedField.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedMember.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedMember.java (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedMember.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1,29 @@
+package org.jboss.webbeans.atinject.tck.util;
+
+import java.lang.reflect.Member;
+
+import javax.enterprise.inject.spi.AnnotatedMember;
+import javax.enterprise.inject.spi.AnnotatedType;
+
+public abstract class ForwardingAnnotatedMember<X> extends ForwardingAnnotated implements AnnotatedMember<X>
+{
+
+ @Override
+ protected abstract AnnotatedMember<X> delegate();
+
+ public AnnotatedType<X> getDeclaringType()
+ {
+ return delegate().getDeclaringType();
+ }
+
+ public Member getJavaMember()
+ {
+ return delegate().getJavaMember();
+ }
+
+ public boolean isStatic()
+ {
+ return delegate().isStatic();
+ }
+
+}
Property changes on: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedMember.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedMethod.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedMethod.java (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedMethod.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1,19 @@
+package org.jboss.webbeans.atinject.tck.util;
+
+import java.lang.reflect.Method;
+
+import javax.enterprise.inject.spi.AnnotatedMethod;
+
+public abstract class ForwardingAnnotatedMethod<X> extends ForwardingAnnotatedCallable<X> implements AnnotatedMethod<X>
+{
+
+ @Override
+ protected abstract AnnotatedMethod<X> delegate();
+
+ @Override
+ public Method getJavaMember()
+ {
+ return delegate().getJavaMember();
+ }
+
+}
Property changes on: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedMethod.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedParameter.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedParameter.java (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedParameter.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1,22 @@
+package org.jboss.webbeans.atinject.tck.util;
+
+import javax.enterprise.inject.spi.AnnotatedCallable;
+import javax.enterprise.inject.spi.AnnotatedParameter;
+
+public abstract class ForwardingAnnotatedParameter<X> extends ForwardingAnnotated implements AnnotatedParameter<X>
+{
+
+ @Override
+ protected abstract AnnotatedParameter<X> delegate();
+
+ public AnnotatedCallable<X> getDeclaringCallable()
+ {
+ return delegate().getDeclaringCallable();
+ }
+
+ public int getPosition()
+ {
+ return delegate().getPosition();
+ }
+
+}
Property changes on: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedParameter.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedType.java
===================================================================
--- ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedType.java (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedType.java 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1,36 @@
+package org.jboss.webbeans.atinject.tck.util;
+
+import java.util.Set;
+
+import javax.enterprise.inject.spi.AnnotatedConstructor;
+import javax.enterprise.inject.spi.AnnotatedField;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedType;
+
+public abstract class ForwardingAnnotatedType<X> extends ForwardingAnnotated implements AnnotatedType<X>
+{
+
+ @Override
+ protected abstract AnnotatedType<X> delegate();
+
+ public Set<AnnotatedConstructor<X>> getConstructors()
+ {
+ return delegate().getConstructors();
+ }
+
+ public Set<AnnotatedField<? super X>> getFields()
+ {
+ return delegate().getFields();
+ }
+
+ public Class<X> getJavaClass()
+ {
+ return delegate().getJavaClass();
+ }
+
+ public Set<AnnotatedMethod<? super X>> getMethods()
+ {
+ return delegate().getMethods();
+ }
+
+}
Property changes on: ri/trunk/inject-tck-runner/src/test/java/org/jboss/webbeans/atinject/tck/util/ForwardingAnnotatedType.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/inject-tck-runner/src/test/resources/META-INF/services/javax.enterprise.inject.spi.Extension
===================================================================
--- ri/trunk/inject-tck-runner/src/test/resources/META-INF/services/javax.enterprise.inject.spi.Extension (rev 0)
+++ ri/trunk/inject-tck-runner/src/test/resources/META-INF/services/javax.enterprise.inject.spi.Extension 2009-10-04 15:45:57 UTC (rev 3841)
@@ -0,0 +1 @@
+org.jboss.webbeans.atinject.tck.BeanDisambiguator
\ No newline at end of file
Modified: ri/trunk/version-matrix/pom.xml
===================================================================
--- ri/trunk/version-matrix/pom.xml 2009-10-04 15:43:27 UTC (rev 3840)
+++ ri/trunk/version-matrix/pom.xml 2009-10-04 15:45:57 UTC (rev 3841)
@@ -87,7 +87,7 @@
<dependency>
<groupId>org.atinject</groupId>
<artifactId>inject-tck</artifactId>
- <version>1.0.0-PFD-3-jboss-1</version>
+ <version>1.0.0-PFD-3</version>
</dependency>
14 years, 6 months
[webbeans-commits] Webbeans SVN: r3840 - ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-10-04 11:43:27 -0400 (Sun, 04 Oct 2009)
New Revision: 3840
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBConstructorImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBMethodImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBParameterImpl.java
Log:
Fix bugs
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBConstructorImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBConstructorImpl.java 2009-10-04 15:42:44 UTC (rev 3839)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBConstructorImpl.java 2009-10-04 15:43:27 UTC (rev 3840)
@@ -118,7 +118,7 @@
for (int i = 0; i < constructor.getParameterTypes().length; i++)
{
- if (constructor.getParameterAnnotations()[i].length > 0)
+ if (constructor.getParameterAnnotations()[i].length > 0 || annotatedTypeParameters.containsKey(i))
{
Class<?> clazz = constructor.getParameterTypes()[i];
Type type = constructor.getGenericParameterTypes()[i];
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBMethodImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBMethodImpl.java 2009-10-04 15:42:44 UTC (rev 3839)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBMethodImpl.java 2009-10-04 15:43:27 UTC (rev 3840)
@@ -124,7 +124,7 @@
for (int i = 0; i < method.getParameterTypes().length; i++)
{
- if (method.getParameterAnnotations()[i].length > 0)
+ if (method.getParameterAnnotations()[i].length > 0 || annotatedTypeParameters.containsKey(i))
{
Class<? extends Object> clazz = method.getParameterTypes()[i];
Type type = method.getGenericParameterTypes()[i];
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBParameterImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBParameterImpl.java 2009-10-04 15:42:44 UTC (rev 3839)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBParameterImpl.java 2009-10-04 15:43:27 UTC (rev 3840)
@@ -76,7 +76,7 @@
this.declaringMember = declaringMember;
this._package = declaringMember.getPackage();
this.position = position;
- this.toString = new StringBuilder().append("parameter ").append(position + 1).append(" of ").append(declaringMember.toString()).toString();
+ this.toString = new StringBuilder().append("parameter ").append(position).append(" of ").append(declaringMember.toString()).toString();
}
/**
14 years, 6 months
[webbeans-commits] Webbeans SVN: r3839 - ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-10-04 11:42:44 -0400 (Sun, 04 Oct 2009)
New Revision: 3839
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessAnnotatedTypeImpl.java
Log:
Better toString
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessAnnotatedTypeImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessAnnotatedTypeImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessAnnotatedTypeImpl.java 2009-10-04 15:42:44 UTC (rev 3839)
@@ -61,5 +61,11 @@
{
return veto;
}
+
+ @Override
+ public String toString()
+ {
+ return annotatedType.toString();
+ }
}
14 years, 6 months
[webbeans-commits] Webbeans SVN: r3838 - ri/trunk/impl/src/main/java/org/jboss/webbeans and 14 other directories.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-10-04 08:19:01 -0400 (Sun, 04 Oct 2009)
New Revision: 3838
Added:
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployerEnvironment.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AbstractBeanDiscoveryEvent.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AbstractContainerEvent.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AfterBeanDiscoveryImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AfterDeploymentValidationImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/BeforeBeanDiscoveryImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/BeforeShutdownImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessAnnotatedTypeImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessObserverMethodImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessProducerImpl.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/Tabby.java
Removed:
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDiscoveryEvent.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractContainerEvent.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterBeanDiscoveryImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterDeploymentValidationImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeBeanDiscoveryImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeShutdownImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ProcessAnnotatedTypeImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ProcessObserverMethodImpl.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/PreferredDogProducer.java
Modified:
ri/trunk/api/src/main/java/javax/enterprise/inject/spi/AnnotatedMember.java
ri/trunk/api/src/main/java/javax/enterprise/inject/spi/ProcessProducer.java
ri/trunk/api/src/main/java/javax/enterprise/inject/spi/ProcessProducerField.java
ri/trunk/api/src/main/java/javax/enterprise/inject/spi/ProcessProducerMethod.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/Validator.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractReceiverBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethod.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerField.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethod.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/SessionBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ee/EEResourceProducerField.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ee/PersistenceContextProducerField.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDeployer.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployment.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployer.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/ejb/EjbDescriptors.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverFactory.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverMethodImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/event/TransactionalObserverMethodImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingWBClass.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBClass.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBClassImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeDisposerResolver.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Beans.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Reflections.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/singleProducerMethod/BootstrapTest.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/AbstractJSR299Test.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/observer/ProcessObserverMethodEventTest.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/observer/ProcessObserverMethodObserver.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/Cat.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/DogProducer.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/ProducerProcessor.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/ProducerTest.java
Log:
Support for ProcessProducer and ProcessObserverMethod event
Modified: ri/trunk/api/src/main/java/javax/enterprise/inject/spi/AnnotatedMember.java
===================================================================
--- ri/trunk/api/src/main/java/javax/enterprise/inject/spi/AnnotatedMember.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/api/src/main/java/javax/enterprise/inject/spi/AnnotatedMember.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -27,7 +27,7 @@
*
* @author Pete Muir
*
- * @param <X> the type of the member
+ * @param <X> the type of the declaring type
*/
public interface AnnotatedMember<X> extends Annotated
{
Modified: ri/trunk/api/src/main/java/javax/enterprise/inject/spi/ProcessProducer.java
===================================================================
--- ri/trunk/api/src/main/java/javax/enterprise/inject/spi/ProcessProducer.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/api/src/main/java/javax/enterprise/inject/spi/ProcessProducer.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -17,13 +17,13 @@
package javax.enterprise.inject.spi;
-public interface ProcessProducer<X, T>
+public interface ProcessProducer<T, X>
{
- public AnnotatedMember<X> getAnnotatedMember();
+ public AnnotatedMember<T> getAnnotatedMember();
- public Producer<T> getProducer();
+ public Producer<X> getProducer();
- public void setProducer(Producer<T> producer);
+ public void setProducer(Producer<X> producer);
public void addDefinitionError(Throwable t);
}
Modified: ri/trunk/api/src/main/java/javax/enterprise/inject/spi/ProcessProducerField.java
===================================================================
--- ri/trunk/api/src/main/java/javax/enterprise/inject/spi/ProcessProducerField.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/api/src/main/java/javax/enterprise/inject/spi/ProcessProducerField.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -16,7 +16,7 @@
*/
package javax.enterprise.inject.spi;
-public interface ProcessProducerField<X, T> extends ProcessBean<T>
+public interface ProcessProducerField<T, X> extends ProcessBean<X>
{
- public AnnotatedField<X> getAnnotatedProducerField();
+ public AnnotatedField<T> getAnnotatedProducerField();
}
\ No newline at end of file
Modified: ri/trunk/api/src/main/java/javax/enterprise/inject/spi/ProcessProducerMethod.java
===================================================================
--- ri/trunk/api/src/main/java/javax/enterprise/inject/spi/ProcessProducerMethod.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/api/src/main/java/javax/enterprise/inject/spi/ProcessProducerMethod.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -16,9 +16,9 @@
*/
package javax.enterprise.inject.spi;
-public interface ProcessProducerMethod<X, T> extends ProcessBean<T>
+public interface ProcessProducerMethod<T, X> extends ProcessBean<X>
{
- public AnnotatedMethod<X> getAnnotatedProducerMethod();
+ public AnnotatedMethod<T> getAnnotatedProducerMethod();
- public AnnotatedParameter<X> getAnnotatedDisposedParameter();
+ public AnnotatedParameter<T> getAnnotatedDisposedParameter();
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -552,12 +552,17 @@
passivationCapableBeans.put(bean.getId(), bean);
decoratorResolver.clear();
}
+
+ public <T> Set<ObserverMethod<?, T>> resolveObserverMethods(T event, Annotation... bindings)
+ {
+ checkEventObjectType(event);
+ return resolveObserverMethods(event.getClass(), bindings);
+ }
@SuppressWarnings("unchecked")
- public <T> Set<ObserverMethod<?, T>> resolveObserverMethods(T event, Annotation... bindings)
+ private <T> Set<ObserverMethod<?, T>> resolveObserverMethods(Type eventType, Annotation... bindings)
{
checkBindingTypes(Arrays.asList(bindings));
- Class<?> clazz = event.getClass();
// Manually hack in the default annotations here. We need to redo all the annotation defaulting throughout. PLM
HashSet<Annotation> bindingAnnotations = new HashSet<Annotation>(Arrays.asList(bindings));
@@ -566,9 +571,8 @@
bindingAnnotations.add(new DefaultLiteral());
}
bindingAnnotations.add(new AnyLiteral());
- checkEventType(clazz);
Set<ObserverMethod<?, T>> observers = new HashSet<ObserverMethod<?, T>>();
- Set<ObserverMethod<?,?>> eventObservers = observerResolver.resolve(ResolvableFactory.of(new Reflections.HierarchyDiscovery(clazz).getFlattenedTypes(), bindingAnnotations, null));
+ Set<ObserverMethod<?,?>> eventObservers = observerResolver.resolve(ResolvableFactory.of(new Reflections.HierarchyDiscovery(eventType).getFlattenedTypes(), bindingAnnotations, null));
for (ObserverMethod<?,?> observer : eventObservers)
{
observers.add((ObserverMethod<?, T>) observer);
@@ -593,11 +597,12 @@
}
- private void checkEventType(Type eventType)
+ private void checkEventObjectType(Object event)
{
+ Class<?> eventType = event.getClass();
Type[] types;
Type resolvedType = new Reflections.HierarchyDiscovery(eventType).getResolvedType();
- if (resolvedType instanceof Class)
+ if (resolvedType instanceof Class<?>)
{
types = new Type[0];
}
@@ -824,10 +829,16 @@
* @see javax.enterprise.inject.spi.BeanManager#fireEvent(java.lang.Object,
* java.lang.annotation.Annotation[])
*/
- public void fireEvent(Object event, Annotation... bindings)
+ public void fireEvent(Object event, Annotation... qualifiers)
{
- notifyObservers(event, resolveObserverMethods(event, bindings));
+ fireEvent(event.getClass(), event, qualifiers);
}
+
+ public void fireEvent(Type eventType, Object event, Annotation... qualifiers)
+ {
+ checkEventObjectType(event);
+ notifyObservers(event, resolveObserverMethods(eventType, qualifiers));
+ }
private <T> void notifyObservers(final T event, final Set<ObserverMethod<?, T>> observers)
{
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/Validator.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/Validator.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/Validator.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -184,7 +184,7 @@
{
if (!ij.isTransient() && !Beans.isPassivationCapableBean(resolvedBean))
{
- if (resolvedBean.getScope().equals(Dependent.class) && resolvedBean instanceof AbstractProducerBean<?,?>)
+ if (resolvedBean.getScope().equals(Dependent.class) && resolvedBean instanceof AbstractProducerBean<?, ?,?>)
{
throw new IllegalProductException("The bean " + ij.getBean() + " declares a passivating scope but the producer returned a non-serializable bean for injection: " + resolvedBean);
}
@@ -308,10 +308,10 @@
private void validateDisposalMethods(BeanDeployerEnvironment environment)
{
- Set<DisposalMethod<?>> beans = environment.getUnresolvedDisposalBeans();
+ Set<DisposalMethod<?, ?>> beans = environment.getUnresolvedDisposalBeans();
if (!beans.isEmpty())
{
- throw new DefinitionException("The following Disposal methods where not declared but not resolved to a producer method" + beans);
+ throw new DefinitionException("The following Disposal methods were declared but did not resolved to a producer method " + beans);
}
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -56,7 +56,7 @@
* @param <T>
* @param <S>
*/
-public abstract class AbstractProducerBean<T, S extends Member> extends AbstractReceiverBean<T, S> implements Producer<T>
+public abstract class AbstractProducerBean<X, T, S extends Member> extends AbstractReceiverBean<X, T, S> implements Producer<T>
{
private static final LogProvider log = Logging.getLogProvider(AbstractProducerBean.class);
@@ -65,13 +65,13 @@
* @param declaringBean The declaring bean
* @param manager The Web Beans manager
*/
- public AbstractProducerBean(String idSuffix, AbstractClassBean<?> declaringBean, BeanManagerImpl manager)
+ public AbstractProducerBean(String idSuffix, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
{
super(idSuffix, declaringBean, manager);
}
@Override
- protected abstract WBMember<T, ?, S> getAnnotatedItem();
+ public abstract WBMember<T, X, S> getAnnotatedItem();
@Override
// Overriden to provide the class of the bean that declares the producer method/field
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractReceiverBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractReceiverBean.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractReceiverBean.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -32,15 +32,15 @@
* @author pmuir
*
*/
-public abstract class AbstractReceiverBean<T, S extends Member> extends AbstractBean<T, S>
+public abstract class AbstractReceiverBean<X, T, S extends Member> extends AbstractBean<T, S>
{
private static final LogProvider log = Logging.getLogProvider(AbstractReceiverBean.class);
- private AbstractClassBean<?> declaringBean;
+ private AbstractClassBean<X> declaringBean;
private boolean policy;
- public AbstractReceiverBean(String idSuffix, AbstractClassBean<?> declaringBean, BeanManagerImpl manager)
+ public AbstractReceiverBean(String idSuffix, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
{
super(idSuffix, manager);
this.declaringBean = declaringBean;
@@ -87,7 +87,7 @@
*
* @return The bean representation
*/
- public AbstractClassBean<?> getDeclaringBean()
+ public AbstractClassBean<X> getDeclaringBean()
{
return declaringBean;
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethod.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethod.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethod.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -35,12 +35,12 @@
import org.jboss.webbeans.injection.MethodInjectionPoint;
import org.jboss.webbeans.introspector.WBMethod;
-public class DisposalMethod<T> extends AbstractReceiverBean<T, Method>
+public class DisposalMethod<X, T> extends AbstractReceiverBean<X, T, Method>
{
protected MethodInjectionPoint<T, ?> disposalMethodInjectionPoint;
- protected DisposalMethod(BeanManagerImpl manager, WBMethod<T, ?> disposalMethod, AbstractClassBean<?> declaringBean)
+ protected DisposalMethod(BeanManagerImpl manager, WBMethod<T, X> disposalMethod, AbstractClassBean<X> declaringBean)
{
super(new StringBuilder().append(DisposalMethod.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(declaringBean.getAnnotatedItem().getName()).append(disposalMethod.getSignature().toString()).toString(), declaringBean, manager);
this.disposalMethodInjectionPoint = MethodInjectionPoint.of(this, disposalMethod);
@@ -71,9 +71,9 @@
return disposalMethodInjectionPoint;
}
- public static <T> DisposalMethod<T> of(BeanManagerImpl manager, WBMethod<T, ?> disposalMethod, AbstractClassBean<?> declaringBean)
+ public static <X, T> DisposalMethod<X, T> of(BeanManagerImpl manager, WBMethod<T, X> disposalMethod, AbstractClassBean<X> declaringBean)
{
- return new DisposalMethod<T>(manager, disposalMethod, declaringBean);
+ return new DisposalMethod<X, T>(manager, disposalMethod, declaringBean);
}
@Override
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerField.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerField.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerField.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -35,10 +35,10 @@
*
* @param <T>
*/
-public class ProducerField<T> extends AbstractProducerBean<T, Field>
+public class ProducerField<X, T> extends AbstractProducerBean<X, T, Field>
{
// The underlying field
- private WBField<T, ?> field;
+ private WBField<T, X> field;
private final String id;
/**
@@ -49,9 +49,9 @@
* @param manager the current manager
* @return A producer field
*/
- public static <T> ProducerField<T> of(WBField<T, ?> field, AbstractClassBean<?> declaringBean, BeanManagerImpl manager)
+ public static <X, T> ProducerField<X, T> of(WBField<T, X> field, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
{
- return new ProducerField<T>(field, declaringBean, manager);
+ return new ProducerField<X, T>(field, declaringBean, manager);
}
/**
@@ -61,7 +61,7 @@
* @param declaringBean The declaring bean
* @param manager The Web Beans manager
*/
- protected ProducerField(WBField<T, ?> field, AbstractClassBean<?> declaringBean, BeanManagerImpl manager)
+ protected ProducerField(WBField<T, X> field, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
{
super(new StringBuilder().append(ProducerField.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(declaringBean.getAnnotatedItem().getName()).append(field.getName()).toString(), declaringBean, manager);
this.field = field;
@@ -104,7 +104,7 @@
* @return The annotated item
*/
@Override
- protected WBField<T, ?> getAnnotatedItem()
+ public WBField<T, X> getAnnotatedItem()
{
return field;
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethod.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethod.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethod.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -43,14 +43,14 @@
*
* @param <T>
*/
-public class ProducerMethod<T> extends AbstractProducerBean<T, Method>
+public class ProducerMethod<X, T> extends AbstractProducerBean<X, T, Method>
{
// The underlying method
- private MethodInjectionPoint<T, ?> method;
+ private MethodInjectionPoint<T, X> method;
- private DisposalMethod<?> disposalMethodBean;
+ private DisposalMethod<X, ?> disposalMethodBean;
- private ProducerMethod<?> specializedBean;
+ private ProducerMethod<?, ?> specializedBean;
private final String id;
@@ -62,14 +62,14 @@
* @param manager the current manager
* @return A producer Web Bean
*/
- public static <T> ProducerMethod<T> of(WBMethod<T, ?> method, AbstractClassBean<?> declaringBean, BeanManagerImpl manager)
+ public static <X, T> ProducerMethod<X, T> of(WBMethod<T, X> method, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
{
- return new ProducerMethod<T>(method, declaringBean, manager);
+ return new ProducerMethod<X, T>(method, declaringBean, manager);
}
- protected ProducerMethod(WBMethod<T, ?> method, AbstractClassBean<?> declaringBean, BeanManagerImpl manager)
+ protected ProducerMethod(WBMethod<T, X> method, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
{
- super(new StringBuilder().append(ProducerMethod.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(declaringBean.getAnnotatedItem().getName()).append(method.getSignature().toString()).toString(), declaringBean, manager);
+ super(new StringBuilder().append(ProducerMethod.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(declaringBean.getAnnotatedItem().getName()).append(".").append(method.getSignature().toString()).toString(), declaringBean, manager);
this.method = MethodInjectionPoint.of(this, method);
initType();
initTypes();
@@ -163,7 +163,7 @@
*/
protected void initDisposalMethod(BeanDeployerEnvironment environment)
{
- Set<DisposalMethod<?>> disposalBeans = environment.resolveDisposalBeans(getTypes(), getQualifiers(), getDeclaringBean());
+ Set<DisposalMethod<X, ?>> disposalBeans = environment.<X>resolveDisposalBeans(getTypes(), getQualifiers(), getDeclaringBean());
if (disposalBeans.size() == 1)
{
@@ -205,7 +205,7 @@
* @return The annotated item
*/
@Override
- public WBMethod<T, ?> getAnnotatedItem()
+ public WBMethod<T, X> getAnnotatedItem()
{
return method;
}
@@ -226,7 +226,7 @@
*
* @return The method representation
*/
- public DisposalMethod<?> getDisposalMethod()
+ public DisposalMethod<X, ?> getDisposalMethod()
{
return disposalMethodBean;
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/SessionBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/SessionBean.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/SessionBean.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -348,7 +348,7 @@
*/
protected void checkObserverMethods()
{
- for (WBMethod<?, ?> method : this.annotatedItem.getWBDeclaredMethodsWithAnnotatedParameters(Observes.class))
+ for (WBMethod<?, ?> method : this.annotatedItem.getDeclaredWBMethodsWithAnnotatedParameters(Observes.class))
{
if (!method.isStatic())
{
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ee/EEResourceProducerField.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ee/EEResourceProducerField.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ee/EEResourceProducerField.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -29,7 +29,7 @@
* @author pmuir
*
*/
-public class EEResourceProducerField<T> extends ProducerField<T>
+public class EEResourceProducerField<X, T> extends ProducerField<X, T>
{
/**
@@ -40,12 +40,12 @@
* @param manager the current manager
* @return A producer field
*/
- public static <T> EEResourceProducerField<T> of(WBField<T, ?> field, AbstractClassBean<?> declaringBean, BeanManagerImpl manager)
+ public static <X, T> EEResourceProducerField<X, T> of(WBField<T, X> field, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
{
- return new EEResourceProducerField<T>(field, declaringBean, manager);
+ return new EEResourceProducerField<X, T>(field, declaringBean, manager);
}
- protected EEResourceProducerField(WBField<T, ?> field, AbstractClassBean<?> declaringBean, BeanManagerImpl manager)
+ protected EEResourceProducerField(WBField<T, X> field, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
{
super(field, declaringBean, manager);
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ee/PersistenceContextProducerField.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ee/PersistenceContextProducerField.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ee/PersistenceContextProducerField.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -26,7 +26,7 @@
* @author pmuir
*
*/
-public class PersistenceContextProducerField<T extends EntityManager> extends EEResourceProducerField<T>
+public class PersistenceContextProducerField<X, T extends EntityManager> extends EEResourceProducerField<X, T>
{
/**
@@ -37,9 +37,9 @@
* @param manager the current manager
* @return A producer field
*/
- public static <T extends EntityManager> EEResourceProducerField<T> of(WBField<T, ?> field, AbstractClassBean<?> declaringBean, BeanManagerImpl manager)
+ public static <X, T extends EntityManager> EEResourceProducerField<X, T> of(WBField<T, X> field, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
{
- return new PersistenceContextProducerField<T>(field, declaringBean, manager);
+ return new PersistenceContextProducerField<X, T>(field, declaringBean, manager);
}
/**
@@ -47,11 +47,12 @@
* @param declaringBean
* @param manager
*/
- protected PersistenceContextProducerField(WBField<T, ?> field, AbstractClassBean<?> declaringBean, BeanManagerImpl manager)
+ protected PersistenceContextProducerField(WBField<T, X> field, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
{
super(field, declaringBean, manager);
}
+ @Override
public void dispose(T instance)
{
instance.close();
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDeployer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDeployer.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDeployer.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -16,20 +16,21 @@
*/
package org.jboss.webbeans.bootstrap;
-import java.util.ArrayList;
-import java.util.List;
+import java.lang.reflect.Member;
+import java.lang.reflect.Type;
import java.util.Set;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Produces;
-import javax.enterprise.inject.spi.AnnotatedMethod;
-import javax.enterprise.inject.spi.ObserverMethod;
import javax.enterprise.inject.spi.ProcessObserverMethod;
+import javax.enterprise.inject.spi.ProcessProducer;
import javax.inject.Inject;
import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.webbeans.DefinitionException;
import org.jboss.webbeans.bean.AbstractClassBean;
+import org.jboss.webbeans.bean.AbstractProducerBean;
import org.jboss.webbeans.bean.DecoratorImpl;
import org.jboss.webbeans.bean.DisposalMethod;
import org.jboss.webbeans.bean.ManagedBean;
@@ -41,6 +42,8 @@
import org.jboss.webbeans.bean.SessionBean;
import org.jboss.webbeans.bean.ee.EEResourceProducerField;
import org.jboss.webbeans.bean.ee.PersistenceContextProducerField;
+import org.jboss.webbeans.bootstrap.events.ProcessObserverMethodImpl;
+import org.jboss.webbeans.bootstrap.events.ProcessProducerImpl;
import org.jboss.webbeans.ejb.EJBApiAbstraction;
import org.jboss.webbeans.ejb.InternalEjbDescriptor;
import org.jboss.webbeans.event.ObserverFactory;
@@ -54,18 +57,18 @@
import org.jboss.webbeans.persistence.PersistenceApiAbstraction;
import org.jboss.webbeans.servlet.ServletApiAbstraction;
import org.jboss.webbeans.util.Reflections;
+import org.jboss.webbeans.util.reflection.ParameterizedTypeImpl;
import org.jboss.webbeans.ws.WSApiAbstraction;
-public class AbstractBeanDeployer
+public class AbstractBeanDeployer<E extends BeanDeployerEnvironment>
{
private static final LogProvider log = Logging.getLogProvider(AbstractBeanDeployer.class);
private final BeanManagerImpl manager;
- private final BeanDeployerEnvironment environment;
- private final List<Throwable> definitionErrors = new ArrayList<Throwable>();
+ private final E environment;
- public AbstractBeanDeployer(BeanManagerImpl manager, BeanDeployerEnvironment environment)
+ public AbstractBeanDeployer(BeanManagerImpl manager, E environment)
{
this.manager = manager;
this.environment = environment;
@@ -76,9 +79,9 @@
return manager;
}
- public AbstractBeanDeployer deploy()
+ public AbstractBeanDeployer<E> deploy()
{
- Set<RIBean<?>> beans = getEnvironment().getBeans();
+ Set<? extends RIBean<?>> beans = getEnvironment().getBeans();
// ensure that all decorators are initialized before initializing
// the rest of the beans
for (DecoratorImpl<?> bean : getEnvironment().getDecorators())
@@ -90,6 +93,11 @@
for (RIBean<?> bean : beans)
{
bean.initialize(getEnvironment());
+ if (bean instanceof AbstractProducerBean<?, ?, ?>)
+ {
+ AbstractProducerBean<?, ?, Member> producer = (AbstractProducerBean<?, ?, Member>) bean;
+ createAndFireProcessProducerEvent(producer);
+ }
manager.addBean(bean);
log.debug("Bean: " + bean);
}
@@ -97,6 +105,7 @@
{
log.debug("Observer : " + observer);
observer.initialize();
+ createAndFireProcessObserverMethodEvent(observer);
manager.addObserver(observer);
}
@@ -122,33 +131,33 @@
}
- protected void createProducerMethods(AbstractClassBean<?> declaringBean, WBClass<?> annotatedClass)
+ protected <X> void createProducerMethods(AbstractClassBean<X> declaringBean, WBClass<X> annotatedClass)
{
- for (WBMethod<?, ?> method : annotatedClass.getDeclaredAnnotatedWBMethods(Produces.class))
+ for (WBMethod<?, X> method : annotatedClass.getDeclaredAnnotatedWBMethods(Produces.class))
{
createProducerMethod(declaringBean, method);
}
}
- protected void createDisposalMethods(AbstractClassBean<?> declaringBean, WBClass<?> annotatedClass)
+ protected <X> void createDisposalMethods(AbstractClassBean<X> declaringBean, WBClass<X> annotatedClass)
{
- for (WBMethod<?, ?> method : annotatedClass.getWBDeclaredMethodsWithAnnotatedParameters(Disposes.class))
+ for (WBMethod<?, X> method : annotatedClass.getDeclaredWBMethodsWithAnnotatedParameters(Disposes.class))
{
- DisposalMethod<?> disposalBean = DisposalMethod.of(manager, method, declaringBean);
+ DisposalMethod<X, ?> disposalBean = DisposalMethod.of(manager, method, declaringBean);
disposalBean.initialize(getEnvironment());
getEnvironment().addBean(disposalBean);
}
}
- protected <T> void createProducerMethod(AbstractClassBean<?> declaringBean, WBMethod<T, ?> annotatedMethod)
+ protected <X, T> void createProducerMethod(AbstractClassBean<X> declaringBean, WBMethod<T, X> annotatedMethod)
{
- ProducerMethod<T> bean = ProducerMethod.of(annotatedMethod, declaringBean, manager);
+ ProducerMethod<X, T> bean = ProducerMethod.of(annotatedMethod, declaringBean, manager);
getEnvironment().addBean(bean);
}
- protected <T> void createProducerField(AbstractClassBean<?> declaringBean, WBField<T, ?> field)
+ protected <X, T> void createProducerField(AbstractClassBean<X> declaringBean, WBField<T, X> field)
{
- ProducerField<T> bean;
+ ProducerField<X, T> bean;
if (isPersistenceContextProducerField(field))
{
bean = PersistenceContextProducerField.of(field, declaringBean, manager);
@@ -164,17 +173,34 @@
getEnvironment().addBean(bean);
}
- protected void createProducerFields(AbstractClassBean<?> declaringBean, WBClass<?> annotatedClass)
+ private <X, T> void createAndFireProcessProducerEvent(AbstractProducerBean<X, T, Member> producer)
{
- for (WBField<?, ?> field : annotatedClass.getDeclaredAnnotatedWBFields(Produces.class))
+ ProcessProducerImpl<X, T> payload = new ProcessProducerImpl<X, T>(producer.getAnnotatedItem(), producer) {};
+ fireEvent(payload, ProcessProducer.class, producer.getAnnotatedItem().getDeclaringType().getBaseType(), producer.getAnnotatedItem().getBaseType());
+ if (!payload.getDefinitionErrors().isEmpty())
{
+ // FIXME communicate all the captured definition errors in this exception
+ throw new DefinitionException(payload.getDefinitionErrors().get(0));
+ }
+ }
+
+ private void fireEvent(Object payload, Type rawType, Type... actualTypeArguments)
+ {
+ Type eventType = new ParameterizedTypeImpl(rawType, actualTypeArguments, null);
+ manager.fireEvent(eventType, payload);
+ }
+
+ protected <X> void createProducerFields(AbstractClassBean<X> declaringBean, WBClass<X> annotatedClass)
+ {
+ for (WBField<?, X> field : annotatedClass.getDeclaredAnnotatedWBFields(Produces.class))
+ {
createProducerField(declaringBean, field);
}
}
protected <X> void createObserverMethods(RIBean<X> declaringBean, WBClass<X> annotatedClass)
{
- for (WBMethod<?, X> method : annotatedClass.getWBDeclaredMethodsWithAnnotatedParameters(Observes.class))
+ for (WBMethod<?, X> method : annotatedClass.getDeclaredWBMethodsWithAnnotatedParameters(Observes.class))
{
createObserverMethod(declaringBean, method);
}
@@ -183,14 +209,19 @@
protected <X, T> void createObserverMethod(RIBean<X> declaringBean, WBMethod<T, X> method)
{
ObserverMethodImpl<X, T> observer = ObserverFactory.create(method, declaringBean, manager);
- ProcessObserverMethod<?, ?> event = createProcessObserverMethodEvent(observer, method);
- manager.fireEvent(event);
getEnvironment().addObserver(observer);
}
- private <X, T> ProcessObserverMethod<X, T> createProcessObserverMethodEvent(ObserverMethod<X, T> observer, AnnotatedMethod<X> method)
+ private <X, T> void createAndFireProcessObserverMethodEvent(ObserverMethodImpl<X, T> observer)
{
- return new ProcessObserverMethodImpl<X, T>(method, observer, definitionErrors) {};
+ ProcessObserverMethodImpl<X, T> payload = new ProcessObserverMethodImpl<X, T>(observer.getMethod(), observer) {};
+ fireEvent(payload, ProcessObserverMethod.class, observer.getMethod().getDeclaringType().getBaseType(), observer.getObservedType());
+ if (!payload.getDefinitionErrors().isEmpty())
+ {
+ // FIXME communicate all the captured definition errors in this exception
+ throw new DefinitionException(payload.getDefinitionErrors().get(0));
+ }
+ return;
}
protected <T> void createSimpleBean(WBClass<T> annotatedClass)
@@ -260,7 +291,7 @@
return type.getNoArgsWBConstructor() != null || type.getAnnotatedWBConstructors(Inject.class).size() > 0;
}
- public BeanDeployerEnvironment getEnvironment()
+ public E getEnvironment()
{
return environment;
}
Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDiscoveryEvent.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDiscoveryEvent.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDiscoveryEvent.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -1,95 +0,0 @@
-/*
- * 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.bootstrap;
-
-import java.util.Map;
-
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
-import org.jboss.webbeans.bootstrap.spi.Deployment;
-import org.jboss.webbeans.metadata.TypeStore;
-
-/**
- * @author pmuir
- */
-public abstract class AbstractBeanDiscoveryEvent extends AbstractContainerEvent
-{
-
- private final Map<BeanDeploymentArchive, BeanDeployment> beanDeployments;
- private final BeanManagerImpl deploymentManager;
- private final Deployment deployment;
-
- public AbstractBeanDiscoveryEvent(Map<BeanDeploymentArchive, BeanDeployment> beanDeployments, BeanManagerImpl deploymentManager, Deployment deployment)
- {
- this.beanDeployments = beanDeployments;
- this.deploymentManager = deploymentManager;
- this.deployment = deployment;
- }
-
- /**
- * @return the beanDeployments
- */
- protected Map<BeanDeploymentArchive, BeanDeployment> getBeanDeployments()
- {
- return beanDeployments;
- }
-
- /**
- * @return the deployment
- */
- protected Deployment getDeployment()
- {
- return deployment;
- }
-
- /**
- * @return the deploymentManager
- */
- protected BeanManagerImpl getDeploymentManager()
- {
- return deploymentManager;
- }
-
- protected TypeStore getTypeStore()
- {
- return getDeployment().getServices().get(TypeStore.class);
- }
-
-
- protected BeanDeployment getOrCreateBeanDeployment(Class<?> clazz)
- {
- BeanDeploymentArchive beanDeploymentArchive = getDeployment().loadBeanDeploymentArchive(clazz);
- if (beanDeploymentArchive == null)
- {
- throw new IllegalStateException("Unable to find Bean Deployment Archive for " + clazz);
- }
- else
- {
- if (getBeanDeployments().containsKey(beanDeploymentArchive))
- {
- return getBeanDeployments().get(beanDeploymentArchive);
- }
- else
- {
- BeanDeployment beanDeployment = new BeanDeployment(beanDeploymentArchive, getDeploymentManager(), deployment.getServices());
- getBeanDeployments().put(beanDeploymentArchive, beanDeployment);
- return beanDeployment;
- }
- }
- }
-
-}
\ No newline at end of file
Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractContainerEvent.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractContainerEvent.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractContainerEvent.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -1,44 +0,0 @@
-/*
- * 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.bootstrap;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author pmuir
- *
- */
-public class AbstractContainerEvent
-{
-
- private final List<Throwable> errors;
-
- public AbstractContainerEvent()
- {
- this.errors = new ArrayList<Throwable>();
- }
-
- /**
- * @return the errors
- */
- protected List<Throwable> getErrors()
- {
- return errors;
- }
-
-}
Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterBeanDiscoveryImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterBeanDiscoveryImpl.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterBeanDiscoveryImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -1,65 +0,0 @@
-/*
- * 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.bootstrap;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import javax.enterprise.context.spi.Context;
-import javax.enterprise.inject.spi.AfterBeanDiscovery;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.ObserverMethod;
-
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
-import org.jboss.webbeans.bootstrap.spi.Deployment;
-
-public class AfterBeanDiscoveryImpl extends AbstractBeanDiscoveryEvent implements AfterBeanDiscovery
-{
-
- public AfterBeanDiscoveryImpl(BeanManagerImpl deploymentManager, Deployment deployment, Map<BeanDeploymentArchive, BeanDeployment> beanDeployments)
- {
- super(beanDeployments, deploymentManager, deployment);
- }
-
- public void addDefinitionError(Throwable t)
- {
- getErrors().add(t);
- }
-
- public List<Throwable> getDefinitionErrors()
- {
- return Collections.unmodifiableList(getErrors());
- }
-
- public void addBean(Bean<?> bean)
- {
- getOrCreateBeanDeployment(bean.getBeanClass()).getBeanManager().addBean(bean);
- }
-
- public void addContext(Context context)
- {
- getDeploymentManager().addContext(context);
- }
-
- public void addObserverMethod(ObserverMethod<?, ?> observerMethod)
- {
- getOrCreateBeanDeployment(observerMethod.getBean().getBeanClass()).getBeanManager().addObserver(observerMethod);
- }
-
-}
Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterDeploymentValidationImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterDeploymentValidationImpl.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterDeploymentValidationImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -1,36 +0,0 @@
-/*
- * 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.bootstrap;
-
-import java.util.Collections;
-import java.util.List;
-
-import javax.enterprise.inject.spi.AfterDeploymentValidation;
-
-public class AfterDeploymentValidationImpl extends AbstractContainerEvent implements AfterDeploymentValidation
-{
-
- public void addDeploymentProblem(Throwable t)
- {
- getErrors().add(t);
- }
-
- public List<Throwable> getDeploymentProblems()
- {
- return Collections.unmodifiableList(getErrors());
- }
-}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -25,6 +25,7 @@
import org.jboss.webbeans.BeanManagerImpl;
import org.jboss.webbeans.Container;
+import org.jboss.webbeans.bootstrap.events.ProcessAnnotatedTypeImpl;
import org.jboss.webbeans.ejb.EjbDescriptors;
import org.jboss.webbeans.ejb.InternalEjbDescriptor;
import org.jboss.webbeans.introspector.WBClass;
@@ -34,7 +35,7 @@
* @author pmuir
*
*/
-public class BeanDeployer extends AbstractBeanDeployer
+public class BeanDeployer extends AbstractBeanDeployer<BeanDeployerEnvironment>
{
private final BeanManagerImpl deploymentManager;
@@ -52,7 +53,7 @@
this.deploymentManager = deploymentManager;
}
- public AbstractBeanDeployer addClass(Class<?> clazz)
+ public BeanDeployer addClass(Class<?> clazz)
{
ClassTransformer classTransformer = Container.instance().deploymentServices().get(ClassTransformer.class);
if (!clazz.isAnnotation() && !clazz.isEnum())
@@ -81,14 +82,14 @@
}
// TODO Do we need to fire PAT for annotated types added via BBD? Probably not PLM.
- public AbstractBeanDeployer addClass(AnnotatedType<?> clazz)
+ public BeanDeployer addClass(AnnotatedType<?> clazz)
{
ClassTransformer classTransformer = Container.instance().deploymentServices().get(ClassTransformer.class);
classes.add(classTransformer.loadClass(clazz));
return this;
}
- public AbstractBeanDeployer addClasses(Iterable<Class<?>> classes)
+ public BeanDeployer addClasses(Iterable<Class<?>> classes)
{
for (Class<?> clazz : classes)
{
@@ -97,7 +98,7 @@
return this;
}
- public AbstractBeanDeployer createBeans()
+ public BeanDeployer createBeans()
{
for (WBClass<?> clazz : classes)
{
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -47,11 +47,11 @@
{
private final Map<WBClass<?>, AbstractClassBean<?>> classBeanMap;
- private final Map<WBMethod<?, ?>, ProducerMethod<?>> producerMethodBeanMap;
+ private final Map<WBMethod<?, ?>, ProducerMethod<?, ?>> producerMethodBeanMap;
private final Set<RIBean<?>> beans;
private final Set<ObserverMethodImpl<?, ?>> observers;
- private final List<DisposalMethod<?>> allDisposalBeans;
- private final Set<DisposalMethod<?>> resolvedDisposalBeans;
+ private final List<DisposalMethod<?, ?>> allDisposalBeans;
+ private final Set<DisposalMethod<?, ?>> resolvedDisposalBeans;
private final Set<DecoratorImpl<?>> decorators;
private final EjbDescriptors ejbDescriptors;
private final TypeSafeDisposerResolver disposalMethodResolver;
@@ -59,9 +59,9 @@
public BeanDeployerEnvironment(EjbDescriptors ejbDescriptors, BeanManagerImpl manager)
{
this.classBeanMap = new HashMap<WBClass<?>, AbstractClassBean<?>>();
- this.producerMethodBeanMap = new HashMap<WBMethod<?, ?>, ProducerMethod<?>>();
- this.allDisposalBeans = new ArrayList<DisposalMethod<?>>();
- this.resolvedDisposalBeans = new HashSet<DisposalMethod<?>>();
+ this.producerMethodBeanMap = new HashMap<WBMethod<?, ?>, ProducerMethod<?, ?>>();
+ this.allDisposalBeans = new ArrayList<DisposalMethod<?, ?>>();
+ this.resolvedDisposalBeans = new HashSet<DisposalMethod<?, ?>>();
this.beans = new HashSet<RIBean<?>>();
this.decorators = new HashSet<DecoratorImpl<?>>();
this.observers = new HashSet<ObserverMethodImpl<?, ?>>();
@@ -69,7 +69,7 @@
this.disposalMethodResolver = new TypeSafeDisposerResolver(manager, allDisposalBeans);
}
- public ProducerMethod<?> getProducerMethod(WBMethod<?, ?> method)
+ public <X, T> ProducerMethod<X, T> getProducerMethod(WBMethod<X, T> method)
{
if (!producerMethodBeanMap.containsKey(method))
{
@@ -77,9 +77,9 @@
}
else
{
- ProducerMethod<?> bean = producerMethodBeanMap.get(method);
+ ProducerMethod<?, ?> bean = producerMethodBeanMap.get(method);
bean.initialize(this);
- return bean;
+ return (ProducerMethod<X, T>) bean;
}
}
@@ -97,13 +97,13 @@
}
}
- public void addBean(ProducerMethod<?> bean)
+ public void addBean(ProducerMethod<?, ?> bean)
{
producerMethodBeanMap.put(bean.getAnnotatedItem(), bean);
beans.add(bean);
}
- public void addBean(ProducerField<?> bean)
+ public void addBean(ProducerField<?, ?> bean)
{
beans.add(bean);
}
@@ -132,7 +132,7 @@
decorators.add(bean);
}
- public void addBean(DisposalMethod<?> bean)
+ public void addBean(DisposalMethod<?, ?> bean)
{
allDisposalBeans.add(bean);
}
@@ -142,7 +142,7 @@
this.observers.add(observer);
}
- public Set<RIBean<?>> getBeans()
+ public Set<? extends RIBean<?>> getBeans()
{
return Collections.unmodifiableSet(beans);
}
@@ -158,9 +158,9 @@
}
- public Set<DisposalMethod<?>> getUnresolvedDisposalBeans()
+ public Set<DisposalMethod<?, ?>> getUnresolvedDisposalBeans()
{
- Set<DisposalMethod<?>> beans = new HashSet<DisposalMethod<?>>(allDisposalBeans);
+ Set<DisposalMethod<?, ?>> beans = new HashSet<DisposalMethod<?, ?>>(allDisposalBeans);
beans.removeAll(resolvedDisposalBeans);
return Collections.unmodifiableSet(beans);
}
@@ -179,9 +179,9 @@
* @param bindings The binding types to match
* @return The set of matching disposal methods
*/
- public Set<DisposalMethod<?>> resolveDisposalBeans(Set<Type> types, Set<Annotation> bindings, AbstractClassBean<?> declaringBean)
+ public <X> Set<DisposalMethod<X, ?>> resolveDisposalBeans(Set<Type> types, Set<Annotation> bindings, AbstractClassBean<X> declaringBean)
{
- Set<DisposalMethod<?>> beans = disposalMethodResolver.resolve(ResolvableFactory.of(types, bindings, declaringBean));
+ Set<DisposalMethod<X, ?>> beans = (Set) disposalMethodResolver.resolve(ResolvableFactory.of(types, bindings, declaringBean));
resolvedDisposalBeans.addAll(beans);
return Collections.unmodifiableSet(beans);
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployment.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployment.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployment.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -19,6 +19,7 @@
import org.jboss.webbeans.BeanManagerImpl;
import org.jboss.webbeans.bean.builtin.DefaultValidatorBean;
import org.jboss.webbeans.bean.builtin.DefaultValidatorFactoryBean;
+import org.jboss.webbeans.bean.builtin.ExtensionBean;
import org.jboss.webbeans.bean.builtin.InjectionPointBean;
import org.jboss.webbeans.bean.builtin.ManagerBean;
import org.jboss.webbeans.bean.builtin.PrincipalBean;
@@ -30,12 +31,14 @@
import org.jboss.webbeans.bootstrap.api.ServiceRegistry;
import org.jboss.webbeans.bootstrap.api.helpers.SimpleServiceRegistry;
import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.webbeans.bootstrap.spi.Deployment;
import org.jboss.webbeans.conversation.ConversationImpl;
import org.jboss.webbeans.conversation.JavaSEConversationTerminator;
import org.jboss.webbeans.conversation.NumericConversationIdGenerator;
import org.jboss.webbeans.conversation.ServletConversationManager;
import org.jboss.webbeans.ejb.EjbDescriptors;
import org.jboss.webbeans.ejb.spi.EjbServices;
+import org.jboss.webbeans.event.ObserverMethodImpl;
import org.jboss.webbeans.log.Log;
import org.jboss.webbeans.log.Logging;
import org.jboss.webbeans.resources.spi.ResourceLoader;
@@ -56,10 +59,14 @@
private final BeanDeploymentArchive beanDeploymentArchive;
private final BeanManagerImpl beanManager;
+ private final ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment;
private final BeanDeployer beanDeployer;
+ private final Deployment deployment;
- public BeanDeployment(BeanDeploymentArchive beanDeploymentArchive, BeanManagerImpl deploymentManager, ServiceRegistry deploymentServices)
+ public BeanDeployment(BeanDeploymentArchive beanDeploymentArchive, BeanManagerImpl deploymentManager, Deployment deployment, ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment, ServiceRegistry deploymentServices)
{
+ this.extensionBeanDeployerEnvironment = extensionBeanDeployerEnvironment;
+ this.deployment = deployment;
this.beanDeploymentArchive = beanDeploymentArchive;
EjbDescriptors ejbDescriptors = new EjbDescriptors();
beanDeploymentArchive.getServices().add(EjbDescriptors.class, ejbDescriptors);
@@ -149,6 +156,20 @@
beanDeployer.getEnvironment().addBean(new DefaultValidatorBean(beanManager));
beanDeployer.getEnvironment().addBean(new DefaultValidatorFactoryBean(beanManager));
}
+ for (ExtensionBean bean : extensionBeanDeployerEnvironment.getBeans())
+ {
+ if (deployment.loadBeanDeploymentArchive(bean.getBeanClass()).equals(beanDeploymentArchive))
+ {
+ beanDeployer.getManager().addBean(bean);
+ }
+ }
+ for (ObserverMethodImpl<?, ?> observerMethod : extensionBeanDeployerEnvironment.getObservers())
+ {
+ if (deployment.loadBeanDeploymentArchive(observerMethod.getBean().getBeanClass()).equals(beanDeploymentArchive))
+ {
+ beanDeployer.getManager().addObserver(observerMethod);
+ }
+ }
beanDeployer.createBeans().deploy();
}
Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeBeanDiscoveryImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeBeanDiscoveryImpl.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeBeanDiscoveryImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -1,77 +0,0 @@
-/*
- * 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.bootstrap;
-
-import java.lang.annotation.Annotation;
-import java.util.Map;
-
-import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.BeforeBeanDiscovery;
-
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
-import org.jboss.webbeans.bootstrap.spi.Deployment;
-import org.jboss.webbeans.literal.BindingTypeLiteral;
-import org.jboss.webbeans.literal.InterceptorBindingTypeLiteral;
-import org.jboss.webbeans.literal.NormalScopeLiteral;
-import org.jboss.webbeans.literal.ScopeLiteral;
-
-public class BeforeBeanDiscoveryImpl extends AbstractBeanDiscoveryEvent implements BeforeBeanDiscovery
-{
-
- public BeforeBeanDiscoveryImpl(BeanManagerImpl deploymentManager, Deployment deployment, Map<BeanDeploymentArchive, BeanDeployment> beanDeployments)
- {
- super(beanDeployments, deploymentManager, deployment);
- }
-
- public void addQualifier(Class<? extends Annotation> bindingType)
- {
- getTypeStore().add(bindingType, new BindingTypeLiteral());
- }
-
- public void addInterceptorBindingType(Class<? extends Annotation> bindingType)
- {
- getTypeStore().add(bindingType, new InterceptorBindingTypeLiteral());
- }
-
- public void addScope(Class<? extends Annotation> scopeType,
- boolean normal, boolean passivating)
- {
- if (normal)
- {
- getTypeStore().add(scopeType, new NormalScopeLiteral(passivating));
- }
- else
- {
- getTypeStore().add(scopeType, new ScopeLiteral());
- }
- }
-
- public void addStereotype(Class<? extends Annotation> stereotype,
- Annotation... stereotypeDef)
- {
- throw new UnsupportedOperationException();
- }
-
- public void addAnnotatedType(AnnotatedType<?> type)
- {
- getOrCreateBeanDeployment(type.getJavaClass()).getBeanDeployer().addClass(type);
- }
-
-
-
-}
Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeShutdownImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeShutdownImpl.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeShutdownImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -1,28 +0,0 @@
-/*
- * 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.bootstrap;
-
-import javax.enterprise.inject.spi.BeforeShutdown;
-
-/**
- * @author pmuir
- *
- */
-public class BeforeShutdownImpl implements BeforeShutdown
-{
-
-}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployer.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployer.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -24,7 +24,6 @@
import org.jboss.webbeans.BeanManagerImpl;
import org.jboss.webbeans.Container;
import org.jboss.webbeans.bean.builtin.ExtensionBean;
-import org.jboss.webbeans.ejb.EjbDescriptors;
import org.jboss.webbeans.introspector.WBClass;
import org.jboss.webbeans.resources.ClassTransformer;
@@ -32,18 +31,19 @@
* @author pmuir
*
*/
-public class ExtensionBeanDeployer extends AbstractBeanDeployer
+public class ExtensionBeanDeployer extends AbstractBeanDeployer<ExtensionBeanDeployerEnvironment>
{
-
+
+
private final Set<Extension> extensions;
- public ExtensionBeanDeployer(BeanManagerImpl manager)
+ public ExtensionBeanDeployer(BeanManagerImpl manager, ExtensionBeanDeployerEnvironment environment)
{
- super(manager, new BeanDeployerEnvironment(new EjbDescriptors(), manager));
+ super(manager, environment);
this.extensions = new HashSet<Extension>();
}
- public AbstractBeanDeployer createBeans()
+ public ExtensionBeanDeployer createBeans()
{
ClassTransformer classTransformer = Container.instance().deploymentServices().get(ClassTransformer.class);
for (Extension extension : extensions)
@@ -52,6 +52,7 @@
WBClass<Extension> clazz = (WBClass<Extension>) classTransformer.loadClass(extension.getClass());
ExtensionBean bean = new ExtensionBean(getManager(), clazz, extension);
+ this.
getEnvironment().addBean(bean);
createObserverMethods(bean, clazz);
}
Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployerEnvironment.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployerEnvironment.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployerEnvironment.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -0,0 +1,34 @@
+package org.jboss.webbeans.bootstrap;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.webbeans.bean.builtin.ExtensionBean;
+import org.jboss.webbeans.ejb.EjbDescriptors;
+
+public class ExtensionBeanDeployerEnvironment extends BeanDeployerEnvironment
+{
+
+ private final Set<ExtensionBean> extensionBeans;
+
+
+ public ExtensionBeanDeployerEnvironment(EjbDescriptors ejbDescriptors, BeanManagerImpl manager)
+ {
+ super(ejbDescriptors, manager);
+ this.extensionBeans = new HashSet<ExtensionBean>();
+ }
+
+ @Override
+ public Set<ExtensionBean> getBeans()
+ {
+ return extensionBeans;
+ }
+
+ @Override
+ public void addBean(ExtensionBean bean)
+ {
+ extensionBeans.add(bean);
+ }
+
+}
Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployerEnvironment.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ProcessAnnotatedTypeImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ProcessAnnotatedTypeImpl.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ProcessAnnotatedTypeImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -1,65 +0,0 @@
-/*
- * 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.bootstrap;
-
-import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.ProcessAnnotatedType;
-
-/**
- * Container lifecycle event for each Java class or interface discovered by
- * the container.
- *
- * @author pmuir
- * @author David Allen
- *
- */
-public class ProcessAnnotatedTypeImpl<X> implements ProcessAnnotatedType<X>
-{
-
- private AnnotatedType<X> annotatedType;
- private boolean veto;
-
- public ProcessAnnotatedTypeImpl(AnnotatedType<X> annotatedType)
- {
- this.annotatedType = annotatedType;
- }
-
- public AnnotatedType<X> getAnnotatedType()
- {
- return annotatedType;
- }
-
- public void setAnnotatedType(AnnotatedType<X> type)
- {
- if (type == null)
- {
- throw new IllegalArgumentException("Cannot set the type to null (if you want to stop the type being used, call veto()) " + this);
- }
- this.annotatedType = type;
- }
-
- public void veto()
- {
- this.veto = true;
- }
-
- public boolean isVeto()
- {
- return veto;
- }
-
-}
Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ProcessObserverMethodImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ProcessObserverMethodImpl.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ProcessObserverMethodImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -1,61 +0,0 @@
-/*
- * 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.bootstrap;
-
-import java.util.List;
-
-import javax.enterprise.inject.spi.AnnotatedMethod;
-import javax.enterprise.inject.spi.ObserverMethod;
-import javax.enterprise.inject.spi.ProcessObserverMethod;
-
-/**
- * Implementation of the event used to notify observers for each observer
- * method that is added.
- *
- * @author David Allen
- *
- */
-public class ProcessObserverMethodImpl<X, T> implements ProcessObserverMethod<X, T>
-{
- private final AnnotatedMethod<X> beanMethod;
- private final ObserverMethod<X, T> observerMethod;
- private final List<Throwable> definitionErrors;
-
- public ProcessObserverMethodImpl(AnnotatedMethod<X> beanMethod, ObserverMethod<X, T> observerMethod, List<Throwable> definitionErrors)
- {
- this.beanMethod = beanMethod;
- this.observerMethod = observerMethod;
- this.definitionErrors = definitionErrors;
- }
-
- public void addDefinitionError(Throwable t)
- {
- this.definitionErrors.add(t);
- }
-
- public AnnotatedMethod<X> getAnnotatedMethod()
- {
- return beanMethod;
- }
-
- public ObserverMethod<X, T> getObserverMethod()
- {
- return observerMethod;
- }
-
-}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -40,6 +40,10 @@
import org.jboss.webbeans.bootstrap.api.ServiceRegistry;
import org.jboss.webbeans.bootstrap.api.helpers.ServiceRegistries;
import org.jboss.webbeans.bootstrap.api.helpers.SimpleServiceRegistry;
+import org.jboss.webbeans.bootstrap.events.AfterBeanDiscoveryImpl;
+import org.jboss.webbeans.bootstrap.events.AfterDeploymentValidationImpl;
+import org.jboss.webbeans.bootstrap.events.BeforeBeanDiscoveryImpl;
+import org.jboss.webbeans.bootstrap.events.BeforeShutdownImpl;
import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
import org.jboss.webbeans.bootstrap.spi.Deployment;
import org.jboss.webbeans.context.AbstractApplicationContext;
@@ -52,6 +56,7 @@
import org.jboss.webbeans.context.SingletonContext;
import org.jboss.webbeans.context.api.BeanStore;
import org.jboss.webbeans.ejb.EJBApiAbstraction;
+import org.jboss.webbeans.ejb.EjbDescriptors;
import org.jboss.webbeans.jsf.JsfApiAbstraction;
import org.jboss.webbeans.log.Log;
import org.jboss.webbeans.log.Logging;
@@ -89,12 +94,14 @@
private final BeanManagerImpl deploymentManager;
private final Environment environment;
private final Deployment deployment;
+ private final ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment;
- public DeploymentVisitor(BeanManagerImpl deploymentManager, Environment environment, Deployment deployment)
+ public DeploymentVisitor(BeanManagerImpl deploymentManager, Environment environment, Deployment deployment, ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment)
{
this.deploymentManager = deploymentManager;
this.environment = environment;
this.deployment = deployment;
+ this.extensionBeanDeployerEnvironment = extensionBeanDeployerEnvironment;
}
public Map<BeanDeploymentArchive, BeanDeployment> visit()
@@ -114,7 +121,7 @@
verifyServices(beanDeploymentArchive.getServices(), environment.getRequiredBeanDeploymentArchiveServices());
// Create the BeanDeployment and attach
- BeanDeployment parent = new BeanDeployment(beanDeploymentArchive, deploymentManager, deployment.getServices());
+ BeanDeployment parent = new BeanDeployment(beanDeploymentArchive, deploymentManager, deployment, extensionBeanDeployerEnvironment, deployment.getServices());
managerAwareBeanDeploymentArchives.put(beanDeploymentArchive, parent);
seenBeanDeploymentArchives.add(beanDeploymentArchive);
for (BeanDeploymentArchive archive : beanDeploymentArchive.getBeanDeploymentArchives())
@@ -144,7 +151,8 @@
private Map<BeanDeploymentArchive, BeanDeployment> beanDeployments;
private Environment environment;
private Deployment deployment;
-
+ private ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment;
+
public Bootstrap startContainer(Environment environment, Deployment deployment, BeanStore applicationBeanStore)
{
synchronized (this)
@@ -202,7 +210,9 @@
// Start the application context
Container.instance().deploymentServices().get(ContextLifecycle.class).beginApplication(applicationBeanStore);
- DeploymentVisitor deploymentVisitor = new DeploymentVisitor(deploymentManager, environment, deployment);
+ this.extensionBeanDeployerEnvironment = new ExtensionBeanDeployerEnvironment(EjbDescriptors.EMPTY, deploymentManager);
+
+ DeploymentVisitor deploymentVisitor = new DeploymentVisitor(deploymentManager, environment, deployment, extensionBeanDeployerEnvironment);
beanDeployments = deploymentVisitor.visit();
return this;
@@ -248,7 +258,7 @@
throw new IllegalStateException("Manager has not been initialized");
}
- ExtensionBeanDeployer extensionBeanDeployer = new ExtensionBeanDeployer(deploymentManager);
+ ExtensionBeanDeployer extensionBeanDeployer = new ExtensionBeanDeployer(deploymentManager, extensionBeanDeployerEnvironment);
extensionBeanDeployer.addExtensions(ServiceLoader.load(Extension.class));
extensionBeanDeployer.createBeans().deploy();
@@ -300,7 +310,7 @@
private void fireBeforeBeanDiscoveryEvent()
{
- BeforeBeanDiscovery event = new BeforeBeanDiscoveryImpl(deploymentManager, deployment, beanDeployments);
+ BeforeBeanDiscovery event = new BeforeBeanDiscoveryImpl(deploymentManager, deployment, beanDeployments, extensionBeanDeployerEnvironment);
try
{
deploymentManager.fireEvent(event);
@@ -326,7 +336,7 @@
private void fireAfterBeanDiscoveryEvent()
{
- AfterBeanDiscoveryImpl event = new AfterBeanDiscoveryImpl(deploymentManager, deployment, beanDeployments);
+ AfterBeanDiscoveryImpl event = new AfterBeanDiscoveryImpl(deploymentManager, deployment, beanDeployments, extensionBeanDeployerEnvironment);
try
{
deploymentManager.fireEvent(event);
Copied: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AbstractBeanDiscoveryEvent.java (from rev 3828, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDiscoveryEvent.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AbstractBeanDiscoveryEvent.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AbstractBeanDiscoveryEvent.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -0,0 +1,99 @@
+/*
+ * 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.bootstrap.events;
+
+import java.util.Map;
+
+import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.webbeans.bootstrap.BeanDeployment;
+import org.jboss.webbeans.bootstrap.ExtensionBeanDeployerEnvironment;
+import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.webbeans.bootstrap.spi.Deployment;
+import org.jboss.webbeans.metadata.TypeStore;
+
+/**
+ * @author pmuir
+ */
+public abstract class AbstractBeanDiscoveryEvent extends AbstractContainerEvent
+{
+
+ private final Map<BeanDeploymentArchive, BeanDeployment> beanDeployments;
+ private final BeanManagerImpl deploymentManager;
+ private final Deployment deployment;
+ private final ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment;
+
+ public AbstractBeanDiscoveryEvent(Map<BeanDeploymentArchive, BeanDeployment> beanDeployments, BeanManagerImpl deploymentManager, Deployment deployment, ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment)
+ {
+ this.beanDeployments = beanDeployments;
+ this.deploymentManager = deploymentManager;
+ this.deployment = deployment;
+ this.extensionBeanDeployerEnvironment = extensionBeanDeployerEnvironment;
+ }
+
+ /**
+ * @return the beanDeployments
+ */
+ protected Map<BeanDeploymentArchive, BeanDeployment> getBeanDeployments()
+ {
+ return beanDeployments;
+ }
+
+ /**
+ * @return the deployment
+ */
+ protected Deployment getDeployment()
+ {
+ return deployment;
+ }
+
+ /**
+ * @return the deploymentManager
+ */
+ protected BeanManagerImpl getDeploymentManager()
+ {
+ return deploymentManager;
+ }
+
+ protected TypeStore getTypeStore()
+ {
+ return getDeployment().getServices().get(TypeStore.class);
+ }
+
+
+ protected BeanDeployment getOrCreateBeanDeployment(Class<?> clazz)
+ {
+ BeanDeploymentArchive beanDeploymentArchive = getDeployment().loadBeanDeploymentArchive(clazz);
+ if (beanDeploymentArchive == null)
+ {
+ throw new IllegalStateException("Unable to find Bean Deployment Archive for " + clazz);
+ }
+ else
+ {
+ if (getBeanDeployments().containsKey(beanDeploymentArchive))
+ {
+ return getBeanDeployments().get(beanDeploymentArchive);
+ }
+ else
+ {
+ BeanDeployment beanDeployment = new BeanDeployment(beanDeploymentArchive, getDeploymentManager(), deployment, extensionBeanDeployerEnvironment, deployment.getServices());
+ getBeanDeployments().put(beanDeploymentArchive, beanDeployment);
+ return beanDeployment;
+ }
+ }
+ }
+
+}
\ No newline at end of file
Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AbstractBeanDiscoveryEvent.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AbstractContainerEvent.java (from rev 3828, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractContainerEvent.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AbstractContainerEvent.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AbstractContainerEvent.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -0,0 +1,44 @@
+/*
+ * 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.bootstrap.events;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author pmuir
+ *
+ */
+public class AbstractContainerEvent
+{
+
+ private final List<Throwable> errors;
+
+ public AbstractContainerEvent()
+ {
+ this.errors = new ArrayList<Throwable>();
+ }
+
+ /**
+ * @return the errors
+ */
+ protected List<Throwable> getErrors()
+ {
+ return errors;
+ }
+
+}
Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AbstractContainerEvent.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AfterBeanDiscoveryImpl.java (from rev 3828, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterBeanDiscoveryImpl.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AfterBeanDiscoveryImpl.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AfterBeanDiscoveryImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -0,0 +1,67 @@
+/*
+ * 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.bootstrap.events;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import javax.enterprise.context.spi.Context;
+import javax.enterprise.inject.spi.AfterBeanDiscovery;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.ObserverMethod;
+
+import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.webbeans.bootstrap.BeanDeployment;
+import org.jboss.webbeans.bootstrap.ExtensionBeanDeployerEnvironment;
+import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.webbeans.bootstrap.spi.Deployment;
+
+public class AfterBeanDiscoveryImpl extends AbstractBeanDiscoveryEvent implements AfterBeanDiscovery
+{
+
+ public AfterBeanDiscoveryImpl(BeanManagerImpl deploymentManager, Deployment deployment, Map<BeanDeploymentArchive, BeanDeployment> beanDeployments, ExtensionBeanDeployerEnvironment extensionDeployerEnvironment)
+ {
+ super(beanDeployments, deploymentManager, deployment, extensionDeployerEnvironment);
+ }
+
+ public void addDefinitionError(Throwable t)
+ {
+ getErrors().add(t);
+ }
+
+ public List<Throwable> getDefinitionErrors()
+ {
+ return Collections.unmodifiableList(getErrors());
+ }
+
+ public void addBean(Bean<?> bean)
+ {
+ getOrCreateBeanDeployment(bean.getBeanClass()).getBeanManager().addBean(bean);
+ }
+
+ public void addContext(Context context)
+ {
+ getDeploymentManager().addContext(context);
+ }
+
+ public void addObserverMethod(ObserverMethod<?, ?> observerMethod)
+ {
+ getOrCreateBeanDeployment(observerMethod.getBean().getBeanClass()).getBeanManager().addObserver(observerMethod);
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AfterDeploymentValidationImpl.java (from rev 3828, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterDeploymentValidationImpl.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AfterDeploymentValidationImpl.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AfterDeploymentValidationImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -0,0 +1,37 @@
+/*
+ * 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.bootstrap.events;
+
+import java.util.Collections;
+import java.util.List;
+
+import javax.enterprise.inject.spi.AfterDeploymentValidation;
+
+
+public class AfterDeploymentValidationImpl extends AbstractContainerEvent implements AfterDeploymentValidation
+{
+
+ public void addDeploymentProblem(Throwable t)
+ {
+ getErrors().add(t);
+ }
+
+ public List<Throwable> getDeploymentProblems()
+ {
+ return Collections.unmodifiableList(getErrors());
+ }
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/BeforeBeanDiscoveryImpl.java (from rev 3828, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeBeanDiscoveryImpl.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/BeforeBeanDiscoveryImpl.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/BeforeBeanDiscoveryImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -0,0 +1,79 @@
+/*
+ * 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.bootstrap.events;
+
+import java.lang.annotation.Annotation;
+import java.util.Map;
+
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.BeforeBeanDiscovery;
+
+import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.webbeans.bootstrap.BeanDeployment;
+import org.jboss.webbeans.bootstrap.ExtensionBeanDeployerEnvironment;
+import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.webbeans.bootstrap.spi.Deployment;
+import org.jboss.webbeans.literal.BindingTypeLiteral;
+import org.jboss.webbeans.literal.InterceptorBindingTypeLiteral;
+import org.jboss.webbeans.literal.NormalScopeLiteral;
+import org.jboss.webbeans.literal.ScopeLiteral;
+
+public class BeforeBeanDiscoveryImpl extends AbstractBeanDiscoveryEvent implements BeforeBeanDiscovery
+{
+
+ public BeforeBeanDiscoveryImpl(BeanManagerImpl deploymentManager, Deployment deployment, Map<BeanDeploymentArchive, BeanDeployment> beanDeployments, ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment)
+ {
+ super(beanDeployments, deploymentManager, deployment, extensionBeanDeployerEnvironment);
+ }
+
+ public void addQualifier(Class<? extends Annotation> bindingType)
+ {
+ getTypeStore().add(bindingType, new BindingTypeLiteral());
+ }
+
+ public void addInterceptorBindingType(Class<? extends Annotation> bindingType)
+ {
+ getTypeStore().add(bindingType, new InterceptorBindingTypeLiteral());
+ }
+
+ public void addScope(Class<? extends Annotation> scopeType,
+ boolean normal, boolean passivating)
+ {
+ if (normal)
+ {
+ getTypeStore().add(scopeType, new NormalScopeLiteral(passivating));
+ }
+ else
+ {
+ getTypeStore().add(scopeType, new ScopeLiteral());
+ }
+ }
+
+ public void addStereotype(Class<? extends Annotation> stereotype,
+ Annotation... stereotypeDef)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void addAnnotatedType(AnnotatedType<?> type)
+ {
+ getOrCreateBeanDeployment(type.getJavaClass()).getBeanDeployer().addClass(type);
+ }
+
+
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/BeforeShutdownImpl.java (from rev 3828, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeShutdownImpl.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/BeforeShutdownImpl.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/BeforeShutdownImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -0,0 +1,28 @@
+/*
+ * 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.bootstrap.events;
+
+import javax.enterprise.inject.spi.BeforeShutdown;
+
+/**
+ * @author pmuir
+ *
+ */
+public class BeforeShutdownImpl implements BeforeShutdown
+{
+
+}
Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/BeforeShutdownImpl.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessAnnotatedTypeImpl.java (from rev 3828, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ProcessAnnotatedTypeImpl.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessAnnotatedTypeImpl.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessAnnotatedTypeImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -0,0 +1,65 @@
+/*
+ * 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.bootstrap.events;
+
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.ProcessAnnotatedType;
+
+/**
+ * Container lifecycle event for each Java class or interface discovered by
+ * the container.
+ *
+ * @author pmuir
+ * @author David Allen
+ *
+ */
+public class ProcessAnnotatedTypeImpl<X> implements ProcessAnnotatedType<X>
+{
+
+ private AnnotatedType<X> annotatedType;
+ private boolean veto;
+
+ public ProcessAnnotatedTypeImpl(AnnotatedType<X> annotatedType)
+ {
+ this.annotatedType = annotatedType;
+ }
+
+ public AnnotatedType<X> getAnnotatedType()
+ {
+ return annotatedType;
+ }
+
+ public void setAnnotatedType(AnnotatedType<X> type)
+ {
+ if (type == null)
+ {
+ throw new IllegalArgumentException("Cannot set the type to null (if you want to stop the type being used, call veto()) " + this);
+ }
+ this.annotatedType = type;
+ }
+
+ public void veto()
+ {
+ this.veto = true;
+ }
+
+ public boolean isVeto()
+ {
+ return veto;
+ }
+
+}
Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessAnnotatedTypeImpl.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessObserverMethodImpl.java (from rev 3828, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ProcessObserverMethodImpl.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessObserverMethodImpl.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessObserverMethodImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -0,0 +1,65 @@
+/*
+ * 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.bootstrap.events;
+
+import java.util.Collections;
+import java.util.List;
+
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.ObserverMethod;
+import javax.enterprise.inject.spi.ProcessObserverMethod;
+
+/**
+ * Implementation of the event used to notify observers for each observer
+ * method that is added.
+ *
+ * @author David Allen
+ *
+ */
+public class ProcessObserverMethodImpl<X, T> extends AbstractContainerEvent implements ProcessObserverMethod<X, T>
+{
+ private final AnnotatedMethod<X> beanMethod;
+ private final ObserverMethod<X, T> observerMethod;
+
+ public ProcessObserverMethodImpl(AnnotatedMethod<X> beanMethod, ObserverMethod<X, T> observerMethod)
+ {
+ this.beanMethod = beanMethod;
+ this.observerMethod = observerMethod;
+ }
+
+ public void addDefinitionError(Throwable t)
+ {
+ getErrors().add(t);
+ }
+
+ public AnnotatedMethod<X> getAnnotatedMethod()
+ {
+ return beanMethod;
+ }
+
+ public ObserverMethod<X, T> getObserverMethod()
+ {
+ return observerMethod;
+ }
+
+ public List<Throwable> getDefinitionErrors()
+ {
+ return Collections.unmodifiableList(getErrors());
+ }
+
+}
Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessObserverMethodImpl.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessProducerImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessProducerImpl.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessProducerImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -0,0 +1,47 @@
+package org.jboss.webbeans.bootstrap.events;
+
+import java.util.List;
+
+import javax.enterprise.inject.spi.AnnotatedMember;
+import javax.enterprise.inject.spi.ProcessProducer;
+import javax.enterprise.inject.spi.Producer;
+
+
+public class ProcessProducerImpl<X, T> extends AbstractContainerEvent implements ProcessProducer<X, T>
+{
+
+ private final AnnotatedMember<X> annotatedMember;
+ private Producer<T> producer;
+
+ public ProcessProducerImpl(AnnotatedMember<X> annotatedMember, Producer<T> producer)
+ {
+ this.producer = producer;
+ this.annotatedMember = annotatedMember;
+ }
+
+ public void addDefinitionError(Throwable t)
+ {
+ getErrors().add(t);
+ }
+
+ public List<Throwable> getDefinitionErrors()
+ {
+ return super.getErrors();
+ }
+
+ public AnnotatedMember<X> getAnnotatedMember()
+ {
+ return annotatedMember;
+ }
+
+ public Producer<T> getProducer()
+ {
+ return producer;
+ }
+
+ public void setProducer(Producer<T> producer)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessProducerImpl.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/ejb/EjbDescriptors.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/ejb/EjbDescriptors.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/ejb/EjbDescriptors.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -37,6 +37,35 @@
private final Map<String, InternalEjbDescriptor<?>> ejbs;
private final Collection<Class<?>> ejbClasses;
+
+ public static final EjbDescriptors EMPTY = new EjbDescriptors()
+ {
+ @Override
+ public <T> void add(EjbDescriptor<T> ejbDescriptor)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void addAll(Iterable<EjbDescriptor<?>> ejbDescriptors)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void cleanup()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void clear()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+
+ };
/**
* Constructor
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventImpl.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -42,7 +42,7 @@
private static final long serialVersionUID = 656782657242515455L;
- public static <E> Event<E> of(Type eventType, BeanManagerImpl manager, Set<Annotation> bindings)
+ public static <E> EventImpl<E> of(Type eventType, BeanManagerImpl manager, Set<Annotation> bindings)
{
return new EventImpl<E>(eventType, manager, bindings);
}
@@ -90,7 +90,7 @@
return selectEvent(subtype.getType(), bindings);
}
- private <U extends T> Event<U> selectEvent(Type subtype, Annotation[] bindings)
+ public <U extends T> Event<U> selectEvent(Type subtype, Annotation[] bindings)
{
return new EventImpl<U>(
subtype,
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverFactory.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverFactory.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverFactory.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -41,7 +41,7 @@
* @param manager The Web Beans manager
* @return An observer implementation built from the method abstraction
*/
- public static <X, T> ObserverMethodImpl<X, T> create(WBMethod<?, ?> method, RIBean<?> declaringBean, BeanManagerImpl manager)
+ public static <X, T> ObserverMethodImpl<X, T> create(WBMethod<T, X> method, RIBean<X> declaringBean, BeanManagerImpl manager)
{
ObserverMethodImpl<X, T> result = null;
TransactionPhase transactionPhase = getTransactionalPhase(method);
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverMethodImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverMethodImpl.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverMethodImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -63,8 +63,8 @@
private final Type eventType;
protected BeanManagerImpl manager;
private final Notify notifyType;
- protected final RIBean<?> declaringBean;
- protected final MethodInjectionPoint<?, ?> observerMethod;
+ protected final RIBean<X> declaringBean;
+ protected final MethodInjectionPoint<T, X> observerMethod;
protected TransactionPhase transactionPhase;
/**
@@ -75,7 +75,7 @@
* @param declaringBean The observer bean
* @param manager The Web Beans manager
*/
- protected ObserverMethodImpl(final WBMethod<?, ?> observer, final RIBean<?> declaringBean, final BeanManagerImpl manager)
+ protected ObserverMethodImpl(final WBMethod<T, X> observer, final RIBean<X> declaringBean, final BeanManagerImpl manager)
{
this.manager = manager;
this.declaringBean = declaringBean;
@@ -146,7 +146,7 @@
@SuppressWarnings("unchecked")
public Bean<X> getBean()
{
- return (Bean<X>) declaringBean;
+ return declaringBean;
}
public Annotation[] getBindingsAsArray()
@@ -154,11 +154,6 @@
return bindings.toArray(new Annotation[0]);
}
- public Type getEventType()
- {
- return eventType;
- }
-
public Notify getNotify()
{
return notifyType;
@@ -182,7 +177,7 @@
/**
* @return the observerMethod
*/
- public MethodInjectionPoint<?, ?> getMethod()
+ public MethodInjectionPoint<T, X> getMethod()
{
return observerMethod;
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/event/TransactionalObserverMethodImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/TransactionalObserverMethodImpl.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/event/TransactionalObserverMethodImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -38,7 +38,7 @@
* @param observerBean The bean declaring the observer method
* @param manager The JCDI manager in use
*/
- protected TransactionalObserverMethodImpl(WBMethod<?, ?> observer, RIBean<?> observerBean, TransactionPhase transactionPhase, BeanManagerImpl manager)
+ protected TransactionalObserverMethodImpl(WBMethod<T, X> observer, RIBean<X> observerBean, TransactionPhase transactionPhase, BeanManagerImpl manager)
{
super(observer, observerBean, manager);
this.transactionPhase = transactionPhase;
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingWBClass.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingWBClass.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingWBClass.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -23,6 +23,7 @@
public abstract class ForwardingWBClass<T> extends ForwardingWBAnnotated<T, Class<T>> implements WBClass<T>
{
+ @Override
protected abstract WBClass<T> delegate();
public Set<WBConstructor<T>> getAnnotatedWBConstructors(Class<? extends Annotation> annotationType)
@@ -55,19 +56,19 @@
return delegate().getWBMethods();
}
- public Set<WBField<?, ?>> getDeclaredAnnotatedWBFields(Class<? extends Annotation> annotationType)
+ public Set<WBField<?, T>> getDeclaredAnnotatedWBFields(Class<? extends Annotation> annotationType)
{
return delegate().getDeclaredAnnotatedWBFields(annotationType);
}
- public Set<WBMethod<?, ?>> getDeclaredAnnotatedWBMethods(Class<? extends Annotation> annotationType)
+ public Set<WBMethod<?, T>> getDeclaredAnnotatedWBMethods(Class<? extends Annotation> annotationType)
{
return delegate().getDeclaredAnnotatedWBMethods(annotationType);
}
- public Set<WBMethod<?, T>> getWBDeclaredMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType)
+ public Set<WBMethod<?, T>> getDeclaredWBMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType)
{
- return delegate().getWBDeclaredMethodsWithAnnotatedParameters(annotationType);
+ return delegate().getDeclaredWBMethodsWithAnnotatedParameters(annotationType);
}
public Set<WBField<?, ?>> getWBFields()
@@ -111,6 +112,7 @@
return delegate().isNonStaticMemberClass();
}
+ @Override
public boolean isParameterizedType()
{
return delegate().isParameterizedType();
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBClass.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBClass.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBClass.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -80,7 +80,7 @@
* @return A set of abstracted fields with the given annotation. Returns an
* empty set if there are no matches
*/
- public Set<WBField<?, ?>> getDeclaredAnnotatedWBFields(Class<? extends Annotation> annotationType);
+ public Set<WBField<?, T>> getDeclaredAnnotatedWBFields(Class<? extends Annotation> annotationType);
/**
* Gets all fields which are meta-annotated with metaAnnotationType
@@ -138,7 +138,7 @@
* @return A set of abstracted methods with the given annotation. Returns an
* empty set if there are no matches
*/
- public Set<WBMethod<?, ?>> getDeclaredAnnotatedWBMethods(Class<? extends Annotation> annotationType);
+ public Set<WBMethod<?, T>> getDeclaredAnnotatedWBMethods(Class<? extends Annotation> annotationType);
/**
* Find the annotated method for a given methodDescriptor
@@ -197,7 +197,7 @@
* @return A set of abstracted methods with the given annotation. Returns an
* empty set if there are no matches
*/
- public Set<WBMethod<?, T>> getWBDeclaredMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType);
+ public Set<WBMethod<?, T>> getDeclaredWBMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType);
/**
* Gets the superclass.
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBClassImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBClassImpl.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBClassImpl.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -88,7 +88,7 @@
private final Set<WBField<?, ?>> declaredFields;
private final Map<String, WBField<?, ?>> declaredFieldsByName;
// The map from annotation type to abstracted field with annotation
- private final SetMultimap<Class<? extends Annotation>, WBField<?, ?>> declaredAnnotatedFields;
+ private final SetMultimap<Class<? extends Annotation>, WBField<?, T>> declaredAnnotatedFields;
// The map from annotation type to abstracted field with meta-annotation
private final SetMultimap<Class<? extends Annotation>, WBField<?, ?>> declaredMetaAnnotatedFields;
@@ -104,7 +104,7 @@
// The set of abstracted methods
private final Set<WBMethod<?, ?>> declaredMethods;
// The map from annotation type to abstracted method with annotation
- private final SetMultimap<Class<? extends Annotation>, WBMethod<?, ?>> declaredAnnotatedMethods;
+ private final SetMultimap<Class<? extends Annotation>, WBMethod<?, T>> declaredAnnotatedMethods;
// The map from annotation type to method with a parameter with annotation
private final SetMultimap<Class<? extends Annotation>, WBMethod<?, T>> declaredMethodsByAnnotatedParameters;
@@ -176,12 +176,12 @@
});
this.declaredFields = new HashSet<WBField<?, ?>>();
this.declaredFieldsByName = new HashMap<String, WBField<?, ?>>();
- this.declaredAnnotatedFields = Multimaps.newSetMultimap(new HashMap<Class<? extends Annotation>, Collection<WBField<?, ?>>>(), new Supplier< Set<WBField<?, ?>>>()
+ this.declaredAnnotatedFields = Multimaps.newSetMultimap(new HashMap<Class<? extends Annotation>, Collection<WBField<?, T>>>(), new Supplier< Set<WBField<?, T>>>()
{
- public Set<WBField<?, ?>> get()
+ public Set<WBField<?, T>> get()
{
- return new HashSet<WBField<?, ?>>();
+ return new HashSet<WBField<?, T>>();
}
});
@@ -216,14 +216,14 @@
{
field.setAccessible(true);
}
- WBField<?, ?> annotatedField = null;
+ WBField<?, T> annotatedField = null;
if (annotatedTypeFields.containsKey(field))
{
annotatedField = WBFieldImpl.of(annotatedTypeFields.get(field), this.<T>getDeclaringWBClass(field, classTransformer), classTransformer);
}
else
{
- annotatedField = WBFieldImpl.of(field, getDeclaringWBClass(field, classTransformer), classTransformer);
+ annotatedField = WBFieldImpl.of(field, this.<T>getDeclaringWBClass(field, classTransformer), classTransformer);
}
this.fields.add(annotatedField);
@@ -345,12 +345,12 @@
});
this.declaredMethods = new HashSet<WBMethod<?, ?>>();
- this.declaredAnnotatedMethods = Multimaps.newSetMultimap(new HashMap<Class<? extends Annotation>, Collection<WBMethod<?, ?>>>(), new Supplier< Set<WBMethod<?, ?>>>()
+ this.declaredAnnotatedMethods = Multimaps.newSetMultimap(new HashMap<Class<? extends Annotation>, Collection<WBMethod<?, T>>>(), new Supplier< Set<WBMethod<?, T>>>()
{
- public Set<WBMethod<?, ?>> get()
+ public Set<WBMethod<?, T>> get()
{
- return new HashSet<WBMethod<?, ?>>();
+ return new HashSet<WBMethod<?, T>>();
}
});
@@ -479,7 +479,7 @@
return (WBField<F, ?>) declaredFieldsByName.get(fieldName);
}
- public Set<WBField<?, ?>> getDeclaredAnnotatedWBFields(Class<? extends Annotation> annotationType)
+ public Set<WBField<?, T>> getDeclaredAnnotatedWBFields(Class<? extends Annotation> annotationType)
{
return Collections.unmodifiableSet(declaredAnnotatedFields.get(annotationType));
}
@@ -563,7 +563,7 @@
return Collections.unmodifiableSet(annotatedMethods.get(annotationType));
}
- public Set<WBMethod<?, ?>> getDeclaredAnnotatedWBMethods(Class<? extends Annotation> annotationType)
+ public Set<WBMethod<?, T>> getDeclaredAnnotatedWBMethods(Class<? extends Annotation> annotationType)
{
return Collections.unmodifiableSet(declaredAnnotatedMethods.get(annotationType));
}
@@ -598,7 +598,7 @@
return Collections.unmodifiableSet(constructorsByAnnotatedParameters.get(annotationType));
}
- public Set<WBMethod<?, T>> getWBDeclaredMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType)
+ public Set<WBMethod<?, T>> getDeclaredWBMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType)
{
return Collections.unmodifiableSet(declaredMethodsByAnnotatedParameters.get(annotationType));
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeDisposerResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeDisposerResolver.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeDisposerResolver.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -28,19 +28,19 @@
* @author pmuir
*
*/
-public class TypeSafeDisposerResolver extends TypeSafeResolver<DisposalMethod<?>>
+public class TypeSafeDisposerResolver extends TypeSafeResolver<DisposalMethod<?, ?>>
{
private final BeanManagerImpl manager;
- public TypeSafeDisposerResolver(BeanManagerImpl manager, Iterable<DisposalMethod<?>> disposers)
+ public TypeSafeDisposerResolver(BeanManagerImpl manager, Iterable<DisposalMethod<?, ?>> disposers)
{
super(disposers);
this.manager = manager;
}
@Override
- protected boolean matches(Resolvable resolvable, DisposalMethod<?> disposer)
+ protected boolean matches(Resolvable resolvable, DisposalMethod<?, ?> disposer)
{
return resolvable.getDeclaringBean().equals(disposer.getDeclaringBean()) && Reflections.isAssignableFrom(disposer.getType(), resolvable.getTypeClosure()) && Beans.containsAllBindings(disposer.getQualifiers(), resolvable.getQualifiers(), manager);
}
@@ -54,7 +54,7 @@
}
@Override
- protected Set<DisposalMethod<?>> filterResult(Set<DisposalMethod<?>> matched)
+ protected Set<DisposalMethod<?, ?>> filterResult(Set<DisposalMethod<?, ?>> matched)
{
return matched;
}
@@ -66,7 +66,7 @@
}
@Override
- protected Set<DisposalMethod<?>> sortResult(Set<DisposalMethod<?>> matched)
+ protected Set<DisposalMethod<?, ?>> sortResult(Set<DisposalMethod<?, ?>> matched)
{
return matched;
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Beans.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Beans.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Beans.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -112,9 +112,9 @@
{
return ((SessionBean<?>) bean).getEjbDescriptor().isStateful();
}
- else if (bean instanceof AbstractProducerBean<?, ?>)
+ else if (bean instanceof AbstractProducerBean<?, ?, ?>)
{
- return Reflections.isSerializable(((AbstractProducerBean<?, ?>) bean).getType());
+ return Reflections.isSerializable(((AbstractProducerBean<?, ?, ?>) bean).getType());
}
else
{
@@ -150,11 +150,17 @@
injectableFieldsList.add(0, fields);
for (WBField<?, ?> annotatedField : t.getDeclaredAnnotatedWBFields(Inject.class))
{
- addFieldInjectionPoint(annotatedField, fields, declaringBean);
+ if (!annotatedField.isStatic())
+ {
+ addFieldInjectionPoint(annotatedField, fields, declaringBean);
+ }
}
for (WBField<?, ?> annotatedField : t.getAnnotatedWBFields(Decorates.class))
{
- addFieldInjectionPoint(annotatedField, fields, declaringBean);
+ if (!annotatedField.isStatic())
+ {
+ addFieldInjectionPoint(annotatedField, fields, declaringBean);
+ }
}
t = t.getWBSuperclass();
}
@@ -306,7 +312,7 @@
initializerMethodsList.add(0, initializerMethods);
for (WBMethod<?, ?> method : t.getDeclaredWBMethods())
{
- if (method.isAnnotationPresent(Inject.class))
+ if (method.isAnnotationPresent(Inject.class) && !method.isStatic())
{
if (method.getAnnotation(Produces.class) != null)
{
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Reflections.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Reflections.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Reflections.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -53,8 +53,10 @@
private static final Log log = Logging.getLog(Reflections.class);
- private static final Type[] EMPTY_TYPES = {};
+ public static final Type[] EMPTY_TYPES = {};
+ public static final Annotation[] EMPTY_ANNOTATIONS = {};
+
public static class HierarchyDiscovery
{
@@ -460,6 +462,12 @@
}
return false;
}
+
+ public static Set<Type> createTypeClosure(Class<?> rawType, Type[] actualTypeArguments)
+ {
+ Type type = new ParameterizedTypeImpl(rawType, actualTypeArguments, rawType.getDeclaringClass());
+ return new HierarchyDiscovery(type).getFlattenedTypes();
+ }
/**
* Invokes a method and wraps exceptions
Modified: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/singleProducerMethod/BootstrapTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/singleProducerMethod/BootstrapTest.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/singleProducerMethod/BootstrapTest.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -37,7 +37,7 @@
assert classes.containsKey(Tarantula.class);
assert classes.get(TarantulaProducer.class) instanceof ManagedBean<?>;
- assert classes.get(Tarantula.class) instanceof ProducerMethod<?>;
+ assert classes.get(Tarantula.class) instanceof ProducerMethod<?, ?>;
}
}
Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/AbstractJSR299Test.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/AbstractJSR299Test.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/AbstractJSR299Test.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -155,7 +155,7 @@
}
else if (beans.size() > 1)
{
- throw new AmbiguousResolutionException("More than one bean available (" + beans.size() + ")");
+ throw new AmbiguousResolutionException("More than one bean available (" + beans + ")");
}
return beans.iterator().next();
}
Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/observer/ProcessObserverMethodEventTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/observer/ProcessObserverMethodEventTest.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/observer/ProcessObserverMethodEventTest.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -40,7 +40,7 @@
@SpecVersion(spec="cdi", version="PFD2")
public class ProcessObserverMethodEventTest extends AbstractJSR299Test
{
- @Test(groups = "ri-broken")
+ @Test
// Event resolution seems to be broken here
@SpecAssertion(section = "11.5.9", id = "aaa")
public void testProcessObserverMethodEventsSent()
@@ -48,14 +48,14 @@
assert ProcessObserverMethodObserver.getEventtypes().contains(EventA.class);
}
- @Test(groups = "ri-broken")
+ @Test
@SpecAssertion(section = "11.5.9", id = "aba")
public void testGetAnnotatedMethod()
{
assert ProcessObserverMethodObserver.getAnnotatedMethod().getParameters().iterator().next().getBaseType().equals(EventA.class);
}
- @Test(groups = "ri-broken")
+ @Test
@SpecAssertion(section = "11.5.9", id = "ba")
public void testGetObserverMethod()
{
Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/observer/ProcessObserverMethodObserver.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/observer/ProcessObserverMethodObserver.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/observer/ProcessObserverMethodObserver.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -9,13 +9,13 @@
import javax.enterprise.inject.spi.ObserverMethod;
import javax.enterprise.inject.spi.ProcessObserverMethod;
-class ProcessObserverMethodObserver implements Extension
+public class ProcessObserverMethodObserver implements Extension
{
private static final HashSet<Type> eventTypes = new HashSet<Type>();
private static AnnotatedMethod<?> annotatedMethod;
private static ObserverMethod<?, ?> observerMethod;
- public void observeObserverMethodForEventA(@Observes ProcessObserverMethod<?, ?> event)
+ public void observeObserverMethodForEventA(@Observes ProcessObserverMethod<EventAObserver, EventA> event)
{
eventTypes.add(event.getObserverMethod().getObservedType());
annotatedMethod = event.getAnnotatedMethod();
Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/Cat.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/Cat.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/Cat.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -4,25 +4,46 @@
class Cat
{
+ private static boolean constructorCalled;
private static boolean initializerCalled;
@Inject
protected CatFoodDish foodDish;
+ private Bird bird;
+
@Inject
public Cat(LitterBox litterBox)
{
- initializerCalled = true;
+ constructorCalled = true;
assert litterBox != null;
}
+
+ @Inject
+ public void setBird(Bird bird)
+ {
+ assert bird != null;
+ initializerCalled = true;
+ }
+ public static boolean isConstructorCalled()
+ {
+ return constructorCalled;
+ }
+
public static boolean isInitializerCalled()
{
return initializerCalled;
}
- public static void setInitializerCalled(boolean initializerCalled)
+ public static void reset()
{
- Cat.initializerCalled = initializerCalled;
+ Cat.constructorCalled = false;
+ Cat.initializerCalled = false;
}
+
+ public void ping()
+ {
+
+ }
}
Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/DogProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/DogProducer.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/DogProducer.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -5,41 +5,39 @@
class DogProducer
{
- public static final String DOG_COLOR = "Black";
+ public static final String QUIET_DOG_COLOR = "Black";
+ public static final String NOISY_DOG_COLOR = "White";
private static boolean noisyDogProducerCalled;
+ private static boolean noisyDogDisposerCalled;
@Produces @Quiet
- private Dog quietDog = new Dog(DOG_COLOR);
+ private Dog quietDog = new Dog(QUIET_DOG_COLOR);
@Produces @Noisy
public Dog produceNoisyDog(DogBed dogBed)
{
noisyDogProducerCalled = true;
- return new Dog();
+ return new Dog(NOISY_DOG_COLOR);
}
public void disposeNoisyDog(@Disposes @Noisy Dog dog)
{
-
+ noisyDogDisposerCalled = true;
}
- public void disposeQuietDog(@Disposes @Quiet Dog dog)
- {
-
- }
-
public static boolean isNoisyDogProducerCalled()
{
return noisyDogProducerCalled;
}
-
- public static void setNoisyDogProducerCalled(boolean noisyDogProducerCalled)
+
+ public static boolean isNoisyDogDisposerCalled()
{
- DogProducer.noisyDogProducerCalled = noisyDogProducerCalled;
+ return noisyDogDisposerCalled;
}
- public Dog getQuietDog()
+ public static void reset()
{
- return quietDog;
+ DogProducer.noisyDogProducerCalled = false;
+ DogProducer.noisyDogDisposerCalled = false;
}
}
Deleted: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/PreferredDogProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/PreferredDogProducer.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/PreferredDogProducer.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -1,71 +0,0 @@
-package org.jboss.jsr299.tck.tests.extensions.producer;
-
-import javax.enterprise.inject.Disposes;
-import javax.enterprise.inject.Produces;
-import javax.enterprise.inject.Specializes;
-
-@Specializes @Preferred
-class PreferredDogProducer extends DogProducer
-{
-
- public static final String DOG_COLOR = "Gray";
- private static boolean noisyDogProducerCalled;
- private static boolean noisyDogDisposed;
- private static boolean quietDogDisposed;
-
- @Produces @Quiet
- private Dog preferredQuietDog = new Dog(DOG_COLOR);
-
- @Override
- public Dog getQuietDog()
- {
- return preferredQuietDog;
- }
-
- @Override @Produces @Noisy
- public Dog produceNoisyDog(DogBed dogBed)
- {
- return new Dog(DOG_COLOR);
- }
-
- public void disposeNoisyDog(@Disposes @Noisy Dog dog)
- {
- noisyDogDisposed = true;
- }
-
- public void disposeQuietDog(@Disposes @Quiet Dog dog)
- {
- quietDogDisposed = true;
- }
-
- public static boolean isNoisyDogProducerCalled()
- {
- return noisyDogProducerCalled;
- }
-
- public static void setNoisyDogProducerCalled(boolean noisyDogProducerCalled)
- {
- PreferredDogProducer.noisyDogProducerCalled = noisyDogProducerCalled;
- }
-
- public static boolean isNoisyDogDisposed()
- {
- return noisyDogDisposed;
- }
-
- public static boolean isQuietDogDisposed()
- {
- return quietDogDisposed;
- }
-
- public static void setNoisyDogDisposed(boolean noisyDogDisposed)
- {
- PreferredDogProducer.noisyDogDisposed = noisyDogDisposed;
- }
-
- public static void setQuietDogDisposed(boolean quietDogDisposed)
- {
- PreferredDogProducer.quietDogDisposed = quietDogDisposed;
- }
-
-}
Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/ProducerProcessor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/ProducerProcessor.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/ProducerProcessor.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -10,22 +10,16 @@
import javax.enterprise.inject.spi.ProcessProducer;
import javax.enterprise.inject.spi.Producer;
-class ProducerProcessor implements Extension
+public class ProducerProcessor implements Extension
{
- private static Producer<Dog> dogProducer;
- private static Producer<Cat> catProducer;
+ private static InjectionTarget<Cat> catInjectionTarget;
private static Producer<Dog> noisyDogProducer;
private static Producer<Dog> quietDogProducer;
private static InjectionTarget<Dog> dogInjectionTarget;
private static AnnotatedType<Dog> dogAnnotatedType;
- public void processDogProducer(@Observes ProcessProducer<Dog, Dog> producerEvent)
+ public void processDogProducerProducer(@Observes ProcessProducer<DogProducer, Dog> producerEvent)
{
- dogProducer = producerEvent.getProducer();
- }
-
- public void processDogProducerProducer(@Observes ProcessProducer<PreferredDogProducer, Dog> producerEvent)
- {
if (producerEvent.getAnnotatedMember().isAnnotationPresent(Noisy.class))
{
noisyDogProducer = producerEvent.getProducer();
@@ -38,9 +32,9 @@
}
}
- public void processCatProducer(@Observes ProcessProducer<Cat, Cat> producerEvent)
+ public void processCatProducer(@Observes ProcessInjectionTarget<Cat> producerEvent)
{
- catProducer = producerEvent.getProducer();
+ catInjectionTarget = producerEvent.getInjectionTarget();
}
public void processDogInjectionTarget(@Observes ProcessInjectionTarget<Dog> injectionTargetEvent)
@@ -50,11 +44,6 @@
dogAnnotatedType = injectionTargetEvent.getAnnotatedType();
}
- public static Producer<Dog> getDogProducer()
- {
- return dogProducer;
- }
-
public static Producer<Dog> getNoisyDogProducer()
{
return noisyDogProducer;
@@ -65,9 +54,9 @@
return quietDogProducer;
}
- public static Producer<Cat> getCatProducer()
+ public static InjectionTarget<Cat> getCatInjectionTarget()
{
- return catProducer;
+ return catInjectionTarget;
}
public static InjectionTarget<Dog> getDogInjectionTarget()
Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/ProducerTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/ProducerTest.java 2009-10-04 12:02:24 UTC (rev 3837)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/ProducerTest.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -35,40 +35,30 @@
{
@Test(groups = "ri-broken")
@SpecAssertions({
- @SpecAssertion(section = "11.2", id = "ba"),
- @SpecAssertion(section = "11.5.7", id = "ba")
+ @SpecAssertion(section = "11.2", id = "ba")
})
- public void testProduceCallsInitializer()
+ public void testProduceCallsInitializerAndConstructor()
{
- Producer<Cat> producer = ProducerProcessor.getCatProducer();
- Cat.setInitializerCalled(false);
- producer.produce(new CreationalContextImpl<Cat>());
+ InjectionTarget<Cat> injectionTarget = ProducerProcessor.getCatInjectionTarget();
+ Bean<Cat> catBean = getUniqueBean(Cat.class);
+ Cat.reset();
+ injectionTarget.produce(getCurrentManager().createCreationalContext(catBean));
+ assert Cat.isConstructorCalled();
assert Cat.isInitializerCalled();
}
- @Test(groups = "ri-broken")
+ @Test(groups = "broken")
@SpecAssertions({
- @SpecAssertion(section = "11.2", id = "ba")
- })
- public void testProduceCallsConstructor()
- {
- Producer<Dog> producer = ProducerProcessor.getDogProducer();
- Dog.setConstructorCalled(false);
- producer.produce(new CreationalContextImpl<Dog>());
- assert Dog.isConstructorCalled();
- }
-
- @Test(groups = "ri-broken")
- @SpecAssertions({
@SpecAssertion(section = "11.2", id = "c")
})
public void testDisposeDoesNothing()
{
- Producer<Dog> producer = ProducerProcessor.getDogProducer();
- Dog dog = getInstanceByType(Dog.class);
- producer.dispose(dog);
+ InjectionTarget<Cat> injectionTarget = ProducerProcessor.getCatInjectionTarget();
+
+ Cat cat = getInstanceByType(Cat.class);
+ injectionTarget.dispose(cat);
// The instance should still be available
- assert dog == getInstanceByType(Dog.class);
+ cat.ping();
}
@Test(groups = "ri-broken")
@@ -77,10 +67,10 @@
})
public void testGetInjectionPointsForFields()
{
- Producer<Cat> producer = ProducerProcessor.getCatProducer();
- assert producer.getInjectionPoints().size() == 2;
+ InjectionTarget<Cat> injectionTarget = ProducerProcessor.getCatInjectionTarget();
+ assert injectionTarget.getInjectionPoints().size() == 3;
boolean injectionPointPresent = false;
- for (InjectionPoint injectionPoint : producer.getInjectionPoints())
+ for (InjectionPoint injectionPoint : injectionTarget.getInjectionPoints())
{
if (injectionPoint.getType().equals(CatFoodDish.class))
{
@@ -94,12 +84,12 @@
@SpecAssertions({
@SpecAssertion(section = "11.2", id = "db")
})
- public void testGetInjectionPointsForConstructor()
+ public void testGetInjectionPointsForConstructorAndInitializer()
{
- Producer<Cat> producer = ProducerProcessor.getCatProducer();
- assert producer.getInjectionPoints().size() == 2;
+ InjectionTarget<Cat> injectionTarget = ProducerProcessor.getCatInjectionTarget();
+ assert injectionTarget.getInjectionPoints().size() == 3;
boolean dogIPPresent = false;
- for (InjectionPoint injectionPoint : producer.getInjectionPoints())
+ for (InjectionPoint injectionPoint : injectionTarget.getInjectionPoints())
{
if (injectionPoint.getType().equals(Dog.class))
{
@@ -115,78 +105,80 @@
})
public void testGetInjectionPointsForInitializer()
{
- Producer<Dog> producer = ProducerProcessor.getDogProducer();
- assert producer.getInjectionPoints().size() == 1;
- assert producer.getInjectionPoints().iterator().next().getType().equals(DogBed.class);
+ InjectionTarget<Cat> injectionTarget = ProducerProcessor.getCatInjectionTarget();
+ assert injectionTarget.getInjectionPoints().size() == 3;
+ boolean injectionPointPresent = false;
+ for (InjectionPoint injectionPoint : injectionTarget.getInjectionPoints())
+ {
+ if (injectionPoint.getType().equals(Bird.class))
+ {
+ injectionPointPresent = true;
+ }
+ }
+ assert injectionPointPresent;
}
- @Test(groups = "ri-broken")
+ @Test
@SpecAssertions({
@SpecAssertion(section = "11.2", id = "eaa"),
- @SpecAssertion(section = "11.5.7", id = "a"),
+ @SpecAssertion(section = "11.5.7", id = "aa"),
@SpecAssertion(section = "11.5.7", id = "ba"),
- @SpecAssertion(section = "11.5.7", id = "c"),
- @SpecAssertion(section = "11.5.7", id = "d"),
+ @SpecAssertion(section = "11.5.7", id = "ca"),
+ @SpecAssertion(section = "11.5.7", id = "da"),
@SpecAssertion(section = "12.3", id = "ha")
})
public void testProduceCallsProducerMethod()
{
- PreferredDogProducer.setNoisyDogProducerCalled(false);
Producer<Dog> producer = ProducerProcessor.getNoisyDogProducer();
- Dog dog = producer.produce(new CreationalContextImpl<Dog>());
- assert PreferredDogProducer.isNoisyDogProducerCalled();
- assert dog.getColor().equals(PreferredDogProducer.DOG_COLOR);
+ Bean<Dog> dogBean = getUniqueBean(Dog.class, new AnnotationLiteral<Noisy>() {});
+ DogProducer.reset();
+ Dog dog = producer.produce(getCurrentManager().createCreationalContext(dogBean));
+ assert DogProducer.isNoisyDogProducerCalled();
+ assert dog.getColor().equals(DogProducer.NOISY_DOG_COLOR);
}
- @Test(groups = "ri-broken")
+ @Test
@SpecAssertions({
@SpecAssertion(section = "11.2", id = "eba"),
- @SpecAssertion(section = "11.5.7", id = "a"),
- @SpecAssertion(section = "11.5.7", id = "ba"),
- @SpecAssertion(section = "11.5.7", id = "c"),
- @SpecAssertion(section = "11.5.7", id = "d"),
+ @SpecAssertion(section = "11.5.7", id = "ab"),
+ @SpecAssertion(section = "11.5.7", id = "bb"),
+ @SpecAssertion(section = "11.5.7", id = "cb"),
+ @SpecAssertion(section = "11.5.7", id = "db"),
@SpecAssertion(section = "12.3", id = "hb")
})
public void testProduceAccessesProducerField()
{
Producer<Dog> producer = ProducerProcessor.getQuietDogProducer();
- Dog dog = producer.produce(new CreationalContextImpl<Dog>());
- assert dog.getColor().equals(PreferredDogProducer.DOG_COLOR);
+ Bean<Dog> dogBean = getUniqueBean(Dog.class, new AnnotationLiteral<Quiet>() {});
+ DogProducer.reset();
+ Dog dog = producer.produce(getCurrentManager().createCreationalContext(dogBean));
+ assert dog.getColor().equals(DogProducer.QUIET_DOG_COLOR);
}
- @Test(groups = "ri-broken")
+ @Test
@SpecAssertions({
@SpecAssertion(section = "11.2", id = "faa")
})
public void testProducerForMethodDisposesProduct()
{
- PreferredDogProducer.setNoisyDogDisposed(false);
+
+ Bean<Dog> dogBean = getUniqueBean(Dog.class, new AnnotationLiteral<Noisy>() {});
Producer<Dog> producer = ProducerProcessor.getNoisyDogProducer();
- Dog dog = producer.produce(new CreationalContextImpl<Dog>());
+ DogProducer.reset();
+ Dog dog = producer.produce(getCurrentManager().createCreationalContext(dogBean));
+ assert DogProducer.isNoisyDogProducerCalled();
producer.dispose(dog);
- assert PreferredDogProducer.isNoisyDogDisposed();
+ assert DogProducer.isNoisyDogDisposerCalled();
}
- @Test(groups = "ri-broken")
+ @Test
@SpecAssertions({
- @SpecAssertion(section = "11.2", id = "fba")
- })
- public void testProducerForFieldDisposesProduct()
- {
- PreferredDogProducer.setQuietDogDisposed(false);
- Producer<Dog> producer = ProducerProcessor.getQuietDogProducer();
- Dog dog = producer.produce(new CreationalContextImpl<Dog>());
- producer.dispose(dog);
- assert PreferredDogProducer.isQuietDogDisposed();
- }
-
- @Test(groups = "ri-broken")
- @SpecAssertions({
@SpecAssertion(section = "11.2", id = "g")
})
public void testInjectionPointsForProducerMethod()
{
Producer<Dog> producer = ProducerProcessor.getNoisyDogProducer();
+ DogProducer.reset();
assert producer.getInjectionPoints().size() == 1;
assert producer.getInjectionPoints().iterator().next().getType().equals(DogBed.class);
}
@@ -238,7 +230,7 @@
@Test(groups = "ri-broken")
@SpecAssertions({
@SpecAssertion(section = "11.5.6", id = "bb"),
- @SpecAssertion(section = "11.5.6", id = "e")
+ @SpecAssertion(section = "11.5.6", id = "ea")
})
public void testSettingInjectionTargetReplacesIt()
{
@@ -249,7 +241,7 @@
@Test(groups = "ri-broken")
@SpecAssertions({
- @SpecAssertion(section = "11.5.6", id = "ab")
+ @SpecAssertion(section = "11.5.6", id = "aba")
})
public void testGetAnnotatedTypeOnProcessInjectionTarget()
{
Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/Tabby.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/Tabby.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/Tabby.java 2009-10-04 12:19:01 UTC (rev 3838)
@@ -0,0 +1,22 @@
+package org.jboss.jsr299.tck.tests.extensions.producer;
+
+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.Qualifier;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@Qualifier
+@interface Tabby
+{
+
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/extensions/producer/Tabby.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
14 years, 6 months