Author: rob.stryker(a)jboss.com
Date: 2008-02-25 21:51:01 -0500 (Mon, 25 Feb 2008)
New Revision: 6567
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/AbsoluteSchemaFailure.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/AttributeSchemaFailure.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectAction.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectFileset.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectFolder.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectPackage.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectProperties.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetDir.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetExcludes.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetFlattened.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetInWorkspace.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetIncludes.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFolderName.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageDir.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageExploded.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageID.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageInWorkspace.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageName.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageType.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPropertiesName.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPropertiesValue.xml
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/xb/ValidationTest.java
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/internal/xb/XMLBinding.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/xml/packages.xsd
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/ArchivesTestSuite.java
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/xb/MarshallUnmarshallTest.java
Log:
Unit Tests for xml validation
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-02-25
22:59:09 UTC (rev 6566)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModel.java 2008-02-26
02:51:01 UTC (rev 6567)
@@ -23,6 +23,7 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -228,6 +229,7 @@
ArchivesCore.getInstance().preRegisterProject(project);
ArchiveModelNode root;
+ Exception e = null;
IPath packagesFile = project.append(PROJECT_PACKAGES_FILE);
if (packagesFile.toFile().exists()) {
XbPackages packages = null;
@@ -235,15 +237,18 @@
FileInputStream is = new FileInputStream(packagesFile.toFile());
packages = XMLBinding.unmarshal(is, monitor);
monitor.worked(1);
- } catch (FileNotFoundException e) {
+ } catch (FileNotFoundException f) {
+ e = f;
} catch( XbException xbe) {
+ e = xbe;
}
if (packages == null) {
// Empty / non-working XML file loaded
- ArchivesCore.getInstance().getLogger().log(IArchivesLogger.MSG_ERR, "Could not
unmarshall packages file", null);
+ ArchivesCore.getInstance().getLogger().log(IArchivesLogger.MSG_ERR, "Could not
unmarshall packages file", e);
return;
}
+
root = new ArchiveModelNode(project, packages, this);
ArchiveModelNode oldRoot = archivesRoot.get(project);
xbPackages.put(project, packages);
@@ -321,22 +326,25 @@
IPath packagesFile = project.append(ArchivesModel.PROJECT_PACKAGES_FILE);
XbPackages packs = getXbPackages(project);
-
- XMLBinding.marshallToFile(packs, packagesFile, monitor);
+ try {
+ XMLBinding.marshallToFile(packs, packagesFile, monitor);
+ } catch( IOException ioe ) {
+ ArchivesCore.getInstance().getLogger().log(IArchivesLogger.MSG_ERR, "Could not
marshall packages file", ioe);
+ return;
+ } catch( XbException xbe ) {
+ ArchivesCore.getInstance().getLogger().log(IArchivesLogger.MSG_ERR, "Could not
marshall packages file", xbe);
+ return;
+ }
// get deltas
- try {
- ArchiveModelNode root = (ArchiveModelNode)getRoot(project);
- IArchiveNodeDelta delta = root.getDelta();
-
- // clear deltas
- root.clearDeltas();
-
- // fire delta events
- EventManager.fireDelta(delta);
- } catch( Exception e ) {
- e.printStackTrace();
- }
+ ArchiveModelNode root = (ArchiveModelNode)getRoot(project);
+ IArchiveNodeDelta delta = root.getDelta();
+
+ // clear deltas
+ root.clearDeltas();
+
+ // fire delta events
+ EventManager.fireDelta(delta);
}
public void attach(IArchiveNode parent, IArchiveNode child, IProgressMonitor monitor) {
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XMLBinding.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XMLBinding.java 2008-02-25
22:59:09 UTC (rev 6566)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XMLBinding.java 2008-02-26
02:51:01 UTC (rev 6567)
@@ -52,7 +52,7 @@
* This class is responsible for binding some xml file to it's proper
* objects. In short, it marshalls and unmarshalls the data.
* @author Marshall
- *
+ * @author Rob Stryker
*/
public class XMLBinding {
@@ -74,7 +74,6 @@
try {
InputStream stream = schema.openStream();
binding = XsdBinder.bind(stream, "UTF-8", null);
-
stream.close();
initialized = true;
} catch (IOException e) {
@@ -111,7 +110,7 @@
try {
Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
monitor.worked(1);
-
+ binding.setStrictSchema(true);
Object xmlObject = unmarshaller.unmarshal(in, binding);
monitor.worked(1);
@@ -138,17 +137,20 @@
return null;
}
- public static void marshallToFile(XbPackages element, IPath filePath, IProgressMonitor
monitor) {
+ public static void marshallToFile(XbPackages element, IPath filePath, IProgressMonitor
monitor) throws XbException, IOException {
OutputStreamWriter writer = null;
try {
writer = new OutputStreamWriter(new FileOutputStream(filePath.toFile()));
XMLBinding.marshall(element, writer, monitor);
- } catch( Exception e ) {
+ } catch( XbException xbe ) {
+ throw xbe;
+ } catch( IOException ioe ) {
+ throw ioe;
}
finally {
try {
- if( writer != null ) writer.close();
- } catch( IOException ioe) {}
+ if( writer != null ) writer.close();
+ } catch( IOException ioe) {throw ioe;}
}
}
@@ -218,5 +220,8 @@
public Exception getException() {
return parent;
}
+ public String getMessage() {
+ return parent.getCause() == null ? null : parent.getCause().getMessage();
+ }
}
}
Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/xml/packages.xsd
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/xml/packages.xsd 2008-02-25
22:59:09 UTC (rev 6566)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/xml/packages.xsd 2008-02-26
02:51:01 UTC (rev 6567)
@@ -59,7 +59,7 @@
type="properties-type" />
</xsd:sequence>
- <xsd:attribute name="name" type="xsd:string"
use="optional" />
+ <xsd:attribute name="name" type="xsd:string"
use="required" />
<xsd:attribute name="type" type="xsd:string"
use="optional">
<xsd:annotation>
<xsd:appinfo>
@@ -67,16 +67,15 @@
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
- <xsd:attribute name="todir" type="xsd:string"
use="optional">
+ <xsd:attribute name="todir" type="xsd:string"
use="required">
<xsd:annotation>
<xsd:appinfo>
<jbxb:property name="toDir" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
- <xsd:attribute default="false" name="exploded"
- type="xsd:boolean" use="optional" />
- <xsd:attribute name="inWorkspace" type="xsd:boolean"
use="optional" default="true"></xsd:attribute>
+ <xsd:attribute name="exploded" type="xsd:boolean"
use="optional" default="false"/>
+ <xsd:attribute name="inWorkspace" type="xsd:boolean"
use="optional" default="true"/>
<xsd:attribute name="id" type="xsd:string"
use="optional" />
</xsd:complexType>
@@ -118,7 +117,10 @@
<xsd:element maxOccurs="1" minOccurs="0"
name="properties" type="properties-type"/>
</xsd:sequence>
+ <!-- Pre / post build -->
<xsd:attribute name="time" type="xsd:string"
use="required"/>
+
+ <!-- Action key / path. (example: ant) format TBD -->
<xsd:attribute name="type" type="xsd:string"
use="required"/>
</xsd:complexType>
@@ -128,7 +130,7 @@
<xsd:appinfo>
<jbxb:class
impl="org.jboss.ide.eclipse.archives.core.model.internal.xb.XbFolder"/>
<jbxb:addMethod name="addChild"/>
- </xsd:appinfo>
+ </xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/AbsoluteSchemaFailure.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/AbsoluteSchemaFailure.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/AbsoluteSchemaFailure.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <properties>
+ <property33>
+ </property33>
+ </properties>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/AttributeSchemaFailure.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/AttributeSchemaFailure.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/AttributeSchemaFailure.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <properties>
+ <property brokenAttribute="yes"/>
+ </properties>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectAction.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectAction.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectAction.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" exploded="false"
inWorkspace="false" id="someId">
+ <buildAction time="preBuild" type="ant">
+ <properties>
+ <property name="name" value="value"/>
+ </properties>
+ </buildAction>
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectFileset.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectFileset.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectFileset.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" exploded="false"
inWorkspace="false" id="someId">
+ <fileset dir="/some/global/path" includes="**/*.xml"
inWorkspace="false" excludes="" flattened="false">
+ <properties></properties>
+ </fileset>
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectFolder.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectFolder.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectFolder.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" exploded="false"
inWorkspace="false" id="someId">
+ <folder name="folder">
+ <properties></properties>
+ </folder>
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectPackage.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectPackage.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectPackage.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" exploded="false"
inWorkspace="false" id="someId">
+ <folder>
+ <properties></properties>
+ </folder>
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectProperties.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectProperties.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/CorrectProperties.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <properties>
+ <property name="name1" value="value1"/>
+ </properties>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetDir.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetDir.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetDir.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" exploded="false"
inWorkspace="false" id="someId">
+ <fileset dir="/some/global/path" includes="**/*.xml"
inWorkspace="false" excludes="" flattened="false">
+ <properties></properties>
+ </fileset>
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetExcludes.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetExcludes.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetExcludes.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" exploded="false"
inWorkspace="false" id="someId">
+ <fileset dir="/some/global/path" includes="**/*.xml"
inWorkspace="false" flattened="false">
+ <properties></properties>
+ </fileset>
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetFlattened.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetFlattened.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetFlattened.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" exploded="false"
inWorkspace="false" id="someId">
+ <fileset dir="/some/global/path" includes="**/*.xml"
inWorkspace="false" excludes="">
+ <properties></properties>
+ </fileset>
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetInWorkspace.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetInWorkspace.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetInWorkspace.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" exploded="false"
inWorkspace="false" id="someId">
+ <fileset dir="/some/global/path" includes="**/*.xml"
excludes="" flattened="false">
+ <properties></properties>
+ </fileset>
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetIncludes.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetIncludes.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFilesetIncludes.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" exploded="false"
inWorkspace="false" id="someId">
+ <fileset dir="/some/global/path" inWorkspace="false"
excludes="" flattened="false">
+ <properties></properties>
+ </fileset>
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFolderName.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFolderName.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingFolderName.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" exploded="false"
inWorkspace="false" id="someId">
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageDir.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageDir.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageDir.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <package name="TestProject.jar" type="jar"
exploded="false" inWorkspace="false" id="someId">
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageExploded.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageExploded.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageExploded.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" inWorkspace="false"
id="someId">
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageID.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageID.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageID.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" exploded="false"
inWorkspace="false">
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageInWorkspace.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageInWorkspace.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageInWorkspace.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <package name="TestProject.jar" type="jar"
todir="/some/external/path" exploded="false"
id="someId">
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageName.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageName.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageName.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <package type="jar" todir="/some/external/path"
exploded="false" inWorkspace="false" id="someId">
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageType.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageType.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPackageType.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <package name="TestProject.jar" todir="/some/external/path"
exploded="false" inWorkspace="false" id="someId">
+ </package>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPropertiesName.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPropertiesName.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPropertiesName.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <properties>
+ <property value="value1"/>
+ </properties>
+</packages>
\ No newline at end of file
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPropertiesValue.xml
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPropertiesValue.xml
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/inputs/archiveDescriptors/validation/MissingPropertiesValue.xml 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Should Fail to validate -->
+
+<packages>
+ <properties>
+ <property name="name1"/>
+ </properties>
+</packages>
\ No newline at end of file
Modified:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/ArchivesTestSuite.java
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/ArchivesTestSuite.java 2008-02-25
22:59:09 UTC (rev 6566)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/ArchivesTestSuite.java 2008-02-26
02:51:01 UTC (rev 6567)
@@ -2,6 +2,7 @@
import org.jboss.ide.eclipse.archives.test.util.TruezipUtilTest;
import org.jboss.ide.eclipse.archives.test.xb.MarshallUnmarshallTest;
+import org.jboss.ide.eclipse.archives.test.xb.ValidationTest;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -9,9 +10,9 @@
public class ArchivesTestSuite extends TestSuite {
public static Test suite() {
TestSuite suite = new TestSuite("Archives Tests");
-
+ suite.addTestSuite(MarshallUnmarshallTest.class);
+ suite.addTestSuite(ValidationTest.class);
suite.addTestSuite(TruezipUtilTest.class);
- suite.addTestSuite(MarshallUnmarshallTest.class);
suite.addTestSuite(ModelUtilTest.class);
return suite;
Modified:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/xb/MarshallUnmarshallTest.java
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/xb/MarshallUnmarshallTest.java 2008-02-25
22:59:09 UTC (rev 6566)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/xb/MarshallUnmarshallTest.java 2008-02-26
02:51:01 UTC (rev 6567)
@@ -43,25 +43,21 @@
}
public void testUnmarshall() {
- // unmarshall from file
FileInputStream fis = null;
try {
+ // unmarshall from file
fis = new
FileInputStream(archiveDescriptors.append("descriptor1.xml").toFile());
- } catch( Exception e ) {
- fail(e.getMessage());
- }
- XbPackages packs = XMLBinding.unmarshal(fis, new NullProgressMonitor());
- assertDescriptor1Accurate(packs);
-
- // unmarshall from string
- try {
+ XbPackages packs = XMLBinding.unmarshal(fis, new NullProgressMonitor());
+ assertDescriptor1Accurate(packs);
+
+ // unmarshall from string
String content =
fileAsString(archiveDescriptors.append("descriptor1.xml").toFile());
packs = XMLBinding.unmarshal(content, new NullProgressMonitor());
assertDescriptor1Accurate(packs);
+
} catch( Exception e ) {
fail(e.getMessage());
}
-
}
public String fileAsString(File f) throws Exception {
@@ -75,58 +71,57 @@
public void testMarshall() {
IPath tmpFolder = bundlePath.append("tmp");
- XbPackages packs = new XbPackages();
- XbPackage pack1 = new XbPackage();
- pack1.setName("TestProject.jar");
- pack1.setPackageType("jar");
- pack1.setToDir("/some/external/path");
- pack1.setExploded(false);
- pack1.setInWorkspace(false);
- packs.addChild(pack1);
+ XbPackages packs = new XbPackages();
+ XbPackage pack1 = new XbPackage();
+ pack1.setName("TestProject.jar");
+ pack1.setPackageType("jar");
+ pack1.setToDir("/some/external/path");
+ pack1.setExploded(false);
+ pack1.setInWorkspace(false);
+ packs.addChild(pack1);
- XbPackage pack2 = new XbPackage();
- pack2.setName("TestProject2.jar");
- pack2.setPackageType("jar");
- pack2.setToDir("/SomeProject");
- pack2.setExploded(true);
- pack2.setInWorkspace(true);
- packs.addChild(pack2);
+ XbPackage pack2 = new XbPackage();
+ pack2.setName("TestProject2.jar");
+ pack2.setPackageType("jar");
+ pack2.setToDir("/SomeProject");
+ pack2.setExploded(true);
+ pack2.setInWorkspace(true);
+ packs.addChild(pack2);
- XbFolder folder1 = new XbFolder();
- folder1.setName("folder");
- pack1.addChild(folder1);
-
- XbFolder folder2 = new XbFolder();
- folder2.setName("folder2");
- pack1.addChild(folder2);
-
- XbFolder inner1 = new XbFolder();
- inner1.setName("inner1");
- folder2.addChild(inner1);
-
- XbFileSet fs = new XbFileSet();
- fs.setDir("/some/global/path");
- fs.setIncludes("**/*.xml");
- fs.setInWorkspace(false);
- inner1.addChild(fs);
-
- assertDescriptor1Accurate(packs);
+ XbFolder folder1 = new XbFolder();
+ folder1.setName("folder");
+ pack1.addChild(folder1);
+
+ XbFolder folder2 = new XbFolder();
+ folder2.setName("folder2");
+ pack1.addChild(folder2);
+
+ XbFolder inner1 = new XbFolder();
+ inner1.setName("inner1");
+ folder2.addChild(inner1);
+
+ XbFileSet fs = new XbFileSet();
+ fs.setDir("/some/global/path");
+ fs.setIncludes("**/*.xml");
+ fs.setInWorkspace(false);
+ inner1.addChild(fs);
+
+ assertDescriptor1Accurate(packs);
+ try {
String packsAsString = XMLBinding.serializePackages(packs, new
NullProgressMonitor());
XbPackages packsFromString = XMLBinding.unmarshal(packsAsString, new
NullProgressMonitor());
assertDescriptor1Accurate(packsFromString);
- try {
- OutputStreamWriter writer = new OutputStreamWriter(new
FileOutputStream(tmpFolder.append("marshallTest.xml").toFile()));
- XMLBinding.marshall(packs, writer, new NullProgressMonitor());
- writer.close();
-
- XbPackages packsFromFile = XMLBinding.unmarshal(new
FileInputStream(tmpFolder.append("marshallTest.xml").toFile()), new
NullProgressMonitor());
- assertDescriptor1Accurate(packsFromFile);
- } catch(Exception e) {
- fail(e.getMessage());
- }
-
+ OutputStreamWriter writer = new OutputStreamWriter(new
FileOutputStream(tmpFolder.append("marshallTest.xml").toFile()));
+ XMLBinding.marshall(packs, writer, new NullProgressMonitor());
+ writer.close();
+
+ XbPackages packsFromFile = XMLBinding.unmarshal(new
FileInputStream(tmpFolder.append("marshallTest.xml").toFile()), new
NullProgressMonitor());
+ assertDescriptor1Accurate(packsFromFile);
+ } catch(Exception e) {
+ fail(e.getMessage());
+ }
}
void assertDescriptor1Accurate(XbPackages packs) {
Added:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/xb/ValidationTest.java
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/xb/ValidationTest.java
(rev 0)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/xb/ValidationTest.java 2008-02-26
02:51:01 UTC (rev 6567)
@@ -0,0 +1,225 @@
+/**
+ * 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.test.xb;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.jboss.ide.eclipse.archives.core.model.internal.xb.XMLBinding;
+import org.jboss.ide.eclipse.archives.core.model.internal.xb.XbFileSet;
+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.model.internal.xb.XMLBinding.XbException;
+import org.jboss.ide.eclipse.archives.test.ArchivesTest;
+import org.jboss.ide.eclipse.archives.test.util.FileIOUtil;
+import org.osgi.framework.Bundle;
+
+/**
+ * Tests whether the xml files can be validated
+ *
+ * @author rob.stryker <rob.stryker(a)redhat.com>
+ *
+ */
+public class ValidationTest extends TestCase {
+ private Bundle bundle;
+ private IPath bundlePath;
+ private IPath archiveDescriptors;
+ protected void setUp() {
+ if( bundlePath == null ) {
+ try {
+ bundle = ArchivesTest.getDefault().getBundle();
+ URL bundleURL = FileLocator.toFileURL(bundle.getEntry(""));
+ bundlePath = new Path(bundleURL.getFile());
+ archiveDescriptors =
bundlePath.append("inputs").append("archiveDescriptors").append("validation");
+ } catch( IOException ioe) {
+ fail("Failed to set up " + getClass().getName());
+ }
+ }
+ }
+
+ public void tearDown() {
+ FileIOUtil.clearFolder(bundlePath.append("tmp").toFile().listFiles());
+ }
+
+ /*
+ * The tests
+ */
+
+ public void testAbsoluteSchemaFailure() {
+ parse("AbsoluteSchemaFailure.xml", false, "Broken schema successfully
parsed.");
+ }
+
+ public void testAttributeSchemaFailure() {
+ parse("AttributeSchemaFailure.xml", false, "Schema with random attribute
successfully parsed.");
+ }
+
+
+ public void testCorrectPackage() {
+ parse("CorrectPackage.xml", true,
shouldParse("CorrectPackage.xml"));
+ }
+
+ public void testPackageMissingPackageName() {
+ parse("MissingPackageName.xml", false,
failedMissingRequiredAtt("name"));
+ }
+
+ public void testPackageMissingDirectory() {
+ parse("MissingPackageDir.xml", false,
failedMissingRequiredAtt("todir"));
+ }
+
+ public void testPackageMissingType() {
+ parse("MissingPackageType.xml", true,
failedFalsePositiveRequiredAtt("type"));
+ }
+
+ public void testPackageMissingExploded() {
+ XbPackages packs = parse("MissingPackageExploded.xml", true,
failedFalsePositiveRequiredAtt("exploded"));
+ XbPackage pack = (XbPackage)packs.getAllChildren().get(0);
+ assertFalse(pack.isExploded());
+ }
+
+ public void testPackageMissingInWorkspace() {
+ XbPackages packs = parse("MissingPackageInWorkspace.xml", true,
failedFalsePositiveRequiredAtt("inWorkspace"));
+ XbPackage pack = (XbPackage)packs.getAllChildren().get(0);
+ assertTrue(pack.isInWorkspace());
+ }
+
+ public void testPackageMissingId() {
+ XbPackages packs = parse("MissingPackageID.xml", true,
failedMissingRequiredAtt("id"));
+ XbPackage pack = (XbPackage)packs.getAllChildren().get(0);
+ assertNull(pack.getId());
+ }
+
+ public void testCorrectFolder() {
+ parse("CorrectFolder.xml", true,
shouldParse("CorrectFolder.xml"));
+ }
+
+ public void testFolderMissingName() {
+ parse("MissingFolderName.xml", false,
failedMissingRequiredAtt("name"));
+ }
+
+ public void testCorrectProperties() {
+ parse("CorrectProperties.xml", true,
shouldParse("CorrectProperties.xml"));
+ }
+
+ public void testPropertiesMissingKey() {
+ parse("MissingPropertiesName.xml", false,
failedMissingRequiredAtt("name"));
+ }
+
+ public void testPropertiesMissingValue() {
+ parse("MissingPropertiesValue.xml", false,
failedMissingRequiredAtt("value"));
+ }
+
+
+ public void testCorrectFileset() {
+ parse("CorrectFileset.xml", true,
shouldParse("CorrectFileset.xml"));
+ }
+
+ public void testFilesetMissingDir() {
+ parse("MissingFilesetDir.xml", false,
failedMissingRequiredAtt("todir"));
+ }
+
+ public void testFilesetMissingIncludes() {
+ parse("MissingFilesetIncludes.xml", false,
failedMissingRequiredAtt("includes"));
+ }
+
+ public void testFilesetMissingExcludes() {
+ XbPackages packs = parse("MissingFilesetExcludes.xml", true,
failedFalsePositiveRequiredAtt("excludes"));
+ // no default
+ }
+
+ public void testFilesetMissingInWorkspace() {
+ XbPackages packs = parse("MissingFilesetInWorkspace.xml", true,
failedFalsePositiveRequiredAtt("inWorkspace"));
+ // no default
+ XbPackage pack = (XbPackage)packs.getAllChildren().get(0);
+ List l = pack.getChildren(XbFileSet.class);
+ assertNotNull(l);
+ assertEquals(1, l.size());
+ XbFileSet fs = (XbFileSet)l.get(0);
+ assertTrue(fs.isInWorkspace());
+ }
+
+ public void testFilesetMissingFlattened() {
+ XbPackages packs = parse("MissingFilesetFlattened.xml", true,
failedFalsePositiveRequiredAtt("flattened"));
+ // no default
+ XbPackage pack = (XbPackage)packs.getAllChildren().get(0);
+ List l = pack.getChildren(XbFileSet.class);
+ assertNotNull(l);
+ assertEquals(1, l.size());
+ XbFileSet fs = (XbFileSet)l.get(0);
+ assertFalse(fs.isFlattened());
+ }
+
+
+ public void testCorrectAction() {
+ parse("CorrectAction.xml", true,
shouldParse("CorrectAction.xml"));
+ }
+
+ public void testActionMissingTime() {
+ parse("MissingActionTime.xml", false,
failedMissingRequiredAtt("time"));
+ }
+
+ public void testActionMissingType() {
+ parse("MissingActionType.xml", false,
failedMissingRequiredAtt("type"));
+ }
+
+
+ /*
+ * Utility
+ */
+
+ protected XbPackages parse(String file, boolean shouldSucceed, String failMsg) {
+ FileInputStream fis = null;
+ XbPackages packs = null;
+ try {
+ fis = new FileInputStream(archiveDescriptors.append(file).toFile());
+ packs = XMLBinding.unmarshal(fis, new NullProgressMonitor());
+ } catch( IOException ioe ) {
+ fail(ioe.getMessage());
+ } catch( XbException e ) {
+ if( shouldSucceed )
+ fail(failMsg + " - " + e.getMessage());
+ return packs;
+ }
+ if( !shouldSucceed )
+ fail(failMsg);
+ return packs;
+ }
+
+ protected String failedMissingRequiredAtt(String att) {
+ return "File parsed while missing a required attribute: " + att;
+ }
+
+ protected String failedFalsePositiveRequiredAtt(String attribute) {
+ return "File failed to parse even though \"" + attribute + "\"
is not required";
+ }
+
+ protected String shouldParse(String file) {
+ return file + " should parse correctly.";
+ }
+}