/*******************************************************************************
* 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 Seam12WARNewOperationTest extends AbstractSeamNewOperationTest {
private static final String SEAM_WAR_PROJECTNAME = "seam_war";
private static final String SEAM_WAR_TEST_PROJECTNAME = "seam_war-test";
protected IProject warProject = null;
private IProject testProject = null;
private ISeamProject seamWarProject = null;
private ISeamProject seamTestProject = null;
public Seam12WARNewOperationTest(String name) {
super(name);
}
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_WAR_PROJECTNAME);
if(project==null) {
createSeamWarProject(SEAM_WAR_PROJECTNAME);
}
try {
JobUtils.waitForIdle();
} catch (Exception e) {
JUnitUtils.fail(e.getMessage(), e);
}
if(warProject==null) {
warProject = ProjectImportTestSetup.loadProject(SEAM_WAR_PROJECTNAME);
}
if(shouldCheckTestProject() && testProject==null) {
testProject = ProjectImportTestSetup.loadProject(SEAM_WAR_TEST_PROJECTNAME);
}
if(seamWarProject==null) {
seamWarProject = loadSeamProject(warProject);
}
if(shouldCheckTestProject() && seamTestProject==null) {
seamTestProject = loadSeamProject(testProject);
}
}
protected void tearDown() throws Exception {
WorkbenchUtils.closeAllEditors();
super.tearDown();
warProject = null;
testProject = null;
seamWarProject = null;
seamTestProject = null;
}
protected IProject getProject() {
return warProject;
}
@Override
void assertProjectsAreCreated() {
assertTrue("Test project \"" + SEAM_WAR_PROJECTNAME + "\" is not loaded", (warProject != null));
if(shouldCheckTestProject()) {
assertTrue("Test project \"" + SEAM_WAR_TEST_PROJECTNAME + "\" is not loaded", (testProject != null));
}
assertTrue("Test Seam project \"" + SEAM_WAR_PROJECTNAME + "\" is not loaded", (seamWarProject != null));
if(shouldCheckTestProject()) {
assertTrue("Test Seam project \"" + SEAM_WAR_TEST_PROJECTNAME + "\" is not loaded", (seamTestProject != null));
}
}
@Override
void setUpSeamProjects() {
setUpSeamProject(warProject);
}
protected String getSeamRTName() {
return AbstractSeamNewOperationTest.SEAM_1_2_0;
}
@Override
void assertNewActionFilesAreCreatedSuccessfully(AdaptableRegistry data) {
IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(warProject);
SeamProjectsSet seamPrjSet = new SeamProjectsSet(warProject);
String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs));
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);
IResource localInterfaceJava = seamProjectSrcActionFolder.findMember(
sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
assertResourceIsCreatedAndHasNoProblems(localInterfaceJava,
seamProjectSrcActionFolder.toString() + "/" +
sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
if(shouldCheckTestProject()) {
String testCasesPackagePath = getPackagePath(getTestCasesPackageName(seamFacetPrefs));
IResource localInterfaceTestJava = testSourceFolder.findMember(
testCasesPackagePath + "/" + seamLocalInterfaceName + "Test.java");
assertResourceIsCreatedAndHasNoProblems(localInterfaceTestJava,
testSourceFolder.toString() + "/" +
sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
IResource localInterfaceTestXml = testSourceFolder.findMember(
testCasesPackagePath + "/" + seamLocalInterfaceName + "Test.xml");
assertResourceIsCreatedAndHasNoProblems(localInterfaceTestXml,
testSourceFolder.toString() + "/" +
sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
assertLaunchesCreated(seamPrjSet.getTestProject().getName(), seamLocalInterfaceName);
}
IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(
seamPageName + ".xhtml");
assertResourceIsCreatedAndHasNoProblems(seamPageNameXhtml,
seamProjectWebContentFolder.toString() + "/" +
seamPageName + ".xhtml");
/*
"${" + 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$
"${" + 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$
"${" + 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$
"${" + ISeamParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
${" + ISeamParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
*/
}
@Override
void assertNewConversationFilesAreCreatedSuccessfully(AdaptableRegistry data) {
IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(warProject);
SeamProjectsSet seamPrjSet = new SeamProjectsSet(warProject);
String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs));
IContainer seamProjectSrcActionFolder = seamPrjSet.getActionFolder();
IContainer seamProjectWebContentFolder = seamPrjSet.getViewsFolder();
String seamPageName = data.getValue(ISeamParameter.SEAM_PAGE_NAME);
String seamBeanName = data.getValue(ISeamParameter.SEAM_BEAN_NAME);
IResource seamBeanJava = seamProjectSrcActionFolder.findMember(
sessionBeanPackagePath + "/" + seamBeanName + ".java");
assertResourceIsCreatedAndHasNoProblems(seamBeanJava,
seamProjectSrcActionFolder.toString() + "/" +
sessionBeanPackagePath + "/" + seamBeanName + ".java");
IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(
seamPageName + ".xhtml");
assertResourceIsCreatedAndHasNoProblems(seamPageNameXhtml,
seamProjectWebContentFolder.toString() + "/" +
seamPageName + ".xhtml");
/*
"${" + 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$
"${" + ISeamParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
${" + ISeamParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
*/
}
@Override
void assertNewEntityFilesAreCreatedSuccessfully(AdaptableRegistry data) {
IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(warProject);
SeamProjectsSet seamPrjSet = new SeamProjectsSet(warProject);
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);
IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(
seamPageName + ".xhtml");
assertResourceIsCreatedAndHasNoProblems(seamPageNameXhtml,
seamProjectWebContentFolder.toString() + "/" +
seamPageName + ".xhtml");
IResource seamMasterPageNameXhtml = seamProjectWebContentFolder.findMember(
seamMasterPageName + ".xhtml");
assertResourceIsCreatedAndHasNoProblems(seamMasterPageNameXhtml,
seamProjectWebContentFolder.toString() + "/" +
seamMasterPageName + ".xhtml");
IResource entityClassJava = seamProjectSrcModelFolder.findMember(
entityBeanPackagePath + "/" + seamEntityClassName + ".java");
assertResourceIsCreatedAndHasNoProblems(entityClassJava,
seamProjectSrcModelFolder.toString() + "/" +
entityBeanPackagePath + "/" + seamEntityClassName + ".java");
IResource entityHomeJava = seamProjectSrcActionFolder.findMember(
sessionBeanPackagePath + "/" + seamEntityClassName + "Home.java");
assertResourceIsCreatedAndHasNoProblems(entityHomeJava,
seamProjectSrcActionFolder.toString() + "/" +
sessionBeanPackagePath + "/" + seamEntityClassName + "Home.java");
IResource entityListJava = seamProjectSrcActionFolder.findMember(
sessionBeanPackagePath + "/" + seamEntityClassName + "List.java");
assertResourceIsCreatedAndHasNoProblems(entityListJava,
seamProjectSrcActionFolder.toString() + "/" +
sessionBeanPackagePath + "/" + seamEntityClassName + "List.java");
/*
"${" + ISeamParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
${" + ISeamParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"${" + ISeamParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
${" + ISeamParameter.SEAM_MASTER_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"${" + 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$
"${" + 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$
"${" + 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$
*/
}
@Override
void assertNewFormFilesAreCreatedSuccessfully(AdaptableRegistry data) {
assertNewActionFilesAreCreatedSuccessfully(data);
}
}