/* * JBoss, Home of Professional Open Source * Copyright 2010, Red Hat, Inc., 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.cdi.tck.tests.extensions.processBean; import javax.enterprise.event.Observes; import javax.enterprise.inject.spi.Annotated; 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.Bean; import javax.enterprise.inject.spi.Extension; import javax.enterprise.inject.spi.ProcessBean; import javax.enterprise.inject.spi.ProcessBeanAttributes; import javax.enterprise.inject.spi.ProcessManagedBean; import javax.enterprise.inject.spi.ProcessProducerField; import javax.enterprise.inject.spi.ProcessProducerMethod; import org.jboss.cdi.tck.util.ActionSequence; public class ProcessBeanObserver implements Extension { private static Bean<Cat> catBean; private static AnnotatedType<Cat> catAnnotatedType; private static Annotated catAnnotated; private static Bean<CatInterceptor> interceptor; private static Bean<AnimalDecorator> decorator; private static int catProcessBeanCount; // https://issues.jboss.org/browse/WELD-586 private static Bean<Cowshed> cowBean; private static AnnotatedMethod<Cow> cowMethod; private static AnnotatedParameter<Cow> cowParameter; private static Annotated cowAnnotated; private static int cowShedProcessBeanCount; // https://issues.jboss.org/browse/WELD-586 private static Bean<ChickenHutch> chickenBean; private static AnnotatedField<Chicken> chickenField; private static AnnotatedParameter<Chicken> chickenParameter; private static Annotated chickedAnnotated; private static int chickenHutchProcessBeanCount; private static ActionSequence catActionSeq = new ActionSequence(); private static ActionSequence cowActionSeq = new ActionSequence(); private static ActionSequence chickenActionSeq = new ActionSequence(); public void observeCatManagedBean(@Observes ProcessManagedBean<Cat> event) { catBean = event.getBean(); catAnnotatedType = event.getAnnotatedBeanClass(); catAnnotated = event.getAnnotated(); ProcessBeanObserver.catProcessBeanCount++; catActionSeq.add(ProcessManagedBean.class.getName()); } public void observeCatBean(@Observes ProcessBean<Cat> event) { ProcessBeanObserver.catProcessBeanCount++; } /** * https://issues.jboss.org/browse/WELD-586 * * @param event */ public void observeCowProcessProducerMethod(@Observes ProcessProducerMethod<Cow, Cowshed> event) { cowBean = event.getBean(); cowAnnotated = event.getAnnotated(); cowMethod = event.getAnnotatedProducerMethod(); cowParameter = event.getAnnotatedDisposedParameter(); cowActionSeq.add(ProcessProducerMethod.class.getName()); } public void observeCowShedProccesBean(@Observes ProcessBean<Cowshed> event) { ProcessBeanObserver.cowShedProcessBeanCount++; } /** * https://issues.jboss.org/browse/WELD-586 * * @param event */ public void observeChickenProcessProducerField(@Observes ProcessProducerField<Chicken, ChickenHutch> event) { chickenBean = event.getBean(); chickenField = event.getAnnotatedProducerField(); chickenParameter = event.getAnnotatedDisposedParameter(); chickedAnnotated = event.getAnnotated(); chickenActionSeq.add(ProcessProducerField.class.getName()); } public void observeInterceptor(@Observes ProcessBean<CatInterceptor> event) { interceptor = event.getBean(); } public void observeDecorator(@Observes ProcessBean<AnimalDecorator> event) { decorator = event.getBean(); } public void observeChickenHutchProccesBean(@Observes ProcessBean<ChickenHutch> event) { ProcessBeanObserver.chickenHutchProcessBeanCount++; } public void observeCatBeanAttributes(@Observes ProcessBeanAttributes<Cat> event) { catActionSeq.add(ProcessBeanAttributes.class.getName()); } public void observeCowBeanAttributes(@Observes ProcessBeanAttributes<Cow> event) { cowActionSeq.add(ProcessBeanAttributes.class.getName()); } public void observeChickenBeanAttributes(@Observes ProcessBeanAttributes<Chicken> event) { chickenActionSeq.add(ProcessBeanAttributes.class.getName()); } public static int getCatProcessBeanCount() { return catProcessBeanCount; } public static int getCowShedProcessBeanCount() { return cowShedProcessBeanCount; } public static int getChickenHutchProcessBeanCount() { return chickenHutchProcessBeanCount; } public static ActionSequence getCatActionSeq() { return catActionSeq; } public static ActionSequence getCowActionSeq() { return cowActionSeq; } public static ActionSequence getChickenActionSeq() { return chickenActionSeq; } public static Bean<Cat> getCatBean() { return catBean; } public static AnnotatedType<Cat> getCatAnnotatedType() { return catAnnotatedType; } public static Annotated getCatAnnotated() { return catAnnotated; } public static Bean<Cowshed> getCowBean() { return cowBean; } public static AnnotatedMethod<Cow> getCowMethod() { return cowMethod; } public static AnnotatedParameter<Cow> getCowParameter() { return cowParameter; } public static Annotated getCowAnnotated() { return cowAnnotated; } public static AnnotatedField<Chicken> getChickenField() { return chickenField; } public static AnnotatedParameter<Chicken> getChickenParameter() { return chickenParameter; } public static Annotated getChickedAnnotated() { return chickedAnnotated; } public static Bean<ChickenHutch> getChickenBean() { return chickenBean; } public static Bean<CatInterceptor> getInterceptor() { return interceptor; } public static Bean<AnimalDecorator> getDecorator() { return decorator; } }