[jbosstools-commits] JBoss Tools SVN: r6880 - in trunk/core: plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant and 8 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Tue Mar 11 16:58:10 EDT 2008


Author: rob.stryker at jboss.com
Date: 2008-03-11 16:58:09 -0400 (Tue, 11 Mar 2008)
New Revision: 6880

Added:
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveAction.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelRootNode.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveActionImpl.java
Removed:
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelNode.java
Modified:
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/project/ArchivesBuilder.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant/IsolatedTruezipExecution.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ArchiveBuildDelegate.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ModelChangeListener.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchiveNodeFactory.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModel.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/EventManager.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchive.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModel.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNode.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNodeDelta.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveDeltaPreNodeFactory.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveImpl.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveModelNode.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeImpl.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/ModelUtil.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/internal/ModelTruezipBridge.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java
   trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java
   trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/ModelCreationTest.java
Log:
Archives API Refactor.  Renamed IArchiveModelNode to IArchiveModelRootNode (and some methods accordingly).   Continued to implement IArchiveAction and it's implementations and move forward on unit tests. 

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/project/ArchivesBuilder.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/project/ArchivesBuilder.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/project/ArchivesBuilder.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -41,7 +41,7 @@
 import org.jboss.ide.eclipse.archives.core.model.IArchive;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveModel;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModelRootNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeVisitor;
 import org.jboss.ide.eclipse.archives.core.util.internal.TrueZipUtil;
@@ -92,7 +92,7 @@
 	 */
 	protected void clean(IProgressMonitor monitor) throws CoreException {
 		IPath p = getProject().getLocation();
-		IArchiveModelNode root = ArchivesModel.instance().getRoot(p);
+		IArchiveModelRootNode root = ArchivesModel.instance().getRoot(p);
 		if(root!=null) {
 			IArchiveNode[] nodes = root.getChildren(IArchiveNode.TYPE_ARCHIVE);
 			for( int i = 0; i < nodes.length; i++ ) {
@@ -150,7 +150,7 @@
 		final IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
 		final int count = workspaceRoot.getLocation().segmentCount();
 
-		IArchiveModelNode root = ArchivesModel.instance().getRoot(getProject().getLocation());
+		IArchiveModelRootNode root = ArchivesModel.instance().getRoot(getProject().getLocation());
 		if(root!=null) {
 			root.accept(new IArchiveNodeVisitor () {
 				public boolean visit (IArchiveNode node) {

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant/IsolatedTruezipExecution.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant/IsolatedTruezipExecution.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant/IsolatedTruezipExecution.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -13,7 +13,7 @@
 import org.jboss.ide.eclipse.archives.core.model.IArchive;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveBuildListener;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModelRootNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeVisitor;
 
@@ -65,7 +65,7 @@
 			}
 		}
 		
-		IArchiveModelNode node = ArchivesModel.instance().getRoot(path);
+		IArchiveModelRootNode node = ArchivesModel.instance().getRoot(path);
 		final ArrayList<String> requiredProjects = new ArrayList<String>();
 		node.accept(new IArchiveNodeVisitor() {
 			public boolean visit(IArchiveNode node) {

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ArchiveBuildDelegate.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ArchiveBuildDelegate.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ArchiveBuildDelegate.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -31,7 +31,7 @@
 import org.jboss.ide.eclipse.archives.core.model.IArchive;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModelRootNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
 import org.jboss.ide.eclipse.archives.core.util.ModelUtil;
 import org.jboss.ide.eclipse.archives.core.util.internal.ModelTruezipBridge;
@@ -60,7 +60,7 @@
 		EventManager.cleanProjectBuild(project);
 		EventManager.startedBuild(project);
 
-		IArchiveModelNode root = ArchivesModel.instance().getRoot(project);
+		IArchiveModelRootNode root = ArchivesModel.instance().getRoot(project);
 		if( root == null ) return;
 		IArchiveNode[] nodes = root.getChildren(IArchiveNode.TYPE_ARCHIVE);
 		for( int i = 0; i < nodes.length; i++ ) {

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ModelChangeListener.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ModelChangeListener.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ModelChangeListener.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -28,7 +28,7 @@
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveModelListener;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModelRootNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
 import org.jboss.ide.eclipse.archives.core.model.IArchivesLogger;
@@ -162,8 +162,8 @@
 	private void nodeAdded(IArchiveNode added) {
 		if( added == null ) return;
 		
-		if( added.getNodeType() == IArchiveNode.TYPE_MODEL) {
-			IArchiveNode[] archives = ((IArchiveModelNode)added).getChildren(IArchiveNode.TYPE_ARCHIVE);
+		if( added.getNodeType() == IArchiveNode.TYPE_MODEL_ROOT) {
+			IArchiveNode[] archives = ((IArchiveModelRootNode)added).getChildren(IArchiveNode.TYPE_ARCHIVE);
 			for( int i = 0; i < archives.length; i++ ) {
 				nodeAdded(archives[i]);
 			}
@@ -186,7 +186,7 @@
 	
 	private void nodeRemoved(IArchiveNode removed) {
 		if( removed == null ) return;
-		if( removed.getNodeType() == IArchiveNode.TYPE_MODEL ) {
+		if( removed.getNodeType() == IArchiveNode.TYPE_MODEL_ROOT ) {
 			// remove all top level items
 			IArchiveNode[] kids = removed.getChildren(IArchiveNode.TYPE_ARCHIVE);
 			for( int i = 0; i < kids.length; i++ ) {

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchiveNodeFactory.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchiveNodeFactory.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchiveNodeFactory.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -21,6 +21,7 @@
  */
 package org.jboss.ide.eclipse.archives.core.model;
 
+import org.jboss.ide.eclipse.archives.core.model.internal.ArchiveActionImpl;
 import org.jboss.ide.eclipse.archives.core.model.internal.ArchiveFileSetImpl;
 import org.jboss.ide.eclipse.archives.core.model.internal.ArchiveFolderImpl;
 import org.jboss.ide.eclipse.archives.core.model.internal.ArchiveImpl;
@@ -42,4 +43,8 @@
 	public static IArchiveFolder createFolder() {
 		return new ArchiveFolderImpl();
 	}
+	
+	public static IArchiveAction createAction() {
+		return new ArchiveActionImpl();
+	}
 }

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModel.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModel.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModel.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -118,9 +118,9 @@
 	 * (non-Javadoc)
 	 * @see org.jboss.ide.eclipse.archives.core.model.IArchiveModel#getModelNodes()
 	 */
-	public IArchiveModelNode[] getModelNodes() {
+	public IArchiveModelRootNode[] getModelNodes() {
 		Collection<ArchiveModelNode> c = archivesRoot.values();
-		return (IArchiveModelNode[]) c.toArray(new IArchiveModelNode[c.size()]);
+		return (IArchiveModelRootNode[]) c.toArray(new IArchiveModelRootNode[c.size()]);
 	}
 	
 	/*
@@ -128,7 +128,7 @@
 	 * @see org.jboss.ide.eclipse.archives.core.model.IArchiveModel#accept(org.jboss.ide.eclipse.archives.core.model.IArchiveNodeVisitor)
 	 */
 	public boolean accept(IArchiveNodeVisitor visitor) {
-		IArchiveModelNode[] children = getModelNodes();
+		IArchiveModelRootNode[] children = getModelNodes();
 		boolean keepGoing = true;
 		if (keepGoing)
 			for (int i = 0; i < children.length; i++)
@@ -138,7 +138,7 @@
 	}	
 
 
-	public IArchiveModelNode getRoot(IPath project) {
+	public IArchiveModelRootNode getRoot(IPath project) {
 		return (archivesRoot.get(project));
 	}
 	
@@ -148,7 +148,7 @@
 	}
 	
 	@Deprecated
-	public void save(IArchiveModelNode modelNode, IProgressMonitor monitor) throws ArchivesModelException {
+	public void save(IArchiveModelRootNode modelNode, IProgressMonitor monitor) throws ArchivesModelException {
 		modelNode.save(monitor);
 	}
 	
@@ -156,11 +156,11 @@
 		return archivesRoot.containsKey(projectPath);
 	}
 	
-	public IArchiveModelNode registerProject(IPath projectPath, IProgressMonitor monitor) throws ArchivesModelException {
+	public IArchiveModelRootNode registerProject(IPath projectPath, IProgressMonitor monitor) throws ArchivesModelException {
 		return registerProject(projectPath, DEFAULT_PACKAGES_FILE, monitor);
 	}
 	
-	public IArchiveModelNode registerProject(IPath projectPath, String file, IProgressMonitor monitor) throws ArchivesModelException {
+	public IArchiveModelRootNode registerProject(IPath projectPath, String file, IProgressMonitor monitor) throws ArchivesModelException {
 		XbPackages packages;
 		ArchiveModelNode modelNode;
 
@@ -186,35 +186,36 @@
 		return modelNode;
 	}
 	
-	public void registerProject(IArchiveModelNode model, IProgressMonitor monitor) {
+	public void registerProject(IArchiveModelRootNode model, IProgressMonitor monitor) {
 		ArchivesCore.getInstance().preRegisterProject(model.getProjectPath());
 		xbPackages.put(model.getProjectPath(), ((ArchiveModelNode)model).getXbPackages());
 		archivesRoot.put(model.getProjectPath(), (ArchiveModelNode)model);
+		model.setModel(this);
 		fireRegisterProjectEvent((ArchiveModelNode)model);
 	}
 	
 	public void unregisterProject(IPath projectPath, IProgressMonitor monitor) {
-		IArchiveModelNode root = getRoot(projectPath);
+		IArchiveModelRootNode root = getRoot(projectPath);
 		xbPackages.remove(projectPath);
 		archivesRoot.remove(projectPath);
 		fireUnregisterProjectEvent(root);
 	}
 
-	public void unregisterProject(IArchiveModelNode model, IProgressMonitor monitor) {
+	public void unregisterProject(IArchiveModelRootNode model, IProgressMonitor monitor) {
 		xbPackages.remove(model.getProjectPath());
 		archivesRoot.remove(model.getProjectPath());
 		fireUnregisterProjectEvent((ArchiveModelNode)model);
 	}
 	
-	protected void fireRegisterProjectEvent(final IArchiveModelNode newRoot) {
+	protected void fireRegisterProjectEvent(final IArchiveModelRootNode newRoot) {
 		fireRegistrationEvent(null, newRoot, IArchiveNodeDelta.NODE_REGISTERED);
 	}
 	
-	protected void fireUnregisterProjectEvent(final IArchiveModelNode oldRoot) {
+	protected void fireUnregisterProjectEvent(final IArchiveModelRootNode oldRoot) {
 		fireRegistrationEvent(oldRoot, null, IArchiveNodeDelta.NODE_UNREGISTERED);
 	}
 	
-	protected void fireRegistrationEvent(final IArchiveModelNode oldRoot, final IArchiveModelNode newRoot, final int type) {
+	protected void fireRegistrationEvent(final IArchiveModelRootNode oldRoot, final IArchiveModelRootNode newRoot, final int type) {
 		IArchiveNodeDelta delta = new IArchiveNodeDelta() {
 			public IArchiveNodeDelta[] getAddedChildrenDeltas() {return null;}
 			public IArchiveNodeDelta[] getAllAffectedChildren() {return null;}

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/EventManager.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/EventManager.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/EventManager.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -176,7 +176,7 @@
 
 	
 	private static IArchiveModelListener[] getModelListeners(IArchiveNode node) {
-		IArchiveModelNode model = node.getModelNode();
+		IArchiveModelRootNode model = node.getModelRootNode();
 		if( model != null && model.getModel() != null ) {
 			return model.getModel().getModelListeners();
 		}
@@ -188,7 +188,7 @@
 		return ArchivesModel.instance().getBuildListeners();
 	}
 	private static IArchiveBuildListener[] getBuildListeners(IArchiveNode node) {
-		IArchiveModelNode model = node.getModelNode();
+		IArchiveModelRootNode model = node.getModelRootNode();
 		if( model != null && model.getModel() != null ) {
 			return model.getModel().getBuildListeners();
 		}

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchive.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchive.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchive.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -120,4 +120,14 @@
 	 * Set's whether the destination is workspace relative or not
 	 */
 	public void setInWorkspace(boolean inWorkspace);	
+	
+	/**
+	 * Top level archives should return a list of actions which
+	 * must be done before or after building this archive
+	 * @return
+	 */
+	public IArchiveAction[] getActions();
+	public IArchiveAction[] getPreActions();
+	public IArchiveAction[] getPostActions();
+	
 }

Added: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveAction.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveAction.java	                        (rev 0)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveAction.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -0,0 +1,74 @@
+/**
+ * JBoss, a Division of Red Hat
+ * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+* This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ide.eclipse.archives.core.model;
+
+/**
+ * @author rob.stryker <rob.stryker at redhat.com>
+ *
+ */
+public interface IArchiveAction extends IArchiveNode {
+
+	public static final String ATTRIBUTE_PREFIX = "org.jboss.ide.eclipse.archives.core.model.IArchiveAction.";
+	public static final String ACTION_TYPE_ATTRIBUTE = ATTRIBUTE_PREFIX + "type";
+	public static final String ACTION_TIME_ATTRIBUTE = ATTRIBUTE_PREFIX + "time";
+
+	
+	/**
+	 * A constant to indicate the action is to run before
+	 *  the build 
+	 */
+	public static final String PRE_BUILD = "preBuild";
+
+	/**
+	 * A constant to indicate the action is to run after the build 
+	 */
+	public static final String POST_BUILD = "postBuild";
+	/**
+	 * Get whether this should be executed 
+	 * before or after building the parent archive.
+	 * @return
+	 */
+	public String getTime();
+
+	/**
+	 * Set whether this should be executed 
+	 * before or after building the parent archive.
+	 * @return
+	 */
+	public void setTime(String time);
+
+	/**
+	 * Get the type of action this is. 
+	 * These are to be provided via an extension point
+	 * or ant task to be discovered in ArchivesCore.
+	 * @return
+	 */
+	public String getType();
+
+	/**
+	 * Set the type of action this is. 
+	 * These are to be provided via an extension point
+	 * or ant task to be discovered in ArchivesCore.
+	 * @return
+	 */
+	public void setType(String type);
+}

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModel.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModel.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModel.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -37,14 +37,14 @@
 
 	public boolean isProjectRegistered(IPath projectPath);
 	public void save(IPath projectPath, IProgressMonitor monitor) throws ArchivesModelException;
-	public void save(IArchiveModelNode modelNode, IProgressMonitor monitor) throws ArchivesModelException;
-	public IArchiveModelNode registerProject(IPath projectPath, IProgressMonitor monitor) throws ArchivesModelException;
-	public IArchiveModelNode registerProject(IPath projectPath, String file, IProgressMonitor monitor) throws ArchivesModelException;
-	public void registerProject(IArchiveModelNode modelNode, IProgressMonitor monitor);
+	public void save(IArchiveModelRootNode modelNode, IProgressMonitor monitor) throws ArchivesModelException;
+	public IArchiveModelRootNode registerProject(IPath projectPath, IProgressMonitor monitor) throws ArchivesModelException;
+	public IArchiveModelRootNode registerProject(IPath projectPath, String file, IProgressMonitor monitor) throws ArchivesModelException;
+	public void registerProject(IArchiveModelRootNode modelNode, IProgressMonitor monitor);
 	public void unregisterProject(IPath projectPath, IProgressMonitor monitor);
-	public void unregisterProject(IArchiveModelNode modelNode, IProgressMonitor monitor);
-	public IArchiveModelNode getRoot(IPath project);
-	public IArchiveModelNode[] getModelNodes();
+	public void unregisterProject(IArchiveModelRootNode modelNode, IProgressMonitor monitor);
+	public IArchiveModelRootNode getRoot(IPath project);
+	public IArchiveModelRootNode[] getModelNodes();
 	public boolean accept(IArchiveNodeVisitor visitor);
 	
 	public void addBuildListener(IArchiveBuildListener listener);

Deleted: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelNode.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelNode.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelNode.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -1,37 +0,0 @@
-/*
- * JBoss, a division of Red Hat
- * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.ide.eclipse.archives.core.model;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.jboss.ide.eclipse.archives.core.model.internal.xb.XMLBinding.XbException;
-
-
-/**
- * An interface for methods relevent to a model's root node.
- * Only a label interface thus far
- * @author <a href="rob.stryker at redhat.com">Rob Stryker</a>
- *
- */
-public interface IArchiveModelNode extends IArchiveNode {
-	public IArchiveModel getModel();
-	public void save(IProgressMonitor monitor) throws ArchivesModelException;
-}

Copied: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelRootNode.java (from rev 6878, trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelNode.java)
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelRootNode.java	                        (rev 0)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelRootNode.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -0,0 +1,38 @@
+/*
+ * JBoss, a division of Red Hat
+ * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ide.eclipse.archives.core.model;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.jboss.ide.eclipse.archives.core.model.internal.xb.XMLBinding.XbException;
+
+
+/**
+ * An interface for methods relevent to a model's root node.
+ * Only a label interface thus far
+ * @author <a href="rob.stryker at redhat.com">Rob Stryker</a>
+ *
+ */
+public interface IArchiveModelRootNode extends IArchiveNode {
+	public void setModel(IArchiveModel model);
+	public IArchiveModel getModel();
+	public void save(IProgressMonitor monitor) throws ArchivesModelException;
+}

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNode.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNode.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNode.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -36,29 +36,35 @@
 	/**
 	 * The node type that represents the model
 	 */
-	public static final int TYPE_MODEL = -1;
+	public static final int TYPE_MODEL_ROOT = -1;
 
 	/**
-	 * The node type that represents an IPackage
+	 * The node type that represents an IArchive
 	 */
 	public static final int TYPE_ARCHIVE = 0;
 	
 	/**
-	 * The node type that represents an IPackageReference
+	 * The node type that represents an IArchiveReference
 	 */
 	public static final int TYPE_ARCHIVE_REFERENCE = 1;
 	
 	/**
-	 * The node type that represents an IPackageFileSet
+	 * The node type that represents an IArchiveFileSet
 	 */
 	public static final int TYPE_ARCHIVE_FILESET = 2;
 	
 	/**
-	 * The node type that represents an IPackageFolder
+	 * The node type that represents an IActionFolder
 	 */
 	public static final int TYPE_ARCHIVE_FOLDER = 3;
 	
 	/**
+	 * The node type that represents an IArchiveAction
+	 */
+	public static final int TYPE_ARCHIVE_ACTION = 4;
+
+	
+	/**
 	 * @return The parent of this package node, or null if this node is top level
 	 */
 	public IArchiveNode getParent();
@@ -150,10 +156,11 @@
 	 * Get the model this node is attached to, or null if none
 	 * @return
 	 */
-	public IArchiveModelNode getModelNode();
+	public IArchiveModelRootNode getModelRootNode();
 
 	/**
-	 * Get the path relative to the root archive
+	 * Get the path relative to the root archive,
+	 * or null if not applicable. 
 	 * @return
 	 */
 	public IPath getRootArchiveRelativePath();

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNodeDelta.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNodeDelta.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNodeDelta.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -115,7 +115,7 @@
 	public IArchiveNode getPostNode();
 	
 	/**
-	 * Return the affected node before changes, or null if the node is an {@link IArchiveModelNode}
+	 * Return the affected node before changes, or null if the node is an {@link IArchiveModelRootNode}
 	 * @return
 	 */
 	public IArchiveNode getPreNode();

Added: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveActionImpl.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveActionImpl.java	                        (rev 0)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveActionImpl.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -0,0 +1,89 @@
+/**
+ * JBoss, a Division of Red Hat
+ * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+* This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ide.eclipse.archives.core.model.internal;
+
+import org.eclipse.core.runtime.IPath;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveAction;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
+import org.jboss.ide.eclipse.archives.core.model.internal.xb.XbAction;
+
+/**
+ * @author rob.stryker <rob.stryker at redhat.com>
+ *
+ */
+public class ArchiveActionImpl extends ArchiveNodeImpl implements IArchiveAction {
+
+	private XbAction actionDelegate;
+	
+	public ArchiveActionImpl() {
+		this(new XbAction());
+	}
+	public ArchiveActionImpl(XbAction delegate) {
+		super(delegate);
+		this.actionDelegate = delegate;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.jboss.ide.eclipse.archives.core.model.IArchiveNode#getNodeType()
+	 */
+	public int getNodeType() {
+		return IArchiveNode.TYPE_ARCHIVE_ACTION;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.jboss.ide.eclipse.archives.core.model.IArchiveNode#getRootArchiveRelativePath()
+	 */
+	public IPath getRootArchiveRelativePath() {
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.jboss.ide.eclipse.archives.core.model.IArchiveAction#getTime()
+	 */
+	public String getTime() {
+		return actionDelegate.getTime();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.jboss.ide.eclipse.archives.core.model.IArchiveAction#getType()
+	 */
+	public String getType() {
+		return actionDelegate.getType();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.jboss.ide.eclipse.archives.core.model.IArchiveAction#setTime(java.lang.String)
+	 */
+	public void setTime(String time) {
+		attributeChanged(ACTION_TIME_ATTRIBUTE, getTime(), time);
+		actionDelegate.setType(time);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.jboss.ide.eclipse.archives.core.model.IArchiveAction#getType(java.lang.String)
+	 */
+	public void setType(String type) {
+		attributeChanged(ACTION_TYPE_ATTRIBUTE, getType(), type);
+		actionDelegate.setType(type);
+	}
+
+}
\ No newline at end of file

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveDeltaPreNodeFactory.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveDeltaPreNodeFactory.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveDeltaPreNodeFactory.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -28,7 +28,7 @@
 import org.jboss.ide.eclipse.archives.core.model.IArchive;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModelRootNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
 import org.jboss.ide.eclipse.archives.core.model.internal.ArchiveNodeDeltaImpl.NodeDelta;
 import org.jboss.ide.eclipse.archives.core.model.internal.xb.XbFileSet;
@@ -166,8 +166,8 @@
 		public IPath getProjectPath() {
 			return impl.getProjectPath();
 		}
-		public IArchiveModelNode getModelNode() {
-			return impl.getModelNode();
+		public IArchiveModelRootNode getModelRootNode() {
+			return impl.getModelRootNode();
 		}
 	}
 	
@@ -188,8 +188,8 @@
 		public IPath getProjectPath() {
 			return impl.getProjectPath();
 		}
-		public IArchiveModelNode getModelNode() {
-			return impl.getModelNode();
+		public IArchiveModelRootNode getModelRootNode() {
+			return impl.getModelRootNode();
 		}
 	}
 	
@@ -210,8 +210,8 @@
 		public IPath getProjectPath() {
 			return impl.getProjectPath();
 		}
-		public IArchiveModelNode getModelNode() {
-			return impl.getModelNode();
+		public IArchiveModelRootNode getModelRootNode() {
+			return impl.getModelRootNode();
 		}
 	}
 }

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveImpl.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveImpl.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveImpl.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -25,6 +25,7 @@
 import org.eclipse.core.runtime.Path;
 import org.jboss.ide.eclipse.archives.core.ArchivesCore;
 import org.jboss.ide.eclipse.archives.core.model.IArchive;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveAction;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
@@ -117,6 +118,33 @@
 		System.arraycopy(nodes, 0, pkgs, 0, nodes.length);
 		return pkgs;
 	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.jboss.ide.eclipse.archives.core.model.IArchive#getActions()
+	 */
+	public IArchiveAction[] getActions() {
+		IArchiveNode nodes[] = getChildren(TYPE_ARCHIVE_ACTION);
+		IArchiveAction actions[] = new IArchiveAction[nodes.length];
+		System.arraycopy(nodes, 0, actions, 0, nodes.length);
+		return actions;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.jboss.ide.eclipse.archives.core.model.IArchive#getPreActions()
+	 */
+	public IArchiveAction[] getPreActions() {
+		return new IArchiveAction[0]; // TODO
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.jboss.ide.eclipse.archives.core.model.IArchive#getPostActions()
+	 */
+	public IArchiveAction[] getPostActions() {
+		return new IArchiveAction[0]; // TODO
+	}
 
 	/*
 	 * @see IArchive#getName()

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveModelNode.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveModelNode.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveModelNode.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -25,29 +25,42 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
 import org.jboss.ide.eclipse.archives.core.model.EventManager;
-import org.jboss.ide.eclipse.archives.core.model.IArchive;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveModel;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModelRootNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
 import org.jboss.ide.eclipse.archives.core.model.internal.xb.XMLBinding;
 import org.jboss.ide.eclipse.archives.core.model.internal.xb.XbPackages;
 import org.jboss.ide.eclipse.archives.core.model.internal.xb.XMLBinding.XbException;
 
-public class ArchiveModelNode extends ArchiveNodeImpl implements IArchiveModelNode {
+/**
+ * 
+ * @author rob.stryker <rob.stryker at redhat.com>
+ *
+ */
+public class ArchiveModelNode extends ArchiveNodeImpl implements IArchiveModelRootNode {
 	private IPath project;
 	private IPath descriptor;
 	private IArchiveModel model;
 	
+	public ArchiveModelNode(IPath project, XbPackages node) {
+		this(project, null, node);
+	}
+	
+	public ArchiveModelNode(IPath project, IPath descriptor, XbPackages node) {
+		this(project, descriptor, node, null);
+	}
+	
 	public ArchiveModelNode(IPath project, XbPackages node, IArchiveModel model) {
-		this(project, project.append(IArchiveModel.DEFAULT_PACKAGES_FILE), node, model);
+		this(project, null, node, model);
 	}
 	
 	public ArchiveModelNode(IPath project, IPath descriptor,
 			XbPackages node, IArchiveModel model) {
 		super(node);
 		this.project = project;
-		this.descriptor = descriptor;
+		this.descriptor = descriptor != null ? descriptor : 
+				project.append(IArchiveModel.DEFAULT_PACKAGES_FILE);
 		this.model = model;
 	}
 	
@@ -89,7 +102,7 @@
 	 * @see org.jboss.ide.eclipse.archives.core.model.IArchiveNode#getNodeType()
 	 */
 	public int getNodeType() {
-		return IArchiveNode.TYPE_MODEL;
+		return IArchiveNode.TYPE_MODEL_ROOT;
 	}
 
 	/*
@@ -123,6 +136,10 @@
 	public void setParent(IArchiveNode parent) {
 	}
 
+	public void setModel(IArchiveModel model) {
+		this.model = model;
+	}
+	
 	/**
 	 * I have no relative path. I'm above the root archive
 	 * @see org.jboss.ide.eclipse.archives.core.model.IArchiveNode#getRootArchiveRelativePath()

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeImpl.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeImpl.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeImpl.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -30,7 +30,7 @@
 import org.eclipse.core.runtime.IPath;
 import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
 import org.jboss.ide.eclipse.archives.core.model.IArchive;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModelRootNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeVisitor;
@@ -81,9 +81,9 @@
 	 * (non-Javadoc)
 	 * @see org.jboss.ide.eclipse.archives.core.model.IArchiveNode#getModel()
 	 */
-	public IArchiveModelNode getModelNode() {
+	public IArchiveModelRootNode getModelRootNode() {
 		Object root = getRoot();
-		return root instanceof IArchiveModelNode ? (IArchiveModelNode)root : null;
+		return root instanceof IArchiveModelRootNode ? (IArchiveModelRootNode)root : null;
 	}
 	
 	/*
@@ -171,10 +171,8 @@
 	 * @see org.jboss.ide.eclipse.archives.core.model.IArchiveNode#getProject()
 	 */
 	public IPath getProjectPath() {
-		IArchiveNode root = getRoot();
-		if( root.getNodeType() != IArchiveNode.TYPE_MODEL)
-			return null;
-		return root.getProjectPath();
+		IArchiveModelRootNode root = getModelRootNode();
+		return root == null ? null : root.getProjectPath();
 	}
 	
 	/*

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/ModelUtil.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/ModelUtil.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/ModelUtil.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -35,7 +35,7 @@
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveModel;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModelRootNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeVisitor;
 import org.jboss.ide.eclipse.archives.core.model.IArchivesLogger;
@@ -226,7 +226,7 @@
 		return projectPath.append(workspacePath.removeFirstSegments(1));
 	}
 	
-	public static void fillArchiveModel( XbPackages node, IArchiveModelNode modelNode) throws ArchivesModelException { 
+	public static void fillArchiveModel( XbPackages node, IArchiveModelRootNode modelNode) throws ArchivesModelException { 
 		for (Iterator iter = node.getAllChildren().iterator(); iter.hasNext(); ) {
 			XbPackageNode child = (XbPackageNode) iter.next();
 			ArchiveNodeImpl childImpl = (ArchiveNodeImpl)createPackageNodeImpl(child, modelNode);

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/internal/ModelTruezipBridge.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/internal/ModelTruezipBridge.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/internal/ModelTruezipBridge.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -225,7 +225,7 @@
 	private static File getFile(IArchiveNode node) {
 		if( node == null ) return null;
 		
-		if( node.getNodeType() == IArchiveNode.TYPE_MODEL ) return null;
+		if( node.getNodeType() == IArchiveNode.TYPE_MODEL_ROOT ) return null;
 		
 		if( node.getNodeType() == IArchiveNode.TYPE_ARCHIVE_FILESET)
 			return getFile(node.getParent());

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -5,7 +5,7 @@
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModelRootNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
 import org.jboss.ide.eclipse.archives.core.util.ModelUtil;
 import org.jboss.ide.eclipse.archives.ui.PrefsInitializer;
@@ -37,19 +37,19 @@
 		if( parentElement instanceof Object[] ) return (Object[])parentElement;
 		
 		
-		if( parentElement instanceof IArchiveModelNode && showProjectRoot())  {
+		if( parentElement instanceof IArchiveModelRootNode && showProjectRoot())  {
 			IProject[] projects;
 			if( PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS)) {
 				projects = ProjectArchivesView.getInstance().getAllProjectsWithPackages();
 			} else {
-				String projName = ((IArchiveModelNode)parentElement).getProjectPath().lastSegment();
+				String projName = ((IArchiveModelRootNode)parentElement).getProjectPath().lastSegment();
 				projects = new IProject[] { ResourcesPlugin.getWorkspace().getRoot().getProject(projName) };
 			}
 			return wrapProjects(projects);
 		}
 		
-		if( parentElement instanceof IArchiveModelNode)
-			return ((IArchiveModelNode)parentElement).getAllChildren();
+		if( parentElement instanceof IArchiveModelRootNode)
+			return ((IArchiveModelRootNode)parentElement).getAllChildren();
 		
 		if( parentElement instanceof ArchivesModel ) {
 			// return all that's there

Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -40,7 +40,7 @@
 import org.jboss.ide.eclipse.archives.core.model.ArchivesModelCore;
 import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveModelListener;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModelRootNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
 import org.jboss.ide.eclipse.archives.ui.ArchivesUIMessages;
@@ -222,7 +222,7 @@
 			return;
 		}
 		
-		IArchiveModelNode node = (IArchiveModelNode) packageViewer.getInput();
+		IArchiveModelRootNode node = (IArchiveModelRootNode) packageViewer.getInput();
 		if (node != null)
 		{
 			IPath projectPath = node.getProjectPath();
@@ -319,10 +319,10 @@
 		getSite().getShell().getDisplay().asyncExec(new Runnable () {
 			public void run () {
 				for( int i = 0; i < topChanges.length; i++ ) {
-					if( topChanges.length == 1 && topChanges[0] instanceof IArchiveModelNode) {
+					if( topChanges.length == 1 && topChanges[0] instanceof IArchiveModelRootNode) {
 						// we have a changed IArchiveModelNode. Something's different
-						IArchiveModelNode inputModel = (IArchiveModelNode) packageViewer.getInput();
-						IArchiveModelNode newModel = (IArchiveModelNode)topChanges[0];
+						IArchiveModelRootNode inputModel = (IArchiveModelRootNode) packageViewer.getInput();
+						IArchiveModelRootNode newModel = (IArchiveModelRootNode)topChanges[0];
 						if( inputModel == null || (inputModel.getProjectPath().equals(newModel.getProjectPath()) && inputModel != newModel)) {
 							// they have the same path but are different objects. 
 							// Model was probably reloaded from disk and could be completely different

Modified: trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/ModelCreationTest.java
===================================================================
--- trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/ModelCreationTest.java	2008-03-11 19:57:33 UTC (rev 6879)
+++ trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/ModelCreationTest.java	2008-03-11 20:58:09 UTC (rev 6880)
@@ -29,10 +29,11 @@
 import org.jboss.ide.eclipse.archives.core.model.ArchiveNodeFactory;
 import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
 import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveBuildListener;
+import org.jboss.ide.eclipse.archives.core.model.IArchive;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModel;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveModelListener;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModel;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
 import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
 import org.jboss.ide.eclipse.archives.core.model.internal.ArchiveModelNode;
@@ -52,19 +53,19 @@
 	}
 
 	public void testSimpleCreation() {
-		createModel();
+		createModelNode();
 	}
 	
 	public void testAddToModel() {
-		ArchiveModelNode model = createModel();
-		ArchivesModel.instance().registerProject(model, new NullProgressMonitor());
-		assertEquals(model, ArchivesModel.instance().getRoot(project));
+		ArchiveModelNode modelNode = createModelNode();
+		modelNode.getModel().registerProject(modelNode, new NullProgressMonitor());
+		assertEquals(modelNode,modelNode.getModel().getRoot(project));
 		assertNotSame(null, modelListener.getDelta());
 		assertEquals(IArchiveNodeDelta.NODE_REGISTERED, modelListener.getDelta().getKind());
-		ArchivesModel.instance().unregisterProject(model, new NullProgressMonitor());
+		modelNode.getModel().registerProject(modelNode, new NullProgressMonitor());
 	}
 	
-	protected ArchiveModelNode createModel() {
+	protected ArchiveModelNode createModelNode() {
 		try {
 			XbPackages packs = new XbPackages();
 			XbPackage pack = new XbPackage();
@@ -72,7 +73,7 @@
 			ArchiveModelNode model = getModel(packs);
 			ModelUtil.fillArchiveModel(packs, model);
 			assertEquals(project, model.getProjectPath());
-			assertEquals(IArchiveNode.TYPE_MODEL, model.getNodeType());
+			assertEquals(IArchiveNode.TYPE_MODEL_ROOT, model.getNodeType());
 			assertEquals(null, model.getParent());
 			assertEquals(packs, model.getNodeDelegate());
 			assertTrue(model.hasChildren());
@@ -86,20 +87,64 @@
 		return null;
 	}
 	
-	public void testDeltas() {
+	public void testAddFolderToModel() {
 		try {
-			ArchiveModelNode model = createModel();
-			model.clearDelta();
+			ArchiveModelNode modelNode = createModelNode();
 			IArchiveFolder folder = ArchiveNodeFactory.createFolder();
 			folder.setName("testFolder");
-			model.addChild(folder);
-			IArchiveNodeDelta delta = model.getDelta();
-			assertEquals(IArchiveNodeDelta.CHILD_ADDED, delta.getKind());
+			modelNode.addChild(folder);
 		} catch( ArchivesModelException ame ) {
-			fail(ame.getMessage());
+			return;
 		}
+		fail();
 	}
 	
+	public void testAddFilesetToModel() {
+		try {
+			ArchiveModelNode modelNode = createModelNode();
+			IArchiveFileSet fs = ArchiveNodeFactory.createFileset();
+			fs.setIncludesPattern("*");
+			fs.setSourcePath(new Path("blah"));
+			modelNode.addChild(fs);
+		} catch( ArchivesModelException ame ) {
+			return;
+		}
+		fail();
+	}
+	
+
+	public void testAddActionToModel() {
+		fail();
+	}
+	
+	public void testAddArchiveToModel() {
+		try {
+			ArchiveModelNode modelNode = createModelNode();
+			IArchive archive = ArchiveNodeFactory.createArchive();
+			archive.setName("someName.war");
+			archive.setDestinationPath(new Path("test"));
+			modelNode.addChild(archive);
+		} catch( ArchivesModelException ame ) {
+			fail();
+		}
+	}
+	
+	
+	
+//	public void testDeltas() {
+//		try {
+//			ArchiveModelNode model = createModelNode();
+//			model.clearDelta();
+//			IArchiveFolder folder = ArchiveNodeFactory.createFolder();
+//			folder.setName("testFolder");
+//			model.addChild(folder);
+//			IArchiveNodeDelta delta = model.getDelta();
+//			assertEquals(IArchiveNodeDelta.CHILD_ADDED, delta.getKind());
+//		} catch( ArchivesModelException ame ) {
+//			fail(ame.getMessage());
+//		}
+//	}
+	
 	protected ArchiveModelNode getModel(XbPackages packs) {
 		IArchiveModel model = new ArchivesModel();
 		model.addModelListener(modelListener);




More information about the jbosstools-commits mailing list