blob: 9651e4595c66579073182a09c36994336885dbec [file] [log] [blame]
/*
* Created on Jan 5, 2004
*
* 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.j2ee.verifiers;
import junit.framework.Assert;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
import org.eclipse.jst.j2ee.internal.archive.JavaEEArchiveUtilities;
import org.eclipse.jst.j2ee.model.IModelProvider;
import org.eclipse.jst.j2ee.model.ModelProviderManager;
import org.eclipse.jst.jee.archive.IArchive;
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetDataModelProperties;
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.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.ProjectFacetsManager;
import org.eclipse.wst.common.project.facet.core.internal.ProjectFacetVersion;
import org.eclipse.wst.common.tests.DataModelVerifier;
/**
* @author Administrator
* @author Ian Tewksbury (ictewksb@us.ibm.com)
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public abstract class JEEProjectCreationDataModelVerifier extends DataModelVerifier {
protected IDataModel model = null;
protected IProject project = null;
protected IVirtualComponent component = null;
protected String facetProjectType = null;
//need this because Utility Projects don't have ModelProviders
protected boolean hasModelProvider = true;
public void verify(IDataModel model) throws Exception {
super.verify(model);
this.model = model;
this.setFacetProjectType();
String projName = model.getStringProperty(IFacetProjectCreationDataModelProperties.FACET_PROJECT_NAME);
project = ProjectUtilities.getProject(projName);
this.verifyProject();
component = ComponentCore.createComponent(project);
this.verifyComponent();
this.verifyProjectVersion();
if(hasModelProvider) {
this.verifyModelProvider();
}
}
protected abstract void setFacetProjectType();
protected abstract IFile getDDFile();
protected abstract void verifyDD(Object modelObj);
private void verifyProject(){
Assert.assertTrue("The project should exist", project.exists());
}
private void verifyComponent() {
Assert.assertNotNull("Component should not be null", component);
Assert.assertTrue("Component should exist", component.exists());
}
private void verifyProjectVersion() throws Exception{
FacetDataModelMap facetMap = (FacetDataModelMap) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP);
IDataModel facetModel = facetMap.getFacetDataModel(facetProjectType);
ProjectFacetVersion version = (ProjectFacetVersion)facetModel.getProperty(IFacetDataModelProperties.FACET_VERSION);
IProjectFacet projFact = version.getProjectFacet();
String projFactID = projFact.getId();
boolean verifyVersion = ProjectFacetsManager.isProjectFacetDefined(projFactID);
Assert.assertTrue("Project facet: "+projFactID+" should be defined", verifyVersion);
IFacetedProject facetedProject = ProjectFacetsManager.create(project);
Assert.assertTrue("Project fact version: "+version+"should be defined", facetedProject.getProjectFacets().contains(version));
}
protected void verifyModelProvider() throws Exception {
IModelProvider provider = ModelProviderManager.getModelProvider(project);
Object modelObj = provider.getModelObject();
Object modelObj2 = null;
IArchive archive = null;
try{
archive = JavaEEArchiveUtilities.INSTANCE.openArchive(component);
FacetDataModelMap facetMap = (FacetDataModelMap) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP);
IDataModel facetModel = facetMap.getFacetDataModel(facetProjectType);
//NOTE: Check to see if a DataModel should exist removed 7/9/07 because even without DD's all projects should return models
// boolean hasDD = facetModel.getBooleanProperty(IJ2EEFacetInstallDataModelProperties.GENERATE_DD);
// IFile deploymentDescriptorFile = this.getDDFile();
// if(hasDD != deploymentDescriptorFile.exists()){
// Assert.fail("Deployment descriptor should exist if project is supposed to have a deployment descriptor");
// }
// if(hasDD) {
Assert.assertNotNull("Deployment Descriptor should not be null", modelObj);
this.verifyDD(modelObj);
System.err.println("TODO -- //modelObj2 = archive.getModelObject();");
System.err.println(" -- see https://bugs.eclipse.org/bugs/show_bug.cgi?id=195670");
//modelObj2 = archive.getModelObject();
// } else {
// Assert.assertNull("Project should not have a Deployment Descriptor", modelObj);
// }
if(modelObj != modelObj2){
System.err.println("TODO -- Deployment Descriptor should be equal to its self");
System.err.println(" -- see https://bugs.eclipse.org/bugs/show_bug.cgi?id=195670");
//AssertWarn.warnTrue("Deployment Descriptor should be equal to its self", modelObj == modelObj2);
}
} finally {
if(archive != null){
JavaEEArchiveUtilities.INSTANCE.closeArchive(archive);
}
}
}
}