sboag       00/12/31 02:05:21

  Modified:    java/src/org/apache/xalan/transformer ResultTreeHandler.java
  Log:
  Add a bunch of debugging code that can be turned on by setting
  the DEBUG variable to true.
  Make sure namespaces are empty strings and not null.
  Have startPrefixMapping(String prefix, String uri) call
  startPrefixMapping(prefix, uri, true) instead of
  startPrefixMapping(prefix, uri, false), so that pended element flushing
  will occur by default, which fixes a bug when it is called from TreeWalker
  (which can only use the SAX interface).
  
  Revision  Changes    Path
  1.31      +54 -16    
xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java
  
  Index: ResultTreeHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- ResultTreeHandler.java    2000/12/27 22:29:21     1.30
  +++ ResultTreeHandler.java    2000/12/31 10:05:21     1.31
  @@ -230,11 +230,15 @@
   
       if (DEBUG)
       {
  -      if (null != qse)
  -        System.out.println("(ResultTreeHandler - pended: " + qse.getURL() + 
"#"
  +      if (null != qse && qse.isPending)
  +        System.out.println("(ResultTreeHandler#startElement - pended: " + 
qse.getURL() + "#"
                              + qse.getLocalName());
   
  -      System.out.println("ResultTreeHandler - startElement: " + ns + "#" + 
localName);
  +      System.out.println("ResultTreeHandler#startElement: " + ns + "#" + 
localName);
  +      if(null == ns)
  +      {
  +        (new RuntimeException(localName+" has a null 
namespace!")).printStackTrace();
  +      }
       }
   
       checkForSerializerSwitch(ns, localName);
  @@ -243,7 +247,7 @@
       if (!m_nsContextPushed)
       {
         if (DEBUG) 
  -        System.out.println("push(startElement)");
  +        System.out.println("ResultTreeHandler#startElement - 
push(startElement)");
   
         m_nsSupport.pushContext();
       }
  @@ -269,11 +273,11 @@
       if (DEBUG)
       {
         QueuedStartElement qse = getQueuedElem();
  -      if (null != qse)
  -        System.out.println("(ResultTreeHandler - pended: " + qse.getURL() + 
"#"
  +      if (null != qse && qse.isPending)
  +        System.out.println("(ResultTreeHandler#endElement - pended: " + 
qse.getURL() + "#"
                              + qse.getLocalName());
   
  -      System.out.println("ResultTreeHandler - endElement: " + ns + "#" + 
localName);
  +      System.out.println("ResultTreeHandler#endElement: " + ns + "#" + 
localName);
       }
   
       flushPending(EVT_ENDELEMENT);
  @@ -292,7 +296,7 @@
       popEvent();
   
       if (DEBUG)
  -      System.out.println("pop: " + localName);
  +      System.out.println("ResultTreeHandler#startElement pop: " + localName);
   
       m_nsSupport.popContext();
     }
  @@ -335,7 +339,7 @@
     public void startPrefixMapping(String prefix, String uri)
             throws org.xml.sax.SAXException
     {
  -    startPrefixMapping(prefix, uri, false);
  +    startPrefixMapping(prefix, uri, true);
     }
   
     /**
  @@ -359,7 +363,7 @@
       if (!m_nsContextPushed)
       {
         if (DEBUG)
  -        System.out.println("push(startPrefixMapping: " + prefix + ")");
  +        System.out.println("ResultTreeHandler#startPrefixMapping 
push(startPrefixMapping: " + prefix + ")");
   
         m_nsSupport.pushContext();
   
  @@ -375,8 +379,8 @@
       {
         if (DEBUG)
         {
  -        System.out.println("Prefix: " + prefix);
  -        System.out.println("uri: " + uri);
  +        System.out.println("ResultTreeHandler#startPrefixMapping Prefix: " + 
prefix);
  +        System.out.println("ResultTreeHandler#startPrefixMapping uri: " + 
uri);
         }
   
         m_nsSupport.declarePrefix(prefix, uri);
  @@ -420,6 +424,20 @@
       /*if (m_startDoc.isPending
       && XMLCharacterRecognizer.isWhiteSpace(ch, start, length))
       return;*/
  +    
  +    if(DEBUG)
  +    {
  +      System.out.print("ResultTreeHandler#characters: ");
  +      int n = start+length;
  +      for (int i = start; i < n; i++) 
  +      {
  +        if(Character.isWhitespace(ch[i]))
  +          System.out.print("\\"+((int)ch[i]));
  +        else
  +          System.out.print(ch[i]);
  +      }   
  +      System.out.println("");    
  +    }
   
       flushPending(EVT_CHARACTERS);
       m_contentHandler.characters(ch, start, length);
  @@ -745,8 +763,21 @@
           addNSDeclsToAttrs();
   
         sendStartPrefixMappings();
  -      qe.flush();
  +      
  +      if(DEBUG)
  +      {
  +        System.out.println("ResultTreeHandler#flushPending - start flush: "
  +                          +qe.getName());
  +      }
   
  +      qe.flush();
  +      
  +      if(DEBUG)
  +      {
  +        System.out.println("ResultTreeHandler#flushPending - after flush, 
isPending: "
  +                          +qe.isPending);
  +      }
  +      
         m_nsContextPushed = false;
       }
     }
  @@ -978,7 +1009,7 @@
   
               if (!srcURI.equalsIgnoreCase(desturi))
               {
  -              this.startPrefixMapping(prefix, srcURI);
  +              this.startPrefixMapping(prefix, srcURI, false);
               }
             }
           }
  @@ -1143,6 +1174,9 @@
   
       if (!qe.nsDeclsHaveBeenAdded())
         addNSDeclsToAttrs();
  +      
  +    if(null == uri) // defensive, should not really need this.
  +      uri = "";
   
       try
       {
  @@ -1155,7 +1189,7 @@
       }
   
       if (DEBUG)
  -      System.out.println("Adding attr: " + localName + ", " + uri);
  +      System.out.println("ResultTreeHandler#addAttribute Adding attr: " + 
localName + ", " + uri);
   
       if(!isDefinedNSDecl(rawName, value))
         qe.addAttribute(uri, localName, rawName, type, value);
  @@ -1241,8 +1275,12 @@
         return;
   
       DOMHelper helper = m_transformer.getXPathContext().getDOMHelper();
  +    
  +    String ns = helper.getNamespaceOfNode(attr);
  +    if(ns == null)
  +      ns = "";
   
  -    addAttribute(helper.getNamespaceOfNode(attr),
  +    addAttribute(ns,
                    helper.getLocalNameOfNode(attr), attr.getNodeName(),
                    "CDATA", attr.getValue());
     }  // end copyAttributeToTarget method
  
  
  

Reply via email to