/******************************************************************************* * 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.runtime.CoreException; import org.eclipse.jdt.core.IType; import org.jboss.tools.cdi.core.CDIConstants; import org.jboss.tools.cdi.core.CDICorePlugin; import org.jboss.tools.cdi.core.IBean; import org.jboss.tools.cdi.core.IBuiltInBean; import org.jboss.tools.cdi.core.IClassBean; import org.jboss.tools.cdi.core.IInjectionPointField; import org.jboss.tools.cdi.core.test.RemoveJarFromClasspathTest; /** * @author Viacheslav Kabanovich */ public class BuiltInBeanInjectionTest extends TCKTest { /** * Test built-in bean with type javax.transaction.UserTransaction */ public void testBuiltInUserTransactionBean() { IInjectionPointField field = getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/implementation/builtin/UserTransactionInjectedBean.java", "userTransaction"); assertNotNull(field); Collection<IBean> beans = field.getCDIProject().getBeans(false, field); assertFalse(beans.isEmpty()); IBean b = beans.iterator().next(); assertTrue(b instanceof IBuiltInBean); IType t = b.getBeanClass(); assertEquals("javax.transaction.UserTransaction", t.getFullyQualifiedName()); } /** * Test built-in bean with type javax.validation.ValidatorFactory */ public void testBuiltInValidatorFactoryBean() { IInjectionPointField field = getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/implementation/builtin/DefaultValidatorFactoryInjectedBean.java", "defaultValidatorFactory"); assertNotNull(field); Collection<IBean> beans = field.getCDIProject().getBeans(false, field); assertFalse(beans.isEmpty()); IBean b = beans.iterator().next(); assertTrue(b instanceof IBuiltInBean); IType t = b.getBeanClass(); assertEquals("javax.validation.ValidatorFactory", t.getFullyQualifiedName()); } /** * Test built-in bean with type javax.validation.Validator */ public void testBuiltInValidatorBean() { IInjectionPointField field = getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/implementation/builtin/DefaultValidatorInjectedBean.java", "defaultValidator"); assertNotNull(field); Collection<IBean> beans = field.getCDIProject().getBeans(false, field); assertFalse(beans.isEmpty()); IBean b = beans.iterator().next(); assertTrue(b instanceof IBuiltInBean); IType t = b.getBeanClass(); assertEquals("javax.validation.Validator", t.getFullyQualifiedName()); } /** * Test built-in bean with type java.security.Principal */ public void testBuiltInPrincipalBean() { IInjectionPointField field = getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/implementation/builtin/PrincipalInjectedBean.java", "principal"); assertNotNull(field); Collection<IBean> beans = field.getCDIProject().getBeans(false, field); assertFalse(beans.isEmpty()); IBean b = beans.iterator().next(); assertTrue(b instanceof IBuiltInBean); IType t = b.getBeanClass(); assertEquals("java.security.Principal", t.getFullyQualifiedName()); } /** * Test built-in bean with type javax.enterprise.inject.spi.BeanManager */ public void testBuiltInBeanManagerBean() { IInjectionPointField field = getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/context/conversation/BuiltInConversation.java", "manager"); assertNotNull(field); Collection<IBean> beans = field.getCDIProject().getBeans(false, field); assertFalse(beans.isEmpty()); IBean b = beans.iterator().next(); assertTrue(b instanceof IBuiltInBean); IType t = b.getBeanClass(); assertEquals(CDIConstants.BEAN_MANAGER_TYPE_NAME, t.getFullyQualifiedName()); } /** * Test built-in bean with type javax.enterprise.context.Conversation */ public void testBuiltInConversationBean() { IInjectionPointField field = getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/context/conversation/BuiltInConversation.java", "conversation"); assertNotNull(field); Collection<IBean> beans = field.getCDIProject().getBeans(false, field); assertFalse(beans.isEmpty()); IBean b = beans.iterator().next(); assertTrue(b instanceof IClassBean); assertTrue(b instanceof IBuiltInBean); IType t = b.getBeanClass(); assertEquals(CDIConstants.CONVERSATION_TYPE_NAME, t.getFullyQualifiedName()); assertEquals(CDIConstants.CONVERSATION_BEAN_NAME, b.getName()); beans = cdiProject.getBeans(CDIConstants.CONVERSATION_BEAN_NAME, false); assertTrue(beans.contains(b)); } /** * Test that when custom project provides implementation of javax.enterprise.context.Conversation * that is visible to our model, our built-in bean is replaced by it. */ public void testBuiltInConversationBeanCustomImplementation() throws CoreException { cdiProject = CDICorePlugin.getCDIProject(tckProject, false); String c = "JavaSource/org/jboss/jsr299/tck/tests/jbt/builtin/ConversationImpl.java"; String c_active = "JavaSource/org/jboss/jsr299/tck/tests/jbt/builtin/ConversationImpl.changed"; String c_original = "JavaSource/org/jboss/jsr299/tck/tests/jbt/builtin/ConversationImpl.original"; Collection<IBean> beans = cdiProject.getBeans(CDIConstants.CONVERSATION_BEAN_NAME, false); assertEquals(1, beans.size()); IBean b = beans.iterator().next(); assertTrue(b instanceof IClassBean); assertTrue(b instanceof IBuiltInBean); RemoveJarFromClasspathTest.replaceFile(tckProject, c_active, c); beans = cdiProject.getBeans(CDIConstants.CONVERSATION_BEAN_NAME, false); assertEquals(1, beans.size()); b = beans.iterator().next(); assertTrue(b instanceof IClassBean); assertFalse(b instanceof IBuiltInBean); assertEquals("org.jboss.jsr299.tck.tests.jbt.builtin.ConversationImpl", b.getBeanClass().getFullyQualifiedName()); RemoveJarFromClasspathTest.replaceFile(tckProject, c_original, c); beans = cdiProject.getBeans(CDIConstants.CONVERSATION_BEAN_NAME, false); b = beans.iterator().next(); assertEquals(1, beans.size()); assertTrue(b instanceof IClassBean); assertTrue(b instanceof IBuiltInBean); } /** * Test built-in bean with type javax.enterprise.inject.spi.InjectionPoint * 5.5.7 Injection point metadata */ public void testBuiltInInjectionPointBean() { IInjectionPointField field = getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/lookup/injectionpoint/BeanWithInjectionPointMetadata.java", "injectedMetadata"); assertNotNull(field); Collection<IBean> beans = field.getCDIProject().getBeans(false, field); assertFalse(beans.isEmpty()); IBean b = beans.iterator().next(); assertTrue(b instanceof IClassBean); assertTrue(b instanceof IBuiltInBean); IType t = b.getBeanClass(); assertEquals(CDIConstants.INJECTIONPOINT_TYPE_NAME, t.getFullyQualifiedName()); } }