blob: d5020f8f20a4448cb1d0b55413cfeba524e05438 [file] [log] [blame]
/*
* Created on Nov 6, 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.appclient.operations;
import junit.framework.Assert;
import junit.framework.Test;
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.applicationclient.componentcore.util.AppClientArtifactEdit;
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.IAppClientFacetInstallDataModelProperties;
import org.eclipse.jst.j2ee.project.facet.IJ2EEFacetProjectCreationDataModelProperties;
import org.eclipse.jst.j2ee.project.facet.IJ2EEModuleFacetInstallDataModelProperties;
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.wst.common.tests.SimpleTestSuite;
import org.eclipse.wtp.j2ee.headless.tests.j2ee.operations.ModuleProjectCreationOperationTest;
/**
* @author jsholl
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class AppClientProjectCreationOperationTest extends ModuleProjectCreationOperationTest {
public static String DEFAULT_PROJECT_NAME = "SimpleAppClient";
/**
* @param name
*/
public AppClientProjectCreationOperationTest(String name) {
super(name);
// TODO Auto-generated constructor stub
}
public static Test suite() {
return new SimpleTestSuite(AppClientProjectCreationOperationTest.class);
}
public IDataModel getComponentCreationDataModel() {
return DataModelFactory.createDataModel(IAppClientFacetInstallDataModelProperties.class);
}
public IDataModel getComponentCreationDataModelWithEar() {
IDataModel model = getComponentCreationDataModel();
FacetDataModelMap map = (FacetDataModelMap) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP);
IDataModel facetDM = map.getFacetDataModel(IAppClientFacetInstallDataModelProperties.APPLICATION_CLIENT);
facetDM.setBooleanProperty( IJ2EEModuleFacetInstallDataModelProperties.ADD_TO_EAR, true );
return model;
}
public void testUsingPublicAPI() throws Exception {
IDataModel dataModel = DataModelFactory.createDataModel(IAppClientFacetInstallDataModelProperties.class);
String projName = "TestAPIAppClientProject";//$NON-NLS-1$
String appVersionString = J2EEVersionUtil.convertVersionIntToString(J2EEVersionConstants.J2EE_1_4_ID);
IProjectFacet appFacet = ProjectFacetsManager.getProjectFacet(IAppClientFacetInstallDataModelProperties.APPLICATION_CLIENT);
IProjectFacetVersion appFacetVersion = appFacet.getVersion(appVersionString); //$NON-NLS-1$
addAppProjectProperties(dataModel, projName, appFacetVersion);
dataModel.getDefaultOperation().execute( new NullProgressMonitor(), null);
validateAppProjectProperties(projName, appFacetVersion);
validateAppDescriptorProperties(projName);
}
public void testUsingPublicAPIApp50() throws Exception {
IDataModel dataModel = DataModelFactory.createDataModel(IAppClientFacetInstallDataModelProperties.class);
String projName = "TestAPIAppClientProject";//$NON-NLS-1$
String appVersionString = J2EEVersionUtil.convertVersionIntToString(J2EEVersionConstants.JEE_5_0_ID);
IProjectFacet appFacet = ProjectFacetsManager.getProjectFacet(IAppClientFacetInstallDataModelProperties.APPLICATION_CLIENT);
IProjectFacetVersion appFacetVersion = appFacet.getVersion(appVersionString); //$NON-NLS-1$
addAppProjectProperties(dataModel, projName, appFacetVersion);
dataModel.getDefaultOperation().execute( new NullProgressMonitor(), null);
validateAppProjectProperties(projName, appFacetVersion);
}
public void testUsingPublicAPIApp50WithAddToEar() throws Exception {
IDataModel dataModel = DataModelFactory.createDataModel(IAppClientFacetInstallDataModelProperties.class);
String projName = "TestAPIAppClientProject";//$NON-NLS-1$
String appVersionString = J2EEVersionUtil.convertVersionIntToString(J2EEVersionConstants.JEE_5_0_ID);
IProjectFacet appFacet = ProjectFacetsManager.getProjectFacet(IAppClientFacetInstallDataModelProperties.APPLICATION_CLIENT);
IProjectFacetVersion appFacetVersion = appFacet.getVersion(appVersionString); //$NON-NLS-1$
addAppProjectProperties(dataModel, projName, appFacetVersion);
String earProjName = projName + "EAR"; //$NON-NLS-1$
addEARProperties(dataModel, earProjName);
dataModel.getDefaultOperation().execute( new NullProgressMonitor(), null);
validateAppProjectProperties(projName, appFacetVersion);
validateEARProjectProperties(earProjName, appVersionString);
}
private void addEARProperties(IDataModel dataModel, String earProjName) {
dataModel.setBooleanProperty(IJ2EEFacetProjectCreationDataModelProperties.ADD_TO_EAR, true);
dataModel.setProperty(IJ2EEFacetProjectCreationDataModelProperties.EAR_PROJECT_NAME, earProjName);
}
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 version is right
IProjectFacet earFacet = ProjectFacetsManager.getProjectFacet(IAppClientFacetInstallDataModelProperties.ENTERPRISE_APPLICATION);
IProjectFacetVersion earFacetVersion = earFacet.getVersion(earFacetVersionString); //$NON-NLS-1$
IFacetedProject facetedEARProject = ProjectFacetsManager.create(earProj);
Assert.assertTrue(facetedEARProject.hasProjectFacet(earFacetVersion));
}
private void validateAppDescriptorProperties(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.APP_CLIENT_DD_URI).getUnderlyingFile();
Assert.assertTrue(deploymentDescriptorFile.exists());
// is it a valid artifact
AppClientArtifactEdit appClient = AppClientArtifactEdit.getAppClientArtifactEditForRead(proj);
Assert.assertNotNull(appClient);
if (appClient != null)
Assert.assertNotNull(appClient.getApplicationClient());
}
private void validateAppProjectProperties(String projName,
IProjectFacetVersion appFacetVersion) 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("/appcc333")));
// Test if facet is right version
IFacetedProject facetedProject = ProjectFacetsManager.create(proj);
Assert.assertTrue(facetedProject.hasProjectFacet(appFacetVersion));
}
private void addAppProjectProperties(IDataModel dataModel, String projName, IProjectFacetVersion appFacetVersion){
dataModel.setProperty(IFacetDataModelProperties.FACET_PROJECT_NAME, projName);
FacetDataModelMap map = (FacetDataModelMap) dataModel
.getProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP);
IDataModel appmodel = (IDataModel) map.get(IAppClientFacetInstallDataModelProperties.APPLICATION_CLIENT);
appmodel.setProperty(IFacetInstallDataModelProperties.FACET_VERSION, appFacetVersion);
appmodel.setStringProperty(IJ2EEModuleFacetInstallDataModelProperties.CONFIG_FOLDER,"appcc333"); //$NON-NLS-1$
}
}