jkesselm    01/08/28 11:18:32

  Modified:    java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
  Log:
  added dumpNode method, convenience for debugging.
  
  We might want to move this function up to DTMDefaultBase, or
   perhaps to the DTM API itself.
  
  Revision  Changes    Path
  1.17      +76 -0     xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBase.java
  
  Index: DTMDefaultBase.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBase.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- DTMDefaultBase.java       2001/08/24 04:49:31     1.16
  +++ DTMDefaultBase.java       2001/08/28 18:18:32     1.17
  @@ -779,6 +779,82 @@
         System.exit(-1);
       }
     }
  +  
  +  /**
  +   * Diagnostics function to dump a single node.
  +   * 
  +   * %REVIEW% KNOWN GLITCH: If you pass it a node index rather than a 
  +   * node handle, it works just fine... but the displayed identity 
  +   * number before the colon is different, which complicates comparing
  +   * it with nodes printed the other way. We could always OR the DTM ID
  +   * into the value, to suppress that distinction...
  +   * 
  +   * %REVIEW% This might want to be moved up to DTMDefaultBase, or possibly
  +   * DTM itself, since it's a useful diagnostic and uses only DTM's public
  +   * APIs.
  +   */
  +  public String dumpNode(int nodeHandle)
  +  {    
  +       if(nodeHandle==DTM.NULL)
  +               return "[null]";
  +               
  +        String typestring;
  +        switch (getNodeType(nodeHandle))
  +        {
  +        case DTM.ATTRIBUTE_NODE :
  +          typestring = "ATTR";
  +          break;
  +        case DTM.CDATA_SECTION_NODE :
  +          typestring = "CDATA";
  +          break;
  +        case DTM.COMMENT_NODE :
  +          typestring = "COMMENT";
  +          break;
  +        case DTM.DOCUMENT_FRAGMENT_NODE :
  +          typestring = "DOC_FRAG";
  +          break;
  +        case DTM.DOCUMENT_NODE :
  +          typestring = "DOC";
  +          break;
  +        case DTM.DOCUMENT_TYPE_NODE :
  +          typestring = "DOC_TYPE";
  +          break;
  +        case DTM.ELEMENT_NODE :
  +          typestring = "ELEMENT";
  +          break;
  +        case DTM.ENTITY_NODE :
  +          typestring = "ENTITY";
  +          break;
  +        case DTM.ENTITY_REFERENCE_NODE :
  +          typestring = "ENT_REF";
  +          break;
  +        case DTM.NAMESPACE_NODE :
  +          typestring = "NAMESPACE";
  +          break;
  +        case DTM.NOTATION_NODE :
  +          typestring = "NOTATION";
  +          break;
  +        case DTM.NULL :
  +          typestring = "null";
  +          break;
  +        case DTM.PROCESSING_INSTRUCTION_NODE :
  +          typestring = "PI";
  +          break;
  +        case DTM.TEXT_NODE :
  +          typestring = "TEXT";
  +          break;
  +        default :
  +          typestring = "Unknown!";
  +          break;
  +        }
  +
  +      StringBuffer sb=new StringBuffer();
  +       sb.append("["+nodeHandle+": "+typestring+
  +                             
"(0x"+Integer.toHexString(getExpandedTypeID(nodeHandle))+") "+
  +                             getNodeNameX(nodeHandle)+" 
{"+getNamespaceURI(nodeHandle)+"}"+
  +                             "=\""+ getNodeValue(nodeHandle)+"\"]");
  +       return sb.toString();
  +  }
   
     // ========= DTM Implementation Control Functions. ==============
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to