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

Robert Stryker rawblem at gmail.com
Thu Nov 9 19:26:25 EST 2006


  User: rawb    
  Date: 06/11/09 19:26:25

  Modified:    as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model   
                        DescriptorModel.java ServerProcessModel.java
                        ModuleModel.java
  Log:
  Rewrote Core entirley. It's clean and spiffy now. 
  
  Revision  Changes    Path
  1.8       +23 -54    jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/DescriptorModel.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: DescriptorModel.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/DescriptorModel.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -b -r1.7 -r1.8
  --- DescriptorModel.java	6 Sep 2006 19:28:12 -0000	1.7
  +++ DescriptorModel.java	10 Nov 2006 00:26:25 -0000	1.8
  @@ -41,34 +41,13 @@
   import org.dom4j.io.SAXReader;
   import org.dom4j.io.XMLWriter;
   import org.dom4j.tree.DefaultElement;
  +import org.eclipse.core.runtime.IPath;
   import org.eclipse.core.runtime.IProgressMonitor;
   import org.eclipse.core.runtime.NullProgressMonitor;
  -import org.eclipse.wst.server.core.IServer;
  -import org.eclipse.wst.server.core.ServerCore;
  -import org.eclipse.wst.server.core.internal.Server;
  -import org.jboss.ide.eclipse.as.core.JBossServerCore;
  -import org.jboss.ide.eclipse.as.core.server.JBossServer;
  -import org.jboss.ide.eclipse.as.core.server.ServerAttributeHelper;
  -import org.jboss.ide.eclipse.as.core.util.ASDebug;
  -import org.xml.sax.XMLReader;
  -
  -/**
  - * This class is intended to represent the actual mbeans, 
  - * configuration descriptors, jars, etc enabled, disabled, or 
  - * available in a server's on-disk configuration.
  - * 
  - * By configuration, here, I mean the directory under jboss' 
  - * install directory which contains deployed jars and -service.xml files,
  - * mbeans, etc. 
  - * 
  - * This is not yet implemented. All code here is forward-looking.
  - * 
  - * @author rstryker
  - *
  - */
  +import org.eclipse.core.runtime.Path;
  +import org.jboss.ide.eclipse.as.core.util.SimpleTreeItem;
   
   public class DescriptorModel {
  -	
   	/* Static Portion */
   	private static DescriptorModel model = null;
   	
  @@ -87,46 +66,38 @@
   		map = new HashMap();
   	}
   	
  -	public ServerDescriptorModel getServerModel(IServer server) {
  -		String key = server.getId();
  +	public ServerDescriptorModel getServerModel(IPath home, IPath configName) {
  +		String key = home.toOSString() + "::" + configName.toOSString();
   		Object o = map.get(key);
   		if( o == null ) {
  -			o = createEntity(server);
  +			o = createEntity(home, configName);
   		}
   		return (ServerDescriptorModel)o;
   	}
   	
  -	private ServerDescriptorModel createEntity(IServer server) {
  -		if( server.getServerType().getId().startsWith("org.jboss.ide.eclipse.as.")) {
  -			String id = server.getId();
  -			ServerDescriptorModel val = new ServerDescriptorModel(id);
  -			map.put(id, val);
  +	private ServerDescriptorModel createEntity(IPath home, IPath configName) {
  +		ServerDescriptorModel val = new ServerDescriptorModel(home.toOSString(), configName.toOSString());
  +		map.put(home.toOSString() + configName.toOSString(), val);
   			return val;
   		}
  -		return null;
  -	}
  -	
   	
  -	public class ServerDescriptorModel {
  -		private String serverId;
  +	public static class ServerDescriptorModel {
  +		private String home, config, key;
   		private String configPath;
   		
   		private HashMap pathToDocument;
   		private HashMap pathToLastRead;
   		
  -		public ServerDescriptorModel(String id) {
  -			this.serverId = id;
  -			ServerAttributeHelper helper = getJBossServer().getAttributeHelper();
  -			configPath = helper.getConfigurationPath();
  +		public ServerDescriptorModel(String home, String config) {
  +			this.key = home + "::" + config;
  +			this.home = home;
  +			this.config = config;
  +			configPath = + Path.SEPARATOR + "server" + Path.SEPARATOR + config;
  +			
   			pathToDocument = new HashMap();
   			pathToLastRead = new HashMap();
   		}
   		
  -		public JBossServer getJBossServer() {
  -			return JBossServerCore.getServer(ServerCore.findServer(serverId));
  -		}
  -		
  -		
   		/**
   		 * Discover all descriptors in the configuration
   		 * @return
  @@ -172,9 +143,7 @@
   		}
   
   		public String[] getIgnoredDirectories() {
  -			List list = ((Server)getJBossServer().getAttributeHelper().getServer()).getAttribute(IGNORED_DESCRIPTOR_FOLDERS, new ArrayList());
  -			String[] ignoredDirs = (String[]) list.toArray(new String[list.size()]);
  -			return ignoredDirs;
  +			return new String[0];
   		}
   		
   		private Document getDocument(String path) {
  @@ -214,7 +183,6 @@
   				pathToDocument.put(path, document);
   				pathToLastRead.put(path, new Long(lastModified));
   			} catch( Exception e ) {
  -				ASDebug.p("file " + path + ", Exception: " + e.getMessage(), this);
   				e.printStackTrace();
   			}
   		}
  @@ -477,5 +445,6 @@
   			}
   			return 1099;
   		}
  +
   	}
   }
  
  
  
  1.8       +39 -439   jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/ServerProcessModel.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ServerProcessModel.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/ServerProcessModel.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -b -r1.7 -r1.8
  --- ServerProcessModel.java	2 Aug 2006 15:22:49 -0000	1.7
  +++ ServerProcessModel.java	10 Nov 2006 00:26:25 -0000	1.8
  @@ -23,52 +23,20 @@
   
   import java.util.ArrayList;
   import java.util.HashMap;
  -import java.util.HashSet;
   import java.util.Iterator;
  -import java.util.Set;
   
  -import org.eclipse.core.runtime.CoreException;
  -import org.eclipse.debug.core.DebugEvent;
   import org.eclipse.debug.core.DebugException;
  -import org.eclipse.debug.core.DebugPlugin;
  -import org.eclipse.debug.core.IDebugEventSetListener;
   import org.eclipse.debug.core.ILaunchConfiguration;
  -import org.eclipse.debug.core.IStreamListener;
   import org.eclipse.debug.core.model.IProcess;
  -import org.eclipse.debug.core.model.IStreamMonitor;
  -import org.eclipse.debug.core.model.IStreamsProxy;
  -import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
   import org.eclipse.wst.server.core.IServer;
   import org.eclipse.wst.server.core.IServerLifecycleListener;
   import org.eclipse.wst.server.core.ServerCore;
   import org.jboss.ide.eclipse.as.core.JBossServerCore;
  -import org.jboss.ide.eclipse.as.core.model.ServerProcessLog.ProcessLogEvent;
  -import org.jboss.ide.eclipse.as.core.model.ServerProcessLog.ProcessLogEventRoot;
  -import org.jboss.ide.eclipse.as.core.server.IServerLogListener;
  -import org.jboss.ide.eclipse.as.core.server.IServerProcessListener;
   import org.jboss.ide.eclipse.as.core.server.JBossServer;
  -import org.jboss.ide.eclipse.as.core.server.ServerProcessEvent;
  -import org.jboss.ide.eclipse.as.core.util.ASDebug;
  +import org.jboss.ide.eclipse.as.core.server.JBossServerLaunchConfiguration;
   
  -/**
  - * This model keeps track of each server and the processes that 
  - * are currently running in association with it. 
  - * 
  - * This includes start processes (a running jboss server), as 
  - * well as stop and twiddle launches trying to communicate with 
  - * this particular server. 
  - * 
  - * @author rstryker
  - *
  - */
   public class ServerProcessModel implements IServerLifecycleListener {
   	
  -	public static final String START_PROCESSES = "__START_PROCESSES__";
  -	public static final String STOP_PROCESSES = "__STOP_PROCESSES__";
  -	public static final String TWIDDLE_PROCESSES = "__TWIDDLE_PROCESSES__";
  -	public static final String TERMINATED_PROCESSES = "__TERMINATED__PROCESSES__";
  -	
  -	
   	private static ServerProcessModel instance;
   	
   	/**
  @@ -135,13 +103,10 @@
   			if( !create ) return null;
   			o = new ServerProcessModelEntity(key);
   			map.put(key, (ServerProcessModelEntity)o);
  -			processModelChanged(((ServerProcessModelEntity)o).getEventLog());
   		}
   		return ((ServerProcessModelEntity)o);
   	}
   	
  -	
  -	
   	public ServerProcessModelEntity[] getModels() {
   		ArrayList list = new ArrayList();
   		Iterator i = map.keySet().iterator();
  @@ -153,19 +118,6 @@
   		return models;
   	}
   	
  -	public void addLogListener(IServerLogListener listener) {
  -		logListeners.add(listener);
  -	}
  -	public void removeLogListener(IServerLogListener listener) {
  -		logListeners.remove(listener);
  -	}
  -
  -	public void processModelChanged(ProcessLogEvent event) {
  -		Iterator i = logListeners.iterator();
  -		while(i.hasNext()) {
  -			((IServerLogListener)i.next()).logChanged(event);
  -		}
  -	}
   	/**
   	 * Completely shut down all JBoss Servers, as well as all 
   	 * start, stop, and twiddle launches associated with them.
  @@ -179,427 +131,75 @@
   		}
   	}
   	
  +	public class ServerProcessModelEntity { 
   	
  -	
  -	
  -	
  -	/**
  -	 * Process model for one jboss server
  -	 */
  -	public class ServerProcessModelEntity implements IDebugEventSetListener {
  -	
  -		private HashMap allProcesses;
  -		private String serverID;
  -		private ArrayList processListeners;
  -		private ArrayList removeOnTerminate;
  -		private ProcessLogEventRoot eventLog;
  -		private ServerConsoleLogger logger;
  -		
  -		public ServerProcessModelEntity(String serverID) {
  -			allProcesses = new HashMap();
  -			processListeners = new ArrayList();
  -			this.serverID = serverID;
  -			removeOnTerminate = new ArrayList();
  -			DebugPlugin.getDefault().addDebugEventListener(this);
  -			eventLog = new ProcessLogEventRoot(serverID);
  -			logger = new ServerConsoleLogger(serverID); 
  -			addSPListener(logger);
  -		}
  -		
  -		public ProcessData[] getProcessDatas(String processType) {
  -			Iterator i = allProcesses.keySet().iterator();
  -			Set s = new HashSet();
  -			ProcessData data;
  -			while(i.hasNext()) {
  -				data = (ProcessData)(allProcesses.get(i.next()));
  -				if( data.getProcesType().equals(processType)) {
  -					s.add(data);
  -				}
  -			}
  -			ProcessData[] ret = new ProcessData[s.size()];
  -			s.toArray(ret);
  -			return ret;
  -		}
  -		
  -		public IProcess[] getProcesses(String processType) {
  -			ProcessData[] datas = getProcessDatas(processType);
  -			IProcess[] ret = new IProcess[datas.length];
  -			for( int i = 0; i < datas.length; i++ ) {
  -				ret[i] = datas[i].getProcess();
  -			}
  -			return ret;
  -		}
  -		
  -		
  -		public void clearAll() {
  -			ArrayList datas = new ArrayList(allProcesses.values());
  -			Iterator it = datas.iterator();
  -			ProcessData d = null;
  -			while(it.hasNext()) {
  -				d = (ProcessData)it.next();
  -				completelyRemove(new ProcessData[] { d }, d.getProcesType());
  -			}
  -		}
  -		
  -		public void clear( String processType ) {
  -			ArrayList l = new ArrayList();
  -			l.addAll(allProcesses.values());
  -			
  -			Iterator i = l.iterator();
  -			ProcessData pd = null;
  -			while(i.hasNext()) {
  -				pd = (ProcessData)i.next();
  -				if( (pd.getProcesType().equals(processType))) {
  -					completelyRemove( new ProcessData[] {pd}, pd.getProcesType());
  -				}
  -			}
  -		}
  -		
  -		public void clearTerminated() {
  -			ArrayList l = new ArrayList();
  -			l.addAll(allProcesses.values());
  -			
  -			Iterator i = l.iterator();
  -			ProcessData pd = null;
  -			while(i.hasNext()) {
  -				pd = (ProcessData)i.next();
  -				if( pd.getProcess().isTerminated()) {
  -					completelyRemove( new ProcessData[] {pd}, ServerProcessModel.TERMINATED_PROCESSES);
  -				}
  -			}
  -		}
  -		
  -		/**
  -		 * Completely remove the processes from the model,
  -		 * close / destroy their streams, and fire events to 
  -		 * any listeners.
  -		 * 
  -		 * @param pd
  -		 * @param processType
  -		 */
  -		private void completelyRemove(ProcessData[] pd, String processType) {
  -			// Terminate anything that's not already terminated. 
  -			for( int i = 0; i < pd.length; i++ ) {
  -
  -				if( pd[i] == null ) continue;
  -				
  -				if( !pd[i].getProcess().isTerminated()) {
  -					try {
  -						pd[i].getProcess().terminate();
  -						pd[i].destroy();
  -					} catch ( DebugException de ) {
  -					}
  +		private String serverId;
  +		private HashMap processMap; // <String type, ArrayList processes>
  +		public ServerProcessModelEntity(String key) {
  +			this.serverId = key;
  +			processMap = new HashMap(3);
  +			processMap.put(JBossServerLaunchConfiguration.START, new ArrayList());
  +			processMap.put(JBossServerLaunchConfiguration.STOP, new ArrayList());
  +			processMap.put(JBossServerLaunchConfiguration.TWIDDLE, new ArrayList());
   				}
  -				allProcesses.remove(pd[i].getProcess());
  -				removeOnTerminate.remove(pd[i].getProcess());
  -			}
  -			fireEvents(IServerProcessListener.PROCESS_REMOVED, processType, pd, null);
  +		public String getServerId() {
  +			return serverId;
   		}
   		
   		public void add( IProcess[] processes, String processType, ILaunchConfiguration config ) {
  -			ArrayList pds = new ArrayList();
  -			ProcessData d = null;
  -			for( int i = 0; i < processes.length; i++ ) {
  -				d = new ProcessData(processes[i], processType);
  -				allProcesses.put(processes[i],d);
  -				pds.add(d);
  -			}
  -			
  -			
  -			ProcessData[] pdsArray = new ProcessData[pds.size()];
  -			pds.toArray(pdsArray);
  -			
  -			fireEvents(IServerProcessListener.PROCESS_ADDED, processType, pdsArray, config);
  -		}
  -		
  -		public void fireEvents(String eventType, String processType, ProcessData[] processes, ILaunchConfiguration config) {
  -			ServerProcessEvent event = new ServerProcessEvent(eventType, processType, processes, config);
  -			synchronized (processListeners) {			
  -				Iterator i = processListeners.iterator();
  -				while(i.hasNext() ) {
  -					((IServerProcessListener)i.next()).ServerProcessEventFired(event);
  -				}
  -			}
  -		}
  -		
  -		public void addSPListener(IServerProcessListener listener) {
  -			synchronized (processListeners) {
  -				processListeners.add(listener);
  -			}
  -		}
  -		
  -		public void removeSPListener(IServerProcessListener listener) {
  -			synchronized (processListeners) {
  -				processListeners.remove(listener);
  -			}
  -		}
  -		
  -
  -		public String getServerID() {
  -			return serverID;
  -		}
  -		
  -		/**
  -		 * The model is free to remove these processes upon termination.
  -		 * This designates that no one is listening for their output 
  -		 * streams, or that they have already gotten what they were
  -		 * listening for. 
  -		 * 
  -		 * @param processes
  -		 */
  -		public void removeProcessOnTerminate(IProcess[] processes) {
  +			ArrayList pds = (ArrayList)processMap.get(processType);
   			for( int i = 0; i < processes.length; i++ ) {
  -				ProcessData data = (ProcessData)allProcesses.get(processes[i]);
  -				removeOnTerminate.add(processes[i]);
  -			}
  -			recheckTerminatedProcesses();
  -		}
  -		
  -
  -		/**
  -		 * If a process is terminated and it's in the 
  -		 * remove-on-terminate list, then completely remove it.
  -		 */
  -		public void handleDebugEvents(DebugEvent[] events) {
  -			boolean recheckTerminated = false;
  -			for( int i = 0; i < events.length; i++ ) {
  -				if( events[i].getKind() == DebugEvent.TERMINATE ) {
  -					recheckTerminatedProcesses();
  -					return;
  -				}
  -			}
  -		}
  -		/**
  -		 * Go through a list of launches allowed to be removed upon
  -		 * termination and check if any have terminated yet.
  -		 *
  -		 */
  -		public void recheckTerminatedProcesses() {
  -			Iterator i = removeOnTerminate.iterator();
  -			IProcess proc;
  -			ArrayList l = new ArrayList();
  -			ProcessData data;
  -			while(i.hasNext()) {
  -				proc = (IProcess)i.next();
  -				if( proc.isTerminated()) {
  -					data = (ProcessData)allProcesses.get(proc);
  -					if( data == null ) {
  -						removeOnTerminate.remove(proc);
  -					} else {
  -						l.add(data);
  -					}
  -				}
  -			}
  -			ProcessData[] pdArray = new ProcessData[l.size()];
  -			l.toArray(pdArray);
  -			completelyRemove(pdArray, ServerProcessModel.TERMINATED_PROCESSES);
  -		}
  -
  -		public ProcessLogEventRoot getEventLog() {
  -			return eventLog;
  -		}
  -
  -	
  -	
  -	}
  -	
  -	public static class ConsoleLogEvent extends ProcessLogEvent {
  -		public ConsoleLogEvent() {
  -			super(ProcessLogEvent.SERVER_CONSOLE);
  -		}
  -		public String toString() {
  -			return getProperty(new Integer(ServerProcessLog.ProcessLogEvent.SERVER_CONSOLE)).toString();
  -		}
  -	}
  -	
  -	private class ServerConsoleLogger implements IServerProcessListener, IStreamListener {
  -		private IStreamMonitor out, err;
  -		private ProcessLogEventRoot eventLogRoot;
  -		private String serverID;
  -		
  -		public ServerConsoleLogger(String serverID) {
  -			try {
  -				this.serverID = serverID;
  -			} catch( Exception e ) {
  -				ASDebug.p("Error", this);
  -				e.printStackTrace();
  +				pds.add(processes[i]);
   			}
   		}
   		
  -		public void ServerProcessEventFired(ServerProcessEvent event) {
  +		public void terminateProcesses(String type) {
  +			IProcess[] proc = getProcesses(type);
  +			for( int i = 0; i < proc.length; i++ ) {
   			try {
  -				if( event.getProcessType().equals(START_PROCESSES) && event.getProcessDatas().length == 1 ) {
  -					IStreamsProxy proxy = event.getProcessDatas()[0].getProcess().getStreamsProxy();
  -					out = proxy.getOutputStreamMonitor();
  -					err = proxy.getErrorStreamMonitor();
  -					out.addListener(this);
  -					err.addListener(this);
  -				}
  +					proc[i].terminate();
   			} catch( Exception e ) {
  -				ASDebug.p("Error", this);
  -				e.printStackTrace();
  -			}
  -		}
  -		
  -		private ProcessLogEvent getLatestConsole() {
  -			ProcessLogEvent major = getEventLog().getLatestMajorEvent(true);
  -			ProcessLogEvent[] children = major.getChildren();
  -			for( int i = 0; i < children.length; i++ ) {
  -				if( children[i] instanceof ConsoleLogEvent && 
  -						children[i].getEventType() == ProcessLogEvent.SERVER_CONSOLE ) {
  -					return children[i];
  -				}
  -			}
  -			ProcessLogEvent newConsole = new ConsoleLogEvent();
  -			major.addChild(newConsole, ProcessLogEvent.ADD_BEGINNING);
  -			return newConsole;
  -		}
  -		private ProcessLogEventRoot getEventLog() {
  -			if( eventLogRoot == null ) {
  -				this.eventLogRoot = ServerProcessModel.getDefault().
  -				getModel(serverID).getEventLog();
  -			}
  -			return eventLogRoot;
  -		}
  -		
  -
  -		public void streamAppended(String text, IStreamMonitor monitor) {
  -			if( monitor.equals(out)) {
  -				outAppended(text, monitor);
  -			} else if(monitor.equals(err)) {
  -				errAppended(text, monitor);
   			}
  -			getEventLog().branchChanged();
   		}
  -		
  -		protected void outAppended(String text, IStreamMonitor monitor) {
  -			append(text);
  -		}
  -		protected void errAppended(String text, IStreamMonitor monitor) {
  -			append(text);
   		}
  -		
  -		protected void append(String text) {
  -			Object o = getLatestConsole().getProperty(new Integer(ServerProcessLog.ProcessLogEvent.SERVER_CONSOLE));
  -			String x;
  -			if( o == null ) x = ""; else x = (String)o;
  -			x = x + text;
  -			getLatestConsole().setProperty(new Integer(ServerProcessLog.ProcessLogEvent.SERVER_CONSOLE), x);
  +		public IProcess[] getProcesses(String type) {
  +			ArrayList list = (ArrayList)processMap.get(type);
  +			if( list != null )
  +				return (IProcess[]) list.toArray(new IProcess[list.size()]);
  +			return new IProcess[0];
   		}
  -	}
  -	
   	
  -	/**
  -	 * A class that can monitor a process's standard OUT and
  -	 * standard error, as well as keep track of the process's 
  -	 * arguments that it was launched with. 
  -	 * 
  -	 * @author rstryker
  -	 *
  -	 */
  -	public static class ProcessData implements IStreamListener {
  -		private String args;
  -		private String processType;
  -
  -		private IProcess process;
  -		private IStreamMonitor outMonitor;
  -		private IStreamMonitor errMonitor;
  -		
  -		private String out, err;
  -
  -		public ProcessData(IProcess process, String processType) {
  -			this(null, process, processType);
  +		public void clearAll() {
  +			ArrayList list;
  +			IProcess proc;
  +			for( Iterator i = processMap.values().iterator(); i.hasNext();) {
  +				list = (ArrayList)i.next();
  +				for( Iterator j = list.iterator(); j.hasNext();) {
   			try {
  -				this.args = process.getLaunch().getLaunchConfiguration().
  -					getAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, (String)null);
  -			} catch( CoreException ce ) {
  -			}
  -
  -		}
  -		
  -		public ProcessData(String args, IProcess process, String processType) {
  -			this.args = args;
  -			this.process = process;
  -			this.processType = processType;
  -			
  -			//ASDebug.p("process is " + process, this);
  -			//ASDebug.p("Stream Proxy is " + process.getStreamsProxy(), this);
  -			this.outMonitor = process.getStreamsProxy().getOutputStreamMonitor();
  -			this.errMonitor = process.getStreamsProxy().getErrorStreamMonitor();
  -			
  -			out = "";
  -			err = "";
  -		}
  -		
  -		public void startListening() {
  -			outMonitor.addListener(this);
  -			errMonitor.addListener(this);
  +						proc = (IProcess)j.next();
  +						proc.terminate();
  +					} catch( DebugException de ) {}
  +					j.remove();
   		}
  -		
  -		public void stopListening() {
  -			outMonitor.removeListener(this);
  -			errMonitor.removeListener(this);
  -		}
  -		
  -		public void resetStrings() {
  -			out = "";
  -			err = "";
  -		}
  -		
  -		public void destroy() {
  -			stopListening();
  -			resetStrings();
   		}
  -
  -		public void streamAppended(String text, IStreamMonitor monitor) {
  -			if( monitor == outMonitor ) {
  -				out += text;
  -			} else if( monitor == errMonitor ) {
  -				err += text;
   			}
   		}
   
  -		public String getArgs() {
  -			return args;
  -		}
  -
  -		public String getErr() {
  -			return err;
  -		}
  -
  -		public String getOut() {
  -			return out;
  -		}
  -		
  -		public String getProcesType() {
  -			return processType;
  -		}
  -		
  -		public IProcess getProcess() {
  -			return process;
  -		}
  -
  -	}
   
   
   	public void serverAdded(IServer server) {
   		if( JBossServerCore.getServer(server) != null ) {
  -			// init
   			getModel(server.getId(), true);
   		}
   	}
   
   	public void serverChanged(IServer server) {
  -		// TODO Auto-generated method stub
  -		
   	}
   
   	public void serverRemoved(IServer server) {
   		if( JBossServerCore.getServer(server) != null ) {
   			ServerProcessModelEntity ent = getModel(server.getId());
   			map.remove(server.getId());
  -			processModelChanged(ent.getEventLog());
   		}
   	}
  -	
   }
  
  
  
  1.5       +13 -203   jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/ModuleModel.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ModuleModel.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/ModuleModel.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- ModuleModel.java	10 Jul 2006 15:44:42 -0000	1.4
  +++ ModuleModel.java	10 Nov 2006 00:26:25 -0000	1.5
  @@ -22,11 +22,8 @@
   package org.jboss.ide.eclipse.as.core.model;
   
   import java.util.ArrayList;
  -import java.util.Arrays;
   import java.util.Collections;
   import java.util.Comparator;
  -import java.util.Date;
  -import java.util.HashMap;
   import java.util.Iterator;
   
   import org.eclipse.core.resources.IResource;
  @@ -38,42 +35,23 @@
   import org.eclipse.core.runtime.CoreException;
   import org.eclipse.core.runtime.IConfigurationElement;
   import org.eclipse.core.runtime.IExtensionRegistry;
  -import org.eclipse.core.runtime.IPath;
   import org.eclipse.core.runtime.Platform;
   import org.eclipse.wst.server.core.IModule;
   import org.eclipse.wst.server.core.IServer;
  +import org.eclipse.wst.server.core.ServerCore;
   import org.eclipse.wst.server.core.internal.ModuleFactory;
  +import org.eclipse.wst.server.core.internal.Server;
   import org.eclipse.wst.server.core.internal.ServerPlugin;
  -import org.eclipse.wst.server.core.model.IModuleResource;
  -import org.eclipse.wst.server.core.model.IModuleResourceDelta;
   import org.eclipse.wst.server.core.model.ModuleFactoryDelegate;
   import org.jboss.ide.eclipse.as.core.JBossServerCore;
   import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
  -import org.jboss.ide.eclipse.as.core.module.factory.JBossModuleFactory;
  +import org.jboss.ide.eclipse.as.core.module.JBossModuleFactory;
   import org.jboss.ide.eclipse.as.core.server.JBossServer;
  -import org.jboss.ide.eclipse.as.core.util.ASDebug;
   
  -
  -/**
  - * This class is the model behind the sole artifact adaptor.
  - *  
  - * This class / model is responsible for the following:
  - * 	- A sorted list of our factories (from extension points)
  - *  - Querying those factories as to whether they contain some module
  - *  - Listening in for resource changes and alerting the factories
  - *         that they need to adjust accordingly.
  - *  - Ultimately keeping track of resource changes that may be 
  - *         important to consider during the publish operation. 
  - *         
  - *         
  - * @author rstryker
  - *
  - */
   public class ModuleModel implements IResourceChangeListener{
   	
   	private static ModuleModel singleton;
   	private ArrayList factories;
  -	private ModuleDeltaModel deltaModel;
   	
   	public static ModuleModel getDefault() {
   		if( singleton == null ) {
  @@ -99,7 +77,6 @@
   				int p0 = ((ModuleFactory)arg0).getOrder();
   				int p1 = ((ModuleFactory)arg1).getOrder();
   				
  -				//ASDebug.p("arg0 has value " + p0 + " and arg1 has value " + p1, this);
   				int retval = 0;
   				if( p0 == p1 ) {
   					retval = 0;
  @@ -108,8 +85,6 @@
   				} else if( p0 < p1 ) {
   					retval = 1;
   				}
  -				
  -				
   				return retval;
   			}
   		};
  @@ -117,31 +92,10 @@
   		loadAcceptableFactories();
   		Collections.sort(factories, factoryComparator);
   		
  -		deltaModel = new ModuleDeltaModel();
  -		
   		ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE );
   		init();
   	}
   	
  -	public static boolean isPackagedModule(IModule module) {
  -		if( "jboss.archive".equals(module.getModuleType().getId())) return true;
  -		/*
  -		if( "jboss.web".equals(module.getModuleType().getId())) return true;
  -		if( "jboss.ear".equals(module.getModuleType().getId())) return true;
  -		if( "jboss.ejb".equals(module.getModuleType().getId())) return true;
  -		if( "jboss.aop".equals(module.getModuleType().getId())) return true;
  -		*/
  -		return false;
  -	}
  -	
  -	public static boolean arePackagedModules(IModule[] modules) {
  -		for( int i = 0; i < modules.length; i++ ) {
  -			if( !isPackagedModule(modules[i])) 
  -				return false;
  -		}
  -		return true;
  -	}
  -
   	private void loadAcceptableFactories() {
   		ModuleFactory[] factories = ServerPlugin.getModuleFactories();
   		String[] jbossIds = loadJBossFactoryIDs();
  @@ -149,7 +103,6 @@
   		for( int i = 0; i < factories.length; i++ ) {
   			for( int j = 0; j < jbossIds.length; j++ ) {
   				if( jbossIds[j].equals(factories[i].getId()) ) {
  -					ASDebug.p("Adding factory: " + factories[i].getId(), this);
   					this.factories.add(factories[i]);
   				}
   			}
  @@ -157,18 +110,15 @@
   	}
   	
   	private String[] loadJBossFactoryIDs() {
  -		
   		IExtensionRegistry registry = Platform.getExtensionRegistry();
   		IConfigurationElement[] cf = registry.getConfigurationElementsFor(JBossServerCorePlugin.PLUGIN_ID, "jbossModuleFactory");
   
  -		
   		int size = cf.length;
   		ArrayList list = new ArrayList();
   		for (int i = 0; i < size; i++) {
   			list.add(cf[i].getAttribute("id"));
   			try {
   			} catch (Throwable t) {
  -				ASDebug.p("Exception", this);
   			}
   		}
   		String[] jbossFactories = new String[list.size()];
  @@ -325,159 +275,19 @@
   
   	
   	
  -	public void markModuleChanged(IModule module, int resourceDelta) {
  -		if( resourceDelta == IResourceDelta.ADDED) {
  -			getDeltaModel().setModuleState(module, IModuleResourceDelta.ADDED);
  -		} else if( resourceDelta == IResourceDelta.REMOVED ) {
  -			getDeltaModel().setModuleState(module, IModuleResourceDelta.REMOVED);
  -		} else if( resourceDelta == IResourceDelta.CHANGED ) {
  -			getDeltaModel().setModuleState(module, IModuleResourceDelta.CHANGED);
  -		}
  -	}
  -
  -	public ModuleDeltaModel getDeltaModel() {
  -		return deltaModel;
  -	}
  -	
  -	public class ModuleDeltaModel  {
  -		/**
  -		 * Maps a module id to it's most recent delta, which includes date
  -		 */
  -		private HashMap moduleToDelta;
  -		
  -		/**
  -		 * Maps a server+module id to the last delta that 
  -		 * was marked as received by the server.
  -		 */
  -		private HashMap servermodToLastDelta;
  -		
  -		public ModuleDeltaModel() {
  -			moduleToDelta = new HashMap();
  -			servermodToLastDelta = new HashMap();
  -		}
  -		
  -		/**
  -		 * The resource associated with this module has been either
  -		 * changed, added, or removed. This regards the underlying
  -		 * jar, war, ear (etc) file, and a resourceChangeEvent that
  -		 * has affected it. 
  -		 * 
  -		 * @param module
  -		 * @param resourceDeltaKind
  -		 */
  -		public void setModuleState(IModule module, int resourceDeltaKind) {
  -			moduleToDelta.put(module.getId(), new ModuleDelta(resourceDeltaKind));
  -		}
  -		
  -		
  -		/**
  -		 * Set the current delta as the last one seen by this server.
  -		 * @param module
  -		 * @param serverID
  -		 */
  -		public void setDeltaSeen(IModule module, String serverID) {
  -			String key = serverID + "::" + module.getId();
  -			IModuleResourceDelta[] delta = getDelta(module);
  -			if( delta != null ) {
  -				servermodToLastDelta.put(key, delta);
  -			}
  -		}
  -		
  -		
  -		/**
  -		 * Get the newest delta for the given module, or null if none available
  -		 * @param module
  -		 * @return
  -		 */
  -		public IModuleResourceDelta[] getDelta(IModule module) {
  -			Object o = moduleToDelta.get(module.getId());
  -			if( o == null ) {
  -				return new IModuleResourceDelta[0];
  -			}
  -			
  -			return new IModuleResourceDelta[] {(IModuleResourceDelta)o};			
  -		}
  -		
  -		/**
  -		 * Get the newest deltas for each of the modules provided
  -		 * @param modules
  -		 * @return
  -		 */
  -		public IModuleResourceDelta[] getDeltas(IModule[] modules) {
  -			ArrayList list = new ArrayList();
  -			IModuleResourceDelta[] delta;
  -			for( int i = 0; i < modules.length; i++ ) {
  -				delta = getDelta(modules[i]);
  -				if( delta != null ) 
  -					list.addAll(Arrays.asList(delta));
  +	public void markModuleChanged(IModule module) {
  +		IServer[] servers = ServerCore.getServers();
  +		Server s;
  +		for( int i = 0; i < servers.length; i++ ) {
  +			if( servers[i] instanceof Server ) {
  +				s = (Server)servers[i];
  +				int stateOnServer = s.getModulePublishState(new IModule[] {module});
  +				if( stateOnServer != 0 ) {
  +					s.setModulePublishState(new IModule[] { module }, IServer.PUBLISH_STATE_UNKNOWN);
   			}
  -			ModuleDelta[] deltas = new ModuleDelta[list.size()];
  -			list.toArray(deltas);
  -			return deltas;
   		}
  -		
  -		public IModuleResourceDelta[] getRecentDeltas(IModule[] modules, IServer server) {
  -			String id = server.getId();
  -			ArrayList deltaList = new ArrayList();
  -			deltaList.addAll(Arrays.asList(getDeltas(modules)));
  -			
  -			
  -			// We have a list of all of the deltas for the module list.
  -			// now eliminate any that aren't new.
  -			String key;
  -			Object o;
  -			IModuleResourceDelta[] ds;
  -			for( int i = 0; i < modules.length; i++ ) {
  -				key = id + "::" + modules[i].getId();
  -				o = servermodToLastDelta.get(key);
  -				if( o != null ) {
  -					ds = (IModuleResourceDelta[])o;
  -					deltaList.removeAll(Arrays.asList(ds));
  -					ASDebug.p("Removing a delta that's already been seen.", this);
   				}
   			}
   			
  -			IModuleResourceDelta[] deltas = new IModuleResourceDelta[deltaList.size()];
  -			deltaList.toArray(deltas);
  -			return deltas;
  -		}
  -		
  -	}
  -	
  -	public class ModuleDelta implements IModuleResourceDelta {
  -		/**
  -		 * Kind is a value from IModuleResourceDelta
  -		 */
  -		private int kind;
  -		
  -		/**
  -		 * Date is the last time this module was changed.
  -		 * Servers can use this to figure OUT if it needs to be
  -		 * published again or not. 
  -		 */
  -		private long date;
  -		public ModuleDelta(int kind) {
  -			this.kind = kind;
  -			this.date = new Date().getTime();
  -		}
  -
  -		public IModuleResourceDelta[] getAffectedChildren() {
  -			return new IModuleResourceDelta[0];
  -		}
  -
  -		public int getKind() {
  -			return kind;
  -		}
  -
  -		public IPath getModuleRelativePath() {
  -			return null;
  -		}
  -
  -		public IModuleResource getModuleResource() {
  -			return null;
  -		}
  -		
  -	}
  -	
   
   }
  
  
  



More information about the jboss-cvs-commits mailing list