/******************************************************************************* * 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.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaModelException; import org.jboss.tools.cdi.core.IBean; import org.jboss.tools.cdi.core.IInjectionPoint; import org.jboss.tools.cdi.core.IProducerMethod; import org.jboss.tools.cdi.core.IQualifier; import org.jboss.tools.cdi.core.IQualifierDeclaration; import org.jboss.tools.common.java.IParametedType; /** * @author Alexey Kazakov */ public class QualifierDefinitionTest extends TCKTest { /** * section 2.3.1 a0) * section 2.3.1 aa) * * @throws JavaModelException */ public void testDefaultQualifierDeclaredInJava() throws JavaModelException { Collection<IBean> beans = getBeans("org.jboss.jsr299.tck.tests.definition.qualifier.Order"); assertEquals("Wrong number of beans with org.jboss.jsr299.tck.tests.definition.qualifier.Order type.", 1, beans.size()); IBean bean = beans.iterator().next(); Collection<IQualifier> qualifiers = bean.getQualifiers(); assertEquals("Wrong number of qualifiers for org.jboss.jsr299.tck.tests.definition.qualifier.Order type.", 2, qualifiers.size()); assertContainsQualifierType(bean, "javax.enterprise.inject.Default"); assertContainsQualifierType(bean, "javax.enterprise.inject.Any"); } /** * section 2.3.1, b) * section 11.1 c) * @throws JavaModelException */ public void testDefaultQualifierForInjectionPoint() throws JavaModelException { Collection<IBean> beans = getBeans("org.jboss.jsr299.tck.tests.definition.qualifier.Order"); assertEquals("Wrong number of beans with org.jboss.jsr299.tck.tests.definition.qualifier.Order type.", 1, beans.size()); IBean bean = beans.iterator().next(); Collection<IInjectionPoint> points = bean.getInjectionPoints(); IInjectionPoint point = points.iterator().next(); Collection<IQualifier> qualifiers = bean.getQualifiers(); // TODO do we need to care about default qualifiers for InjectionPoint in CDI Tools? // assertContainsQualifierType(point, "javax.enterprise.inject.Default"); } /** * section 2.3.1 a0) */ public void testNewQualifierAndAnyBindingMutualExclusive() { // TODO } /** * section 2.3.2 ba) */ public void testQualifierDeclaresBindingAnnotation() { Collection<IBean> beans = cdiProject.getBeans(true, "org.jboss.jsr299.tck.tests.definition.qualifier.Tarantula", "org.jboss.jsr299.tck.tests.definition.qualifier.Tame"); assertFalse("Wrong number of beans with org.jboss.jsr299.tck.tests.definition.qualifier.Tarantula type and org.jboss.jsr299.tck.tests.definition.qualifier.Tame qualifier.", beans.isEmpty()); } /** * section 2.3.3 a) * section 3.1.3 be) * @throws CoreException */ public void testQualifiersDeclaredInJava() throws CoreException { IQualifierDeclaration synchronous = getQualifierDeclarationFromClass("JavaSource/org/jboss/jsr299/tck/tests/definition/qualifier/Cat.java", "org.jboss.jsr299.tck.tests.definition.qualifier.Synchronous"); Collection<IBean> beans = cdiProject.getBeans(true, "org.jboss.jsr299.tck.tests.definition.qualifier.Cat", "org.jboss.jsr299.tck.tests.definition.qualifier.Synchronous"); assertEquals("Wrong number of beans with org.jboss.jsr299.tck.tests.definition.qualifier.Cat type and org.jboss.jsr299.tck.tests.definition.qualifier.Synchronous qualifier.", 1, beans.size()); IBean bean = beans.iterator().next(); Collection<IQualifier> qualifiers = bean.getQualifiers(); assertEquals("Wrong number of qualifiers.", 2, qualifiers.size()); assertContainsQualifier(bean, synchronous); Collection<IQualifierDeclaration> declarations = bean.getQualifierDeclarations(); IFile file = (IFile)bean.getResource(); assertEquals("Wrong number of qualifier declarations.", 1, declarations.size()); assertLocationEquals(file, declarations, "@Synchronous", 0/*836*/, 12); } /** * section 2.3.3 d) * @throws JavaModelException */ public void testMultipleQualifiers() throws CoreException { IQualifierDeclaration chunky = getQualifierDeclarationFromClass("JavaSource/org/jboss/jsr299/tck/tests/definition/qualifier/Cod.java", "org.jboss.jsr299.tck.tests.definition.qualifier.Chunky"); IQualifierDeclaration whitefish = getQualifierDeclarationFromClass("JavaSource/org/jboss/jsr299/tck/tests/definition/qualifier/Cod.java", "org.jboss.jsr299.tck.tests.definition.qualifier.Whitefish"); IParametedType type = getType("org.jboss.jsr299.tck.tests.definition.qualifier.Cod"); Collection<IBean> beans = cdiProject.getBeans(true, type, chunky, whitefish); assertEquals("Wrong number of beans.", 1, beans.size()); IBean bean = beans.iterator().next(); Collection<IQualifier> qualifiers = bean.getQualifiers(); assertEquals("Wrong number of qualifiers.", 4, qualifiers.size()); Collection<IQualifierDeclaration> declarations = bean.getQualifierDeclarations(); assertEquals("Wrong number of qualifier declarations.", 3, declarations.size()); IFile file = (IFile)bean.getResource(); assertLocationEquals(file, declarations, "@Whitefish", 0/*862*/, 10); assertLocationEquals(file, declarations, "@Chunky(realChunky=true)", 0/*873*/, 24); } /** * section 2.3.5 a) * @throws JavaModelException */ public void testFieldInjectedFromProducerMethod() throws CoreException { Collection<IBean> beans = getBeans("org.jboss.jsr299.tck.tests.definition.qualifier.Barn"); assertEquals("Wrong number of beans with org.jboss.jsr299.tck.tests.definition.qualifier.Barn type.", 1, beans.size()); IBean bean = beans.iterator().next(); Collection<IInjectionPoint> points = bean.getInjectionPoints(); IInjectionPoint point = points.iterator().next(); Collection<IQualifierDeclaration> declarations = point.getQualifierDeclarations(); assertEquals("Wrong number of qualifier declarations.", 1, declarations.size()); IFile file = (IFile)bean.getResource(); assertLocationEquals(file, declarations, "ject @Tame", 5/*891*/, 5); Collection<IBean> injectedBeans = cdiProject.getBeans(true, point); assertEquals("Wrong number of beans.", 1, injectedBeans.size()); IBean injectedBean = injectedBeans.iterator().next(); IType beanClass = injectedBean.getBeanClass(); assertEquals("Wrong bean class.", "org.jboss.jsr299.tck.tests.definition.qualifier.SpiderProducer", beanClass.getFullyQualifiedName()); assertTrue("The bean should be a producer method.", injectedBean instanceof IProducerMethod); IProducerMethod producer = (IProducerMethod)injectedBean; declarations = producer.getQualifierDeclarations(); assertEquals("Wrong number of qualifier declarations.", 1, declarations.size()); file = (IFile)injectedBean.getResource(); assertLocationEquals(file, declarations, "uces @Tame publ", 5/*916*/, 5); } /** * section 4.1 aa) * @throws CoreException */ public void testQualifierDeclaredInheritedIsInherited() throws CoreException { IQualifierDeclaration hairy = getQualifierDeclarationFromClass("JavaSource/org/jboss/jsr299/tck/tests/definition/qualifier/LongHairedDog.java", "org.jboss.jsr299.tck.tests.definition.qualifier.Hairy"); IParametedType type = getType("org.jboss.jsr299.tck.tests.definition.qualifier.BorderCollie"); Collection<IBean> beans = cdiProject.getBeans(true, type, hairy); assertFalse("Wrong number of beans.", beans.isEmpty()); IBean bean = beans.iterator().next(); Collection<IQualifier> qualifiers = bean.getQualifiers(); assertEquals("Wrong number of qualifiers for org.jboss.jsr299.tck.tests.definition.qualifier.BorderCollie type.", 2, qualifiers.size()); assertContainsQualifier(bean, hairy); assertContainsQualifierType(bean, "javax.enterprise.inject.Any"); } /** * section 4.1 aaa) * @throws JavaModelException */ public void testQualifierNotDeclaredInheritedIsNotInherited() throws JavaModelException { Collection<IBean> beans = getBeans("org.jboss.jsr299.tck.tests.definition.qualifier.ShetlandPony"); assertFalse("Wrong number of beans.", beans.isEmpty()); IBean bean = beans.iterator().next(); Collection<IQualifier> qualifiers = bean.getQualifiers(); assertEquals( "Wrong number of qualifiers for org.jboss.jsr299.tck.tests.definition.qualifier.BorderCollie type.", 2, qualifiers.size()); assertContainsQualifierType(bean, "javax.enterprise.inject.Default"); assertContainsQualifierType(bean, "javax.enterprise.inject.Any"); } /** * section 4.1 aa) * @throws CoreException */ public void testQualifierDeclaredInheritedIsBlockedByIntermediateClass() throws CoreException { IQualifierDeclaration hairy = getQualifierDeclarationFromClass("JavaSource/org/jboss/jsr299/tck/tests/definition/qualifier/ClippedBorderCollie.java", "org.jboss.jsr299.tck.tests.definition.qualifier.Hairy"); IParametedType type = getType("org.jboss.jsr299.tck.tests.definition.qualifier.ClippedBorderCollie"); Collection<IBean> beans = cdiProject.getBeans(true, type, hairy); assertEquals("Wrong number of beans.", 1, beans.size()); IBean bean = beans.iterator().next(); Collection<IQualifier> qualifiers = bean.getQualifiers(); assertEquals("Wrong number of qualifiers for org.jboss.jsr299.tck.tests.definition.qualifier.ClippedBorderCollie type.", 2, qualifiers.size()); assertContainsQualifier(bean, hairy); assertContainsQualifierType(bean, "javax.enterprise.inject.Any"); } /** * section 4.1 ag) * @throws CoreException */ public void testQualifierDeclaredInheritedIsIndirectlyInherited() throws CoreException { IQualifierDeclaration hairy = getQualifierDeclarationFromClass("JavaSource/org/jboss/jsr299/tck/tests/definition/qualifier/LongHairedDog.java", "org.jboss.jsr299.tck.tests.definition.qualifier.Hairy"); IParametedType type = getType("org.jboss.jsr299.tck.tests.definition.qualifier.EnglishBorderCollie"); Collection<IBean> beans = cdiProject.getBeans(true, type, hairy); assertEquals("Wrong number of beans.", 1, beans.size()); IBean bean = beans.iterator().next(); Collection<IQualifier> qualifiers = bean.getQualifiers(); assertEquals("Wrong number of qualifiers for org.jboss.jsr299.tck.tests.definition.qualifier.EnglishBorderCollie type.", 2, qualifiers.size()); assertContainsQualifier(bean, hairy); assertContainsQualifierType(bean, "javax.enterprise.inject.Any"); } /** * section 4.1 aga) * @throws JavaModelException */ public void testQualifierNotDeclaredInheritedIsNotIndirectlyInherited() throws JavaModelException { Collection<IBean> beans = getBeans("org.jboss.jsr299.tck.tests.definition.qualifier.MiniatureShetlandPony"); assertEquals("Wrong number of beans.", 1, beans.size()); IBean bean = beans.iterator().next(); Collection<IQualifier> qualifiers = bean.getQualifiers(); assertEquals( "Wrong number of qualifiers for org.jboss.jsr299.tck.tests.definition.qualifier.BorderCollie type.", 2, qualifiers.size()); assertContainsQualifierType(bean, "javax.enterprise.inject.Default"); assertContainsQualifierType(bean, "javax.enterprise.inject.Any"); } public void testQualifierDeclaredWithInnerType() throws JavaModelException { Collection<IBean> beans = getBeans("org.jboss.jsr299.tck.tests.definition.qualifier.BeanWithInnerQualifier", "org.jboss.jsr299.tck.tests.definition.qualifier.BeanWithInnerQualifier.InnerQualifier"); assertEquals("Wrong number of beans with org.jboss.jsr299.tck.tests.definition.qualifier.BeanWithInnerQualifier type.", 1, beans.size()); IBean bean = beans.iterator().next(); Collection<IQualifier> qualifiers = bean.getQualifiers(); assertEquals("Wrong number of qualifiers for org.jboss.jsr299.tck.tests.definition.qualifier.BeanWithInnerQualifier type.", 2, qualifiers.size()); assertContainsQualifierType(bean, "org.jboss.jsr299.tck.tests.definition.qualifier.BeanWithInnerQualifier$InnerQualifier"); assertContainsQualifierType(bean, "javax.enterprise.inject.Any"); } }