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

Robert Stryker rob.stryker at jboss.com
Fri Feb 23 16:57:33 EST 2007


  User: rawb    
  Date: 07/02/23 16:57:33

  Modified:    as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model 
                        PackagesBuildListener.java
  Log:
  
  
  Revision  Changes    Path
  1.7       +52 -39    jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/PackagesBuildListener.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: PackagesBuildListener.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/PackagesBuildListener.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -b -r1.6 -r1.7
  --- PackagesBuildListener.java	15 Feb 2007 14:52:04 -0000	1.6
  +++ PackagesBuildListener.java	23 Feb 2007 21:57:33 -0000	1.7
  @@ -22,15 +22,9 @@
   package org.jboss.ide.eclipse.as.core.model;
   
   import java.util.ArrayList;
  -import java.util.Arrays;
  -import java.util.Comparator;
  -import java.util.Date;
   import java.util.HashMap;
  -import java.util.Set;
  -import java.util.TreeSet;
   
  -import org.eclipse.core.resources.IProject;
  -import org.eclipse.core.runtime.IStatus;
  +import org.eclipse.core.runtime.IPath;
   import org.eclipse.core.runtime.NullProgressMonitor;
   import org.eclipse.wst.server.core.IModule;
   import org.eclipse.wst.server.core.IServer;
  @@ -38,16 +32,11 @@
   import org.eclipse.wst.server.core.internal.ModuleFactory;
   import org.eclipse.wst.server.core.internal.ServerPlugin;
   import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
  -import org.jboss.ide.eclipse.as.core.JBossServerCore;
  -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.module.PackageModuleFactory;
  -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.SimpleTreeItem;
  +import org.jboss.ide.eclipse.packages.core.model.AbstractPackagesBuildListener;
   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.IPackagesBuildListener;
   import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
   
   /**
  @@ -55,7 +44,7 @@
    * @author rob.stryker at jboss.com
    * This class is teh suck. I dont even know whether to keep it
    */
  -public class PackagesBuildListener implements IPackagesBuildListener {
  +public class PackagesBuildListener extends AbstractPackagesBuildListener {
   //public class PackagesBuildListener {
   
   	public static PackagesBuildListener instance;
  @@ -68,37 +57,65 @@
   		}
   		return instance;
   	}
  +	
  +	//Keeping track of build changes
  +	private HashMap changesOrAdditions = new HashMap();
  +	private HashMap removals = new HashMap();
  +	
  +	
   	public PackagesBuildListener() {
   		PackagesCore.addPackagesBuildListener(this);
   	}
   	
  -	public void remove() {
  -		PackagesCore.removePackagesBuildListener(this);
  +	public void startedBuildingPackage(IPackage pkg) {
  +		if( pkg.isTopLevel() ) {
  +			changesOrAdditions.put(pkg, new ArrayList());
  +			removals.put(pkg, new ArrayList());
   	}
  -
  -	public void buildFailed(IPackage pkg, IStatus status) {
  -		System.out.println("build failed");
   	}
   
  -	public void finishedBuild(IProject project) {
  -		System.out.println("finished build");
  +	public void fileRemoved(IPackage topLevelPackage, IPackageFileSet fileset, IPath filePath) {
  +		// make absolute
  +		IPath filePath2 = makeAbsolute(filePath); // change
  +		ArrayList removes = (ArrayList)removals.get(topLevelPackage);
  +		if( !removes.contains(filePath2)) removes.add(filePath2);
  +	}
  +	public void fileUpdated(IPackage topLevelPackage, IPackageFileSet fileset, IPath filePath) {
  +		// make absolute
  +		IPath filePath2 = makeAbsolute(filePath); // change
  +		ArrayList changes = (ArrayList)changesOrAdditions.get(topLevelPackage);
  +		if( !changes.contains(filePath2)) changes.add(filePath2);
   	}
   
  -	public void finishedBuildingPackage(IPackage pkg) {
  +	public IPath makeAbsolute(IPath local) {
  +		IPath file = PackagesCore.getBaseFile(local);
   		
  -		if( new Boolean(pkg.getProperty(AUTO_DEPLOY)).booleanValue()) {
  +		return file;
  +	}
  +	public void finishedBuildingPackage(IPackage pkg) {
  +		System.out.println("finished building package");
  +		if( pkg.isTopLevel() && new Boolean(pkg.getProperty(AUTO_DEPLOY)).booleanValue()) {
   			publish(pkg);
  +			// then clean up what's been changed
  +			changesOrAdditions.remove(pkg);
  +			removals.remove(pkg);
   		}
   	}
   
  -	public static void publish(IPackage pkg) {
  +
  +	
  +	// If we're supposed to auto-deploy, get on it
  +	protected static void publish(IPackage pkg) {
   		String servers = pkg.getProperty(PackagesBuildListener.DEPLOY_SERVERS);
  +		publish(pkg, servers);
  +	} 
  +	public static void publish(IPackage pkg, String servers) {
   		IModule[] module = getModule(pkg);
   		if( module[0] == null ) return; 
   		DeployableServerBehavior[] serverBehaviors = PackagesBuildListener.getServers(servers);
   		if( serverBehaviors != null ) {
   			for( int i = 0; i < serverBehaviors.length; i++ ) {
  -				serverBehaviors[i].publishOneModule(IServer.PUBLISH_FULL, module, ServerBehaviourDelegate.ADDED, new NullProgressMonitor());
  +				serverBehaviors[i].publishOneModule(IServer.PUBLISH_INCREMENTAL, module, ServerBehaviourDelegate.CHANGED, new NullProgressMonitor());
   			}
   		}
   	}
  @@ -124,20 +141,16 @@
   		return (DeployableServerBehavior[]) list.toArray(new DeployableServerBehavior[list.size()]);
   	}
   
  -	public void finishedCollectingFileSet(IPackageFileSet fileset) {
  -		System.out.println("finished collecting fileset");
  -	}
  -
  -	public void startedBuild(IProject project) {
  -		System.out.println("build started");
  -	}
   
  -	public void startedBuildingPackage(IPackage pkg) {
  -		System.out.println("started building package");
  -	}
   
  -	public void startedCollectingFileSet(IPackageFileSet fileset) {
  -		System.out.println("started collecting fileset");
  +	// should be called from the publisher to figure out what's changed
  +	public IPath[] getUpdatedFiles(IPackage pkg) {
  +		ArrayList list = (ArrayList)changesOrAdditions.get(pkg);
  +		return (IPath[]) list.toArray(new IPath[list.size()]);
  +	}
  +	public IPath[] getRemovedFiles(IPackage pkg) {
  +		ArrayList list = (ArrayList)removals.get(pkg);
  +		return (IPath[]) list.toArray(new IPath[list.size()]);
   	}
   
   }
  
  
  



More information about the jboss-cvs-commits mailing list