You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xindice-dev@xml.apache.org by vg...@apache.org on 2006/11/27 00:02:24 UTC

svn commit: r479447 - in /xml/xindice/trunk: java/src/org/apache/xindice/xml/dom/DOMParser.java status.xml

Author: vgritsenko
Date: Sun Nov 26 15:02:23 2006
New Revision: 479447

URL: http://svn.apache.org/viewvc?view=rev&rev=479447
Log:
            <action dev="VG" type="update" fixes-bug="41002" due-to="Natalia Shilenkova">
                Ignore SAXNotSupportedException in DOMParser.setFeature if
                feature is being set to false. (Needed for Oracle 10g application server).
            </action>


Modified:
    xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DOMParser.java
    xml/xindice/trunk/status.xml

Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DOMParser.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DOMParser.java?view=diff&rev=479447&r1=479446&r2=479447
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DOMParser.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DOMParser.java Sun Nov 26 15:02:23 2006
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
- * CVS $Id$
+ * $Id$
  */
 
 package org.apache.xindice.xml.dom;
@@ -33,6 +33,8 @@
 import org.xml.sax.InputSource;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
 import org.xml.sax.SAXParseException;
 import org.xml.sax.XMLReader;
 import org.xml.sax.ext.DeclHandler;
@@ -41,6 +43,7 @@
 
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
+
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -50,7 +53,7 @@
 /**
  * DOMParser is the Xindice compressed DOM parser.
  *
- * @version CVS $Revision$, $Date$
+ * @version $Revision$, $Date$
  */
 public final class DOMParser extends DefaultHandler implements DeclHandler, LexicalHandler {
 
@@ -190,11 +193,11 @@
     private SAXParser getSAXParser() throws Exception {
         final SAXParser sp = factory.newSAXParser();
         final XMLReader xr = sp.getXMLReader();
-        xr.setFeature("http://xml.org/sax/features/namespaces", true);
-        xr.setFeature("http://xml.org/sax/features/validation", false);
-        xr.setFeature("http://xml.org/sax/features/external-general-entities", false);
-        xr.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
-        xr.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
+        setFeature(xr, "http://xml.org/sax/features/namespaces", true);
+        setFeature(xr, "http://xml.org/sax/features/validation", false);
+        setFeature(xr, "http://xml.org/sax/features/external-general-entities", false);
+        setFeature(xr, "http://xml.org/sax/features/external-parameter-entities", false);
+        setFeature(xr, "http://xml.org/sax/features/namespace-prefixes", true);
         xr.setProperty("http://xml.org/sax/properties/lexical-handler", this);
         xr.setProperty("http://xml.org/sax/properties/declaration-handler", this);
         if (errors != null) {
@@ -205,6 +208,30 @@
         }
 
         return sp;
+    }
+
+    /**
+     * Tries to set SAX features. It is assumed that feature support is required
+     * if its value is <em>true</em> and optional if the value is <em>false</em>.
+     *
+     * @param xr XMLReader
+     * @param name SAX feature name
+     * @param value feature value
+     * @throws SAXNotRecognizedException
+     * @throws SAXNotSupportedException if the SAX feature is not supported and
+     *         the value is <em>true</em>
+     */
+    private void setFeature(XMLReader xr, String name, boolean value)
+            throws SAXNotRecognizedException, SAXNotSupportedException {
+        try {
+            xr.setFeature(name, value);
+        } catch (SAXNotSupportedException e) {
+            if (value) {
+                throw e;
+            } else if (log.isWarnEnabled()) {
+                log.warn("SAX feature " + name + " is not supported");
+            }
+        }
     }
 
     private void pushState(int newState) {

Modified: xml/xindice/trunk/status.xml
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/status.xml?view=diff&rev=479447&r1=479446&r2=479447
==============================================================================
--- xml/xindice/trunk/status.xml (original)
+++ xml/xindice/trunk/status.xml Sun Nov 26 15:02:23 2006
@@ -75,6 +75,10 @@
 
     <changes>
         <release version="1.1b5-dev" date="Oct 27 2006">
+            <action dev="VG" type="update" fixes-bug="41002" due-to="Natalia Shilenkova">
+                Ignore SAXNotSupportedException in DOMParser.setFeature if
+                feature is being set to false. (Needed for Oracle 10g application server).
+            </action>
             <action dev="VG" type="update" fixes-bug="41003" due-to="Natalia Shilenkova">
                 Change InlineMetaReader.read() method signature to remove
                 unnecessary data copying.