/*******************************************************************************
* Copyright (c) 2012 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.seam.core.test.project.facet;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.IClasspathEntry;
import org.jboss.tools.seam.core.SeamProjectsSet;
import org.jboss.tools.seam.internal.core.project.facet.SeamProjectCreator;
/**
* @author Alexey Kazakov
*/
public class Seam2FacetInstallDelegateTest extends AbstractSeam2FacetInstallDelegateTest {
public Seam2FacetInstallDelegateTest(String name) {
super(name);
}
public void testMvelWarJars() {
final IContainer warLibs = (IContainer) warProject.getProject()
.findMember("WebContent/WEB-INF/lib").getAdapter(
IContainer.class);
try {
for (IResource resource : warLibs.members()) {
if (resource.getName().matches("mvel.*\\.jar")) {
return;
}
}
fail("mvel*.jar weren't found in seam 2.0. WAR project");
} catch (CoreException e) {
fail("Error occured during search mvel libraries in lib folder");
}
}
public void testMvelEarJars() {
IProject war = earProject.getProject();
SeamProjectsSet seamProjectsSet = new SeamProjectsSet(earProject
.getProject());
IProject ear = seamProjectsSet.getEarProject();
final IContainer earLibs = (IContainer) ear.findMember(
new Path("EarContent").append("lib")).getAdapter(
IContainer.class);
try {
for (IResource resource : earLibs.members()) {
if (resource.getName().matches("mvel.*\\.jar")) {
return;
}
}
fail("mvel*.jar weren't found in seam 2.0. EAR project");
} catch (CoreException e) {
fail("Error occured during search mvel libraries in lib folder");
}
}
public void testBootstrapDirPresent() throws CoreException, IOException {
SeamProjectsSet warPs = new SeamProjectsSet(warProject.getProject());
IProject testProject = warPs.getTestProject();
assertTrue(testProject.exists());
assertNotNull(testProject.findMember("bootstrap"));
// assertNotNull(testProject.findMember("bootstrap/data"));
assertNull("embedded-ejb should not be installed for seam2",
testProject.findMember("embedded-ejb"));
}
/*
* (non-Javadoc)
* @see org.jboss.tools.seam.core.test.project.facet.AbstractSeam2FacetInstallDelegateTest#getTestLibs()
*/
@Override
protected Set<String> getTestLibs() {
Set<String> libs = new HashSet<String>();
libs.add("testng.jar");
libs.add("hibernate-all.jar");
// libs.add("jboss-deployers.jar"); // JBIDE-2431: There is no such jar
// created by Seam 2.0 seamgen
libs.add("jboss-embedded-all.jar");
libs.add("thirdparty-all.jar");
libs.add("jboss-embedded-api.jar");
libs.add("core.jar");
return libs;
}
public void testTestLibs() throws CoreException, IOException {
SeamProjectsSet warPs = new SeamProjectsSet(warProject.getProject());
IProject testProject = warPs.getTestProject();
assertTrue(testProject.exists());
Set<String> libs = getTestLibs();
assertOnlyContainsTheseFiles(libs, testProject.findMember("lib"));
// JBIDE-2431: The following block is commented because it duplicates
// the call to assertOnlyContainsTheseFiles()
/*
* assertNotNull(testProject.findMember("lib/testng.jar"));
* assertNotNull(testProject.findMember("lib/hibernate-all.jar")); //
* assertNotNull(testProject.findMember("lib/jboss-deployers.jar")); //
* JBIDE-2431: There is no such jar created by Seam 2.0 seamgen
* assertNotNull(testProject.findMember("lib/jboss-embedded-all.jar"));
* assertNotNull(testProject.findMember("lib/thirdparty-all.jar"));
* assertNotNull(testProject.findMember("lib/core.jar")); // JBIDE-2431:
* lib/core.jar file is always created by Seam 2.0 seamgen
*/
}
/**
* See https://issues.jboss.org/browse/JBIDE-8076
*
* @throws CoreException
* @throws IOException
*/
public void testTestProjectClassPath() throws CoreException, IOException {
SeamProjectsSet warPs = new SeamProjectsSet(warProject.getProject());
IProject testProject = warPs.getTestProject();
assertTrue(testProject.exists());
IClasspathEntry warCpe = SeamProjectCreator.getJreContainer(warProject.getProject());
assertNotNull(warCpe);
IClasspathEntry testCpe = SeamProjectCreator.getJreContainer(testProject);
assertNotNull(testCpe);
assertEquals(warCpe.getPath(), testCpe.getPath());
}
public void testJbpmPresent() throws CoreException, IOException {
SeamProjectsSet earPs = new SeamProjectsSet(earProject.getProject());
IProject project = earPs.getEarProject();
assertTrue(project.exists());
assertNotNull(project.findMember("EarContent/lib/jbpm-jpdl.jar"));
}
public void testDroolsPresent() throws CoreException, IOException {
IProject earRoot = earProject.getProject();
SeamProjectsSet seamProjectsSet = new SeamProjectsSet(earRoot);
// JBIDE-2431: security.drl is always created in <EJBProject>/ejbModule
// directory by Seam 2.0 seamgen
IProject ejbProject = seamProjectsSet.getEjbProject();
assertNotNull(ejbProject.findMember("ejbModule/security.drl"));
}
}