cziegeler    01/09/26 06:03:23

  Modified:    src/org/apache/cocoon/transformation
                        WriteDOMSessionTransformer.java
  Log:
  This patch fixes a bug in the WriteDOMSessionTransformer, which does not currently 
build xml documents with namespaces correctly.
  Submitted by: Greg Weinger [[EMAIL PROTECTED]]
  
  Revision  Changes    Path
  1.4       +25 -3     
xml-cocoon2/src/org/apache/cocoon/transformation/WriteDOMSessionTransformer.java
  
  Index: WriteDOMSessionTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/WriteDOMSessionTransformer.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WriteDOMSessionTransformer.java   2001/08/20 13:55:17     1.3
  +++ WriteDOMSessionTransformer.java   2001/09/26 13:03:23     1.4
  @@ -26,6 +26,8 @@
   
   import java.io.IOException;
   import java.util.Map;
  +import java.util.HashMap;
  +import java.util.Iterator;
   
   
   /**
  @@ -42,7 +44,7 @@
    *   dom-root-element is the trigger that will be the root element of the DOM
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Sven Beauprez</a>
  - * @version CVS $Revision: 1.3 $ $Date: 2001/08/20 13:55:17 $ $Author: dims $
  + * @version CVS $Revision: 1.4 $ $Date: 2001/09/26 13:03:23 $ $Author: cziegeler $
    */
   
   public class WriteDOMSessionTransformer extends AbstractTransformer implements 
  @@ -63,6 +65,7 @@
   
       private String DOMName;
       private String rootElement;
  +     private Map storedPrefixMap;
   
       /** BEGIN SitemapComponent methods **/
   
  @@ -81,6 +84,7 @@
                               DOMName + "; " + 
WriteDOMSessionTransformer.DOM_ROOT_ELEMENT + "=" +
                               rootElement);
             sessionAvailable = true;
  +                                     storedPrefixMap = new HashMap();  
           } else  {
             getLogger().error("WriteSessionTransformer: need " + 
WriteDOMSessionTransformer.DOM_NAME +
                               " and " + WriteDOMSessionTransformer.DOM_ROOT_ELEMENT + 
" parameters");
  @@ -116,7 +120,9 @@
         super.startPrefixMapping(prefix,uri);
         if (buildDom)  {
           builder.startPrefixMapping(prefix,uri);
  -      }
  +      } else {
  +                             storePrefixMapping(prefix,uri);
  +                     }
       }
   
       public void startElement(String uri, String name, String raw, Attributes 
attributes)
  @@ -127,6 +133,7 @@
             buildDom = true;
             builder = new DOMBuilder(parser);
             builder.startDocument();
  +                                     launchStoredMappings();
             builder.startElement(uri,name,raw,attributes);
           } else if (buildDom)  {
             builder.startElement(uri,name,raw,attributes);
  @@ -176,6 +183,21 @@
   
       /** END SAX ContentHandler handlers **/
   
  +       protected void storePrefixMapping(String prefix, String uri) {  
  +                storedPrefixMap.put(prefix,uri);  
  +     }  
  +     
  +       protected void launchStoredMappings() 
  +             throws SAXException {  
  +                 Iterator it = storedPrefixMap.keySet().iterator();
  +                             while(it.hasNext()) {  
  +                                     String pre = (String)it.next();
  +                                     String uri = (String)storedPrefixMap.get(pre);
  +                                     getLogger().debug("WriteSessionTransformer: 
launching prefix mapping[ pre: "+pre+" uri: "+uri+" ]");
  +                                     builder.startPrefixMapping(pre,uri);
  +                             } 
  +             } 
  +
   
   
  -}
  \ No newline at end of file
  +}
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to