[297653]  the major implementation of converting j2ee deployment to the new flat virtual component APIs
diff --git a/tests/org.eclipse.jst.j2ee.tests/.classpath b/tests/org.eclipse.jst.j2ee.tests/.classpath
index b757e3d..a13b1ce 100644
--- a/tests/org.eclipse.jst.j2ee.tests/.classpath
+++ b/tests/org.eclipse.jst.j2ee.tests/.classpath
@@ -5,6 +5,7 @@
 	<classpathentry kind="src" path="savestrategy-tests"/>
 	<classpathentry kind="src" path="j2ee-tests"/>
 	<classpathentry kind="src" path="j2ee-verifiers"/>
+	<classpathentry kind="src" path="exportmodel-tests"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/tests/org.eclipse.jst.j2ee.tests/defect-tests/org/eclipse/jst/j2ee/defect/tests/DefectVerificationTests.java b/tests/org.eclipse.jst.j2ee.tests/defect-tests/org/eclipse/jst/j2ee/defect/tests/DefectVerificationTests.java
index 3593f59..d0e8219 100644
--- a/tests/org.eclipse.jst.j2ee.tests/defect-tests/org/eclipse/jst/j2ee/defect/tests/DefectVerificationTests.java
+++ b/tests/org.eclipse.jst.j2ee.tests/defect-tests/org/eclipse/jst/j2ee/defect/tests/DefectVerificationTests.java
@@ -416,7 +416,7 @@
 		
 		IVirtualComponent earComponent = ComponentCore.createComponent(J2EEProjectUtilities.getProject("149995"));
 		IVirtualResource [] members = earComponent.getRootFolder().members();
-		Assert.assertEquals(1, members.length);
+		Assert.assertEquals(5, members.length);
 		
 		setUp();
 		
@@ -427,7 +427,7 @@
 		
 		earComponent = ComponentCore.createComponent(J2EEProjectUtilities.getProject("149995"));
 		members = earComponent.getRootFolder().members();
-		Assert.assertEquals(1, members.length);
+		Assert.assertEquals(5, members.length);
 	}	
 		
 	/**
diff --git a/tests/org.eclipse.jst.j2ee.tests/exportmodel-tests/org/eclipse/wtp/j2ee/headless/tests/exportmodel/ExportModelTest.java b/tests/org.eclipse.jst.j2ee.tests/exportmodel-tests/org/eclipse/wtp/j2ee/headless/tests/exportmodel/ExportModelTest.java
new file mode 100644
index 0000000..55685e3
--- /dev/null
+++ b/tests/org.eclipse.jst.j2ee.tests/exportmodel-tests/org/eclipse/wtp/j2ee/headless/tests/exportmodel/ExportModelTest.java
@@ -0,0 +1,212 @@
+package org.eclipse.wtp.j2ee.headless.tests.exportmodel;
+
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.datamodel.properties.ICreateReferenceComponentsDataModelProperties;
+import org.eclipse.wst.common.componentcore.internal.ComponentResource;
+import org.eclipse.wst.common.componentcore.internal.StructureEdit;
+import org.eclipse.wst.common.componentcore.internal.WorkbenchComponent;
+import org.eclipse.wst.common.componentcore.internal.flat.FilterResourceParticipant;
+import org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent;
+import org.eclipse.wst.common.componentcore.internal.flat.IFlatFolder;
+import org.eclipse.wst.common.componentcore.internal.flat.IFlatResource;
+import org.eclipse.wst.common.componentcore.internal.flat.IFlatVirtualComponent;
+import org.eclipse.wst.common.componentcore.internal.flat.IFlattenParticipant;
+import org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.FlatComponentTaskModel;
+import org.eclipse.wst.common.componentcore.internal.operation.CreateReferenceComponentsDataModelProvider;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider;
+import org.eclipse.wst.common.tests.OperationTestCase;
+import org.eclipse.wtp.j2ee.headless.tests.ear.operations.EARProjectCreationOperationTest;
+import org.eclipse.wtp.j2ee.headless.tests.j2ee.operations.JavaEEFacetConstants;
+
+public class ExportModelTest extends TestCase {
+    public void testSimpleExportModel() throws Exception{
+    	IDataModel dm = EARProjectCreationOperationTest.getEARDataModel("aEAR", null, null, null, JavaEEFacetConstants.EAR_5, true);
+    	OperationTestCase.runAndVerify(dm);
+    	IProject p = ResourcesPlugin.getWorkspace().getRoot().getProject("aEAR");
+    	assertTrue(p.exists());
+    	runVerify(p);
+    	assertEquals(2, countRecurse(p));
+    	p.getFolder("garbage").create(true, true, null);
+    	runVerify(p);
+    	assertEquals(2, countRecurse(p));
+    	IFile f = p.getFile(new Path("garbage/file.txt"));
+    	f.create(new ByteArrayInputStream("hello".getBytes()), true, null);
+    	runVerify(p);
+    	assertEquals(2, countRecurse(p));
+    	IFile f2 = p.getFile(new Path("EarContent/file.txt"));
+    	f2.create(new ByteArrayInputStream("hello2".getBytes()), true, null);
+    	runVerify(p);
+    	assertEquals(3, countRecurse(p));
+    	addMapping(p, new Path("/garbage"), new Path("some/output"));
+    	assertEquals(6, countRecurse(p)); // (added some, some/output, and some/output/file.txt)
+    	p.delete(true, null);
+    }
+    
+    public void testConsumesExportModel() throws Exception{
+    	IDataModel dm = EARProjectCreationOperationTest.getEARDataModel("bEAR", null, null, null, JavaEEFacetConstants.EAR_5, true);
+    	OperationTestCase.runAndVerify(dm);
+    	IProject ear = ResourcesPlugin.getWorkspace().getRoot().getProject("bEAR");
+    	assertTrue(ear.exists());
+    	runVerify(ear);
+    	assertEquals(2, countRecurse(ear));
+    	IVirtualComponent earComponent = ComponentCore.createComponent(ear);
+    	IProject pojp = ResourcesPlugin.getWorkspace().getRoot().getProject("pojp");
+    	pojp.create(null);
+    	assertTrue(pojp.exists());
+    	pojp.open(null);
+    	IFile pojpTxt = pojp.getFile(new Path("pojp.txt"));
+    	pojpTxt.create(new ByteArrayInputStream("pojp".getBytes()), true, null);
+    	assertTrue(pojpTxt.exists());
+    	assertEquals(2, countRecurse(ear));
+    	TestExportVirtualComponent pojpComponent = new TestExportVirtualComponent(pojpTxt);
+    	addReference(earComponent, pojpComponent, "path/to", "");
+    	assertEquals(5, countRecurse(ear)); // META-INF, META-INF/application.xml, path, path/to, path/to/pojp.txt
+    	ear.delete(true, null);
+    	pojp.delete(true, null);
+    }
+    
+	protected void addReference(IVirtualComponent parent, IVirtualComponent child, 
+			String path, String archiveName) throws CoreException {
+		IDataModelProvider provider = new CreateReferenceComponentsDataModelProvider();
+		IDataModel dm = DataModelFactory.createDataModel(provider);
+		
+		dm.setProperty(ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT, parent);
+		dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST, Arrays.asList(child));
+		
+		//[Bug 238264] the uri map needs to be manually set correctly
+		Map<IVirtualComponent, String> uriMap = new HashMap<IVirtualComponent, String>();
+		uriMap.put(child, archiveName);
+		dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_TO_URI_MAP, uriMap);
+        dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_DEPLOY_PATH, path);
+
+		IStatus stat = dm.validateProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST);
+		if (!stat.isOK())
+			throw new CoreException(stat);
+		try {
+			dm.getDefaultOperation().execute(new NullProgressMonitor(), null);
+		} catch (ExecutionException e) {
+		}	
+	}
+    
+    public void testSuffixFilterExportModel() throws Exception{
+    	IDataModel dm = EARProjectCreationOperationTest.getEARDataModel("aEAR", null, null, null, JavaEEFacetConstants.EAR_5, true);
+    	OperationTestCase.runAndVerify(dm);
+    	IProject p = ResourcesPlugin.getWorkspace().getRoot().getProject("aEAR");
+    	assertTrue(p.exists());
+    	runVerify(p);
+    	assertEquals(2, countRecurse(p));
+    	IFile f = p.getFile(new Path("EarContent/file.txt"));
+    	f.create(new ByteArrayInputStream("hello".getBytes()), true, null);
+    	IFile f2 = p.getFile(new Path("EarContent/file.java"));
+    	f2.create(new ByteArrayInputStream("hello2".getBytes()), true, null);
+    	runVerify(p);
+    	assertEquals(4, countRecurse(p));
+    	assertEquals(4, countRecurse(p, FilterResourceParticipant.createSuffixFilterParticipant(new String[]{})));
+    	assertEquals(3, countRecurse(p, FilterResourceParticipant.createSuffixFilterParticipant(new String[]{".txt"})));
+    	assertEquals(3, countRecurse(p, FilterResourceParticipant.createSuffixFilterParticipant(new String[]{".java"})));
+    	assertEquals(2, countRecurse(p, FilterResourceParticipant.createSuffixFilterParticipant(new String[]{".java", ".txt"})));
+    	assertEquals(1, countRecurse(p, FilterResourceParticipant.createSuffixFilterParticipant(new String[]{".java", ".txt", ".xml"})));
+    }
+    
+    protected static void runVerify(IProject p) throws Exception {
+    	IVirtualComponent component = ComponentCore.createComponent(p);
+    	assertTrue(component.exists());
+    	IFlatVirtualComponent model = new FlatVirtualComponent(component);
+    	IFlatResource[] resources = model.fetchResources();
+    	ComponentResource[] mappings = getMappings(p);
+    	verifyMappingsAndOutput(p, resources, mappings);
+    }
+    
+    protected static int countRecurse(IProject p) throws Exception {
+    	IVirtualComponent component = ComponentCore.createComponent(p);
+    	assertTrue(component.exists());
+    	IFlatVirtualComponent model = new FlatVirtualComponent(component);
+    	IFlatResource[] resources = model.fetchResources();
+    	return countRecurse(resources);
+    }
+    
+    protected static int countRecurse(IProject p, IFlattenParticipant participant) throws Exception {
+    	IVirtualComponent component = ComponentCore.createComponent(p);
+    	assertTrue(component.exists());
+    	FlatComponentTaskModel tm = new FlatComponentTaskModel();
+    	tm.put(IFlatVirtualComponent.PARTICIPANT_LIST, participant);
+    	IFlatVirtualComponent model = new FlatVirtualComponent(component, tm);
+    	IFlatResource[] resources = model.fetchResources();
+    	return countRecurse(resources);
+    }
+    
+    
+    
+    protected static int countRecurse(IFlatResource[] resources) {
+    	int count = 0;
+    	for( int i = 0; i < resources.length; i++ ) {
+    		if( resources[i] != null ) {
+    			count++;
+    			if( resources[i] instanceof IFlatFolder)
+    				count += countRecurse(((IFlatFolder)resources[i]).members());
+    		}
+    	}
+    	return count;
+    }
+    
+    protected static void verifyMappingsAndOutput(IProject p, IFlatResource[] resources, ComponentResource[] mappings) {
+    	for( int i = 0; i < resources.length; i++ ) {
+    		IPath deployPath = resources[i].getModuleRelativePath().append(resources[i].getName());
+    		IResource workspaceResource = (IResource)resources[i].getAdapter(IResource.class);
+    		IPath workspacePath = workspaceResource.getFullPath();
+    		assertNotNull(workspaceResource);
+    		boolean found = false;
+    		for( int j = 0; j < mappings.length && !found; j++ ) {
+    			IPath tmp = new Path(p.getName()).makeAbsolute().append(mappings[j].getSourcePath()).append(deployPath);
+    			found |= (tmp.equals(workspacePath));
+    		}
+    		assertTrue(found);
+    		if( resources[i] instanceof IFlatFolder)
+    			verifyMappingsAndOutput(p, ((IFlatFolder)resources[i]).members(), mappings);
+    	}
+    }
+    
+    protected static ComponentResource[] getMappings(IProject project) {
+		StructureEdit structureEdit = null;
+		structureEdit = StructureEdit.getStructureEditForRead(project);
+		WorkbenchComponent component = structureEdit.getComponent();
+		EList list = component.getResources();
+		List<ComponentResource> newList = new ArrayList<ComponentResource>();
+		for(Iterator i = list.iterator(); i.hasNext();) {
+			newList.add((ComponentResource)i.next());
+		}
+		return (ComponentResource[]) newList.toArray(new ComponentResource[newList
+				.size()]);
+    }
+    
+    protected static void addMapping(IProject project, IPath src, IPath runtime) throws CoreException {
+    	IVirtualComponent vc = ComponentCore.createComponent(project);
+    	IVirtualFolder vf = vc.getRootFolder();
+    	vf.getFolder(runtime).createLink(src, 0, null);
+    }
+}
diff --git a/tests/org.eclipse.jst.j2ee.tests/exportmodel-tests/org/eclipse/wtp/j2ee/headless/tests/exportmodel/TestExportReferenceResolver.java b/tests/org.eclipse.jst.j2ee.tests/exportmodel-tests/org/eclipse/wtp/j2ee/headless/tests/exportmodel/TestExportReferenceResolver.java
new file mode 100644
index 0000000..8b1de0e
--- /dev/null
+++ b/tests/org.eclipse.jst.j2ee.tests/exportmodel-tests/org/eclipse/wtp/j2ee/headless/tests/exportmodel/TestExportReferenceResolver.java
@@ -0,0 +1,66 @@
+package org.eclipse.wtp.j2ee.headless.tests.exportmodel;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.internal.ComponentcorePackage;
+import org.eclipse.wst.common.componentcore.internal.DependencyType;
+import org.eclipse.wst.common.componentcore.internal.ReferencedComponent;
+import org.eclipse.wst.common.componentcore.internal.impl.PlatformURLModuleConnection;
+import org.eclipse.wst.common.componentcore.resolvers.IReferenceResolver;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+
+public class TestExportReferenceResolver implements IReferenceResolver {
+	private static final String FIRST_SEGMENT = "org.eclipse.wtp.j2ee.exportTestResolver";
+	public static final String PROTOCOL = PlatformURLModuleConnection.MODULE_PROTOCOL
+		+IPath.SEPARATOR + FIRST_SEGMENT + IPath.SEPARATOR;
+
+	public boolean canResolve(IVirtualReference reference) {
+		if( reference.getReferencedComponent() 
+				instanceof TestExportVirtualComponent )
+			return true;
+		return false;
+	}
+
+	public ReferencedComponent resolve(IVirtualReference reference) {
+		TestExportVirtualComponent vc = (TestExportVirtualComponent)reference.getReferencedComponent();
+        ReferencedComponent rc = ComponentcorePackage.eINSTANCE.getComponentcoreFactory().createReferencedComponent();
+        rc.setArchiveName(reference.getArchiveName());
+        rc.setRuntimePath(reference.getRuntimePath());
+        rc.setHandle(URI.createURI(PROTOCOL + vc.getFullPath().toString()));
+        rc.setDependencyType(DependencyType.CONSUMES_LITERAL);
+        return rc;
+	}
+
+	public boolean canResolve(IVirtualComponent context,
+			ReferencedComponent referencedComponent) {
+		URI uri = referencedComponent.getHandle();
+		if( uri.segmentCount() >= 1 && FIRST_SEGMENT.equals(uri.segment(0))) 
+			return true;
+		return false;
+	}
+
+	public IVirtualReference resolve(IVirtualComponent context,
+			ReferencedComponent referencedComponent) {
+		URI uri = referencedComponent.getHandle();
+		if( uri.segmentCount() >= 1 && FIRST_SEGMENT.equals(uri.segment(0))) {
+			String path = uri.toString().substring(PROTOCOL.length());
+			IPath filePath = new Path(path);
+			IProject proj = ResourcesPlugin.getWorkspace().getRoot().getProject(filePath.segment(0));
+			IFile f = proj.getFile(filePath.removeFirstSegments(1));
+            IVirtualReference ref = ComponentCore.createReference(context, 
+            		new TestExportVirtualComponent(f));
+            ref.setArchiveName(referencedComponent.getArchiveName());
+            ref.setRuntimePath(referencedComponent.getRuntimePath());
+            ref.setDependencyType(referencedComponent.getDependencyType().getValue());
+            return ref;
+		}
+		return null;
+	}
+
+}
diff --git a/tests/org.eclipse.jst.j2ee.tests/exportmodel-tests/org/eclipse/wtp/j2ee/headless/tests/exportmodel/TestExportVirtualComponent.java b/tests/org.eclipse.jst.j2ee.tests/exportmodel-tests/org/eclipse/wtp/j2ee/headless/tests/exportmodel/TestExportVirtualComponent.java
new file mode 100644
index 0000000..c277522
--- /dev/null
+++ b/tests/org.eclipse.jst.j2ee.tests/exportmodel-tests/org/eclipse/wtp/j2ee/headless/tests/exportmodel/TestExportVirtualComponent.java
@@ -0,0 +1,45 @@
+package org.eclipse.wtp.j2ee.headless.tests.exportmodel;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.wst.common.componentcore.internal.resources.VirtualComponent;
+import org.eclipse.wst.common.componentcore.internal.resources.VirtualFile;
+import org.eclipse.wst.common.componentcore.internal.resources.VirtualFolder;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
+import org.eclipse.wst.common.componentcore.resources.IVirtualResource;
+
+public class TestExportVirtualComponent extends VirtualComponent {
+	private IFile file;
+	public TestExportVirtualComponent(IFile file) {
+		super(file.getProject(), new Path(""));
+		this.file = file;
+	}
+
+	public boolean exists() { 
+		return true;
+	}
+
+	public IPath getFullPath() {
+		return file.getFullPath();
+	}
+	public IVirtualFolder getRootFolder() {
+		return new TestExportVirtualFolder(file.getProject());
+	}
+	
+	public class TestExportVirtualFolder extends VirtualFolder {
+		public TestExportVirtualFolder(IProject aComponentProject) {
+			super(aComponentProject, new Path("/"));
+		}
+		
+		public IVirtualResource[] members(int memberFlags) throws CoreException {
+			return new IVirtualResource[] { 
+					new VirtualFile(file.getProject(), new Path("inside"), file)
+			};
+		}
+
+	}
+
+}
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/classpath/tests/ClasspathDependencyEARTests.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/classpath/tests/ClasspathDependencyEARTests.java
index d1f336e..277673d 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/classpath/tests/ClasspathDependencyEARTests.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/classpath/tests/ClasspathDependencyEARTests.java
@@ -42,8 +42,8 @@
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.server.core.IModule;
 import org.eclipse.wst.server.core.model.IModuleFile;
+import org.eclipse.wst.server.core.model.IModuleFolder;
 import org.eclipse.wst.server.core.model.IModuleResource;
-import org.eclipse.wst.server.core.util.ModuleFolder;
 import org.eclipse.wst.server.core.util.ProjectModule;
 
 import junit.framework.Test;
@@ -262,7 +262,7 @@
 				String name = moduleMembers[i].getName();
 				if (name.equals("META-INF")) {
 					foundMetaInf = true;
-					IModuleResource manifestResource= ((ModuleFolder)moduleMembers[i]).members()[0];
+					IModuleResource manifestResource= ((IModuleFolder)moduleMembers[i]).members()[0];
 					assertTrue(manifestResource.getModuleRelativePath().toString().equals("META-INF"));
 					assertTrue("Expected MANIFEST.MF, got " + manifestResource.getName(), manifestResource.getName().equals("MANIFEST.MF"));
 					java.io.File manifestFile = (java.io.File) manifestResource.getAdapter(java.io.File.class);
@@ -321,10 +321,10 @@
 			foundTest = false;
 			for (int i=0; i< moduleMembers.length; i++) {
 				if (moduleMembers[i].getName().equals("WEB-INF")) {
-					IModuleResource[] webinfMembers = ((ModuleFolder)moduleMembers[i]).members();
+					IModuleResource[] webinfMembers = ((IModuleFolder)moduleMembers[i]).members();
 					for (int j = 0; j < webinfMembers.length; j++) {
 						if (webinfMembers[j].getName().equals("classes")) {
-							IModuleResource[] classesMembers = ((ModuleFolder)webinfMembers[j]).members();
+							IModuleResource[] classesMembers = ((IModuleFolder)webinfMembers[j]).members();
 							if (classesMembers.length > 0) {
 								IModuleResource test = classesMembers[0];
 								if (test.getName().equals("test") && test.getModuleRelativePath().equals(new Path("WEB-INF/classes")) && test instanceof IModuleFile) {
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/flexible/project/fvtests/WebDeployTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/flexible/project/fvtests/WebDeployTest.java
index b4f7078..2b5ffac 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/flexible/project/fvtests/WebDeployTest.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/flexible/project/fvtests/WebDeployTest.java
@@ -12,6 +12,8 @@
 
 import java.io.IOException;
 import java.net.URL;
+import java.util.Arrays;
+import java.util.List;
 
 import junit.framework.Test;
 import junit.framework.TestCase;
@@ -28,8 +30,8 @@
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.model.IModuleFolder;
 import org.eclipse.wst.server.core.model.IModuleResource;
-import org.eclipse.wst.server.core.util.ModuleFolder;
 import org.eclipse.wtp.j2ee.headless.tests.plugin.HeadlessTestsPlugin;
 
 public class WebDeployTest extends TestCase {
@@ -55,25 +57,26 @@
 			for (int i=0; i<members.length; i++) {
 				String name = members[i].getName();
 				if (name.equals("META-INF")) {
-					IModuleResource manifest = ((ModuleFolder)members[i]).members()[0];
+					IModuleResource manifest = ((IModuleFolder)members[i]).members()[0];
 					assertTrue(manifest.getModuleRelativePath().toString().equals("META-INF"));
 					assertTrue(manifest.getName().equals("MANIFEST.MF"));
 					
 				} else if (name.equals("WEB-INF")) {
-					IModuleResource[] webInf = ((ModuleFolder)members[i]).members();
+					IModuleResource[] webInf = ((IModuleFolder)members[i]).members();
 					assertTrue(webInf.length==3);
 					for (int j=0; j<webInf.length; j++) {
 						IModuleResource webResource = webInf[j];
 						assertTrue(webResource.getModuleRelativePath().toString().equals("WEB-INF"));
 						if (webResource.getName().equals("lib")){
-							IModuleResource[] webresMembers = ((ModuleFolder)webResource).members();
-							{//finds only smokeEJB.jar here...
-								assertTrue(webresMembers.length==2);
-								//Check that the names match the 3 names we expect
-								for (int k = 0; k < webresMembers.length; k++){
-									String localName = webresMembers[k].getName();
-									assertTrue	(localName.equals("SmokeEJB.jar") || localName.equals("AutoWorldEJB512.jar"));
-								}
+							IModuleResource[] webresMembers = ((IModuleFolder)webResource).members();
+							{
+								//finds only smokeEJB.jar here...
+								assertTrue(webresMembers.length==0);
+//								//Check that the names match the 3 names we expect
+//								for (int k = 0; k < webresMembers.length; k++){
+//									String localName = webresMembers[k].getName();
+//									assertTrue	(localName.equals("SmokeEJB.jar") || localName.equals("AutoWorldEJB512.jar"));
+//								}
 							}
 						}
 					}
@@ -84,10 +87,20 @@
 			// on the manifest but web lib projects
 			
 			IModule[] childModules = deployable.getChildModules();
-			// TODO temporary remove assert, possible linux issue, investigate
-			//assertTrue(childModules.length==3);
+			assertEquals(6, childModules.length);
+			List childURIs = Arrays.asList(new String[] {
+					"WEB-INF/lib/SmokeEJB.jar",
+					"WEB-INF/lib/TestWebLibProject.jar",
+					"WEB-INF/lib/AutoWorldEJB512.jar",
+					"TestDeployUtil.jar",
+					"MyCoEJB.jar",
+					"customerEjb.jar"
+			});
+			
 			for (int l = 0; l < childModules.length; l++){
-				assertTrue(childModules[l].getName().equals("TestWebLibProject"));
+				String uri = deployable.getURI(childModules[l]);
+				if( !childURIs.contains(uri)) 
+					fail("URI " + uri + " is not an expected child module uri result");
 			}
 			
 		} catch (CoreException e) {
diff --git a/tests/org.eclipse.jst.j2ee.tests/plugin.xml b/tests/org.eclipse.jst.j2ee.tests/plugin.xml
index 896de1a..5da2b7a 100644
--- a/tests/org.eclipse.jst.j2ee.tests/plugin.xml
+++ b/tests/org.eclipse.jst.j2ee.tests/plugin.xml
@@ -36,6 +36,13 @@
             class="org.eclipse.jst.j2ee.bindingshelper.tests.BarBindingsHelper"
             id="org.eclipse.jst.j2ee.bindingshelper.tests.barBindingsHelper"/>
    </extension>
+   <extension
+         point="org.eclipse.wst.common.modulecore.referenceResolver">
+      <resolver
+            class="org.eclipse.wtp.j2ee.headless.tests.exportmodel.TestExportReferenceResolver"
+            id="org.eclipse.jst.j2ee.tests.resolver1">
+      </resolver>
+   </extension>
    
 
 </plugin>