|
|
@@ -58,10 +58,9 @@ import java.io.FileReader; |
|
|
|
import java.io.IOException; |
|
|
|
import java.net.MalformedURLException; |
|
|
|
import java.net.URL; |
|
|
|
import java.util.Enumeration; |
|
|
|
import java.util.Hashtable; |
|
|
|
import java.util.Vector; |
|
|
|
import java.util.List; |
|
|
|
import java.util.LinkedList; |
|
|
|
|
|
|
|
import org.apache.tools.ant.AntClassLoader; |
|
|
|
import org.apache.tools.ant.BuildException; |
|
|
|
import org.apache.tools.ant.DirectoryScanner; |
|
|
@@ -90,8 +89,6 @@ import org.xml.sax.helpers.ParserAdapter; |
|
|
|
* (probably the one that is used by Ant itself), but one can specify any |
|
|
|
* SAX1/2 parser if needed |
|
|
|
* @author Raphael Pierquin <a href="mailto:raphael.pierquin@agisphere.com">raphael.pierquin@agisphere.com</a> |
|
|
|
* @author <a href="mailto:nick.pellow@mindmatics.de">Nick Pellow</a> |
|
|
|
* Added support for setting features. |
|
|
|
*/ |
|
|
|
public class XMLValidateTask extends Task { |
|
|
|
|
|
|
@@ -109,7 +106,8 @@ public class XMLValidateTask extends Task { |
|
|
|
protected Vector filesets = new Vector(); // sets of file to be validated |
|
|
|
protected Path classpath; |
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
/** |
|
|
|
* the parser is viewed as a SAX2 XMLReader. If a SAX1 parser is specified, |
|
|
|
* it's wrapped in an adapter that make it behave as a XMLReader. |
|
|
|
* a more 'standard' way of doing this would be to use the JAXP1.1 SAXParser |
|
|
@@ -118,8 +116,7 @@ public class XMLValidateTask extends Task { |
|
|
|
protected XMLReader xmlReader = null; // XMLReader used to validation process |
|
|
|
protected ValidatorErrorHandler errorHandler |
|
|
|
= new ValidatorErrorHandler(); // to report sax parsing errors |
|
|
|
|
|
|
|
private List featureList = new LinkedList(); |
|
|
|
protected Hashtable features = new Hashtable(); |
|
|
|
|
|
|
|
private XMLCatalog xmlCatalog = new XMLCatalog(); |
|
|
|
|
|
|
@@ -225,17 +222,6 @@ public class XMLValidateTask extends Task { |
|
|
|
filesets.addElement(set); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* add a feature nested element |
|
|
|
* @since ant1.6 |
|
|
|
*/ |
|
|
|
public Feature createFeature() { |
|
|
|
final Feature feature = new Feature(); |
|
|
|
featureList.add(feature); |
|
|
|
return feature; |
|
|
|
} |
|
|
|
|
|
|
|
public void init() throws BuildException { |
|
|
|
super.init(); |
|
|
|
xmlCatalog.setProject(getProject()); |
|
|
@@ -361,18 +347,18 @@ public class XMLValidateTask extends Task { |
|
|
|
+ " doesn't provide validation"); |
|
|
|
} |
|
|
|
} |
|
|
|
// set the feature from the feature list |
|
|
|
for (int i = 0; i < featureList.size(); i++) { |
|
|
|
Feature feature = (Feature) featureList.get(i); |
|
|
|
setFeature(feature.getFeatureName(), |
|
|
|
feature.getFeatureValue(), |
|
|
|
true); |
|
|
|
// set other features |
|
|
|
Enumeration enum = features.keys(); |
|
|
|
while (enum.hasMoreElements()) { |
|
|
|
String featureId = (String) enum.nextElement(); |
|
|
|
setFeature(featureId, ((Boolean) features.get(featureId)).booleanValue(), true); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Set a feature on the parser. |
|
|
|
* set a feature on the parser. |
|
|
|
* @todo find a way to set any feature from build.xml |
|
|
|
*/ |
|
|
|
private boolean setFeature(String feature, boolean value, boolean warn) { |
|
|
|
|
|
|
@@ -496,53 +482,4 @@ public class XMLValidateTask extends Task { |
|
|
|
return e.getMessage(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* The class to create to set a feature of the parser. |
|
|
|
* @since ant1.6 |
|
|
|
* @author <a href="mailto:nick.pellow@mindmatics.de">Nick Pellow</a> |
|
|
|
*/ |
|
|
|
public class Feature { |
|
|
|
/** The name of the feature to set. |
|
|
|
* |
|
|
|
* Valid features <a href=http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description">include.</a> |
|
|
|
*/ |
|
|
|
private String featureName = null; |
|
|
|
|
|
|
|
/** |
|
|
|
* The value of the feature. |
|
|
|
**/ |
|
|
|
private boolean featureValue; |
|
|
|
|
|
|
|
/** |
|
|
|
* Set the feature name. |
|
|
|
* @param name the name to set |
|
|
|
*/ |
|
|
|
public void setName(String name) { |
|
|
|
featureName = name; |
|
|
|
} |
|
|
|
/** |
|
|
|
* Set the feature value to true or false. |
|
|
|
* @param value |
|
|
|
*/ |
|
|
|
public void setValue(boolean value) { |
|
|
|
featureValue = value; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Gets the feature name. |
|
|
|
* @return the feature name |
|
|
|
*/ |
|
|
|
public String getFeatureName() { |
|
|
|
return featureName; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Gets the feature value. |
|
|
|
* @return the featuree value |
|
|
|
*/ |
|
|
|
public boolean getFeatureValue() { |
|
|
|
return featureValue; |
|
|
|
} |
|
|
|
} |
|
|
|
} |