Author: sylvain
Date: Wed Dec 15 03:58:32 2004
New Revision: 111965

URL: http://svn.apache.org/viewcvs?view=rev&rev=111965
Log:
fix bug #31668: the entity resolver is not attached to the parser used to read 
form files
Modified:
   
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/DefaultFormManager.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingManager.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/DefaultSelectionListBuilder.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/util/DomHelper.java
   cocoon/branches/BRANCH_2_1_X/status.xml

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/DefaultFormManager.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/DefaultFormManager.java?view=diff&rev=111965&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/DefaultFormManager.java&r1=111964&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/DefaultFormManager.java&r2=111965
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/DefaultFormManager.java
  (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/DefaultFormManager.java
  Wed Dec 15 03:58:32 2004
@@ -151,7 +151,7 @@
             try {
                 InputSource inputSource = new 
InputSource(source.getInputStream());
                 inputSource.setSystemId(source.getURI());
-                formDocument = DomHelper.parse(inputSource);
+                formDocument = DomHelper.parse(inputSource, this.manager);
             } catch (Exception e) {
                 throw new CascadingException("Could not parse form definition 
from " +
                                              source.getURI(), e);
@@ -185,7 +185,7 @@
             try {
                 InputSource inputSource = new 
InputSource(source.getInputStream());
                 inputSource.setSystemId(source.getURI());
-                formDocument = DomHelper.parse(inputSource);
+                formDocument = DomHelper.parse(inputSource, this.manager);
             } catch (Exception e) {
                 throw new CascadingException("Could not parse form definition 
from " +
                                              source.getURI(), e);

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingManager.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingManager.java?view=diff&rev=111965&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingManager.java&r1=111964&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingManager.java&r2=111965
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingManager.java
        (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingManager.java
        Wed Dec 15 03:58:32 2004
@@ -97,7 +97,7 @@
                 InputSource is = new InputSource(source.getInputStream());
                 is.setSystemId(source.getURI());
 
-                Document doc = DomHelper.parse(is);
+                Document doc = DomHelper.parse(is, manager);
                 Element rootElm = doc.getDocumentElement();
                 if 
(BindingManager.NAMESPACE.equals(rootElm.getNamespaceURI())) {
                     binding = getBuilderAssistant()

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/DefaultSelectionListBuilder.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/DefaultSelectionListBuilder.java?view=diff&rev=111965&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/DefaultSelectionListBuilder.java&r1=111964&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/DefaultSelectionListBuilder.java&r2=111965
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/DefaultSelectionListBuilder.java
        (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/DefaultSelectionListBuilder.java
        Wed Dec 15 03:58:32 2004
@@ -127,7 +127,7 @@
             source = resolver.resolveURI(src);
             InputSource inputSource = new InputSource(source.getInputStream());
             inputSource.setSystemId(source.getURI());
-            Document document = DomHelper.parse(inputSource);
+            Document document = DomHelper.parse(inputSource, 
this.serviceManager);
             Element selectionListElement = document.getDocumentElement();
             if 
(!Constants.DEFINITION_NS.equals(selectionListElement.getNamespaceURI()) ||
                     
!"selection-list".equals(selectionListElement.getLocalName())) {

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/util/DomHelper.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/util/DomHelper.java?view=diff&rev=111965&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/util/DomHelper.java&r1=111964&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/util/DomHelper.java&r2=111965
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/util/DomHelper.java
      (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/util/DomHelper.java
      Wed Dec 15 03:58:32 2004
@@ -18,9 +18,12 @@
 import java.io.IOException;
 import java.util.ArrayList;
 
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.xml.SaxBuffer;
 import org.apache.cocoon.xml.dom.DOMStreamer;
 import org.apache.commons.lang.BooleanUtils;
+import org.apache.excalibur.xml.EntityResolver;
 import org.apache.excalibur.xml.sax.XMLizable;
 import org.apache.xerces.dom.NodeImpl;
 import org.apache.xerces.parsers.DOMParser;
@@ -312,9 +315,12 @@
      * Creates a W3C Document that remembers the location of each element in
      * the source file. The location of element nodes can then be retrieved
      * using the [EMAIL PROTECTED] #getLocation(Element)} method.
+     *
+     * @param inputSource the inputSource to read the document from
+     * @param manager the service manager where to lookup the entity resolver
      */
-    public static Document parse(InputSource inputSource)
-            throws SAXException, SAXNotSupportedException, IOException {
+    public static Document parse(InputSource inputSource, ServiceManager 
manager)
+            throws SAXException, SAXNotSupportedException, IOException, 
ServiceException {
         DOMParser domParser = new LocationTrackingDOMParser();
         domParser.setFeature(
                 "http://apache.org/xml/features/dom/defer-node-expansion";,
@@ -322,8 +328,19 @@
         domParser.setFeature(
                 "http://apache.org/xml/features/dom/create-entity-ref-nodes";,
                 false);
-        domParser.parse(inputSource);
-        return domParser.getDocument();
+        
+        EntityResolver resolver = null;
+        if (manager.hasService(EntityResolver.ROLE)) {
+            resolver = (EntityResolver)manager.lookup(EntityResolver.ROLE);
+            domParser.setEntityResolver(resolver);
+        }
+        
+        try {
+            domParser.parse(inputSource);
+            return domParser.getDocument();
+        } finally {
+            manager.release(resolver);
+        }
     }
 
     /**

Modified: cocoon/branches/BRANCH_2_1_X/status.xml
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/status.xml?view=diff&rev=111965&p1=cocoon/branches/BRANCH_2_1_X/status.xml&r1=111964&p2=cocoon/branches/BRANCH_2_1_X/status.xml&r2=111965
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/status.xml     (original)
+++ cocoon/branches/BRANCH_2_1_X/status.xml     Wed Dec 15 03:58:32 2004
@@ -202,6 +202,9 @@
 
   <changes>
  <release version="@version@" date="@date@">
+   <action dev="SW" type="fix" fixes-bug="31668">
+     CForms: the parser used to read form files now uses the EntityResolver 
defined in cocoon.xconf.
+   </action>
    <action dev="AG" type="fix" fixes-bug="32620" due-to="Micah Dubinko" 
due-to-email="[EMAIL PROTECTED]">
      Tiny typo in AbstractTextSerializer
    </action>

Reply via email to