/*******************************************************************************
* Copyright (c) 2008 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.ui.test.wizard;
import java.io.File;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.jboss.tools.seam.core.ISeamProject;
import org.jboss.tools.seam.core.SeamCorePlugin;
import org.jboss.tools.seam.core.SeamProjectsSet;
import org.jboss.tools.seam.core.project.facet.SeamRuntime;
import org.jboss.tools.seam.core.project.facet.SeamRuntimeManager;
import org.jboss.tools.seam.ui.wizard.ISeamParameter;
import org.jboss.tools.test.util.JUnitUtils;
import org.jboss.tools.test.util.JobUtils;
import org.jboss.tools.test.util.ProjectImportTestSetup;
import org.jboss.tools.test.util.WorkbenchUtils;
public class Seam12EARNewOperationTest extends AbstractSeamNewOperationTest {
private static final String SEAM_EAR_PROJECTNAME = "seam_ear";
private static final String SEAM_EAR_EJB_PROJECTNAME = "seam_ear-ejb";
private static final String SEAM_EAR_EAR_PROJECTNAME = "seam_ear-ear";
private static final String SEAM_EAR_TEST_PROJECTNAME = "seam_ear-test";
protected static IProject earProject = null;
private static IProject earEjbProject = null;
private static IProject earEarProject = null;
private static IProject testProject = null;
private ISeamProject seamEarProject = null;
private ISeamProject seamEarEjbProject = null;
private ISeamProject seamTestProject = null;
public Seam12EARNewOperationTest(String name) {
super(name);
// TODO Auto-generated constructor stub
}
protected void setUp() throws Exception {
super.setUp();
File folder = getSeamHomeFolder();
assertNotNull("An error occured while getting the SEAM HOME folder for: " + getSeamRTName(), folder);
SeamRuntimeManager.getInstance().addRuntime(getSeamRTName(), folder.getAbsolutePath(), getSeamRTVersion(getSeamRTName()), true);
SeamRuntime sr = SeamRuntimeManager.getInstance().findRuntimeByName(getSeamRTName());
assertNotNull("An error occured while getting the SEAM RUN-TIME for: " + getSeamRTName(), sr);
IResource project = ResourcesPlugin.getWorkspace().getRoot().findMember(SEAM_EAR_PROJECTNAME);
if (project== null && earProject == null && earEjbProject == null && earEarProject == null && testProject == null)
createSeamEarProject(SEAM_EAR_PROJECTNAME);
try {
JobUtils.waitForIdle();
} catch (Exception e) {
JUnitUtils.fail(e.getMessage(), e);
}
if(earProject==null) {
earProject = ProjectImportTestSetup.loadProject(SEAM_EAR_PROJECTNAME);
}
if(earEjbProject==null) {
earEjbProject = ProjectImportTestSetup.loadProject(SEAM_EAR_EJB_PROJECTNAME);
}
if(earEarProject==null) {
earEarProject = ProjectImportTestSetup.loadProject(SEAM_EAR_EAR_PROJECTNAME);
}
if(shouldCheckTestProject() && testProject==null) {
testProject = ProjectImportTestSetup.loadProject(SEAM_EAR_TEST_PROJECTNAME);
}
if(seamEarProject==null) {
seamEarProject = loadSeamProject(earProject);
}
if(seamEarEjbProject==null) {
seamEarEjbProject = loadSeamProject(earEjbProject);
}
if(shouldCheckTestProject() && seamTestProject==null) {
seamTestProject = loadSeamProject(testProject);
}
}
protected void tearDown() throws Exception {
WorkbenchUtils.closeAllEditors();
super.tearDown();
earProject = null;
earEjbProject = null;
earEarProject = null;
testProject = null;
seamEarProject = null;
seamEarEjbProject = null;
seamTestProject = null;
}
protected IProject getProject() {
return earProject;
}
@Override
void assertProjectsAreCreated() {
assertTrue("Test project \"" + SEAM_EAR_PROJECTNAME + "\" is not loaded", (earProject != null));
assertTrue("Test project \"" + SEAM_EAR_EJB_PROJECTNAME + "\" is not loaded", (earEjbProject != null));
assertTrue("Test project \"" + SEAM_EAR_EAR_PROJECTNAME + "\" is not loaded", (earEarProject != null));
if(shouldCheckTestProject()) {
assertTrue("Test project \"" + SEAM_EAR_TEST_PROJECTNAME + "\" is not loaded", (testProject != null));
}
assertTrue("Test Seam project \"" + SEAM_EAR_PROJECTNAME + "\" is not loaded", (seamEarProject != null));
assertTrue("Test Seam project \"" + SEAM_EAR_EJB_PROJECTNAME + "\" is not loaded", (seamEarEjbProject != null));
if(shouldCheckTestProject()) {
assertTrue("Test Seam project \"" + SEAM_EAR_TEST_PROJECTNAME + "\" is not loaded", (seamTestProject != null));
}
}
@Override
void setUpSeamProjects() {
setUpSeamProject(earProject);
}
@Override
void assertNewActionFilesAreCreatedSuccessfully(AdaptableRegistry data) {
IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(earProject);
SeamProjectsSet seamPrjSet = new SeamProjectsSet(earProject);
String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs));
String testCasesPackagePath = shouldCheckTestProject()?getPackagePath(getTestCasesPackageName(seamFacetPrefs)):null;
IContainer seamProjectSrcActionFolder = seamPrjSet.getActionFolder();
IContainer testSourceFolder = seamPrjSet.getTestsFolder();
IContainer seamProjectWebContentFolder = seamPrjSet.getViewsFolder();
String seamPageName = data.getValue(ISeamParameter.SEAM_PAGE_NAME);
String seamLocalInterfaceName = data.getValue(ISeamParameter.SEAM_LOCAL_INTERFACE_NAME);
String seamBeanName = data.getValue(ISeamParameter.SEAM_BEAN_NAME);
//
// "${" + ISeamParameter.SEAM_PROJECT_SRC_ACTION + "}/
// ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
// ${" + ISeamParameter.SEAM_BEAN_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
IResource beanJava = seamProjectSrcActionFolder.findMember(
sessionBeanPackagePath + "/" + seamBeanName + ".java");
assertResourceIsCreatedAndHasNoProblems(beanJava,
seamProjectSrcActionFolder.toString() + "/" +
sessionBeanPackagePath + "/" + seamBeanName + ".java");
//
// "${" + ISeamParameter.SEAM_PROJECT_SRC_ACTION + "}/
// ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
// ${" + ISeamParameter.SEAM_LOCAL_INTERFACE_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
IResource localInterfaceJava = seamProjectSrcActionFolder.findMember(
sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
assertResourceIsCreatedAndHasNoProblems(localInterfaceJava,
seamProjectSrcActionFolder.toString() + "/" +
sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
//
// "${" + ISeamParameter.TEST_SOURCE_FOLDER + "}/
// ${" + ISeamFacetDataModelProperties.TEST_CASES_PACKAGE_PATH + "}/
// ${"+ ISeamParameter.SEAM_LOCAL_INTERFACE_NAME +"}Test.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
if(shouldCheckTestProject()) {
IResource localInterfaceTestJava = testSourceFolder.findMember(
testCasesPackagePath + "/" + seamLocalInterfaceName + "Test.java");
assertResourceIsCreatedAndHasNoProblems(localInterfaceTestJava,
testSourceFolder.toString() + "/" +
testCasesPackagePath + "/" + seamLocalInterfaceName + "Test.java");
// "${" + ISeamParameter.TEST_SOURCE_FOLDER + "}/
// ${" + ISeamFacetDataModelProperties.TEST_CASES_PACKAGE_PATH + "}/
// ${"+ ISeamParameter.SEAM_LOCAL_INTERFACE_NAME +"}Test.xml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
IResource localInterfaceTestXml = testSourceFolder.findMember(
testCasesPackagePath + "/" + seamLocalInterfaceName + "Test.xml");
assertResourceIsCreatedAndHasNoProblems(localInterfaceTestXml,
testSourceFolder.toString() + "/" +
testCasesPackagePath + "/" + seamLocalInterfaceName + "Test.xml");
}
//
// "${" + ISeamParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
// ${" + ISeamParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(
seamPageName + ".xhtml");
assertResourceIsCreatedAndHasNoProblems(seamPageNameXhtml,
seamProjectWebContentFolder.toString() + "/" +
seamPageName + ".xhtml");
if(shouldCheckTestProject()) {
assertLaunchesCreated(seamPrjSet.getTestProject().getName(), seamLocalInterfaceName);
}
}
@Override
void assertNewConversationFilesAreCreatedSuccessfully(AdaptableRegistry data) {
IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(earProject);
SeamProjectsSet seamPrjSet = new SeamProjectsSet(earProject);
String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs));
IContainer seamProjectSrcActionFolder = seamPrjSet.getActionFolder();
IContainer seamProjectWebContentFolder = seamPrjSet.getViewsFolder();
String seamPageName = data.getValue(ISeamParameter.SEAM_PAGE_NAME);
String seamLocalInterfaceName = data.getValue(ISeamParameter.SEAM_LOCAL_INTERFACE_NAME);
String seamBeanName = data.getValue(ISeamParameter.SEAM_BEAN_NAME);
//
// "${" + ISeamParameter.SEAM_PROJECT_SRC_ACTION + "}/
// ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
// ${" + ISeamParameter.SEAM_BEAN_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
IResource beanJava = seamProjectSrcActionFolder.findMember(
sessionBeanPackagePath + "/" + seamBeanName + ".java");
assertResourceIsCreatedAndHasNoProblems(beanJava,
seamProjectSrcActionFolder.toString() + "/" +
sessionBeanPackagePath + "/" + seamBeanName + ".java");
//
// "${" + ISeamParameter.SEAM_PROJECT_SRC_ACTION + "}/
// ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
// ${" + ISeamParameter.SEAM_LOCAL_INTERFACE_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
IResource localInterfaceJava = seamProjectSrcActionFolder.findMember(
sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
assertResourceIsCreatedAndHasNoProblems(localInterfaceJava,
seamProjectSrcActionFolder.toString() + "/" +
sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
//
// "${" + ISeamParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
// ${" + ISeamParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(
seamPageName + ".xhtml");
assertResourceIsCreatedAndHasNoProblems(seamPageNameXhtml,
seamProjectWebContentFolder.toString() + "/" +
seamPageName + ".xhtml");
}
@Override
void assertNewEntityFilesAreCreatedSuccessfully(AdaptableRegistry data) {
IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(earProject);
SeamProjectsSet seamPrjSet = new SeamProjectsSet(earProject);
String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs));
String entityBeanPackagePath = getPackagePath(getEntityBeanPackageName(seamFacetPrefs));
IContainer seamProjectSrcActionFolder = seamPrjSet.getActionFolder();
IContainer seamProjectSrcModelFolder = seamPrjSet.getModelFolder();
IContainer seamProjectWebContentFolder = seamPrjSet.getViewsFolder();
String seamPageName = data.getValue(ISeamParameter.SEAM_PAGE_NAME);
String seamMasterPageName = data.getValue(ISeamParameter.SEAM_MASTER_PAGE_NAME);
String seamEntityClassName = data.getValue(ISeamParameter.SEAM_ENTITY_CLASS_NAME);
//
// "${" + ISeamParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
// ${" + ISeamParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(
seamPageName + ".xhtml");
assertResourceIsCreatedAndHasNoProblems(seamPageNameXhtml,
seamProjectWebContentFolder.toString() + "/" +
seamPageName + ".xhtml");
//
// "${" + ISeamParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
// ${" + ISeamParameter.SEAM_MASTER_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
IResource seamMasterPageNameXhtml = seamProjectWebContentFolder.findMember(
seamMasterPageName + ".xhtml");
assertResourceIsCreatedAndHasNoProblems(seamMasterPageNameXhtml,
seamProjectWebContentFolder.toString() + "/" +
seamMasterPageName + ".xhtml");
//
// "${" + ISeamParameter.SEAM_PROJECT_SRC_MODEL + "}/
// ${" + ISeamFacetDataModelProperties.ENTITY_BEAN_PACKAGE_PATH + "}/
// ${" + ISeamParameter.SEAM_ENTITY_CLASS_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
IResource entityClassJava = seamProjectSrcModelFolder.findMember(
entityBeanPackagePath + "/" + seamEntityClassName + ".java");
assertResourceIsCreatedAndHasNoProblems(entityClassJava,
seamProjectSrcModelFolder.toString() + "/" +
entityBeanPackagePath + "/" + seamEntityClassName + ".java");
//
// "${" + ISeamParameter.SEAM_PROJECT_SRC_ACTION + "}/
// ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
// ${" + ISeamParameter.SEAM_ENTITY_CLASS_NAME +"}Home.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
IResource entityHomeJava = seamProjectSrcActionFolder.findMember(
sessionBeanPackagePath + "/" + seamEntityClassName + "Home.java");
assertResourceIsCreatedAndHasNoProblems(entityHomeJava,
seamProjectSrcActionFolder.toString() + "/" +
sessionBeanPackagePath + "/" + seamEntityClassName + "Home.java");
//
// "${" + ISeamParameter.SEAM_PROJECT_SRC_ACTION + "}/
// ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
// ${" + ISeamParameter.SEAM_ENTITY_CLASS_NAME +"}List.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
IResource entityListJava = seamProjectSrcActionFolder.findMember(
sessionBeanPackagePath + "/" + seamEntityClassName + "List.java");
assertResourceIsCreatedAndHasNoProblems(entityListJava,
seamProjectSrcActionFolder.toString() + "/" +
sessionBeanPackagePath + "/" + seamEntityClassName + "List.java");
}
@Override
void assertNewFormFilesAreCreatedSuccessfully(AdaptableRegistry data) {
assertNewActionFilesAreCreatedSuccessfully(data);
}
@Override
protected String getSeamRTName() {
return AbstractSeamNewOperationTest.SEAM_1_2_0;
}
}