### Eclipse Workspace Patch 1.0
#P org.jboss.ide.eclipse.as.core
Index: jbosscore/org/jboss/ide/eclipse/as/core/publishers/LocalPublishMethod.java
===================================================================
--- jbosscore/org/jboss/ide/eclipse/as/core/publishers/LocalPublishMethod.java	(revision 41709)
+++ jbosscore/org/jboss/ide/eclipse/as/core/publishers/LocalPublishMethod.java	(working copy)
@@ -33,13 +33,25 @@
 	public IPublishCopyCallbackHandler getCallbackHandler(IPath path, IServer server) {
 		IDeployableServer ds = ServerConverter.getDeployableServer(server);
 		String tempDeployPath = ds.getTempDeployFolder();
-		LocalCopyCallback handler = new LocalCopyCallback(server, 
-				path, new Path(tempDeployPath));
+		return getCallbackHandler(path, new Path(tempDeployPath), server);
+	}
+	
+	public IPublishCopyCallbackHandler getCallbackHandler(IPath deployPath,
+			IPath tmpFolder, IServer server) {
+		LocalCopyCallback handler = new LocalCopyCallback(
+				server, deployPath, tmpFolder);
 		return handler;
 	}
 
+
 	public String getPublishDefaultRootFolder(IServer server) {
 		IDeployableServer s = ServerConverter.getDeployableServer(server);
 		return s.getDeployFolder();
 	}
+
+	public String getPublishDefaultRootTempFolder(IServer server) {
+		IDeployableServer s = ServerConverter.getDeployableServer(server);
+		return s.getTempDeployFolder();
+	}
+
 }
Index: jbosscore/org/jboss/ide/eclipse/as/core/publishers/AbstractServerToolsPublisher.java
===================================================================
--- jbosscore/org/jboss/ide/eclipse/as/core/publishers/AbstractServerToolsPublisher.java	(revision 41709)
+++ jbosscore/org/jboss/ide/eclipse/as/core/publishers/AbstractServerToolsPublisher.java	(working copy)
@@ -134,6 +134,11 @@
 		return PublishUtil.getDeployPath(publishMethod, moduleTree, server);
 	}
 
+	protected IPath getTempDeployPath(IModule[] moduleTree, IDeployableServer server) {
+		return PublishUtil.getTempDeployPath(publishMethod, moduleTree, server);
+	}
+
+
 	/**
 	 * Gets the actual deploy path for this module's parent
 	 * Given modules *MUST* be of length 2 or more
@@ -167,10 +172,15 @@
 	protected void finishPublish(int publishType, IModule[] moduleTree, IDeployableServer server, IProgressMonitor monitor){
 	}
 	
+	
 	protected IPublishCopyCallbackHandler getCallbackHandler(IPath path) {
 		return publishMethod.getCallbackHandler(path, server.getServer());
 	}
-	
+
+	protected IPublishCopyCallbackHandler getCallbackHandler(IPath deployPath, IPath tempDeployPath) {
+		return publishMethod.getCallbackHandler(deployPath, tempDeployPath, server.getServer());
+	}
+
 	/**
 	 * For certain module trees, some publishers may want to force a child to be zipped.
 	 * For example, JST Publisher may want to force utility project children to be zipped.
@@ -191,7 +201,11 @@
 		Trace.trace(Trace.STRING_FINER, "Begin Handling a full publish for module " + module.getName()); //$NON-NLS-1$
 
 		IPath deployPath = getDeployPath(moduleTree, server);
-		IPublishCopyCallbackHandler callback = getCallbackHandler(getRootPath(deployPath).append(deployPath));
+		IPath dPathSafe = getRootPath(deployPath).append(deployPath);
+		IPath tempDeployPath = getTempDeployPath(moduleTree, server);
+		IPath dTempPathSafe = getRootPath(tempDeployPath).append(tempDeployPath);
+		
+		IPublishCopyCallbackHandler callback = getCallbackHandler(dPathSafe, dTempPathSafe);
 		IModuleResource[] members = PublishUtil.getResources(module, getSubMon(monitor, 200));
  
 		if( monitor.isCanceled())
@@ -393,11 +407,16 @@
 		monitor.beginTask("Copying Child Module: " + moduleTree[moduleTree.length-1].getName(), 100); //$NON-NLS-1$
 		try {
 			IPath destinationPath = getDeployPath(moduleTree, server);
+			IPath tempDeployPath = getTempDeployPath(moduleTree, server);
 			IPath destinationFolder = destinationPath.removeLastSegments(1);
+			IPath tempDeployFolder = tempDeployPath.removeLastSegments(1);
+			IPath safeDest = getRootPath(destinationFolder).append(destinationFolder);
+			IPath safeTempDest = getRootPath(tempDeployFolder).append(tempDeployFolder);
+			
 			IModuleResource[] members = PublishUtil.getResources(moduleTree);
 			File source = PublishUtil.getFile(members[0]);
 			if( source != null ) {
-				IPublishCopyCallbackHandler handler = getCallbackHandler(getRootPath(destinationFolder).append(destinationFolder));
+				IPublishCopyCallbackHandler handler = getCallbackHandler(safeDest, safeTempDest);
 				IPath localFilePath = new Path(source.getAbsolutePath());
 				ModuleFile mf = new ModuleFile(localFilePath.toFile(), localFilePath.lastSegment(), localFilePath);
 				handler.copyFile(mf, new Path(destinationPath.lastSegment()), new NullProgressMonitor());
Index: jbosscore/org/jboss/ide/eclipse/as/core/server/IJBossServerPublishMethod.java
===================================================================
--- jbosscore/org/jboss/ide/eclipse/as/core/server/IJBossServerPublishMethod.java	(revision 41709)
+++ jbosscore/org/jboss/ide/eclipse/as/core/server/IJBossServerPublishMethod.java	(working copy)
@@ -34,7 +34,30 @@
 	 */
 	public int publishModule(DeployableServerBehavior behaviour, int kind, int deltaKind, IModule[] module, IProgressMonitor monitor) throws CoreException;
 
-	// Methods moved from publishers into the publish method
-	public IPublishCopyCallbackHandler getCallbackHandler(IPath path, IServer server);
+	/**
+	 * Create a callback handler with the given deploy path and server.
+	 * Use a default temporary folder as provided by the server's settings
+	 */
+	public IPublishCopyCallbackHandler getCallbackHandler(IPath deployPath, IServer server);
+
+	/**
+	 * Create a callback handler with the given deploy path and server.
+	 * Use a default temporary folder as provided by the server's settings
+	 */
+	public IPublishCopyCallbackHandler getCallbackHandler(IPath deployPath, IPath tmpFolder, IServer server);
+
+	
+	/**
+	 * Get the default root deploy folder for this server
+	 * @param server
+	 * @return
+	 */
 	public String getPublishDefaultRootFolder(IServer server);
+
+	/**
+	 * Get the default root TEMP deploy folder for this server
+	 * @param server
+	 * @return
+	 */
+	public String getPublishDefaultRootTempFolder(IServer server);
 }
Index: jbosscore/org/jboss/ide/eclipse/as/core/util/DeploymentPreferenceLoader.java
===================================================================
--- jbosscore/org/jboss/ide/eclipse/as/core/util/DeploymentPreferenceLoader.java	(revision 41709)
+++ jbosscore/org/jboss/ide/eclipse/as/core/util/DeploymentPreferenceLoader.java	(working copy)
@@ -26,6 +26,7 @@
 import org.eclipse.wst.server.core.IModule;
 import org.eclipse.wst.server.core.IServer;
 import org.eclipse.wst.server.core.IServerAttributes;
+import org.eclipse.wst.server.core.IServerWorkingCopy;
 import org.eclipse.wst.server.core.internal.Server;
 import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
 import org.jboss.ide.eclipse.as.core.publishers.LocalPublishMethod;
@@ -64,6 +65,7 @@
 		return 	server.getAttribute(IDeployableServer.SERVER_MODE, defaultType);
 	}
 
+	@Deprecated
 	public static DeploymentPreferences loadPreferencesFromFile(IServer server) {
 		File f = getFile(server);
 		if( f.exists()) {
@@ -86,6 +88,7 @@
 		return new DeploymentPreferences(bis);
 	}
 
+	@Deprecated
 	public static void savePreferences(IServer server, DeploymentPreferences prefs) throws IOException {
 		File f = getFile(server);
 		prefs.getMemento().saveToFile(f.getAbsolutePath());
@@ -262,15 +265,19 @@
 	}
 	
 	public static void savePreferencesToServerWorkingCopy(ServerAttributeHelper helper, DeploymentPreferences prefs) {
+		savePreferencesToServerWorkingCopy(helper.getWorkingCopy(), prefs);
+	}
+	
+	public static void savePreferencesToServerWorkingCopy(IServerWorkingCopy wc, DeploymentPreferences prefs) {
 		try {
 			ByteArrayOutputStream bos = new ByteArrayOutputStream();
 			DeploymentPreferenceLoader.savePreferences(bos, prefs);
 			String asXML = new String(bos.toByteArray());
-			helper.setAttribute(DeploymentPreferenceLoader.DEPLOYMENT_PREFERENCES_KEY, asXML);
+			wc.setAttribute(DeploymentPreferenceLoader.DEPLOYMENT_PREFERENCES_KEY, asXML);
 		} catch(IOException ioe) {
 			// Should never happen since this is a simple byte array output stream
 			JBossServerCorePlugin.log(new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID,
-				"Could not save module deployment preferences to server " + helper.getServer().getName(), ioe)); //$NON-NLS-1$
+				"Could not save module deployment preferences to server " + wc.getOriginal().getName(), ioe)); //$NON-NLS-1$
 		}
 	}
 
Index: jbosscore/org/jboss/ide/eclipse/as/core/publishers/PublishUtil.java
===================================================================
--- jbosscore/org/jboss/ide/eclipse/as/core/publishers/PublishUtil.java	(revision 41709)
+++ jbosscore/org/jboss/ide/eclipse/as/core/publishers/PublishUtil.java	(working copy)
@@ -65,6 +65,8 @@
 	 * All preferences are stored in the "local" setting as it was decided
 	 * having to replicate deploy paths for each publish method was not good
 	 * 
+	 * This API should be renamed, as it actually gets a value stored at a property key
+	 * 
 	 * @param moduleTree
 	 * @param server
 	 * @param defaultFolder
@@ -77,6 +79,7 @@
 				server, defaultFolder, moduleProperty);
 	}
 	
+	/* This api should be renamed */
 	public static String getDeployRootFolder(IModule[] moduleTree, String publishMethod,
 			IDeployableServer server, String defaultFolder, String moduleProperty) {
 		String folder = defaultFolder;
@@ -208,6 +211,14 @@
 		return PublishUtil.getDeployPath(moduleTree, folder, server);
 	}
 
+	public static IPath getTempDeployPath(IJBossServerPublishMethod method, IModule[] moduleTree, IDeployableServer server) {
+		String defaultFolder = method.getPublishDefaultRootTempFolder(server.getServer());
+		String folder = PublishUtil.getDeployRootFolder(
+				moduleTree, server, defaultFolder,
+				IJBossToolingConstants.LOCAL_DEPLOYMENT_TEMP_LOC);
+		return PublishUtil.getDeployPath(moduleTree, folder, server);
+	}
+
 	public static String getSuffix(String type) {
 		// TODO
 		// VirtualReferenceUtilities.INSTANCE. has utility methods to help!!
#P org.jboss.ide.eclipse.as.rse.core
Index: src/org/jboss/ide/eclipse/as/rse/core/RSEPublishMethod.java
===================================================================
--- src/org/jboss/ide/eclipse/as/rse/core/RSEPublishMethod.java	(revision 41709)
+++ src/org/jboss/ide/eclipse/as/rse/core/RSEPublishMethod.java	(working copy)
@@ -215,6 +215,10 @@
 	public String getPublishDefaultRootFolder(IServer server) {
 		return getRemoteRootFolder().toString();
 	}
+	public String getPublishDefaultRootTempFolder(IServer server) {
+		// unsupported
+		return getPublishDefaultRootFolder(server);
+	}
 	
 	private void launchCommandNoResult(DelegatingServerBehavior behaviour, int delay, String command) {
 		Trace.trace(Trace.STRING_FINER, "Launching remote command: " + command);
@@ -226,4 +230,11 @@
 			ServerLogger.getDefault().log(behaviour.getServer(), ce.getStatus());
 		}
 	}
+
+	public IPublishCopyCallbackHandler getCallbackHandler(IPath deployPath,
+			IPath tmpFolder, IServer server) {
+		// Currently RSE support does not copy files to a temporary folder and then renameTo. 
+		// In fact, RSE support does not use any temporary folder at all. 
+		return getCallbackHandler(deployPath, server);
+	}
 }
#P org.jboss.ide.eclipse.as.test
Index: src/org/jboss/ide/eclipse/as/test/publishing/v2/MockPublishMethod.java
===================================================================
--- src/org/jboss/ide/eclipse/as/test/publishing/v2/MockPublishMethod.java	(revision 41709)
+++ src/org/jboss/ide/eclipse/as/test/publishing/v2/MockPublishMethod.java	(working copy)
@@ -28,27 +28,58 @@
 
 	public static final String PUBLISH_METHOD_ID = "mock";
 	public static final String MOCK_ROOT = "mockRoot";
+	public static final String MOCK_TEMP_ROOT = "mockTempRoot";
 	public static ArrayList<IPath> changed = new ArrayList<IPath>();
 	public static ArrayList<IPath> removed = new ArrayList<IPath>();
+	public static ArrayList<IPath> tempFiles = new ArrayList<IPath>();
 	public static ArrayList<IModuleFile> copiedFiles = new ArrayList<IModuleFile>();
 	
+	
+	protected static String expectedRoot = MOCK_ROOT;
+	protected static String expectedTempRoot = MOCK_TEMP_ROOT;
+	
 	public IPublishCopyCallbackHandler getCallbackHandler(IPath path,
 			IServer server) {
-		return new MockCopyCallbackHandler(path);
+		return new MockCopyCallbackHandler(path, null);
 	}
 
+	public IPublishCopyCallbackHandler getCallbackHandler(IPath deployPath,
+			IPath tmpFolder, IServer server) {
+		return new MockCopyCallbackHandler(deployPath, tmpFolder);
+	}
+
+	
 	public String getPublishDefaultRootFolder(IServer server) {
 		return "/" + MOCK_ROOT;
 	}
 
+	public String getPublishDefaultRootTempFolder(IServer server) {
+		return "/" + MOCK_TEMP_ROOT;
+	}
+	
+
+
+	
 	public String getPublishMethodId() {
 		return PUBLISH_METHOD_ID;
 	}
 	public static void reset() {
 		changed.clear();
 		removed.clear();
+		tempFiles.clear();
 		copiedFiles.clear();
+		expectedRoot = MOCK_ROOT;
+		expectedTempRoot = MOCK_TEMP_ROOT;
 	}
+	
+	public static void setExpectedRoot(String s) {
+		expectedRoot = s;
+	}
+
+	public static void setExpectedTempRoot(String s) {
+		expectedTempRoot = s;
+	}
+
 	public static IPath[] getRemoved() {
 		return (IPath[]) removed.toArray(new IPath[removed.size()]);
 	}
@@ -59,16 +90,24 @@
 	public static IPath[] getChanged() {
 		return (IPath[]) changed.toArray(new IPath[changed.size()]);
 	}
+	public static IPath[] getTempPaths() {
+		return (IPath[]) tempFiles.toArray(new IPath[tempFiles.size()]);
+	}
 
 
 	public class MockCopyCallbackHandler implements IPublishCopyCallbackHandler {
-		private IPath root;
-		public MockCopyCallbackHandler(IPath root) {
-			if( !(new Path(MOCK_ROOT).isPrefixOf(root))) {
+		private IPath root, tempRoot;
+		public MockCopyCallbackHandler(IPath root, IPath tempRoot) {
+			if( !(new Path(expectedRoot).isPrefixOf(root))) {
 				System.out.println("Expected " + new Path(MOCK_ROOT) + " but got: " + root.toString());
 				throw new RuntimeException("Unacceptable use of callback handler");
 			}
+			if( tempRoot != null && !(new Path(expectedTempRoot).isPrefixOf(tempRoot))) {
+				System.out.println("Expected " + new Path(MOCK_TEMP_ROOT) + " but got: " + root.toString());
+				throw new RuntimeException("Unacceptable use of callback handler");
+			}
 			this.root = root;
+			this.tempRoot = tempRoot;
 		}
 		
 		public IStatus[] deleteResource(IPath path, IProgressMonitor monitor)
@@ -102,6 +141,8 @@
 			IPath path2 = root.append(path);
 			if( !changed.contains(path2.makeRelative()))
 				changed.add(path2.makeRelative());
+			IPath tmpFile = (tempRoot == null ? root : tempRoot).append(path);
+			tempFiles.add(tmpFile);
 			copiedFiles.add(mf);
 			return new IStatus[]{};
 		}
Index: src/org/jboss/ide/eclipse/as/test/publishing/v2/JSTModuleDeployFoldersTest.java
===================================================================
--- src/org/jboss/ide/eclipse/as/test/publishing/v2/JSTModuleDeployFoldersTest.java	(revision 0)
+++ src/org/jboss/ide/eclipse/as/test/publishing/v2/JSTModuleDeployFoldersTest.java	(revision 0)
@@ -0,0 +1,135 @@
+/******************************************************************************* 
+ * Copyright (c) 2010 - 2011 Red Hat, Inc. 
+ * Distributed under license by Red Hat, Inc. All rights reserved. 
+ * This program is made available under the terms of the 
+ * Eclipse Public License v1.0 which accompanies this distribution, 
+ * and is available at http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ * Contributors: 
+ * Red Hat, Inc. - initial API and implementation 
+ ******************************************************************************/ 
+package org.jboss.ide.eclipse.as.test.publishing.v2;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+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.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IServerWorkingCopy;
+import org.eclipse.wst.server.core.ServerUtil;
+import org.jboss.ide.eclipse.as.core.publishers.LocalPublishMethod;
+import org.jboss.ide.eclipse.as.core.util.DeploymentPreferenceLoader;
+import org.jboss.ide.eclipse.as.core.util.IJBossToolingConstants;
+import org.jboss.ide.eclipse.as.core.util.DeploymentPreferenceLoader.DeploymentModulePrefs;
+import org.jboss.ide.eclipse.as.core.util.DeploymentPreferenceLoader.DeploymentPreferences;
+import org.jboss.ide.eclipse.as.test.publishing.AbstractDeploymentTest;
+import org.jboss.ide.eclipse.as.test.util.ServerRuntimeUtils;
+import org.jboss.ide.eclipse.as.test.util.wtp.JavaEEFacetConstants;
+import org.jboss.ide.eclipse.as.test.util.wtp.OperationTestCase;
+import org.jboss.ide.eclipse.as.test.util.wtp.ProjectCreationUtil;
+
+public class JSTModuleDeployFoldersTest extends AbstractJSTDeploymentTester {
+	protected String getModuleName() {
+		return super.getModuleName() + "JSTModuleDeployFoldersTest";
+	}
+	public void tearDown() throws Exception {
+		super.tearDown();
+		MockPublishMethod.reset();
+	}
+	
+	@Override
+	protected IProject createProject() throws Exception {
+		IDataModel dm = ProjectCreationUtil.getWebDataModel(getModuleName(), null, null, null, null, JavaEEFacetConstants.WEB_24, false);
+		OperationTestCase.runAndVerify(dm);
+		IProject p = ResourcesPlugin.getWorkspace().getRoot().getProject(getModuleName());
+		assertTrue(p.exists());
+		File srcFile = AbstractDeploymentTest.getFileLocation("projectPieces/EJB3NoDescriptor.jar");
+		String proj = p.getLocation().toOSString();
+		p.getFolder("WebContent").getFolder("WEB-INF")
+			.getFolder("lib").getFile("test.jar").create(
+				new FileInputStream(srcFile), true, new NullProgressMonitor());
+		p.refreshLocal(0, new NullProgressMonitor());
+		return p;
+	}
+
+	
+	public void testStandardDeployAndTempFolders() throws CoreException, IOException {
+		server = ServerRuntimeUtils.createMockJBoss7Server();
+		server = ServerRuntimeUtils.useMockPublishMethod(server);
+		MockPublishMethod.reset();
+		
+		IModule mod = ServerUtil.getModule(project);
+		IModule[] module = new IModule[] { mod };
+		server = ServerRuntimeUtils.addModule(server, mod);
+		ServerRuntimeUtils.publish(server);
+		assertEquals(9,MockPublishMethod.getChanged().length);
+		
+		IPath[] temps = MockPublishMethod.getTempPaths();
+		assertEquals(4, temps.length);
+		for( int i = 0; i < temps.length; i++ ) {
+			if( temps[i].lastSegment().equals("MANIFEST.MF"))
+				assertTrue(temps[i].segment(0).equals("mockTempRoot"));
+			if( temps[i].lastSegment().equals("web.xml"))
+				assertTrue(temps[i].segment(0).equals("mockTempRoot"));
+			if( temps[i].lastSegment().equals("test.jar"))
+				assertTrue(temps[i].segment(0).equals("mockTempRoot"));
+			
+			// Markers don't need to be copied over in this way via a temp folder
+			if( temps[i].lastSegment().endsWith(".dodeploy"))
+				assertTrue(temps[i].segment(0).equals("mockRoot"));
+		}
+		MockPublishMethod.reset();
+	}
+
+	
+	public void testPerModuleDeployAndTempFolders() throws CoreException, IOException {
+		server = ServerRuntimeUtils.createMockJBoss7Server();
+		server = ServerRuntimeUtils.useMockPublishMethod(server);
+		MockPublishMethod.reset();
+		
+		// THIS NEEDS A REAL API. THIS IS HORRIBLE
+		IModule mod = ServerUtil.getModule(project);
+		DeploymentPreferences prefs = DeploymentPreferenceLoader.loadPreferencesFromServer(server);
+		DeploymentModulePrefs p = prefs.getOrCreatePreferences(LocalPublishMethod.LOCAL_PUBLISH_METHOD)
+				.getOrCreateModulePrefs(mod);
+		p.setProperty(IJBossToolingConstants.LOCAL_DEPLOYMENT_LOC, "/newRoot");
+		p.setProperty(IJBossToolingConstants.LOCAL_DEPLOYMENT_TEMP_LOC, "/newTempRoot");
+		IServerWorkingCopy wc = server.createWorkingCopy();
+		DeploymentPreferenceLoader.savePreferencesToServerWorkingCopy(wc, prefs);
+		server = wc.save(true, null);
+
+		
+		MockPublishMethod.reset();
+		MockPublishMethod.setExpectedRoot("/newRoot");
+		MockPublishMethod.setExpectedTempRoot("/newTempRoot");
+		
+		IModule[] module = new IModule[] { mod };
+		server = ServerRuntimeUtils.addModule(server, mod);
+		ServerRuntimeUtils.publish(server);
+		assertEquals(9,MockPublishMethod.getChanged().length);
+		
+		IPath[] temps = MockPublishMethod.getTempPaths();
+		assertEquals(4, temps.length);
+		for( int i = 0; i < temps.length; i++ ) {
+			if( temps[i].lastSegment().equals("MANIFEST.MF"))
+				assertTrue(temps[i].segment(0).equals("newTempRoot"));
+			if( temps[i].lastSegment().equals("web.xml"))
+				assertTrue(temps[i].segment(0).equals("newTempRoot"));
+			if( temps[i].lastSegment().equals("test.jar"))
+				assertTrue(temps[i].segment(0).equals("newTempRoot"));
+			
+			// Markers don't need to be copied over in this way via a temp folder
+			if( temps[i].lastSegment().endsWith(".dodeploy"))
+				assertTrue(temps[i].segment(0).equals("newRoot"));
+		}
+		MockPublishMethod.reset();
+	}
+
+}
Index: src/org/jboss/ide/eclipse/as/test/ASTestSuite.java
===================================================================
--- src/org/jboss/ide/eclipse/as/test/ASTestSuite.java	(revision 41709)
+++ src/org/jboss/ide/eclipse/as/test/ASTestSuite.java	(working copy)
@@ -39,6 +39,7 @@
 import org.jboss.ide.eclipse.as.test.publishing.v2.JSTDeployBinaryChildModuleTest;
 import org.jboss.ide.eclipse.as.test.publishing.v2.JSTDeploymentTester;
 import org.jboss.ide.eclipse.as.test.publishing.v2.JSTDeploymentWarUpdateXML;
+import org.jboss.ide.eclipse.as.test.publishing.v2.JSTModuleDeployFoldersTest;
 import org.jboss.ide.eclipse.as.test.publishing.v2.Mock2FilterTest;
 import org.jboss.ide.eclipse.as.test.publishing.v2.MockJSTPublisherTest;
 import org.jboss.ide.eclipse.as.test.publishing.v2.MockJSTPublisherTestDynUtil;
@@ -86,6 +87,7 @@
         suite.addTestSuite(TestEar5WithJBossRuntime.class);
         suite.addTestSuite(JSTDeploymentTester.class);
         suite.addTestSuite(JSTDeployBinaryChildModuleTest.class);
+        suite.addTestSuite(JSTModuleDeployFoldersTest.class);
         suite.addTestSuite(SingleFileDeploymentTester.class);
         suite.addTestSuite(JBossServerAPITest.class);
         suite.addTestSuite(Mock2FilterTest.class);
