blob: a87f8fe87804f860a55216f3627fd4d4a7364bf7 [file] [log] [blame]
/*
* Created on Nov 7, 2003
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package org.eclipse.wtp.j2ee.headless.tests.web.operations;
import junit.framework.Assert;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
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.jst.j2ee.internal.J2EEConstants;
import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
import org.eclipse.jst.j2ee.internal.common.J2EEVersionUtil;
import org.eclipse.jst.j2ee.project.facet.IJ2EEFacetProjectCreationDataModelProperties;
import org.eclipse.jst.j2ee.project.facet.IJ2EEModuleFacetInstallDataModelProperties;
import org.eclipse.jst.j2ee.web.componentcore.util.WebArtifactEdit;
import org.eclipse.jst.j2ee.web.project.facet.IWebFacetInstallDataModelProperties;
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetDataModelProperties;
import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetInstallDataModelProperties;
import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties;
import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties.FacetDataModelMap;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
import org.eclipse.wst.common.project.facet.core.IProjectFacet;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
import org.eclipse.wtp.j2ee.headless.tests.j2ee.operations.ModuleProjectCreationOperationTest;
public class WebProjectCreationOperationTest extends ModuleProjectCreationOperationTest {
/**
* @param name
*/
public WebProjectCreationOperationTest(String name) {
super(name);
// TODO Auto-generated constructor stub
}
public static Test suite() {
return new TestSuite(WebProjectCreationOperationTest.class);
}
/* (non-Javadoc)
* @see org.eclipse.wtp.j2ee.headless.tests.j2ee.operations.ModuleProjectCreationOperationTest#getProjectCreationDataModel()
*/
public IDataModel getComponentCreationDataModel() {
return DataModelFactory.createDataModel(IWebFacetInstallDataModelProperties.class);
}
public IDataModel getComponentCreationDataModelWithEar() {
IDataModel model = DataModelFactory.createDataModel(IWebFacetInstallDataModelProperties.class);
FacetDataModelMap map = (FacetDataModelMap) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP);
IDataModel facetDM = map.getFacetDataModel(IWebFacetInstallDataModelProperties.DYNAMIC_WEB);
facetDM.setBooleanProperty( IJ2EEModuleFacetInstallDataModelProperties.ADD_TO_EAR, true );
return model;
}
public void testUsingPublicAPI() throws Exception {
IDataModel dataModel = DataModelFactory.createDataModel(IWebFacetInstallDataModelProperties.class);
String projName = "TestAPIWebProject";//$NON-NLS-1$
String webVersionString = J2EEVersionUtil.convertVersionIntToString(J2EEVersionConstants.WEB_2_4_ID);
IProjectFacet webFacet = ProjectFacetsManager.getProjectFacet(IWebFacetInstallDataModelProperties.DYNAMIC_WEB);
IProjectFacetVersion webFacetVersion = webFacet.getVersion(webVersionString); //$NON-NLS-1$
addWebProjectProperties(dataModel, projName, webFacetVersion);
dataModel.getDefaultOperation().execute( new NullProgressMonitor(), null);
validateWebProjectProperties(projName, webFacetVersion);
validateWebDescriptorProperties(projName);
}
public void testUsingPublicAPIWeb25() throws Exception {
IDataModel dataModel = DataModelFactory.createDataModel(IWebFacetInstallDataModelProperties.class);
String projName = "TestAPIWebProject";//$NON-NLS-1$
String webVersionString = J2EEVersionUtil.convertVersionIntToString(J2EEVersionConstants.WEB_2_5_ID);
IProjectFacet webFacet = ProjectFacetsManager.getProjectFacet(IWebFacetInstallDataModelProperties.DYNAMIC_WEB);
IProjectFacetVersion webFacetVersion = webFacet.getVersion(webVersionString); //$NON-NLS-1$
addWebProjectProperties(dataModel, projName, webFacetVersion);
dataModel.getDefaultOperation().execute( new NullProgressMonitor(), null);
validateWebProjectProperties(projName, webFacetVersion);
}
public void testUsingPublicAPIWeb25WithAddToEar() throws Exception {
IDataModel dataModel = DataModelFactory.createDataModel(IWebFacetInstallDataModelProperties.class);
String projName = "TestAPIWebProject";//$NON-NLS-1$
String webVersionString = J2EEVersionUtil.convertVersionIntToString(J2EEVersionConstants.WEB_2_5_ID);
IProjectFacet webFacet = ProjectFacetsManager.getProjectFacet(IWebFacetInstallDataModelProperties.DYNAMIC_WEB);
IProjectFacetVersion webFacetVersion = webFacet.getVersion(webVersionString); //$NON-NLS-1$
addWebProjectProperties(dataModel, projName, webFacetVersion);
String earProjName = projName + "EAR"; //$NON-NLS-1$
addEARProperties(dataModel, earProjName);
dataModel.getDefaultOperation().execute( new NullProgressMonitor(), null);
validateWebProjectProperties(projName, webFacetVersion);
validateEARProjectProperties(earProjName, J2EEVersionUtil.getJ2EETextVersion(J2EEVersionUtil.convertWebVersionStringToJ2EEVersionID(webVersionString)));
}
private void addEARProperties(IDataModel dataModel, String earProjName) {
dataModel.setBooleanProperty(IJ2EEFacetProjectCreationDataModelProperties.ADD_TO_EAR, true);
dataModel.setProperty(IJ2EEFacetProjectCreationDataModelProperties.EAR_PROJECT_NAME, earProjName);
}
private void addWebProjectProperties(IDataModel dataModel, String projName, IProjectFacetVersion web25){
dataModel.setProperty(IFacetDataModelProperties.FACET_PROJECT_NAME, projName);
FacetDataModelMap map = (FacetDataModelMap) dataModel
.getProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP);
IDataModel webmodel = (IDataModel) map.get(IWebFacetInstallDataModelProperties.DYNAMIC_WEB);
webmodel.setProperty(IFacetInstallDataModelProperties.FACET_VERSION, web25);
webmodel.setStringProperty(IJ2EEModuleFacetInstallDataModelProperties.CONFIG_FOLDER,"web333"); //$NON-NLS-1$
webmodel.setStringProperty(IWebFacetInstallDataModelProperties.SOURCE_FOLDER, "src444");
}
private void validateWebDescriptorProperties(String projName) {
// Test if op worked
IProject proj = ResourcesPlugin.getWorkspace().getRoot().getProject(projName);
// does underlying file for deployment descriptor exist
IVirtualComponent component = ComponentCore.createComponent(proj);
IFile deploymentDescriptorFile = component.getRootFolder().getFile(J2EEConstants.WEBAPP_DD_URI).getUnderlyingFile();
Assert.assertTrue(deploymentDescriptorFile.exists());
// is it a valid artifact
WebArtifactEdit web = WebArtifactEdit.getWebArtifactEditForRead(proj);
Assert.assertNotNull(web);
if (web != null)
Assert.assertNotNull(web.getWebApp());
}
private void validateWebProjectProperties(String projName,
IProjectFacetVersion webFacetVersion) throws CoreException {
// Test if op worked
IProject proj = ResourcesPlugin.getWorkspace().getRoot().getProject(projName);
Assert.assertTrue(proj.exists());
IVirtualComponent component = ComponentCore.createComponent(proj);
Assert.assertNotNull(component);
if (component != null)
Assert.assertNotNull(component.getName());
Assert.assertTrue(proj.exists(new Path("/web333")));
Assert.assertTrue(proj.exists(new Path("/src444")));
// Test if web facet version is correct
IFacetedProject facetedProject = ProjectFacetsManager.create(proj);
Assert.assertTrue(facetedProject.hasProjectFacet(webFacetVersion));
}
private void validateEARProjectProperties(String earProjName, String earFacetVersionString) throws CoreException {
// Test if ear exists
IProject earProj = ResourcesPlugin.getWorkspace().getRoot().getProject(earProjName);
Assert.assertTrue(earProj.exists());
IVirtualComponent earComponent = ComponentCore.createComponent(earProj);
Assert.assertNotNull(earComponent);
if (earComponent != null)
Assert.assertNotNull(earComponent.getName());
IVirtualReference[] references = earComponent.getReferences();
Assert.assertNotNull(references);
// Test if ear facet is right
IProjectFacet earFacet = ProjectFacetsManager.getProjectFacet(IWebFacetInstallDataModelProperties.ENTERPRISE_APPLICATION);
IProjectFacetVersion earFacetVersion = earFacet.getVersion(earFacetVersionString); //$NON-NLS-1$
IFacetedProject facetedProject = ProjectFacetsManager.create(earProj);
Assert.assertTrue(facetedProject.hasProjectFacet(earFacetVersion));
}
}