/******************************************************************************* * Copyright (c) 2013-2014 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.validation; import junit.framework.TestCase; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.osgi.util.NLS; import org.jboss.tools.cdi.core.CDICorePlugin; import org.jboss.tools.cdi.core.CDIVersion; import org.jboss.tools.cdi.core.ICDIProject; import org.jboss.tools.cdi.internal.core.scanner.lib.BeanArchiveDetector; import org.jboss.tools.cdi.internal.core.validation.CDIValidationMessages; import org.jboss.tools.common.base.test.validation.TestUtil; import org.jboss.tools.test.util.ResourcesUtils; import org.jboss.tools.tests.AbstractResourceMarkerTest; /** * @author Alexey Kazakov */ public class MissingBeansXmlValidationTest extends TestCase { IProject missingBeansXmlParentProject; IProject missingBeansXmlChildProject; IProject missingBeansXmlProjectCDI11; IProject missingBeansXmlProjectCDI12; boolean saveAutoBuild; @Override public void setUp() throws Exception { missingBeansXmlParentProject = ResourcesPlugin.getWorkspace().getRoot().getProject("missingBeansXmlParentProject"); assertTrue("Can't load missingBeansXmlParentProject", missingBeansXmlParentProject.exists()); missingBeansXmlChildProject = ResourcesPlugin.getWorkspace().getRoot().getProject("missingBeansXmlChildProject"); assertTrue("Can't load missingBeansXmlChildProject", missingBeansXmlChildProject.exists()); missingBeansXmlProjectCDI11 = ResourcesPlugin.getWorkspace().getRoot().getProject("missingBeansXmlProjectCDI11"); assertTrue("Can't load missingBeansXmlProjectCDI11", missingBeansXmlProjectCDI11.exists()); missingBeansXmlProjectCDI12 = ResourcesPlugin.getWorkspace().getRoot().getProject("missingBeansXmlProjectCDI12"); assertTrue("Can't load missingBeansXmlProjectCDI12", missingBeansXmlProjectCDI12.exists()); saveAutoBuild = ResourcesUtils.setBuildAutomatically(false); TestUtil._waitForValidation(missingBeansXmlParentProject); TestUtil._waitForValidation(missingBeansXmlChildProject); TestUtil._waitForValidation(missingBeansXmlProjectCDI11); TestUtil._waitForValidation(missingBeansXmlProjectCDI12); } @Override public void tearDown() throws CoreException { ResourcesUtils.setBuildAutomatically(saveAutoBuild); } public void testMissingBeansXml() throws CoreException { AbstractResourceMarkerTest.assertMarkerIsCreated(missingBeansXmlChildProject, NLS.bind(CDIValidationMessages.MISSING_BEANS_XML[CDIVersion.CDI_1_0.getIndex()], "missingBeansXmlChildProject"), 0); AbstractResourceMarkerTest.assertMarkerIsNotCreated(missingBeansXmlParentProject, NLS.bind(CDIValidationMessages.MISSING_BEANS_XML[CDIVersion.CDI_1_0.getIndex()], "missingBeansXmlParentProject")); IFile beansXml = missingBeansXmlParentProject.getFile("src/META-INF/beans.xml"); AbstractResourceMarkerTest.assertMarkerIsCreated(beansXml, NLS.bind(CDIValidationMessages.UNKNOWN_INTERCEPTOR_CLASS_NAME[CDIVersion.CDI_1_0.getIndex()], "demo.TestInt"), 5); } public void testCreatingBeansXml() throws CoreException { boolean saveAutoBuild = ResourcesUtils.setBuildAutomatically(false); try { IFile beansXml = missingBeansXmlChildProject.getFile("src/META-INF/beans_.xml"); IFile newBeansXml = missingBeansXmlChildProject.getFile("src/META-INF/beans.xml"); beansXml.move(newBeansXml.getFullPath(), true, new NullProgressMonitor()); TestUtil.validate(missingBeansXmlChildProject, new IResource[]{beansXml, newBeansXml}); AbstractResourceMarkerTest.assertMarkerIsNotCreated(missingBeansXmlChildProject, NLS.bind(CDIValidationMessages.MISSING_BEANS_XML[CDIVersion.CDI_1_0.getIndex()], "missingBeansXmlChildProject")); AbstractResourceMarkerTest.assertMarkerIsNotCreated(missingBeansXmlParentProject, NLS.bind(CDIValidationMessages.MISSING_BEANS_XML[CDIVersion.CDI_1_0.getIndex()], "missingBeansXmlParentProject")); } finally { IFile beansXml = missingBeansXmlChildProject.getFile("src/META-INF/beans.xml"); IFile newBeansXml = missingBeansXmlChildProject.getFile("src/META-INF/beans_.xml"); beansXml.move(newBeansXml.getFullPath(), true, new NullProgressMonitor()); TestUtil.validate(newBeansXml); ResourcesUtils.setBuildAutomatically(saveAutoBuild); } } public void testMissingBeansXmlCDI11() throws CoreException { AbstractResourceMarkerTest.assertMarkerIsNotCreated(missingBeansXmlProjectCDI11, NLS.bind(CDIValidationMessages.MISSING_BEANS_XML[CDIVersion.CDI_1_1.getIndex()], "missingBeansXmlProjectCDI11")); } public void testMissingBeansXmlCDI12() throws CoreException { AbstractResourceMarkerTest.assertMarkerIsNotCreated(missingBeansXmlProjectCDI12, NLS.bind(CDIValidationMessages.MISSING_BEANS_XML[CDIVersion.CDI_1_2.getIndex()], "missingBeansXmlProjectCDI12")); ICDIProject cdi = CDICorePlugin.getCDIProject(missingBeansXmlProjectCDI12, true); assertEquals(CDIVersion.CDI_1_2, cdi.getVersion()); assertEquals(BeanArchiveDetector.ANNOTATED, cdi.getNature().getBeanDiscoveryMode()); //check beans loaded in annotated mode assertTrue(cdi.getBeans("beanNotAnnotated", false).isEmpty()); assertFalse(cdi.getBeans(new Path("/missingBeansXmlProjectCDI12/src/beans/DecoratorAnnotatedBean.java")).isEmpty()); assertFalse(cdi.getBeans("scopeAnnotatedBean", false).isEmpty()); assertFalse(cdi.getBeans("stereotypeAnnotatedBean", false).isEmpty()); } }