You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2001/09/26 15:03:23 UTC

cvs commit: xml-cocoon2/src/org/apache/cocoon/transformation WriteDOMSessionTransformer.java

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 [gweinger@itmedicine.net]
  
  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:sven.beauprez@the-ecorp.com">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:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org