325733 and 354346 with an additional small modification for other test cases which were not previously run
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/ear/operations/EARProjectCreationOperationTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/ear/operations/EARProjectCreationOperationTest.java index 9b79bd5..81b81c2 100644 --- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/ear/operations/EARProjectCreationOperationTest.java +++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/ear/operations/EARProjectCreationOperationTest.java
@@ -16,6 +16,7 @@ */ package org.eclipse.wtp.j2ee.headless.tests.ear.operations; +import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.util.ArrayList; import java.util.Arrays; @@ -51,6 +52,8 @@ import org.eclipse.jst.j2ee.internal.project.facet.EARFacetProjectCreationDataModelProvider; import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities; import org.eclipse.jst.j2ee.project.facet.IJ2EEFacetInstallDataModelProperties; +import org.eclipse.jst.j2ee.project.facet.IJavaUtilityProjectCreationDataModelProperties; +import org.eclipse.jst.j2ee.project.facet.JavaUtilityProjectCreationDataModelProvider; import org.eclipse.wst.common.componentcore.ComponentCore; import org.eclipse.wst.common.componentcore.datamodel.properties.IAddReferenceDataModelProperties; import org.eclipse.wst.common.componentcore.datamodel.properties.ICreateReferenceComponentsDataModelProperties; @@ -60,6 +63,8 @@ import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent; import org.eclipse.wst.common.componentcore.internal.resources.VirtualReference; import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; +import org.eclipse.wst.common.componentcore.resources.IVirtualFile; +import org.eclipse.wst.common.componentcore.resources.IVirtualFolder; import org.eclipse.wst.common.componentcore.resources.IVirtualReference; import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory; import org.eclipse.wst.common.frameworks.datamodel.IDataModel; @@ -453,6 +458,86 @@ } } + public void testEAR50_NestedUtil_WithVariableReference() throws Exception{ + IDataModel dm = getEARDataModel("zEAR", "zContent", null, null, JavaEEFacetConstants.EAR_5, false); + OperationTestCase.runAndVerify(dm); + IProject earProj = ResourcesPlugin.getWorkspace().getRoot().getProject("zEAR"); + + IDataModel dm2 = getUtilityProjectCreationDataModel("nestedUtil", "zEAR"); + OperationTestCase.runAndVerify(dm2); + IProject utilProj = ResourcesPlugin.getWorkspace().getRoot().getProject("nestedUtil"); + + IVirtualComponent vc = ComponentCore.createComponent(utilProj); + addArchiveComponent(vc); + + IModule module = ServerUtil.getModule(utilProj); + assertNotNull(module); + ModuleDelegate md = (ModuleDelegate)module.loadAdapter(ModuleDelegate.class, new NullProgressMonitor()); + IModuleResource[] resources = md.members(); + + // ensure a 'lib' is found + IModuleResource lib = null; + for( int i = 0; i < resources.length; i++ ) { + if( resources[i].getName().equals("lib")) { + lib = resources[i]; + break; + } + } + assertNotNull(lib); + assertTrue(lib instanceof IModuleFolder); + IModuleResource[] libs = ((IModuleFolder)lib).members(); + assertNotNull(libs); + assertTrue(libs.length == 1); + assertTrue(libs[0] instanceof IModuleFile); + IModuleFile junitjar = (IModuleFile)libs[0]; + assertEquals("junit.jar", junitjar.getName()); + } + + /** + * Creates and returns a utility project DM provider with the given name and of the given version. + * If earName is not null then util project will be added to the EAR with earName + * + * @param projName name of the project to create + * @param earName name of the ear to add the project too, if NULL then don't add to an EAR + * @param version version of Application Client to use + * @return a Utility Project Data Model with the appropriate properties set + */ + public static IDataModel getUtilityProjectCreationDataModel(String projName, String earName){ + IDataModel dm = DataModelFactory.createDataModel(new JavaUtilityProjectCreationDataModelProvider()); + dm.setProperty(IJavaUtilityProjectCreationDataModelProperties.PROJECT_NAME, projName); + dm.setProperty(IJavaUtilityProjectCreationDataModelProperties.SOURCE_FOLDER, "src"); + if(earName != null) { + dm.setProperty(IJavaUtilityProjectCreationDataModelProperties.EAR_PROJECT_NAME, earName); + } + return dm; + } + + public void testEAR_HardDeploymentMapping() throws Exception { + IDataModel dm = getEARDataModel("hardEAR", "ourContent", null, null, JavaEEFacetConstants.EAR_5, false); + OperationTestCase.runAndVerify(dm); + IProject p = ResourcesPlugin.getWorkspace().getRoot().getProject("hardEAR"); + IFolder f = p.getFolder("test"); + f.create(true, true, new NullProgressMonitor()); + IFile file = f.getFile("silly.txt"); + file.create(new ByteArrayInputStream("Silly String".getBytes()), true, new NullProgressMonitor()); + + IVirtualComponent earComp = ComponentCore.createComponent(p); + IVirtualFolder rootFolder = earComp.getRootFolder(); + IVirtualFile vfile = rootFolder.getFile(new Path("out/notsilly.txt")); + vfile.createLink(new Path("test/silly.txt"), 0, new NullProgressMonitor()); + + IModule module = ServerUtil.getModule(p); + assertNotNull(module); + ModuleDelegate md = (ModuleDelegate)module.loadAdapter(ModuleDelegate.class, new NullProgressMonitor()); + IModuleResource[] resources = md.members(); + assertTrue(resources.length == 1); + assertTrue(resources[0].getName().equals("out")); + IModuleFolder mf = (IModuleFolder)resources[0]; + IModuleResource[] children = mf.members(); + assertTrue(children.length == 1); + assertTrue(children[0].getName().equals("notsilly.txt")); + } + public void testEARWithJarInLibFolder() throws Exception { IDataModel dm = getEARDataModel("qEAR", "ourContent", null, null, JavaEEFacetConstants.EAR_5, false); OperationTestCase.runAndVerify(dm);