blob: c0fa1b8b36f7a734b7d14f7d43ba79b1f1d09083 [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();
Assert.assertNotNull("Project Deployment Descriptor should not be null", modelObj);
this.verifyDD(modelObj);
IArchive archive = null;
try{
archive = JavaEEArchiveUtilities.INSTANCE.openArchive(component);
if(archive.containsModelObject()){
Object modelObj2 = archive.getModelObject();
Assert.assertNotNull("Archive Deployment Descriptor should not be null", modelObj2);
if(modelObj != modelObj2){
System.err.println("TODO -- Project and IArchive Deployment Descriptor should be equal");
System.err.println(" -- see https://bugs.eclipse.org/bugs/show_bug.cgi?id=195670");
//AssertWarn.warnTrue("Project and IArchive Deployment Descriptor should be equal", modelObj == modelObj2);
}
}
} finally {
if(archive != null){
JavaEEArchiveUtilities.INSTANCE.closeArchive(archive);
}
}
}
}