/* * Copyright (C) 2015 Red Hat, Inc. and/or its affiliates. * * 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.errai.cdi.injection.client.test; import static org.jboss.errai.ioc.client.container.IOC.getBeanManager; import org.jboss.errai.cdi.injection.client.Amex; import org.jboss.errai.cdi.injection.client.CreditCardLover; import org.jboss.errai.cdi.injection.client.InjectionTestModule; import org.jboss.errai.cdi.injection.client.ProducesProxiableOfAbstractType.NotConcrete; import org.jboss.errai.cdi.injection.client.QaulParamDependentBeanApples; import org.jboss.errai.cdi.injection.client.QaulParamDependentBeanOranges; import org.jboss.errai.cdi.injection.client.Visa; import org.jboss.errai.cdi.injection.client.ZFooAmex; import org.jboss.errai.cdi.injection.client.ZFooVisa; import org.jboss.errai.cdi.injection.client.Zoltron; import org.jboss.errai.cdi.injection.client.ZoltronDependentBean; import org.jboss.errai.cdi.injection.client.mvp.Contacts; import org.jboss.errai.cdi.injection.client.qualifier.QualParmAppScopeBeanApples; import org.jboss.errai.cdi.injection.client.qualifier.QualParmAppScopeBeanOranges; import org.jboss.errai.ioc.client.container.IOC; import org.jboss.errai.ioc.client.test.AbstractErraiIOCTest; /** * Tests CDI injection. * * @author Christian Sadilek <csadilek@redhat.com> */ public class InjectionIntegrationTest extends AbstractErraiIOCTest { @Override public String getModuleName() { return "org.jboss.errai.cdi.injection.InjectionTestModule"; } public void testInjections() { final InjectionTestModule module = IOC.getBeanManager() .lookupBean(InjectionTestModule.class).getInstance(); assertNotNull("Field injection of BeanA failed", module.getBeanA()); assertNotNull("Field injection of BeanB in BeanA failed", module.getBeanA().getBeanB()); assertNotNull("Field injection of BeanC failed", module.getBeanC()); } public void testPostConstructFired() { final InjectionTestModule module = IOC.getBeanManager() .lookupBean(InjectionTestModule.class).getInstance(); assertTrue("PostConstruct on InjectionTestModule did not fire", module.isPostConstructFired()); } public void testMixedInjectionTypes() { final InjectionTestModule module = IOC.getBeanManager() .lookupBean(InjectionTestModule.class).getInstance(); assertNotNull("Field injection of BeanB in BeanC failed", module.getBeanC().getBeanB()); assertNotNull("Constructor injection of BeanD in BeanC", module.getBeanC().getBeanD()); } public void testMvpInjections() { final Contacts mvpModule = IOC.getBeanManager().lookupBean(Contacts.class).getInstance(); assertNotNull("Field injection of AppController failed", mvpModule.getAppController()); } public void testQualifierBasedInjection() { final QaulParamDependentBeanApples instanceA = getBeanManager().lookupBean(QaulParamDependentBeanApples.class).getInstance(); assertNotNull("bean is null", instanceA); assertTrue("incorrect instance injected", getBeanManager().getActualBeanReference(instanceA.getCommonInterfaceB()) instanceof QualParmAppScopeBeanApples); final QaulParamDependentBeanOranges instanceB = getBeanManager().lookupBean(QaulParamDependentBeanOranges.class).getInstance(); assertNotNull("bean is null", instanceB); assertTrue("incorrect instance injected", getBeanManager().getActualBeanReference(instanceB.getCommonInterfaceB()) instanceof QualParmAppScopeBeanOranges); } public void testNamedBasedInjection() { final CreditCardLover creditCardLover = getBeanManager().lookupBean(CreditCardLover.class).getInstance(); assertNotNull("bean is null", creditCardLover); assertTrue("bean should be an Amex", creditCardLover.getAmexCard() instanceof Amex); assertTrue("bean should be a Visa", creditCardLover.getVisaCard() instanceof Visa); } public void testResolutionOfParameterizedBeansExtFromAbstractClass() { final ZFooVisa zFooVisa = getBeanManager().lookupBean(ZFooVisa.class).getInstance(); final ZFooAmex zFooAmex = getBeanManager().lookupBean(ZFooAmex.class).getInstance(); assertNotNull(zFooVisa); assertNotNull(zFooAmex); assertNotNull(zFooVisa.getServiceXXX()); assertSame(zFooVisa.getServiceXXX(), zFooAmex.getServiceXXX()); } public void testNamedBasedInjectionFromProducedNamedBeans() { final ZoltronDependentBean zoltronDependentBean = getBeanManager().lookupBean(ZoltronDependentBean.class) .getInstance(); assertNotNull("bean is null", zoltronDependentBean); final Zoltron alpha = zoltronDependentBean.getAlpha(); assertNotNull("alpha is null", alpha); assertEquals("alpha", alpha.getName()); final Zoltron beta = zoltronDependentBean.getBeta(); assertNotNull("beta is null", beta); assertEquals("beta", beta.getName()); final ZoltronDependentBean zoltronDependentBean2 = getBeanManager().lookupBean(ZoltronDependentBean.class) .getInstance(); final Zoltron alpha2 = zoltronDependentBean2.getAlpha(); final Zoltron beta2 = zoltronDependentBean2.getBeta(); assertSame(alpha, alpha2); assertSame(beta, beta2); } public void testLoadingProxiedAbstractType() throws Exception { final NotConcrete bean = IOC.getBeanManager().lookupBean(NotConcrete.class).getInstance(); assertFalse(bean.getValue()); bean.setValueTrue(); assertTrue(bean.getValue()); } }