[jbosstools-commits] JBoss Tools SVN: r6998 - in trunk/core: plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal and 1 other directories.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Tue Mar 18 19:20:48 EDT 2008
Author: rob.stryker at jboss.com
Date: 2008-03-18 19:20:48 -0400 (Tue, 18 Mar 2008)
New Revision: 6998
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/internal/ArchiveActionImpl.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveFileSetImpl.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveFolderImpl.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/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/ModelCreationTest.java
Log:
Validation and testing for model
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-18 20:22:52 UTC (rev 6997)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNode.java 2008-03-18 23:20:48 UTC (rev 6998)
@@ -182,4 +182,10 @@
* @return
*/
public void clearDelta();
+
+ /**
+ * Validating the model
+ * @return true if it's ok, false if it should fail
+ */
+ public boolean validateModel();
}
Modified: 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 2008-03-18 20:22:52 UTC (rev 6997)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveActionImpl.java 2008-03-18 23:20:48 UTC (rev 6998)
@@ -22,6 +22,7 @@
package org.jboss.ide.eclipse.archives.core.model.internal;
import org.eclipse.core.runtime.IPath;
+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.IArchiveNode;
import org.jboss.ide.eclipse.archives.core.model.internal.xb.XbAction;
@@ -86,4 +87,17 @@
actionDelegate.setType(type);
}
+ /*
+ * (non-Javadoc)
+ * @see org.jboss.ide.eclipse.archives.core.model.internal.ArchiveNodeImpl#validateChild(org.jboss.ide.eclipse.archives.core.model.IArchiveNode)
+ */
+ public boolean validateModel() {
+ if( getAllChildren().length != 0 ) return false;
+ if( getParent() != null && getModelRootNode() != null &&
+ (getParent().getNodeType() != IArchiveNode.TYPE_ARCHIVE ||
+ !((IArchive)getParent()).isTopLevel()))
+ return false;
+ return true;
+ }
+
}
\ 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/ArchiveFileSetImpl.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveFileSetImpl.java 2008-03-18 20:22:52 UTC (rev 6997)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveFileSetImpl.java 2008-03-18 23:20:48 UTC (rev 6998)
@@ -250,7 +250,7 @@
public IPath getPathRelativeToParent(IPath inputFile) {
String s = inputFile.toOSString().substring(getGlobalSourcePath().toOSString().length()+1);
return new Path(s);
-}
+ }
/*
@@ -259,4 +259,13 @@
public void resetScanner() {
rescanRequired = true;
}
+
+ /*
+ * (non-Javadoc)
+ * @see org.jboss.ide.eclipse.archives.core.model.internal.ArchiveNodeImpl#validateChild(org.jboss.ide.eclipse.archives.core.model.IArchiveNode)
+ */
+ public boolean validateModel() {
+ return getAllChildren().length == 0 ? true : false;
+ }
+
}
Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveFolderImpl.java
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveFolderImpl.java 2008-03-18 20:22:52 UTC (rev 6997)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveFolderImpl.java 2008-03-18 23:20:48 UTC (rev 6998)
@@ -21,11 +21,14 @@
*/
package org.jboss.ide.eclipse.archives.core.model.internal;
+import java.util.ArrayList;
+
import org.eclipse.core.runtime.IPath;
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.IArchiveNode;
+import org.jboss.ide.eclipse.archives.core.model.INamedContainerArchiveNode;
import org.jboss.ide.eclipse.archives.core.model.internal.xb.XbFolder;
/**
@@ -114,4 +117,23 @@
public IPath getRootArchiveRelativePath() {
return getParent().getRootArchiveRelativePath().append(getName());
}
+
+ /*
+ * (non-Javadoc)
+ * @see org.jboss.ide.eclipse.archives.core.model.internal.ArchiveNodeImpl#validateChild(org.jboss.ide.eclipse.archives.core.model.IArchiveNode)
+ */
+ public boolean validateModel() {
+ ArrayList<String> list = new ArrayList<String>();
+ IArchiveNode[] children = getAllChildren();
+ for( int i = 0; i < children.length; i++ ) {
+ if( children[i] instanceof INamedContainerArchiveNode) {
+ if( list.contains(((INamedContainerArchiveNode)children[i]).getName()))
+ return false;
+ else
+ list.add(((INamedContainerArchiveNode)children[i]).getName());
+ }
+ }
+ return super.validateModel();
+ }
+
}
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-18 20:22:52 UTC (rev 6997)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveImpl.java 2008-03-18 23:20:48 UTC (rev 6998)
@@ -21,6 +21,8 @@
*/
package org.jboss.ide.eclipse.archives.core.model.internal;
+import java.util.ArrayList;
+
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.jboss.ide.eclipse.archives.core.ArchivesCore;
@@ -29,7 +31,9 @@
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;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeVisitor;
import org.jboss.ide.eclipse.archives.core.model.IArchiveType;
+import org.jboss.ide.eclipse.archives.core.model.INamedContainerArchiveNode;
import org.jboss.ide.eclipse.archives.core.model.internal.xb.XbPackage;
import org.jboss.ide.eclipse.archives.core.model.internal.xb.XbPackages;
import org.jboss.ide.eclipse.archives.core.util.ModelUtil;
@@ -214,10 +218,6 @@
attributeChanged(PACKAGE_TYPE_ATTRIBUTE, getArchiveTypeId(), type == null ? null : type.getId());
packageDelegate.setPackageType(type.getId());
}
-
- protected XbPackage getPackageDelegate () {
- return packageDelegate;
- }
/*
* @see IArchive#setArchiveType(String)
@@ -246,5 +246,23 @@
return new Path(getName());
return getParent().getRootArchiveRelativePath().append(getName());
}
+
+ /*
+ * (non-Javadoc)
+ * @see org.jboss.ide.eclipse.archives.core.model.internal.ArchiveNodeImpl#validateChild(org.jboss.ide.eclipse.archives.core.model.IArchiveNode)
+ */
+ public boolean validateModel() {
+ ArrayList<String> list = new ArrayList<String>();
+ IArchiveNode[] children = getAllChildren();
+ for( int i = 0; i < children.length; i++ ) {
+ if( children[i] instanceof INamedContainerArchiveNode) {
+ if( list.contains(((INamedContainerArchiveNode)children[i]).getName()))
+ return false;
+ else
+ list.add(((INamedContainerArchiveNode)children[i]).getName());
+ }
+ }
+ return super.validateModel();
+ }
}
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-18 20:22:52 UTC (rev 6997)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveModelNode.java 2008-03-18 23:20:48 UTC (rev 6998)
@@ -21,14 +21,18 @@
*/
package org.jboss.ide.eclipse.archives.core.model.internal;
+import java.util.ArrayList;
+
import org.eclipse.core.runtime.IPath;
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.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.INamedContainerArchiveNode;
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;
@@ -162,4 +166,24 @@
clearDelta();
EventManager.fireDelta(delta);
}
+
+ public boolean validateModel() {
+ if( getChildren(IArchiveNode.TYPE_ARCHIVE).length < getAllChildren().length)
+ return false;
+ ArrayList<IPath> list = new ArrayList<IPath>();
+ IArchiveNode[] children = getChildren(IArchiveNode.TYPE_ARCHIVE);
+ IArchive child;
+ for( int i = 0; i < children.length; i++ ) {
+ child = (IArchive)children[i];
+ if( child.getGlobalDestinationPath() != null ) {
+ IPath p = child.getGlobalDestinationPath().append(child.getName());
+ if( list.contains(p))
+ return false;
+ else
+ list.add(p);
+ }
+ }
+
+ return super.validateModel();
+ }
}
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-18 20:22:52 UTC (rev 6997)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeImpl.java 2008-03-18 23:20:48 UTC (rev 6998)
@@ -241,7 +241,7 @@
* (non-Javadoc)
* @see org.jboss.ide.eclipse.archives.core.model.IArchiveNode#addChild(org.jboss.ide.eclipse.archives.core.model.IArchiveNode)
*/
- public void addChild(IArchiveNode node) throws ArchivesModelException {
+ public final void addChild(IArchiveNode node) throws ArchivesModelException {
addChild(node, true);
}
@@ -250,9 +250,7 @@
* @param child
* @param addInDelegate
*/
- public void addChild(IArchiveNode child, boolean addInDelegate) throws ArchivesModelException {
- if( !validateChild(child) )
- throw new ArchivesModelException("Unable to add child node");
+ public final void addChild(IArchiveNode child, boolean addInDelegate) throws ArchivesModelException {
Assert.isNotNull(child);
ArchiveNodeImpl childImpl = (ArchiveNodeImpl) child;
children.add(childImpl);
@@ -260,9 +258,17 @@
if( addInDelegate )
nodeDelegate.addChild(childImpl.nodeDelegate);
childChanges(child, IArchiveNodeDelta.CHILD_ADDED);
+ if( !validateModel()) {
+ removeChild(child);
+ throw new ArchivesModelException("Unable to add child node");
+ }
}
- protected boolean validateChild(IArchiveNode child) {
+ public boolean validateModel() {
+ IArchiveNode[] kids = getAllChildren();
+ for( int i = 0; i < kids.length; i++ )
+ if( !kids[i].validateModel() )
+ return false;
return true;
}
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-18 20:22:52 UTC (rev 6997)
+++ trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/ModelCreationTest.java 2008-03-18 23:20:48 UTC (rev 6998)
@@ -30,6 +30,7 @@
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.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.IArchiveModel;
@@ -53,11 +54,16 @@
}
public void testSimpleCreation() {
- createModelNode();
+ createEmptyModelNode();
}
- public void testAddToModel() {
- ArchiveModelNode modelNode = createModelNode();
+
+ /*
+ * Testing the validity of adding certain types
+ * of nodes to others.
+ */
+ public void testRegisterInModel() {
+ ArchiveModelNode modelNode = createEmptyModelNode();
modelNode.getModel().registerProject(modelNode, new NullProgressMonitor());
assertEquals(modelNode,modelNode.getModel().getRoot(project));
assertNotSame(null, modelListener.getDelta());
@@ -65,72 +71,439 @@
modelNode.getModel().registerProject(modelNode, new NullProgressMonitor());
}
- protected ArchiveModelNode createModelNode() {
+
+ // Add everything to the root model
+
+ public void testAddFolderToModel() {
try {
- XbPackages packs = new XbPackages();
- XbPackage pack = new XbPackage();
- packs.addChild(pack);
- ArchiveModelNode model = getModel(packs);
- ModelUtil.fillArchiveModel(packs, model);
- assertEquals(project, model.getProjectPath());
- assertEquals(IArchiveNode.TYPE_MODEL_ROOT, model.getNodeType());
- assertEquals(null, model.getParent());
- assertEquals(packs, model.getNodeDelegate());
- assertTrue(model.hasChildren());
- assertEquals(1, model.getAllChildren().length);
- assertEquals(null, ArchivesModel.instance().getRoot(project));
- assertEquals(null, modelListener.getDelta());
- return model;
+ createEmptyModelNode().addChild(createFolder("testFolder"));
} catch( ArchivesModelException ame ) {
- fail(ame.getMessage());
+ return;
}
- return null;
+ fail();
}
- public void testAddFolderToModel() {
+ public void testAddFilesetToModel() {
try {
- ArchiveModelNode modelNode = createModelNode();
- IArchiveFolder folder = ArchiveNodeFactory.createFolder();
- folder.setName("testFolder");
- modelNode.addChild(folder);
+ createEmptyModelNode().addChild(createFileSet("*", "blah"));
} catch( ArchivesModelException ame ) {
return;
}
fail();
}
- public void testAddFilesetToModel() {
+ public void testAddActionToModel() {
try {
- ArchiveModelNode modelNode = createModelNode();
- IArchiveFileSet fs = ArchiveNodeFactory.createFileset();
- fs.setIncludesPattern("*");
- fs.setSourcePath(new Path("blah"));
- modelNode.addChild(fs);
+ createEmptyModelNode().addChild(createAction());;
} catch( ArchivesModelException ame ) {
return;
}
fail();
}
+ public void testAddArchiveToModel() {
+ try {
+ createEmptyModelNode().addChild(createArchive("someName.war", "test"));
+ } catch( ArchivesModelException ame ) {
+ fail();
+ }
+ }
- public void testAddActionToModel() {
+ /*
+ * Let's make sure all 4 types can be added to an archive.
+ */
+ public void testAddArchiveToArchive() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchive archive2 = createArchive("someName.war2", "test2");
+ archive.addChild(archive2);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ fail();
+ }
+ }
+
+ public void testAddFolderToArchive() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveFolder folder = createFolder("test3");
+ archive.addChild(folder);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ fail();
+ }
+ }
+
+ public void testAddFilesetToArchive() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveFileSet fs = createFileSet("*", "blah");
+ archive.addChild(fs);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ fail();
+ }
+ }
+
+ public void testAddActionToArchive() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveAction action = createAction();
+ archive.addChild(action);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ fail();
+ }
+ }
+
+
+
+ /*
+ * Let's make sure all 4 types can be added to an INNER archive.
+ */
+ public void testAddArchiveToInnerArchive() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchive archive2 = createArchive("someName.war2", "test2");
+ IArchive archive3 = createArchive("someName.war3", "test3");
+ archive.addChild(archive2);
+ archive2.addChild(archive3);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ fail();
+ }
+ }
+
+ public void testAddFolderToInnerArchive() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchive archive2 = createArchive("someName.war2", "test2");
+ IArchiveFolder folder = createFolder("test3");
+ archive.addChild(archive2);
+ archive2.addChild(folder);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ fail();
+ }
+ }
+
+ public void testAddFilesetToInnerArchive() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchive archive2 = createArchive("someName.war2", "test2");
+ IArchiveFileSet fs = createFileSet("*", "blah");
+ archive.addChild(archive2);
+ archive2.addChild(fs);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ fail();
+ }
+ }
+
+ public void testAddActionToInnerArchive() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchive archive2 = createArchive("someName.war2", "test2");
+ IArchiveAction action = createAction();
+
+ archive.addChild(archive2);
+ archive2.addChild(action);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
fail();
}
+
- public void testAddArchiveToModel() {
+ // Add all to INNER-folder
+
+ public void testAddArchiveToInnerFolder() {
try {
- ArchiveModelNode modelNode = createModelNode();
- IArchive archive = ArchiveNodeFactory.createArchive();
- archive.setName("someName.war");
- archive.setDestinationPath(new Path("test"));
- modelNode.addChild(archive);
+ IArchive archive = createArchive("someName.war", "test");
+ IArchive archive2 = createArchive("someName.war2", "test2");
+ IArchiveFolder folder = createFolder("test3");
+
+ archive.addChild(folder);
+ folder.addChild(archive2);
+ createEmptyModelNode().addChild(archive);
} catch( ArchivesModelException ame ) {
fail();
}
+ return;
}
+ public void testAddFolderToInnerFolder() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveFolder folder = createFolder("folder");
+ IArchiveFolder folder2 = createFolder("folder2");
+
+ archive.addChild(folder);
+ folder.addChild(folder2);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ fail();
+ }
+ return;
+ }
+
+ public void testAddFilesetToInnerFolder() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchive archive2 = createArchive("someName2.war", "test2");
+ IArchiveFolder folder = createFolder("test3");
+
+ archive.addChild(folder);
+ folder.addChild(archive2);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ fail();
+ }
+ return;
+ }
+
+ public void testAddActionToInnerFolder() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveFolder folder = createFolder("folder");
+ IArchiveAction action = createAction();
+
+ archive.addChild(folder);
+ folder.addChild(action);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+ // add all to action
+ public void testAddArchiveToAction() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveAction action = createAction();
+ IArchiveNode child = createArchive("someName2.war", "test2");
+ archive.addChild(action);
+ action.addChild(child);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+ public void testAddFolderToAction() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveAction action = createAction();
+ IArchiveNode child = createFolder("test");
+ archive.addChild(action);
+ action.addChild(child);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+ public void testAddFilesetToAction() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveAction action = createAction();
+ IArchiveNode child = createFileSet("*", "path");
+ archive.addChild(action);
+ action.addChild(child);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+
+ public void testAddActionToAction() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveAction action = createAction();
+ IArchiveNode child = createAction();
+ archive.addChild(action);
+ action.addChild(child);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+ // add all to fileset
+ public void testAddArchiveToFileset() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveFileSet fs = createFileSet("*", "path");
+ IArchiveNode child = createArchive("someName.war", "test");
+ archive.addChild(fs);
+ fs.addChild(child);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+ public void testAddFolderToFileset() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveFileSet fs = createFileSet("*", "path");
+ IArchiveNode child = createFolder("test");
+ archive.addChild(fs);
+ fs.addChild(child);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+ public void testAddFilesetToFileset() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveFileSet fs = createFileSet("*", "path");
+ IArchiveNode child = createFileSet("*", "path");
+ archive.addChild(fs);
+ fs.addChild(child);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+ public void testAddActionToFileset() {
+ try {
+ IArchive archive = createArchive("someName.war", "test");
+ IArchiveFileSet fs = createFileSet("*", "path");
+ IArchiveNode child = createAction();
+ archive.addChild(fs);
+ fs.addChild(child);
+ createEmptyModelNode().addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+
+
+ // Test purposely matching archive / folder names
+ public void testAddFolderClashingFolder() {
+ IArchive root = createArchive("root.war", "blah");
+ IArchiveFolder folder1 = createFolder("folder");
+ IArchiveFolder folder2 = createFolder("folder");
+ ArchiveModelNode model = createEmptyModelNode();
+ try {
+ model.addChild(root);
+ root.addChild(folder1);
+ } catch( ArchivesModelException ame ) {
+ fail(ame.getMessage());
+ }
+
+ try {
+ root.addChild(folder2);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+ public void testAddFolderClashingArchive() {
+ IArchive root = createArchive("root.war", "blah");
+ IArchive archive = createArchive("test.war", "dest");
+ IArchiveFolder folder = createFolder("test.war");
+ ArchiveModelNode model = createEmptyModelNode();
+ try {
+ model.addChild(root);
+ root.addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ fail(ame.getMessage());
+ }
+
+ try {
+ root.addChild(folder);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+ public void testAddArchiveClashingFolder() {
+ IArchive root = createArchive("root.war", "blah");
+ IArchive archive = createArchive("test.war", "dest");
+ IArchiveFolder folder = createFolder("test.war");
+ ArchiveModelNode model = createEmptyModelNode();
+ try {
+ model.addChild(root);
+ root.addChild(folder);
+ } catch( ArchivesModelException ame ) {
+ fail(ame.getMessage());
+ }
+
+ try {
+ root.addChild(archive);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+ public void testAddArchiveClashingArchive() {
+ IArchive root = createArchive("root.war", "blah");
+ IArchiveFolder folder = createFolder("folder");
+ IArchiveFolder folder2 = createFolder("folder");
+ ArchiveModelNode model = createEmptyModelNode();
+ try {
+ model.addChild(root);
+ root.addChild(folder);
+ } catch( ArchivesModelException ame ) {
+ fail(ame.getMessage());
+ }
+
+ try {
+ root.addChild(folder2);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+ // should clash, same destinations
+ public void testArchiveClashingArchiveInModel() {
+ ArchiveModelNode model = createEmptyModelNode();
+ IArchive root = createArchive("root.war", "blah");
+ IArchive root2 = createArchive("root.war", "blah");
+ try {
+ model.addChild(root);
+ model.addChild(root2);
+ } catch( ArchivesModelException ame ) {
+ return;
+ }
+ fail();
+ }
+
+ // Should not clash, different destinations
+ public void testArchiveNotClashingArchiveInModel() {
+ ArchiveModelNode model = createEmptyModelNode();
+ IArchive root = createArchive("root.war", "blah");
+ IArchive root2 = createArchive("root.war", "blah2");
+ try {
+ model.addChild(root);
+ model.addChild(root2);
+ } catch( ArchivesModelException ame ) {
+ fail();
+ }
+ return;
+ }
// public void testDeltas() {
// try {
// ArchiveModelNode model = createModelNode();
@@ -145,6 +518,82 @@
// }
// }
+
+
+
+ /*
+ * Utility methods
+ */
+ protected IArchiveFolder createFolder(String name) {
+ IArchiveFolder folder = ArchiveNodeFactory.createFolder();
+ folder.setName(name);
+ return folder;
+ }
+
+ protected IArchiveFileSet createFileSet(String includes, String path) {
+ IArchiveFileSet fs = ArchiveNodeFactory.createFileset();
+ fs.setIncludesPattern(includes);
+ fs.setSourcePath(new Path(path));
+ return fs;
+ }
+
+ protected IArchiveAction createAction() {
+ IArchiveAction action = ArchiveNodeFactory.createAction();
+ action.setTime(IArchiveAction.POST_BUILD);
+ action.setType("ant");
+ return action;
+ }
+
+ protected IArchive createArchive(String name, String dest) {
+ IArchive archive = ArchiveNodeFactory.createArchive();
+ archive.setName(name);
+ archive.setDestinationPath(new Path(dest));
+ return archive;
+ }
+
+
+ protected ArchiveModelNode createModelNode() {
+ try {
+ XbPackages packs = new XbPackages();
+ XbPackage pack = new XbPackage();
+ packs.addChild(pack);
+ ArchiveModelNode model = getModel(packs);
+ ModelUtil.fillArchiveModel(packs, model);
+ assertEquals(project, model.getProjectPath());
+ assertEquals(IArchiveNode.TYPE_MODEL_ROOT, model.getNodeType());
+ assertEquals(null, model.getParent());
+ assertEquals(packs, model.getNodeDelegate());
+ assertTrue(model.hasChildren());
+ assertEquals(1, model.getAllChildren().length);
+ assertEquals(null, ArchivesModel.instance().getRoot(project));
+ assertEquals(null, modelListener.getDelta());
+ return model;
+ } catch( ArchivesModelException ame ) {
+ fail(ame.getMessage());
+ }
+ return null;
+ }
+
+ protected ArchiveModelNode createEmptyModelNode() {
+ try {
+ XbPackages packs = new XbPackages();
+ ArchiveModelNode model = getModel(packs);
+ ModelUtil.fillArchiveModel(packs, model);
+ assertEquals(project, model.getProjectPath());
+ assertEquals(IArchiveNode.TYPE_MODEL_ROOT, model.getNodeType());
+ assertEquals(null, model.getParent());
+ assertEquals(packs, model.getNodeDelegate());
+ assertFalse(model.hasChildren());
+ assertEquals(0, model.getAllChildren().length);
+ assertEquals(null, ArchivesModel.instance().getRoot(project));
+ assertEquals(null, modelListener.getDelta());
+ return model;
+ } catch( ArchivesModelException ame ) {
+ fail(ame.getMessage());
+ }
+ return null;
+ }
+
protected ArchiveModelNode getModel(XbPackages packs) {
IArchiveModel model = new ArchivesModel();
model.addModelListener(modelListener);
More information about the jbosstools-commits
mailing list