/******************************************************************************* * Copyright (c) 2010 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.cdi.core.test.tck; import java.util.Collection; import org.jboss.tools.cdi.core.CDIUtil; import org.jboss.tools.cdi.core.IBean; import org.jboss.tools.cdi.core.IClassBean; import org.jboss.tools.cdi.core.IInjectionPoint; import org.jboss.tools.cdi.core.IInjectionPointParameter; import org.jboss.tools.common.java.IParametedType; /** * @author Alexey Kazakov */ public class InjectionPointTest extends TCKTest { /** * Section 3.7.1 - Declaring a bean constructorThe bean was not found. * - All parameters of a bean constructor are injection points. */ public void testQualifierTypeAnnotatedConstructor() { IClassBean bean = getClassBean("JavaSource/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/Duck.java"); Collection<IInjectionPointParameter> points = CDIUtil.getInjectionPointParameters(bean); assertEquals("There should be two injection point parameters in the bean.", 2, points.size()); } /** * Section 3.9.1 - Declaring an initializer method * - All initializer method parameters are injection points. */ public void testBindingTypeOnInitializerParameter() { IClassBean bean = getClassBean("JavaSource/org/jboss/jsr299/tck/tests/implementation/enterprise/lifecycle/Mainz.java"); Collection<IInjectionPointParameter> points = CDIUtil.getInjectionPointParameters(bean); assertEquals("There should be two injection point parameters in the bean.", 1, points.size()); } // https://jira.jboss.org/browse/JBIDE-6387 Type of a method parameter is null in case of generic method. public void testMethodParameter() { IClassBean bean = getClassBean("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/inject/FarmBroken.java"); assertNotNull("Can't find the bean.", bean); Collection<IInjectionPoint> injections = bean.getInjectionPoints(); for (IInjectionPoint injectionPoint : injections) { if(injectionPoint instanceof IInjectionPointParameter) { IInjectionPointParameter param = (IInjectionPointParameter)injectionPoint; IParametedType type = param.getType(); assertNotNull("Type of the parameter is null", type); assertNotNull("Signature of parameter type is null", type.getSignature()); } } } public void testObserverMethodParameters() { IClassBean bean = getClassBean("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/inject/AnimalObserver.java"); assertNotNull("Can't find the bean.", bean); Collection<IInjectionPoint> injections = bean.getInjectionPoints(); assertEquals(1, injections.size()); } public void testDisposerMethodParameters() { IClassBean bean = getClassBean("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/disposers/DisposerOk.java"); assertNotNull("Can't find the bean.", bean); Collection<IInjectionPoint> injections = bean.getInjectionPoints(); assertEquals(2, injections.size()); } public void testGetInjections() { Collection<IInjectionPoint> ps = cdiProject.getInjections("org.jboss.jsr299.tck.tests.lookup.injection.Fox"); assertTrue(!ps.isEmpty()); ps = cdiProject.getInjections("org.jboss.jsr299.tck.tests.context.dependent.Tarantula"); assertTrue(!ps.isEmpty()); } public void testParameterInjectionsWithQualifierWithMemberValues() { IInjectionPointParameter injectionPoint = getInjectionPointParameter("JavaSource/org/jboss/jsr299/tck/tests/lookup/injection/NamedParameters.java", "setA"); assertNotNull(injectionPoint); Collection<IBean> resolved = cdiProject.getBeans(false, injectionPoint); assertTrue(resolved.isEmpty()); injectionPoint = getInjectionPointParameter("JavaSource/org/jboss/jsr299/tck/tests/lookup/injection/NamedParameters.java", "setABC"); assertNotNull(injectionPoint); resolved = cdiProject.getBeans(false, injectionPoint); assertFalse(resolved.isEmpty()); } public void testDefaultValuesInQualifierProperties() { IInjectionPoint injectionPoint = getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/jbt/lookup/qualifier/MyBean.java", "i"); assertNotNull(injectionPoint); Collection<IBean> resolved = cdiProject.getBeans(false, injectionPoint); assertFalse(resolved.isEmpty()); } }