blob: f2e902b7a6e6b44653415e44da92afa7cf6d10e2 [file] [log] [blame]
package org.eclipse.wtp.j2ee.headless.tests.j2ee.operations;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import junit.framework.TestCase;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.eclipse.jst.j2ee.application.operations.AddArchiveProjectsToEARDataModel;
import org.eclipse.jst.j2ee.application.operations.EnterpriseApplicationCreationDataModel;
import org.eclipse.jst.j2ee.application.operations.EnterpriseApplicationCreationOperation;
import org.eclipse.jst.j2ee.application.operations.J2EEArtifactCreationDataModel;
import org.eclipse.jst.j2ee.application.operations.J2EEModuleCreationDataModel;
import org.eclipse.jst.j2ee.applicationclient.creation.AppClientModuleCreationDataModel;
import org.eclipse.jst.j2ee.applicationclient.creation.AppClientModuleCreationOperation;
import org.eclipse.jst.j2ee.applicationclient.creation.ApplicationClientNatureRuntime;
import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveConstants;
import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveManifestImpl;
import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
import org.eclipse.jst.j2ee.internal.ejb.project.operations.EJBModuleCreationDataModel;
import org.eclipse.jst.j2ee.internal.ejb.project.operations.EJBModuleCreationOperation;
import org.eclipse.jst.j2ee.internal.jca.operations.ConnectorModuleCreationDataModel;
import org.eclipse.jst.j2ee.internal.jca.operations.ConnectorModuleCreationOperation;
import org.eclipse.jst.j2ee.internal.web.archive.operations.WebModuleCreationDataModel;
import org.eclipse.jst.j2ee.internal.web.archive.operations.WebModuleCreationOperation;
import org.eclipse.wst.common.frameworks.internal.operations.ProjectCreationDataModel;
import org.eclipse.wst.common.frameworks.operations.WTPOperationDataModel;
import org.eclipse.wst.common.tests.LogUtility;
import org.eclipse.wst.common.tests.ProjectUtility;
import org.eclipse.wst.common.tests.TaskViewUtility;
import org.eclipse.wtp.j2ee.headless.tests.j2ee.verifiers.DataModelVerifier;
import org.eclipse.wtp.j2ee.headless.tests.j2ee.verifiers.DataModelVerifierFactory;
public abstract class AbstractProjectCreationTest extends TestCase {
protected static final String ILLEGAL_PROJECT_NAME_MESSAGE = "Illegal project name: ";
protected static final String UNEXPECTED_ERROR_MESSAGE = "Unexpected exception";
protected static final String TEST_FAILED_MESSAGE = "Test fails Exception should of been trown";
protected static final String MANIFEST_CLASS_NAME = "Junit_Test_Dummy_Class";
protected static final String MANIFEST_WRITE_ERROR = "Could not write to manifest test failed";
protected static final String MANIFEST_LOCK_ERROR = "Manifest IO error - File could be locked";
protected static final String MANIFEST_CORE_ERROR = "Java core error";
protected String projectName = null;
public static final int APPLICATION_CLIENT_PROJECT = 0;
public static final int WEB_PROJECT = 1;
public static final int EJB_PROJECT = 2;
public static final int EAR_PROJECT = 3;
public IProject ejbproject;
public IProject earproject;
public AbstractProjectCreationTest(String name) {
super(name);
}
public void createVaildProjectNameCreationWithAlphabetChars(
int PROJECT_TYPE,
int j2eeVersion,
boolean isMixedChars)
throws Exception {
LogUtility.getInstance().resetLogging();
J2EEArtifactCreationDataModel model = null;
switch (PROJECT_TYPE) {
case WEB_PROJECT :
{
if (!isMixedChars)
model = setupWebProject(RandomObjectGenerator.createCorrectRandomProjectNames(), j2eeVersion);
else
model =
setupWebProject(
RandomObjectGenerator.createCorrectRandomProjectNamesAllChars(),
j2eeVersion);
break;
}
case EJB_PROJECT :
{
if (!isMixedChars)
model = setupEJBProject(RandomObjectGenerator.createCorrectRandomProjectNames(), j2eeVersion);
else
model =
setupEJBProject(
RandomObjectGenerator.createCorrectRandomProjectNamesAllChars(),
j2eeVersion);
break;
}
case APPLICATION_CLIENT_PROJECT :
{
if (!isMixedChars)
model =
setupApplicationClientProject(
RandomObjectGenerator.createCorrectRandomProjectNames(),
j2eeVersion);
else
model =
setupApplicationClientProject(
RandomObjectGenerator.createCorrectRandomProjectNamesAllChars(),
j2eeVersion);
break;
}
case EAR_PROJECT :
{
if (!isMixedChars)
model = setupEARProject(RandomObjectGenerator.createCorrectRandomProjectNames(), j2eeVersion);
else
model =
setupEARProject(
RandomObjectGenerator.createCorrectRandomProjectNamesAllChars(),
j2eeVersion);
break;
}
}
LogUtility.getInstance().verifyNoWarnings();
checkValidDataModel(model);
}
/**
* @param model
*/
protected void checkValidDataModel(J2EEArtifactCreationDataModel model) {
DataModelVerifier verifier = DataModelVerifierFactory.getInstance().createVerifier(model);
try {
verifier.verify(model);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected static void checkVaildProjectName(String projectName) {
ProjectUtility.verifyProject(projectName, true);
//To do verify
}
public J2EEModuleCreationDataModel setupEJBProject(String aProjectName, int j2eeVersion) throws Exception {
projectName = aProjectName;
IProject javaProject = ProjectUtility.getProject(projectName);
EJBModuleCreationDataModel model = new EJBModuleCreationDataModel();
model.setProperty(EJBModuleCreationDataModel.PROJECT_NAME, javaProject.getName());
model.setProperty(EJBModuleCreationDataModel.PROJECT_LOCATION, javaProject.getLocation());
model.setIntProperty(EJBModuleCreationDataModel.J2EE_MODULE_VERSION, j2eeVersion);
createEJBProject(model, null);
return model;
}
public EnterpriseApplicationCreationDataModel setupEARProject(String aProjectName, int j2eeVersion) throws Exception {
projectName = aProjectName;
IProject earProject = ProjectUtility.getProject(aProjectName);
EnterpriseApplicationCreationDataModel earDataModel = new EnterpriseApplicationCreationDataModel();
earDataModel.setProperty(EnterpriseApplicationCreationDataModel.PROJECT_NAME, aProjectName);
earDataModel.setProperty(EnterpriseApplicationCreationDataModel.PROJECT_LOCATION, earProject.getLocation());
earDataModel.setIntProperty(EnterpriseApplicationCreationDataModel.APPLICATION_VERSION, j2eeVersion);
OperationTestCase.runAndVerify(earDataModel);
return earDataModel;
}
public J2EEModuleCreationDataModel setupWebProject(String aProjectName, int j2eeVersion) throws Exception {
projectName = aProjectName;
IProject javaProject = ProjectUtility.getProject(projectName);
WebModuleCreationDataModel model = new WebModuleCreationDataModel();
model.setProperty(WebModuleCreationDataModel.PROJECT_NAME, javaProject.getName());
model.setProperty(WebModuleCreationDataModel.PROJECT_LOCATION, javaProject.getLocation());
model.setIntProperty(WebModuleCreationDataModel.J2EE_MODULE_VERSION, j2eeVersion);
createWebProject(model, null);
return model;
}
public J2EEModuleCreationDataModel setupApplicationClientProject(String aProjectName, int j2eeVersion)
throws Exception {
projectName = aProjectName;
IProject javaProject = ProjectUtility.getProject(projectName);
AppClientModuleCreationDataModel model = new AppClientModuleCreationDataModel();
model.setProperty(AppClientModuleCreationDataModel.PROJECT_NAME, javaProject.getName());
model.setProperty(AppClientModuleCreationDataModel.PROJECT_LOCATION, javaProject.getLocation());
model.setIntProperty(AppClientModuleCreationDataModel.J2EE_MODULE_VERSION, j2eeVersion);
createAppClientProject(model, null);
return model;
}
public void testJavaCreation() throws Exception {
createEJBProject("testEAR", "testEJB", J2EEVersionConstants.J2EE_1_2_ID, J2EEVersionConstants.EJB_1_1_ID);
}
/**
* Create a project and its containing EAR with default model settings
* @param projectType
* @param earProject
* @param projectName
* @return
* @throws Exception
*/
public static IProject createProject(int projectType, String earProject, boolean createEAR, String projectName) throws Exception {
if (createEAR)
ProjectUtility.deleteProjectIfExists(earProject);
ProjectUtility.deleteProjectIfExists(projectName);
if (earProject != null && createEAR) {
WTPOperationDataModel earProjectCreationDataModel = new EnterpriseApplicationCreationDataModel();
earProjectCreationDataModel.setProperty(ProjectCreationDataModel.PROJECT_NAME, earProject);
earProjectCreationDataModel.getDefaultOperation().run(null);
ProjectUtility.verifyProject(earProject, true);
}
WTPOperationDataModel projectCreationDataModel = null;
switch (projectType) {
case EJB_PROJECT :
projectCreationDataModel = new EnterpriseApplicationCreationDataModel();
break;
case WEB_PROJECT :
projectCreationDataModel = new EnterpriseApplicationCreationDataModel();
break;
case APPLICATION_CLIENT_PROJECT :
projectCreationDataModel = new EnterpriseApplicationCreationDataModel();
break;
}
if (earProject != null) {
projectCreationDataModel.setBooleanProperty(J2EEModuleCreationDataModel.ADD_TO_EAR, true);
projectCreationDataModel.setProperty(J2EEModuleCreationDataModel.EAR_PROJECT_NAME, earProject);
}
projectCreationDataModel.setProperty(EJBModuleCreationDataModel.PROJECT_NAME, projectName);
projectCreationDataModel.getDefaultOperation().run(null);
ProjectUtility.verifyProject(projectName, true);
return (IProject) ProjectUtility.getProject(projectName);
}
public static IProject createEARProject(String earProject) throws Exception {
EnterpriseApplicationCreationDataModel projectCreationModel = new EnterpriseApplicationCreationDataModel();
projectCreationModel.setProperty(ProjectCreationDataModel.PROJECT_NAME, earProject);
return createEARProject(projectCreationModel);
}
public static IProject createEARProject(EnterpriseApplicationCreationDataModel model) throws Exception {
EnterpriseApplicationCreationOperation op = new EnterpriseApplicationCreationOperation(model);
op.run(null);
ProjectUtility.verifyProject(model.getStringProperty(EnterpriseApplicationCreationDataModel.PROJECT_NAME), true);
return model.getTargetProject();
}
public static IProject createEJBProject(EJBModuleCreationDataModel model, IProject earProject) throws Exception {
if (earProject != null) {
model.setBooleanProperty(EJBModuleCreationDataModel.ADD_TO_EAR, true);
model.setProperty(EJBModuleCreationDataModel.EAR_PROJECT_NAME, earProject.getName());
}
EJBModuleCreationOperation ejbOp = new EJBModuleCreationOperation(model);
ejbOp.run(null);
ProjectUtility.verifyProject(model.getStringProperty(EJBModuleCreationDataModel.PROJECT_NAME), true);
return model.getTargetProject();
}
public static void createEARProject(EnterpriseApplicationCreationDataModel model, boolean notImport) throws Exception {
model.setBooleanProperty(EnterpriseApplicationCreationDataModel.CREATE_DEFAULT_FILES, notImport);
EnterpriseApplicationCreationOperation op = new EnterpriseApplicationCreationOperation(model);
op.run(null);
ProjectUtility.verifyProject(model.getStringProperty(EnterpriseApplicationCreationDataModel.PROJECT_NAME), true);
}
public static void createWebProject(WebModuleCreationDataModel model, IProject earProject) throws Exception {
if (earProject != null) {
model.setBooleanProperty(WebModuleCreationDataModel.ADD_TO_EAR, true);
model.setProperty(WebModuleCreationDataModel.EAR_PROJECT_NAME, earProject.getName());
}
WebModuleCreationOperation webOp = new WebModuleCreationOperation(model);
webOp.run(null);
ProjectUtility.verifyProject(model.getTargetProject().getName(), true);
TaskViewUtility.verifyNoErrors();
}
public static void createAppClientProject(AppClientModuleCreationDataModel model, IProject earProject)
throws Exception {
if (earProject != null) {
model.setBooleanProperty(AppClientModuleCreationDataModel.ADD_TO_EAR, true);
model.setProperty(AppClientModuleCreationDataModel.EAR_PROJECT_NAME, earProject.getName());
}
AppClientModuleCreationOperation appOp = new AppClientModuleCreationOperation(model);
appOp.run(null);
ProjectUtility.verifyProject(model.getTargetProject().getName(), true);
}
public static void createRarProject(ConnectorModuleCreationDataModel model, IProject earProject)
throws Exception {
if (earProject != null) {
model.setBooleanProperty(ConnectorModuleCreationDataModel.ADD_TO_EAR, true);
model.setProperty(ConnectorModuleCreationDataModel.EAR_PROJECT_NAME, earProject.getName());
}
ConnectorModuleCreationOperation rarOp = new ConnectorModuleCreationOperation(model);
rarOp.run(null);
ProjectUtility.verifyProject(model.getTargetProject().getName(), true);
}
public static IProject createEJBProject(String earName, String ejbName, int j2eeEARVersion, int j2eeEJBVersion)
throws Exception {
ProjectUtility.deleteAllProjects();
EnterpriseApplicationCreationDataModel model = null;
EJBModuleCreationDataModel ejbDataModel = null;
if (earName != null) {
IProject earProject = ProjectUtility.getProject(earName);
model = new EnterpriseApplicationCreationDataModel();
model.setProperty(EnterpriseApplicationCreationDataModel.PROJECT_NAME, earName);
model.setProperty(EnterpriseApplicationCreationDataModel.PROJECT_LOCATION, earProject.getLocation());
model.setIntProperty(EnterpriseApplicationCreationDataModel.APPLICATION_VERSION, j2eeEARVersion);
EnterpriseApplicationCreationOperation op = new EnterpriseApplicationCreationOperation(model);
IProject ejbProject = ProjectUtility.getProject(ejbName);
ejbDataModel = new EJBModuleCreationDataModel();
ejbDataModel.setProperty(EJBModuleCreationDataModel.PROJECT_NAME, ejbName);
ejbDataModel.setProperty(EJBModuleCreationDataModel.PROJECT_LOCATION, ejbProject.getLocation());
ejbDataModel.setIntProperty(EJBModuleCreationDataModel.J2EE_MODULE_VERSION, j2eeEJBVersion);
IProject ejbp = createEJBProject(ejbDataModel, model.getTargetProject());
}
return ejbDataModel.getTargetProject();
}
public static void addJavaMainClassToApplicationModel(IProject appProject) {
ApplicationClientNatureRuntime runtime = ApplicationClientNatureRuntime.getRuntime(appProject);
IFile file = runtime.getEMFRoot().getFile(new Path(ArchiveConstants.MANIFEST_URI));
ArchiveManifestImpl manifest = null;
InputStream inputStream = null;
try {
inputStream = file.getContents();
manifest = new ArchiveManifestImpl(inputStream);
} catch (IOException e) {
new Exception(MANIFEST_LOCK_ERROR);
} catch (CoreException e) {
new Exception(MANIFEST_CORE_ERROR);
} finally {
if (null != inputStream) {
try {
inputStream.close();
} catch (IOException ex) {
}
}
}
manifest.setMainClass(MANIFEST_CLASS_NAME);
try {
//attempt with manifest dataObject -- J2EEProjectUtilities.writeManifest(appProject, manifest);
} catch (Exception e) {
new Exception(MANIFEST_WRITE_ERROR);
}
}
public void testAddingEJBtoEarModule() throws Exception {
ProjectUtility.deleteAllProjects();
setupEARDataObject(RandomObjectGenerator.createCorrectRandomProjectNames(), J2EEVersionConstants.J2EE_1_3_ID);
}
public String setupEARDataObject(String aProjectName, int j2eeVersion) throws Exception {
projectName = aProjectName;
IProject earProject = ProjectUtility.getProject(aProjectName);
EnterpriseApplicationCreationDataModel earDataModel = new EnterpriseApplicationCreationDataModel();
earDataModel.setProperty(EnterpriseApplicationCreationDataModel.PROJECT_NAME, aProjectName);
earDataModel.setProperty(EnterpriseApplicationCreationDataModel.PROJECT_LOCATION, earProject.getLocation());
//String projectName = setupEJBProject(RandomObjectGenerator.createCorrectRandomProjectNames(), j2eeVersion);
IProject ejbProject = ProjectUtility.getProject(projectName);
ArrayList list = new ArrayList();
list.add(ejbProject);
earDataModel.setProperty(AddArchiveProjectsToEARDataModel.MODULE_LIST, list);
earDataModel.setIntProperty(EnterpriseApplicationCreationDataModel.APPLICATION_VERSION, j2eeVersion);
earDataModel.getProperty(AddArchiveProjectsToEARDataModel.MODULE_MODELS);
AddArchiveProjectsToEARDataModel arcModel = earDataModel.getAddModulesToEARDataModel();
return (earDataModel.getStringProperty(EnterpriseApplicationCreationDataModel.PROJECT_NAME));
}
public AbstractProjectCreationTest() {
super();
}
}