add EarArtifaceEditTest. JCC
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/flexible/project/apitests/EARArtifactEditTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/flexible/project/apitests/EARArtifactEditTest.java
new file mode 100644
index 0000000..ad67985
--- /dev/null
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/flexible/project/apitests/EARArtifactEditTest.java
@@ -0,0 +1,146 @@
+package org.eclipse.jst.j2ee.flexible.project.apitests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jst.j2ee.application.Application;
+import org.eclipse.jst.j2ee.application.ApplicationResource;
+import org.eclipse.jst.j2ee.internal.modulecore.util.EARArtifactEdit;
+import org.eclipse.wst.common.modulecore.ArtifactEditModel;
+import org.eclipse.wst.common.modulecore.ModuleCore;
+import org.eclipse.wst.common.modulecore.ModuleCoreNature;
+import org.eclipse.wst.common.modulecore.UnresolveableURIException;
+import org.eclipse.wst.common.modulecore.WorkbenchModule;
+
+public class EARArtifactEditTest extends TestCase {
+	public static final String MODULE__RESOURCE_URI_PROTOCOL = "module:/resource/";
+	private IProject project;
+	private WorkbenchModule earWorkbenchModule;
+	private ModuleCoreNature moduleCoreNature;
+	private ArtifactEditModel artifactEditModel;
+	private EARArtifactEdit earArtifactEdit;
+
+	public static void main(String[] args) {
+	}
+
+	/*
+	 * @see TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+		ModuleCore moduleCore = null;
+		String projectName = "FlexibleEarModuleProject";
+		try {
+			// setup instance variables: project
+			createProjectWithEARModule(projectName);
+			// ear workbenchModule
+			moduleCore = ModuleCore.getModuleCoreForWrite(project); 
+			earWorkbenchModule = moduleCore.getWorkbenchModules()[0];
+			// nature
+			moduleCoreNature = (ModuleCoreNature) project.getNature(ModuleCoreNature.MODULE_NATURE_ID);
+			
+			URI earModuleURI = URI.createURI(MODULE__RESOURCE_URI_PROTOCOL + projectName + IPath.SEPARATOR
+					+ projectName + ".ear" + IPath.SEPARATOR + "META-INF/application.xml");
+			// artifactEditModel
+			artifactEditModel = moduleCoreNature.getArtifactEditModelForRead(earModuleURI, this);
+			// earArtifactEdit
+			earArtifactEdit = (EARArtifactEdit) artifactEditModel.getAdapter(EARArtifactEdit.ADAPTER_TYPE);
+
+		} catch (CoreException e) {
+			e.printStackTrace();
+		} finally {
+			if (moduleCore != null)
+				moduleCore.dispose();
+		}
+
+	}
+
+	/*
+	 * @see TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		super.tearDown();
+	}
+
+	/**
+	 * Constructor for EARArtifactEditTest.
+	 * @param name
+	 */
+	public EARArtifactEditTest(String name) {
+		super(name);
+	}
+
+	public void testGetJ2EEVersion() {
+		int j2eeVersion = earArtifactEdit.getJ2EEVersion();
+		String message = "J2EE version should be larger than zero";
+		assertTrue(message, j2eeVersion > 0);
+	}
+
+	public void testGetDeploymentDescriptorResource() {
+		Resource resource = earArtifactEdit.getDeploymentDescriptorResource();
+		String message = "Deployment descriptor resource must not be null.";
+		assertTrue(message, resource != null);
+		
+	}
+
+	public void testGetEARArtifactEditForRead() {
+		EARArtifactEdit earArtifactEdit = EARArtifactEdit.getEARArtifactEditForRead(earWorkbenchModule);
+		String message = "The instance of EARArtifactEdit for read must not be null.";
+		assertTrue(message, earArtifactEdit != null);
+	}
+
+	public void testGetEARArtifactEditForWrite() {
+		EARArtifactEdit earArtifactEdit = EARArtifactEdit.getEARArtifactEditForRead(earWorkbenchModule);
+		String message = "The instance of EARArtifactEdit for write must not be null.";
+		assertTrue(message, earArtifactEdit != null);
+	}
+
+	public void testIsValidEARModule() throws UnresolveableURIException {
+		boolean valid = EARArtifactEdit.isValidEditableModule(earWorkbenchModule);
+		assertTrue(valid);
+	}
+
+	/*
+	 * Class under test for void EARArtifactEdit(ArtifactEditModel)
+	 */
+	public void testEARArtifactEditConstructor1() {
+		EARArtifactEdit edit = new EARArtifactEdit(artifactEditModel);
+		String message = "The instance of EARArtifactEdit must not be null.";
+		assertTrue(message, edit != null);
+	}
+
+	/*
+	 * Class under test for void EARArtifactEdit(ModuleCoreNature, WorkbenchModule, boolean)
+	 */
+	public void testEARArtifactEdit2() {
+		EARArtifactEdit edit = new EARArtifactEdit(moduleCoreNature, earWorkbenchModule, true);
+		String message = "The instance of EARArtifactEdit must not be null.";
+		assertTrue(message, edit != null);
+	}
+
+	public void testGetApplicationXmiResource() {
+		ApplicationResource appResource = earArtifactEdit.getApplicationXmiResource();
+		String message = "The application resource must not be null.";
+		assertTrue(message, appResource != null);
+	}
+
+	public void testGetApplication() {
+		Application application = earArtifactEdit.getApplication();
+		String message = "The application root object must not be null.";
+		assertTrue(message, application != null);
+	}
+	
+	private IProject createProjectWithEARModule(String projectName) throws Exception {
+		// TODO: need a data model and operation to do that
+		project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+		if (!project.exists()) {
+		}
+		return ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+	}
+
+}