You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2012/12/21 21:40:50 UTC
svn commit: r1425132 - in /commons/proper/digester/trunk: ./
core/src/main/java/org/apache/commons/digester3/
core/src/main/java/org/apache/commons/digester3/binder/
core/src/test/java/org/apache/commons/digester3/
core/src/test/resources/org/apache/co...
Author: simonetripodi
Date: Fri Dec 21 20:40:49 2012
New Revision: 1425132
URL: http://svn.apache.org/viewvc?rev=1425132&view=rev
Log:
[DIGESTER-173] No way to enable schema validation from DigesterLoader - patch provided by Ivan Diana
Added:
commons/proper/digester/trunk/core/src/test/java/org/apache/commons/digester3/DTDValidationTestCase.java (with props)
commons/proper/digester/trunk/core/src/test/resources/org/apache/commons/digester3/document-with-relative-dtd-error.xml (with props)
Modified:
commons/proper/digester/trunk/core/src/main/java/org/apache/commons/digester3/Digester.java
commons/proper/digester/trunk/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java
commons/proper/digester/trunk/pom.xml
commons/proper/digester/trunk/src/changes/changes.xml
Modified: commons/proper/digester/trunk/core/src/main/java/org/apache/commons/digester3/Digester.java
URL: http://svn.apache.org/viewvc/commons/proper/digester/trunk/core/src/main/java/org/apache/commons/digester3/Digester.java?rev=1425132&r1=1425131&r2=1425132&view=diff
==============================================================================
--- commons/proper/digester/trunk/core/src/main/java/org/apache/commons/digester3/Digester.java (original)
+++ commons/proper/digester/trunk/core/src/main/java/org/apache/commons/digester3/Digester.java Fri Dec 21 20:40:49 2012
@@ -774,9 +774,14 @@ public class Digester
}
/**
- * Set the validating parser flag. This must be called before <code>parse()</code> is called the first time.
+ * Set the validating parser flag. This must be called before <code>parse()</code> is called the first time.
+ * By default the value of this is set to false.
+ *
+ * It essentially just controls the DTD validation. To use modern schema languages use the
+ * {@link #setXMLSchema(Schema)} method to associate a schema to a parser.
*
* @param validating The new validating parser flag.
+ * @see javax.xml.parsers.SAXParserFactory#setValidating(boolean) for more detail.
*/
public void setValidating( boolean validating )
{
Modified: commons/proper/digester/trunk/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java
URL: http://svn.apache.org/viewvc/commons/proper/digester/trunk/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java?rev=1425132&r1=1425131&r2=1425132&view=diff
==============================================================================
--- commons/proper/digester/trunk/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java (original)
+++ commons/proper/digester/trunk/core/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java Fri Dec 21 20:40:49 2012
@@ -47,6 +47,8 @@ import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.XMLReader;
/**
@@ -270,10 +272,11 @@ public final class DigesterLoader
}
/**
- * Set the validating parser flag.
+ * Set the {@code DOCTYPE} validation parser flag and should not be used when using schemas.
*
* @param validating The new validating parser flag.
* @return This loader instance, useful to chain methods.
+ * @see javax.xml.parsers.SAXParserFactory#setValidating(boolean)
*/
public DigesterLoader setValidating( boolean validating )
{
@@ -282,7 +285,7 @@ public final class DigesterLoader
}
/**
- * Return the validating parser flag.
+ * Return the {@code DOCTYPE} validation parser flag.
*
* @return true, if the validating parser flag is set, false otherwise
*/
@@ -304,6 +307,26 @@ public final class DigesterLoader
}
/**
+ * Sets a flag indicating whether the requested feature is supported by the underlying implementation of
+ * <code>org.xml.sax.XMLReader</code>.
+ *
+ * @see org.apache.commons.digester3.Digester#setFeature(String, boolean)
+ * @param feature Name of the feature to set the status for
+ * @param value The new value for this feature
+ * @return This loader instance, useful to chain methods.
+ * @exception ParserConfigurationException if a parser configuration error occurs
+ * @exception SAXNotRecognizedException if the property name is not recognized
+ * @exception SAXNotSupportedException if the property name is recognized but not supported
+ * @since 3.3
+ */
+ public DigesterLoader setFeature( String feature, boolean value )
+ throws SAXNotRecognizedException, SAXNotSupportedException, ParserConfigurationException
+ {
+ factory.setFeature(feature, value);
+ return this;
+ }
+
+ /**
* <p>Register the specified DTD URL for the specified public identifier.
* This must be called before the first call to <code>parse()</code>.
* </p><p>
Added: commons/proper/digester/trunk/core/src/test/java/org/apache/commons/digester3/DTDValidationTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/digester/trunk/core/src/test/java/org/apache/commons/digester3/DTDValidationTestCase.java?rev=1425132&view=auto
==============================================================================
--- commons/proper/digester/trunk/core/src/test/java/org/apache/commons/digester3/DTDValidationTestCase.java (added)
+++ commons/proper/digester/trunk/core/src/test/java/org/apache/commons/digester3/DTDValidationTestCase.java Fri Dec 21 20:40:49 2012
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.digester3;
+
+import static org.apache.commons.digester3.binder.DigesterLoader.newLoader;
+
+import java.io.File;
+
+import org.apache.commons.digester3.binder.AbstractRulesModule;
+import org.junit.Test;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+/**
+ * Tests for entity resolution and dtd validation
+ *
+ * @author <a href='http://commons.apache.org/'>Apache Commons Team</a>
+ */
+public class DTDValidationTestCase
+{
+
+ @Test( expected = SAXParseException.class )
+ public void testDigesterDTDError()
+ throws Exception
+ {
+ newLoader( new AbstractRulesModule() {
+
+ @Override
+ protected void configure()
+ {
+ // do nothing
+ }
+
+ } )
+ .setValidating( true )
+ .setErrorHandler( new ErrorHandler()
+ {
+
+ public void warning( SAXParseException e )
+ throws SAXException
+ {
+ throw e;
+ }
+
+ public void fatalError( SAXParseException e )
+ throws SAXException
+ {
+ throw e;
+ }
+
+ public void error( SAXParseException e )
+ throws SAXException
+ {
+ throw e;
+ }
+
+ } )
+ .newDigester()
+ .parse( new File( "src/test/resources/org/apache/commons/digester3/document-with-relative-dtd-error.xml" ) );
+ }
+
+ @Test
+ public void testDigesterNoDTDValidation()
+ throws Exception
+ {
+ newLoader( new AbstractRulesModule()
+ {
+
+ @Override
+ protected void configure()
+ {
+ // do nothing
+ }
+
+ } )
+ .setValidating( false )
+ .newDigester()
+ .parse( new File( "src/test/resources/org/apache/commons/digester3/document-with-relative-dtd-error.xml" ) );
+ }
+
+ @Test
+ public void testDigesterValidation()
+ throws Exception
+ {
+ newLoader( new AbstractRulesModule()
+ {
+ @Override
+ protected void configure()
+ {
+ // do nothing
+ }
+ } )
+ .setValidating( true )
+ .newDigester()
+ .parse( new File( "src/test/resources/org/apache/commons/digester3/document-with-relative-dtd.xml" ) );
+ }
+
+}
Propchange: commons/proper/digester/trunk/core/src/test/java/org/apache/commons/digester3/DTDValidationTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/digester/trunk/core/src/test/java/org/apache/commons/digester3/DTDValidationTestCase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/proper/digester/trunk/core/src/test/java/org/apache/commons/digester3/DTDValidationTestCase.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/proper/digester/trunk/core/src/test/resources/org/apache/commons/digester3/document-with-relative-dtd-error.xml
URL: http://svn.apache.org/viewvc/commons/proper/digester/trunk/core/src/test/resources/org/apache/commons/digester3/document-with-relative-dtd-error.xml?rev=1425132&view=auto
==============================================================================
--- commons/proper/digester/trunk/core/src/test/resources/org/apache/commons/digester3/document-with-relative-dtd-error.xml (added)
+++ commons/proper/digester/trunk/core/src/test/resources/org/apache/commons/digester3/document-with-relative-dtd-error.xml Fri Dec 21 20:40:49 2012
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!DOCTYPE document SYSTEM "simple.dtd">
+<nodtdtag>
+Hello, world
+</nodtdtag>
\ No newline at end of file
Propchange: commons/proper/digester/trunk/core/src/test/resources/org/apache/commons/digester3/document-with-relative-dtd-error.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/digester/trunk/core/src/test/resources/org/apache/commons/digester3/document-with-relative-dtd-error.xml
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: commons/proper/digester/trunk/core/src/test/resources/org/apache/commons/digester3/document-with-relative-dtd-error.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: commons/proper/digester/trunk/pom.xml
URL: http://svn.apache.org/viewvc/commons/proper/digester/trunk/pom.xml?rev=1425132&r1=1425131&r2=1425132&view=diff
==============================================================================
--- commons/proper/digester/trunk/pom.xml (original)
+++ commons/proper/digester/trunk/pom.xml Fri Dec 21 20:40:49 2012
@@ -157,6 +157,10 @@
<name>Dirk Schaube</name>
<email>Dirk dot Schaube at dwpbank dot de</email>
</contributor>
+ <contributor>
+ <name>Ivan Diana</name>
+ <email>iwo dot diana at gmail dot com</email>
+ </contributor>
</contributors>
<scm>
Modified: commons/proper/digester/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/digester/trunk/src/changes/changes.xml?rev=1425132&r1=1425131&r2=1425132&view=diff
==============================================================================
--- commons/proper/digester/trunk/src/changes/changes.xml (original)
+++ commons/proper/digester/trunk/src/changes/changes.xml Fri Dec 21 20:40:49 2012
@@ -26,6 +26,9 @@
<action dev="simonetripodi" type="fix" issue="DIGESTER-174" due-to="Andreas Sahlbach">
Inner List Annotation has wrong @Target for most of the predefined annotation rules
</action>
+ <action dev="simonetripodi" type="fix" issue="DIGESTER-173" due-to="Ivan Diana">
+ No way to enable schema validation from DigesterLoader
+ </action>
<action dev="simonetripodi" type="fix" issue="DIGESTER-172" due-to="Ivan Diana">
Even with custom ErrorHandler, SAX errors are still written to stderr
</action>