[149215] Change WLS generic servers to use wldeploy Ant task
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java
index 89b97ea..a1058a8 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java
@@ -16,6 +16,7 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jst.server.core.PublishUtil;
 import org.eclipse.jst.server.generic.core.internal.CorePlugin;
@@ -37,6 +38,15 @@
 	protected ServerRuntime fServerdefinition;
 	protected IModule fModule; 
 	protected GenericServer fServer;
+	protected IPath fAssembleRoot;
+	
+	protected AbstractModuleAssembler(IModule module, GenericServer server, IPath assembleRoot)
+	{
+		fModule=module;
+		fServerdefinition=server.getServerDefinition();
+		fServer=server;
+		fAssembleRoot = assembleRoot;
+	}
 	
 	/**
 	 * Assemble the module.
@@ -44,7 +54,7 @@
 	 * @param monitor
 	 * @throws CoreException
 	 */
-	protected abstract IPath assemble(IProgressMonitor monitor) throws CoreException;
+	public abstract IPath assemble(IProgressMonitor monitor) throws CoreException;
 
 	
 	/**
@@ -53,6 +63,12 @@
 	 *
 	 */
 	public static class Factory {		
+		
+		public static IPath getDefaultAssembleRoot(IModule module, GenericServer server) {
+			ProjectModule pm =(ProjectModule)module.loadAdapter(ProjectModule.class, new NullProgressMonitor());
+			return ServerPlugin.getInstance().getTempDirectory(server.getServer().getId()).append(pm.getId());
+		}
+		
 		/**
 		 * Returns a concrete module assembler
 		 * 
@@ -62,12 +78,24 @@
 		 */
 		public static AbstractModuleAssembler getModuleAssembler(IModule module, GenericServer server)
 		{
-			
+			return getModuleAssembler(module, server, getDefaultAssembleRoot(module, server));
+		}
+		
+		/**
+		 * Returns a concrete module assembler that assembles under the specified root path
+		 * 
+		 * @param module
+		 * @param server
+		 * @param assembleRoot
+		 * @return assembler
+		 */
+		public static AbstractModuleAssembler getModuleAssembler(IModule module, GenericServer server, IPath assembleRoot)
+		{
 			if(isModuleType(module, "jst.web")) //$NON-NLS-1$
-				return new WarModuleAssembler(module,server);
+				return new WarModuleAssembler(module,server,assembleRoot);
 			if(isModuleType(module, "jst.ear")) //$NON-NLS-1$
-				return new EarModuleAssembler(module,server);
-			return new DefaultModuleAssembler(module,server);
+				return new EarModuleAssembler(module,server,assembleRoot);
+			return new DefaultModuleAssembler(module,server,assembleRoot);
 		}
 		
 		private static boolean isModuleType(IModule module, String moduleTypeId){	
@@ -126,15 +154,9 @@
 			}
 	}
 
-	protected IPath copyModule(IModule module,IProgressMonitor monitor)throws CoreException{
+	protected IPath copyModule(IModule module, IProgressMonitor monitor) throws CoreException {
 		ProjectModule pm =(ProjectModule)module.loadAdapter(ProjectModule.class, monitor);
-		IPath to = getProjectWorkingLocation().append(pm.getId());
-		PublishUtil.smartCopy(pm.members(), to, monitor);
-		return to;
+		PublishUtil.smartCopy(pm.members(), fAssembleRoot, monitor);
+		return fAssembleRoot;
 	}
-	
-	private IPath getProjectWorkingLocation(){
-		return ServerPlugin.getInstance().getTempDirectory(fServer.getServer().getId());
-	}
-	
 }
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
index 7d5b5e7..cb01d57 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
@@ -20,6 +20,7 @@
 import java.util.Map;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
+
 import org.eclipse.ant.internal.ui.IAntUIConstants;
 import org.eclipse.ant.internal.ui.launchConfigurations.IAntLaunchConfigurationConstants;
 import org.eclipse.core.runtime.CoreException;
@@ -72,14 +73,15 @@
 	 */
 	public static final String PUBLISHER_ID="org.eclipse.jst.server.generic.antpublisher"; //$NON-NLS-1$
     
-	private static final String PROP_SERVER_PUBLISH_DIR = "server.publish.dir";//$NON-NLS-1$
-	private static final String PROP_PROJECT_WORKING_DIR= "project.working.dir";//$NON-NLS-1$
-	private static final String PROP_MODULE_DIR = "module.dir";//$NON-NLS-1$
-	private static final String PROP_MODULE_NAME = "module.name";//$NON-NLS-1$
-	private static final String PROP_PROJECT_NAME = "project.name";//$NON-NLS-1$
-	private static final String MODULE_PUBLISH_TARGET_PREFIX = "target.publish."; //$NON-NLS-1$
-	private static final String MODULE_UNPUBLISH_TARGET_PREFIX = "target.unpublish.";//$NON-NLS-1$
-	private static final String DATA_NAME_BUILD_FILE="build.file";//$NON-NLS-1$
+	protected static final String PROP_SERVER_PUBLISH_DIR = "server.publish.dir";//$NON-NLS-1$
+	protected static final String PROP_PROJECT_WORKING_DIR= "project.working.dir";//$NON-NLS-1$
+	protected static final String PROP_MODULE_DIR = "module.dir";//$NON-NLS-1$
+	protected static final String PROP_MODULE_NAME = "module.name";//$NON-NLS-1$
+	protected static final String PROP_PROJECT_NAME = "project.name";//$NON-NLS-1$
+	protected static final String MODULE_PUBLISH_TARGET_PREFIX = "target.publish."; //$NON-NLS-1$
+	protected static final String MODULE_UNPUBLISH_TARGET_PREFIX = "target.unpublish.";//$NON-NLS-1$
+	protected static final String DATA_NAME_BUILD_FILE="build.file";//$NON-NLS-1$
+    protected static final String PROP_MODULE_ARCHIVE_NAME = "module.archive.name"; //$NON-NLS-1$
 	
 
     /* (non-Javadoc)
@@ -104,7 +106,7 @@
 		return null;
 	}
 
-	private void assembleModule(IProgressMonitor monitor)throws CoreException{
+	protected void assembleModule(IProgressMonitor monitor)throws CoreException{
 		AbstractModuleAssembler assembler= AbstractModuleAssembler.Factory.getModuleAssembler(getModule()[0], getServer());
 		assembler.assemble(monitor);
 	}
@@ -220,6 +222,13 @@
         String moduleName=guessModuleName(webModule);
         props.put(PROP_PROJECT_WORKING_DIR,getProjectWorkingLocation().toString());
 		props.put(PROP_MODULE_NAME,moduleName);
+         if (isModuleType(webModule, "jst.ear")) {//$NON-NLS-1$
+             props.put( PROP_MODULE_ARCHIVE_NAME, moduleName +".ear" ); //$NON-NLS-1$
+            } else if (isModuleType(webModule, "jst.web")) { //$NON-NLS-1$
+                props.put( PROP_MODULE_ARCHIVE_NAME, moduleName +".war" ); //$NON-NLS-1$
+                   } else if (isModuleType(webModule, "jst.ejb")) { //$NON-NLS-1$
+                       props.put( PROP_MODULE_ARCHIVE_NAME, moduleName +".jar" ); //$NON-NLS-1$
+                   }      
 		if(webModule.getProject()!=null){
 			props.put(PROP_MODULE_DIR,getModuleWorkingDir().toString());
 		    props.put(PROP_PROJECT_NAME,webModule.getProject().getName());
@@ -245,7 +254,6 @@
 				return module.getName();
 			}
 			String contextRoot = webModule.getURI(module);
-			//TODO we should really pass the full uri including the file extension in the future
 			moduleName = contextRoot.substring(0,contextRoot.lastIndexOf('.'));
 			}
 		return moduleName;
@@ -294,6 +302,12 @@
     	//nothing to do
 	}
 
+    private static boolean isModuleType(IModule module, String moduleTypeId){    
+        if(module.getModuleType()!=null && moduleTypeId.equals(module.getModuleType().getId()))
+            return true;
+        return false;
+    }
+    
 	/* (non-Javadoc)
      * @see org.eclipse.jst.server.generic.internal.core.GenericPublisher#unpublish(org.eclipse.wst.server.core.IModule, org.eclipse.core.runtime.IProgressMonitor)
      */
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/DefaultModuleAssembler.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/DefaultModuleAssembler.java
index d0937e5..720dbf3 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/DefaultModuleAssembler.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/DefaultModuleAssembler.java
@@ -12,15 +12,12 @@
  */
 public class DefaultModuleAssembler extends AbstractModuleAssembler {
 	
-	protected DefaultModuleAssembler(IModule module, GenericServer server)
+	protected DefaultModuleAssembler(IModule module, GenericServer server, IPath assembleRoot)
 	{
-		fModule=module;
-		fServerdefinition=server.getServerDefinition();
-		fServer=server;
+		super(module, server, assembleRoot);
 	}
 	
-	
-	protected IPath assemble(IProgressMonitor monitor) throws CoreException {
+	public IPath assemble(IProgressMonitor monitor) throws CoreException {
 		return copyModule(fModule,monitor);		
 	}
 
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/EarModuleAssembler.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/EarModuleAssembler.java
index 4ca8e8d..e75cd7c 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/EarModuleAssembler.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/EarModuleAssembler.java
@@ -27,14 +27,12 @@
  */
 public class EarModuleAssembler extends AbstractModuleAssembler {
 
-	protected EarModuleAssembler(IModule module, GenericServer server)
+	protected EarModuleAssembler(IModule module, GenericServer server, IPath assembleRoot)
 	{
-		fModule=module;
-		fServerdefinition=server.getServerDefinition();
-		fServer=server;
+		super(module, server, assembleRoot);
 	}
 
-	protected IPath assemble(IProgressMonitor monitor) throws CoreException{
+	public IPath assemble(IProgressMonitor monitor) throws CoreException{
 		IPath parent =copyModule(fModule,monitor);
 		IEnterpriseApplication earModule = (IEnterpriseApplication)fModule.loadAdapter(IEnterpriseApplication.class, monitor);
 		IModule[] childModules = earModule.getModules();
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/WarModuleAssembler.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/WarModuleAssembler.java
index 19d99ce..4b33578 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/WarModuleAssembler.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/WarModuleAssembler.java
@@ -22,14 +22,12 @@
  */
 public class WarModuleAssembler extends AbstractModuleAssembler {
 	
-	protected WarModuleAssembler(IModule module, GenericServer server)
+	protected WarModuleAssembler(IModule module, GenericServer server, IPath assembleRoot)
 	{
-		fModule=module;
-		fServerdefinition=server.getServerDefinition();
-		fServer=server;
+		super(module, server, assembleRoot);
 	}
 
-	protected IPath assemble(IProgressMonitor monitor) throws CoreException{
+	public IPath assemble(IProgressMonitor monitor) throws CoreException{
 		IPath parent =copyModule(fModule,monitor);
 		IWebModule webModule = (IWebModule)fModule.loadAdapter(IWebModule.class, monitor);
 		IModule[] childModules = webModule.getModules();