[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers ...

Robert Stryker rawblem at gmail.com
Fri Dec 22 18:24:42 EST 2006


  User: rawb    
  Date: 06/12/22 18:24:42

  Modified:    as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers    
                        PackagesPublisher.java PathPublisher.java
                        IJBossServerPublisher.java
                        JstPackagesPublisher.java
  Log:
  New PackageTypes for marshall.
  Added deploy-only server (cannot start or stop)
  Other associated changes. 
  
  Revision  Changes    Path
  1.4       +147 -29   jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/PackagesPublisher.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: PackagesPublisher.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/PackagesPublisher.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- PackagesPublisher.java	11 Dec 2006 15:49:06 -0000	1.3
  +++ PackagesPublisher.java	22 Dec 2006 23:24:42 -0000	1.4
  @@ -28,13 +28,18 @@
   import org.eclipse.core.runtime.CoreException;
   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.Path;
   import org.eclipse.wst.server.core.IModule;
   import org.eclipse.wst.server.core.IServer;
   import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
  -import org.jboss.ide.eclipse.as.core.server.JBossServer;
  +import org.jboss.ide.eclipse.as.core.model.EventLogModel;
  +import org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogRoot;
  +import org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogTreeItem;
  +import org.jboss.ide.eclipse.as.core.server.attributes.IDeployableServer;
   import org.jboss.ide.eclipse.as.core.util.FileUtil;
  +import org.jboss.ide.eclipse.as.core.util.SimpleTreeItem;
   import org.jboss.ide.eclipse.packages.core.model.IPackage;
   import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
   
  @@ -43,9 +48,31 @@
    * @author rob.stryker at jboss.com
    */
   public class PackagesPublisher implements IJBossServerPublisher {
  -	private JBossServer server;
  -	public PackagesPublisher(JBossServer jbServer) {
  -		this.server = jbServer;
  +	
  +	// Event Constants
  +	public static final String REMOVE_TOP_EVENT = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.REMOVE_TOP_EVENT";
  +	public static final String REMOVE_PACKAGE_SUCCESS = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.REMOVE_PACKAGE_SUCCESS";
  +	public static final String REMOVE_PACKAGE_FAIL = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.REMOVE_PACKAGE_FAIL";
  +	public static final String REMOVE_PACKAGE_SKIPPED = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.REMOVE_PACKAGE_SKIPPED";
  +	
  +
  +	public static final String PUBLISH_TOP_EVENT = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.PUBLISH_TOP_EVENT";
  +	public static final String PROJECT_BUILD_EVENT = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.PROJECT_BUILD_EVENT";
  +	public static final String MOVE_PACKAGE_SUCCESS = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.MOVE_PACKAGE_SUCCESS";
  +	public static final String MOVE_PACKAGE_FAIL = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.MOVE_PACKAGE_FAIL";
  +	public static final String MOVE_PACKAGE_SKIP = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.MOVE_PACKAGE_SKIP";
  +	
  +//	public static final String PACKAGE_NOT_PUBLISHED = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.PACKAGE_NOT_PUBLISHED";
  +//	public static final String PACKAGE_NOT_REMOVED = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.PACKAGE_NOT_REMOVED";
  +	
  +	
  +	
  +	private IDeployableServer server;
  +	private EventLogRoot eventRoot;
  +
  +	public PackagesPublisher(IDeployableServer server) {
  +		this.server = server;
  +		eventRoot = EventLogModel.getModel(server.getServer()).getRoot();
   	}
   	public int getPublishState() {
   		return IServer.PUBLISH_STATE_NONE;
  @@ -82,57 +109,148 @@
   	}
   
   	protected void removeModule(IModule[] module, IProgressMonitor monitor) {
  +		
   		// remove all of the deployed items
  -		System.out.println("removing module " + module[0].getName());
  +		PublishEvent event = new PublishEvent(eventRoot, REMOVE_TOP_EVENT, module[0]);
  +		EventLogModel.markChanged(eventRoot);
   		
   		String projectName = module[0].getName();
   		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
   		if( project.exists() ) {
   			IPackage[] packages = PackagesCore.getProjectPackages(project, new NullProgressMonitor());
   			for( int i = 0; i < packages.length; i++ ) {
  +				
  +				try {
  +				
   				if( packages[i].isDestinationInWorkspace()) {
   					IFile file = packages[i].getPackageFile();
   					IPath sourcePath = file.getLocation();
  -					IPath destPath = new Path(server.getDeployDirectory(true)).append(sourcePath.lastSegment());
  -					destPath.toFile().delete();
  +						IPath destPath = new Path(server.getDeployDirectory()).append(sourcePath.lastSegment());
  +						boolean success = destPath.toFile().delete();
  +						addRemoveEvent(event, packages[i], destPath, success ? SUCCESS : FAILURE);
   				} else {
   					IPath path = packages[i].getPackageFilePath();
  -					Path deployDir = new Path(server.getDeployDirectory(true));
  +						Path deployDir = new Path(server.getDeployDirectory());
   					if( path.toOSString().startsWith(deployDir.toOSString())) {
  -						try {
  -						path.toFile().delete();
  -						} catch( Exception e ) {
  -							e.printStackTrace();
  +							boolean success = path.toFile().delete();
  +							addRemoveEvent(event, packages[i], path, success ? SUCCESS : FAILURE);
  +						} else {
  +							addRemoveEvent(event, packages[i], path, SKIPPED, null);
   						}
   					}
  +				} catch( Exception e ) {
  +					IPath dest = packages[i].getPackageFile().getLocation();
  +					addRemoveEvent(event, packages[i], dest, FAILURE, e);
   				}
   			}
   		}
   	}
   	
  +
  +	
   	protected void publishModule(boolean incremental, IModule[] module, IProgressMonitor monitor) {
  -		System.out.println("publishing module " + module[0].getName());
  +		PublishEvent event = new PublishEvent(eventRoot, PUBLISH_TOP_EVENT, module[0]);
  +		EventLogModel.markChanged(eventRoot);
   
   		int inc2 = incremental ? IncrementalProjectBuilder.INCREMENTAL_BUILD : IncrementalProjectBuilder.FULL_BUILD;
   		String projectName = module[0].getName();
   		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
   		try {
  +			addBuildEvent(event, project, inc2);
   		PackagesCore.buildProject(project, inc2, monitor);
   		IPackage[] packages = PackagesCore.getProjectPackages(project, new NullProgressMonitor());
   		for( int i = 0; i < packages.length; i++ ) {
   			if( packages[i].isDestinationInWorkspace()) {
  -				try {
   					// destination is workspace. Move it. 
   					IFile file = packages[i].getPackageFile();
   					IPath sourcePath = file.getLocation();
  -					IPath destPath = new Path(server.getDeployDirectory(true)).append(sourcePath.lastSegment());
  -					FileUtil.copyFile(sourcePath.toFile(), destPath.toFile());
  -				} catch( Exception e ) {
  -					e.printStackTrace();
  -				}
  +					IPath destPath = new Path(server.getDeployDirectory()).append(sourcePath.lastSegment());
  +					IStatus status = FileUtil.copyFile(sourcePath.toFile(), destPath.toFile());
  +					addMoveEvent(event, packages[i], packages[i].isDestinationInWorkspace(), sourcePath, destPath, status.isOK() ? SUCCESS : FAILURE, status.getException());
  +				} else {					
  +					IPath sourcePath = packages[i].getPackageFilePath();
  +					addMoveEvent(event, packages[i], packages[i].isDestinationInWorkspace(), sourcePath, sourcePath, SKIPPED, null);
   			}
   		}
   		}catch( Exception ce ) {
  +			ce.printStackTrace();
   		}
   	}
  +	
  +	protected void addBuildEvent(PublishEvent parent, IProject project, int incremental ) {
  +		EventLogModel.markChanged(parent);
  +	}
  +	protected void addMoveEvent(PublishEvent parent, IPackage pack, boolean inWorkspace, 
  +			IPath sourcePath, IPath destPath, int success, Throwable e) {
  +		String specType = null;
  +		switch( success ) {
  +			case SUCCESS: specType = MOVE_PACKAGE_SUCCESS; break;
  +			case FAILURE: specType = MOVE_PACKAGE_FAIL; break;
  +			case SKIPPED: specType = MOVE_PACKAGE_SKIP; break;
  +		}
  +		new PackagesPublisherMoveEvent(parent, specType, pack, sourcePath, destPath, e );
  +		EventLogModel.markChanged(parent);
  +	}
  +	
  +	
  +	
  +	protected void addRemoveEvent(PublishEvent parent, IPackage pack, IPath dest, int success ) {
  +		addRemoveEvent(parent, pack, dest, success, null);	
  +	}
  +	protected void addRemoveEvent(PublishEvent parent, IPackage pack, IPath dest, int success, Exception e ) {
  +		String specType = null;
  +		switch( success ) {
  +			case SUCCESS: specType = REMOVE_PACKAGE_SUCCESS; break;
  +			case FAILURE: specType = REMOVE_PACKAGE_FAIL; break;
  +			case SKIPPED: specType = REMOVE_PACKAGE_SKIPPED; break;
  +		}
  +		PackagesPublisherRemoveEvent event = 
  +			new PackagesPublisherRemoveEvent(parent, specType, pack, dest, e);
  +		EventLogModel.markChanged(parent);
  +	}
  +	
  +	public static class PackagesPublisherRemoveEvent extends EventLogTreeItem {
  +		// property names
  +		public static final String PACKAGE_NAME = "PackagesPublisherRemoveEvent.PACKAGE_NAME";
  +		public static final String DESTINATION = "PackagesPublisherRemoveEvent.DESTINATION";
  +		public static final String EXCEPTION_MESSAGE = "PackagesPublisherRemoveEvent.EXCEPTION_MESSAGE";
  +		
  +		
  +		public PackagesPublisherRemoveEvent(SimpleTreeItem parent, String specificType,
  +				IPackage pack, IPath dest, Exception e ) {
  +			super(parent, PUBLISH_MAJOR_TYPE, specificType);
  +			setProperty(PACKAGE_NAME, pack.getName());
  +			setProperty(DESTINATION, dest.toOSString());
  +			if( e != null )
  +				setProperty(EXCEPTION_MESSAGE, e.getLocalizedMessage());
  +		}
  +	}	
  +	public static class PackagesPublisherMoveEvent extends EventLogTreeItem {
  +		// property names
  +		public static final String PACKAGE_NAME = "PackagesPublisherRemoveEvent.PACKAGE_NAME";
  +		public static final String MOVE_DESTINATION = "PackagesPublisherRemoveEvent.MOVE_DESTINATION";
  +		public static final String MOVE_SOURCE = "PackagesPublisherRemoveEvent.MOVE_SOURCE";
  +		public static final String EXCEPTION_MESSAGE = "PackagesPublisherRemoveEvent.EXCEPTION_MESSAGE";
  +		
  +		
  +		public PackagesPublisherMoveEvent(SimpleTreeItem parent, String specificType,
  +				IPackage pack, IPath source, IPath dest, Throwable e ) {
  +			super(parent, PUBLISH_MAJOR_TYPE, specificType);
  +			setProperty(PACKAGE_NAME, pack.getName());
  +			setProperty(MOVE_SOURCE, source.toOSString());
  +			setProperty(MOVE_DESTINATION, dest.toOSString());
  +			if( e != null )
  +				setProperty(EXCEPTION_MESSAGE, e.getLocalizedMessage());
  +		}
  +	}	
  +	public static class PackagesPublisherBuildEvent extends EventLogTreeItem {
  +		// property names
  +		public static final String BUILD_TYPE = "PackagesPublisherRemoveEvent.BUILD_TYPE";
  +		
  +		public PackagesPublisherBuildEvent(SimpleTreeItem parent, String specificType, int type) {
  +			super(parent, PUBLISH_MAJOR_TYPE, specificType);
  +			setProperty(BUILD_TYPE, new Integer(type));
  +		}
  +	}
  +
   }
  
  
  
  1.3       +5 -3      jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/PathPublisher.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: PathPublisher.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/PathPublisher.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- PathPublisher.java	30 Nov 2006 16:14:59 -0000	1.2
  +++ PathPublisher.java	22 Dec 2006 23:24:42 -0000	1.3
  @@ -35,12 +35,14 @@
   import org.jboss.ide.eclipse.as.core.module.JBossModuleDelegate;
   import org.jboss.ide.eclipse.as.core.server.JBossServer;
   import org.jboss.ide.eclipse.as.core.server.JBossServerBehavior;
  +import org.jboss.ide.eclipse.as.core.server.attributes.IDeployableServer;
  +import org.jboss.ide.eclipse.as.core.server.stripped.DeployableServerBehavior;
   import org.jboss.ide.eclipse.as.core.util.FileUtil;
   
   public class PathPublisher implements IJBossServerPublisher  {
   	
  -	private JBossServer server;
  -	private JBossServerBehavior behavior;
  +	private IDeployableServer server;
  +	private DeployableServerBehavior behavior;
   	private int publishState;
   	
   	public static final String TARGET_FILENAME = "_TARGET_FILENAME_";
  @@ -48,7 +50,7 @@
   	public static final String DEST_FILENAME = "_DEST_FILENAME_";
   	
   	
  -	public PathPublisher(JBossServer server, JBossServerBehavior behavior) {
  +	public PathPublisher(IDeployableServer server, DeployableServerBehavior behavior) {
   		this.server = server;
   		this.behavior = behavior;
   		publishState = IServer.PUBLISH_STATE_NONE;
  
  
  
  1.3       +27 -0     jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/IJBossServerPublisher.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: IJBossServerPublisher.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/IJBossServerPublisher.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- IJBossServerPublisher.java	30 Nov 2006 16:14:59 -0000	1.2
  +++ IJBossServerPublisher.java	22 Dec 2006 23:24:42 -0000	1.3
  @@ -24,10 +24,37 @@
   import org.eclipse.core.runtime.CoreException;
   import org.eclipse.core.runtime.IProgressMonitor;
   import org.eclipse.wst.server.core.IModule;
  +import org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogTreeItem;
  +import org.jboss.ide.eclipse.as.core.util.SimpleTreeItem;
   
   public interface IJBossServerPublisher {
  +	// event constants
  +	public static final String PUBLISH_MAJOR_TYPE = "org.jboss.ide.eclipse.as.core.publishers.MajorType";
  +	public static final String MODULE_NAME = "org.jboss.ide.eclipse.as.core.publishers.ModuleName";
  +	public static final int PUBLISH = 0;
  +	public static final int REMOVE = 1;
  +	public static final int SUCCESS = 0;
  +	public static final int FAILURE = 1;
  +	public static final int SKIPPED = 2;
  +	
  +	
  +	
  +	
   	public void publishModule(int kind, int deltaKind, int modulePublishState,
   			IModule[] module, IProgressMonitor monitor) 
   								throws CoreException;
   	public int getPublishState();
  +	
  +	public class PublishEvent extends EventLogTreeItem {
  +		public PublishEvent(SimpleTreeItem parent, String specificType) {
  +			super(parent, PUBLISH_MAJOR_TYPE, specificType);
  +		}
  +		public PublishEvent(SimpleTreeItem parent, String specificType, IModule module) {
  +			super(parent, PUBLISH_MAJOR_TYPE, specificType);
  +			setProperty(MODULE_NAME, module.getName());
  +		}
  +		
  +		
  +	}
  +	
   }
  
  
  
  1.3       +42 -253   jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/JstPackagesPublisher.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: JstPackagesPublisher.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/JstPackagesPublisher.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- JstPackagesPublisher.java	13 Dec 2006 18:35:49 -0000	1.2
  +++ JstPackagesPublisher.java	22 Dec 2006 23:24:42 -0000	1.3
  @@ -21,9 +21,6 @@
    */
   package org.jboss.ide.eclipse.as.core.publishers;
   
  -import org.eclipse.core.resources.IContainer;
  -import org.eclipse.core.resources.IProject;
  -import org.eclipse.core.runtime.Assert;
   import org.eclipse.core.runtime.CoreException;
   import org.eclipse.core.runtime.IPath;
   import org.eclipse.core.runtime.IProgressMonitor;
  @@ -31,28 +28,16 @@
   import org.eclipse.core.runtime.NullProgressMonitor;
   import org.eclipse.core.runtime.Path;
   import org.eclipse.core.runtime.Status;
  -import org.eclipse.jdt.core.IJavaProject;
  -import org.eclipse.jdt.core.JavaCore;
  -import org.eclipse.jdt.core.JavaModelException;
  -import org.eclipse.jst.server.core.IEnterpriseApplication;
  -import org.eclipse.jst.server.core.IWebModule;
   import org.eclipse.wst.server.core.IModule;
   import org.eclipse.wst.server.core.IServer;
   import org.eclipse.wst.server.core.internal.DeletedModule;
   import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
   import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
  -import org.jboss.ide.eclipse.as.core.server.JBossServer;
  -import org.jboss.ide.eclipse.packages.core.Trace;
  +import org.jboss.ide.eclipse.as.core.packages.ModulePackageTypeConverter;
  +import org.jboss.ide.eclipse.as.core.server.attributes.IDeployableServer;
   import org.jboss.ide.eclipse.packages.core.model.IPackage;
  -import org.jboss.ide.eclipse.packages.core.model.IPackageFileSet;
  -import org.jboss.ide.eclipse.packages.core.model.IPackageFileSetWorkingCopy;
  -import org.jboss.ide.eclipse.packages.core.model.IPackageFolder;
  -import org.jboss.ide.eclipse.packages.core.model.IPackageFolderWorkingCopy;
  -import org.jboss.ide.eclipse.packages.core.model.IPackageNode;
  -import org.jboss.ide.eclipse.packages.core.model.IPackageWorkingCopy;
   import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
  -import org.jboss.ide.eclipse.packages.core.model.internal.PackagesModel;
  -import org.jboss.ide.eclipse.packages.core.model.types.JARPackageType;
  +import org.jboss.ide.eclipse.packages.core.model.types.IPackageType;
   
   /**
    *  This class provides a default implementation for packaging different types of projects
  @@ -60,16 +45,10 @@
    */
   public class JstPackagesPublisher implements IJBossServerPublisher {
   
  -	private static final String METAINF = "META-INF";
  -	private static final String WEBINF = "WEB-INF";
  -	private static final String LIB = "lib";
  -	private static final String WEBCONTENT = "WebContent";
  -	private static final String EARCONTENT = "EarContent";
  -	
   	private int state;
  -	private JBossServer server;
  +	private IDeployableServer server;
   	
  -	public JstPackagesPublisher(JBossServer server) {
  +	public JstPackagesPublisher(IDeployableServer server) {
   		this.server = server;
   		state = IServer.PUBLISH_STATE_NONE;
   	}
  @@ -82,244 +61,54 @@
   			IModule[] module, IProgressMonitor monitor) throws CoreException {
       	checkClosed(module);
           if(ServerBehaviourDelegate.REMOVED == deltaKind){
  -        	JstPackagesAssembler publisher = new JstPackagesAssembler();
  -            publisher.initialize(module,server);
  -            publisher.unpublish(monitor);
  +        	unpublish(server, module, monitor);
           } else if( ServerBehaviourDelegate.NO_CHANGE != deltaKind || kind == IServer.PUBLISH_FULL || kind == IServer.PUBLISH_CLEAN ){
           	// if there's no change, do nothing. Otherwise, on change or add, re-publish
  -        	JstPackagesAssembler publisher = new JstPackagesAssembler();
  -            publisher.initialize(module,server);
  -            publisher.publish(monitor);
  -        }
  -	}
  -    private void checkClosed(IModule[] module) throws CoreException {
  -    	for(int i=0;i<module.length;i++) {
  -    		if(module[i] instanceof DeletedModule) {	
  -                IStatus status = new Status(IStatus.ERROR,JBossServerCorePlugin.PLUGIN_ID,0, "Failure", null);
  -                throw new CoreException(status);
  -    		}
  +        	publish(server, module, monitor);
       	}
       }
       
  -    public static class JstPackagesAssembler {
  -		public static final int WAR = 1;
  -		public static final int EAR = 2;
  -		public static final int SAR = 3;
  -		public static final int OTHER = 4;
  -		
  -		
  -		private IModule[] module;
  -		private JBossServer jbServer;
  -
  -		private int assembleType;
  -				
  -	    public void initialize(IModule[] module, JBossServer server) {
  -			this.module = module;
  -			this.jbServer = server;
  -			if( module.length == 1 ) {
  -				if(isModuleType(module[0], "jst.web")) {
  -					assembleType = WAR;
  -				} else if(isModuleType(module[0], "jst.ear")) {
  -					assembleType = EAR;
  -				} else {
  -					assembleType = OTHER;
  -				}
  -			}
  -	    }
  -	    
  -		private boolean isModuleType(IModule module, String moduleTypeId){	
  -			if(module.getModuleType()!=null && moduleTypeId.equals(module.getModuleType().getId()))
  -				return true;
  -			return false;
  -		}
  -
  -		public IPackage[] getPackages() {
  -			IProject proj = module[0].getProject();
  -			if( proj != null) {
  -				IPackage[] projPackages = PackagesCore.getProjectPackages(proj, new NullProgressMonitor());
  -				if( projPackages.length > 0 ) {
  -					return projPackages;
  -				}
  -			}
  -			
  -			return new IPackage[] { createTopPackage(new NullProgressMonitor())};
  -		}
  -		
  -		public IPackage createTopPackage(IProgressMonitor monitor) {
  -			IPackage topLevel = null;
  -			switch( assembleType ) {
  -			case WAR:
  -				topLevel = createWarPackages(module[0], monitor); break;
  -			case EAR:
  -				topLevel = createEarPackages(module[0], monitor); break;
  -			case OTHER:
  -				topLevel = createOtherPackages(module[0], monitor); break;
  -			default: break;
  -			}
  -			return topLevel;
  -		}
  -		
  -		public IStatus[] publish(IProgressMonitor monitor) throws CoreException {
  -			IPackage topLevel = createTopPackage(monitor);
  +	protected IStatus[] publish(IDeployableServer jbServer, IModule[] module, IProgressMonitor monitor) throws CoreException {
  +		IPackage topLevel = createTopPackage(module[0], jbServer.getDeployDirectory(), monitor);
   			if( topLevel != null ) {
   				PackagesCore.buildPackage(topLevel, new NullProgressMonitor());
  -				PackagesModel.instance().removePackage((IPackage)topLevel);
  -			}
  -			return null;
  -		}
  -		
  -		public static IPackage createGenericIPackage(IModule module, String deployDirectory, String packageName) {
  -			try {
  -
  -				IProject project = module.getProject();
  -				Assert.isNotNull(project);
  -				
  -				IJavaProject javaProject = JavaCore.create(project);
  -				Assert.isNotNull(javaProject);
  -				
  -				IPath sourcePath;
  -				try {
  -					sourcePath = javaProject.getOutputLocation();
  -				} catch (JavaModelException e) {
  -					e.printStackTrace();
  -					return null;
  -				}
  -				sourcePath = sourcePath.removeFirstSegments(1);
  -				IContainer sourcePathContainer = project.getFolder(sourcePath);
  -				return createGenericIPackage(module, deployDirectory, packageName, sourcePathContainer);
  -			} catch( Exception e ) {
  -				e.printStackTrace();
   			}
   			return null;
   		} 
  +	protected IStatus[] unpublish(IDeployableServer jbServer, IModule[] module, IProgressMonitor monitor) throws CoreException {
  +		IPackage topLevel = createTopPackage(module[0], jbServer.getDeployDirectory(), monitor);
  +		if( topLevel.isDestinationInWorkspace() ) {
  +			String deployDir = jbServer.getDeployDirectory();
   		
  -		public static IPackage createGenericIPackage(IModule module, String deployDirectory, String packageName, IContainer sourceContainer) {
  -			IProject project = module.getProject();
  -			Assert.isNotNull(project);
  -			IPackage jar = PackagesCore.createPackage(project, true);
  -			IPackageWorkingCopy jarWC = jar.createPackageWorkingCopy();
  -				
  -			if( deployDirectory != null ) {
  -				jarWC.setDestinationFolder(new Path(deployDirectory));
  -				jarWC.setExploded(false);
  -			}
  -			jarWC.setName(packageName);
  -			jar = jarWC.savePackage();
  -				
  -			IPackageFileSet classes = PackagesCore.createPackageFileSet(project);
  -			IPackageFileSetWorkingCopy classesWC = classes.createFileSetWorkingCopy();
  -			classesWC.setIncludesPattern("**/*");
  -			classesWC.setSourceContainer(sourceContainer);
  -			classes = classesWC.saveFileSet();
  -			jar.addChild(classes);
  -			return jar;
  -		}
  -		
  -		public IPackage createWarPackages(IModule module, IProgressMonitor monitor) {
  -			try {
  -				IProject proj = module.getProject();
  -				IPackage topLevel = createGenericIPackage(module, jbServer.getDeployDirectory(), proj.getName() + ".war");
  -				IPackageFolder webinf = addFolder(proj, topLevel, WEBINF);
  -				IPackageFolder metainf = addFolder(proj, topLevel, METAINF);
  -				IPackageFolder lib = addFolder(proj, metainf, LIB);
  -				addFileset(proj, metainf, WEBCONTENT + Path.SEPARATOR + METAINF, null);
  -				addFileset(proj, webinf, WEBCONTENT + Path.SEPARATOR + WEBINF, null);
  -				
  -				IWebModule webModule = (IWebModule)module.loadAdapter(IWebModule.class, monitor);
  -				IModule[] childModules = webModule.getModules();
  -				
  -				for (int i = 0; i < childModules.length; i++) {
  -					IModule child = childModules[i];
  -					JstPackagesAssembler assembler = new JstPackagesAssembler();
  -					assembler.initialize(new IModule[] {child}, jbServer);
  -					IPackage[] childPackages = assembler.getPackages();
  -					if( childPackages.length > 0 ) {
  -						for( int j = 0; j < childPackages.length; j++ ) {
  -							lib.addChild(childPackages[j]);
  -						}
  +			IPath path = topLevel.getPackageFile().getRawLocation();
  +			IPath p = new Path(deployDir).append(path.lastSegment());
  +			p.toFile().delete();
   					} else {
  -						lib.addChild(createGenericIPackage(child, null, child.getProject().getName() + ".jar"));
  -					}
  -				}
  -				return topLevel;
  -			} catch( Exception e ) {
  -				e.printStackTrace();
  +			IPath path = topLevel.getPackageFilePath();
  +			path.toFile().delete();
   			}
  +		
   			return null;
   		}
  -		public IPackage createEarPackages(IModule module, IProgressMonitor monitor) {
  -			IProject proj = module.getProject();
  -			IContainer sourceContainer = proj.getFolder(EARCONTENT);
  -
  -			IPackage topLevel = createGenericIPackage(module, jbServer.getDeployDirectory(), proj.getName() + ".ear", sourceContainer);
  -			addFileset(proj, topLevel, EARCONTENT, "**/*.*");
  -			
  -			// now add children
  -			IEnterpriseApplication earModule = (IEnterpriseApplication)module.loadAdapter(IEnterpriseApplication.class, monitor);
  -			IModule[] childModules = earModule.getModules();
  -			for( int i = 0; i < childModules.length; i++ ) {
  -				IModule child = childModules[i];
  -				JstPackagesAssembler assembler = new JstPackagesAssembler();
  -				assembler.initialize(new IModule[] {child}, jbServer);
  -				IPackage[] childPackages = assembler.getPackages();
  -				if( childPackages.length > 0 ) {
  -					for( int j = 0; j < childPackages.length; j++ ) {
  -						topLevel.addChild(childPackages[j]);
  -					}
  -				} else {
  -					topLevel.addChild(createGenericIPackage(child, null, child.getProject().getName() + ".jar"));
  -				}
  -			}
   			
  -			PackagesCore.buildPackage(topLevel, new NullProgressMonitor());
  -			PackagesModel.instance().removePackage((IPackage)topLevel);
  -			return null;
  +    protected void checkClosed(IModule[] module) throws CoreException {
  +    	for(int i=0;i<module.length;i++) {
  +    		if(module[i] instanceof DeletedModule) {	
  +                IStatus status = new Status(IStatus.ERROR,JBossServerCorePlugin.PLUGIN_ID,0, "Failure", null);
  +                throw new CoreException(status);
   		}
  -		public IPackage createOtherPackages(IModule module, IProgressMonitor monitor) {
  -			return createGenericIPackage(module, null, module.getName() + ".jar");
   		}
  -
  -		public IStatus[] unpublish(IProgressMonitor monitor) throws CoreException {
  -			String deployDir = jbServer.getDeployDirectory();
  -			String fileName = module[0].getProject().getName();
  -			String ext = ".jar";
  -			switch( assembleType ) {
  -				case WAR: ext = ".war"; break;
  -				case EAR: ext = ".ear"; break;
  -				case SAR: ext = ".sar"; break;
  -				case OTHER: ext = ".jar"; break;
  -				default: ext = ".jar"; break;
   			}
   			
  -			IPath filePath = new Path(deployDir).append(fileName + ext);
  -			filePath.toFile().delete();
  -			return null;
  +	protected IPackage createTopPackage(IModule module, String deployDir, IProgressMonitor monitor) {
  +		IPackageType type = ModulePackageTypeConverter.getPackageTypeFor(module);
  +		if( type != null ) {
  +    		IPackage topLevel = type.createDefaultConfiguration(module.getProject(), monitor);
  +    		topLevel.setDestinationFolder(new Path(deployDir));
  +    		//topLevel.setDestinationFolder(new Path("c:\\test"));
  +    		return topLevel;
   		}
  -		
  -		
  -		protected static IPackageFolder addFolder(IProject project, IPackageNode parent, String name) {
  -			IPackageFolder folder = PackagesCore.createPackageFolder(project);
  -			IPackageFolderWorkingCopy folderWC = folder.createFolderWorkingCopy();
  -			folderWC.setName(name);
  -			folder = folderWC.saveFolder();
  -			parent.addChild(folder);
  -			return folder;
  -		}
  -		protected static IPackageFileSet addFileset(IProject project, IPackageNode parent, String sourcePath, String includePattern) {
  -			IPackageFileSet fs = PackagesCore.createPackageFileSet(project);
  -			IPackageFileSetWorkingCopy fswc = fs.createFileSetWorkingCopy();
  -			Assert.isNotNull(project);
  -			IJavaProject javaProject = JavaCore.create(project);
  -			Assert.isNotNull(javaProject);
  -			IContainer sourceContainer = project.getFolder(new Path(sourcePath));
  -
  -			fswc.setSourceContainer(sourceContainer);
  -			fswc.setIncludesPattern(  includePattern == null ?  "**/*" : includePattern );
  -			fs = fswc.saveFileSet();
  -			parent.addChild(fs);
  -			return fs;
  +		return null;
   		}
  -}
  -
   
   }
  
  
  



More information about the jboss-cvs-commits mailing list