You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by jk...@apache.org on 2001/12/14 20:47:28 UTC

cvs commit: xml-xalan/java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java

jkesselm    01/12/14 11:47:28

  Modified:    java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
  Log:
  Performance improvements; Some changes to better leverage the
  DOM's existing code, others to avoid some call-and-return overhead.
  
  Combined with other recent changes, we've now got a significant
  speedup over D14 on some tests. We may want to drop the scheduled
  December 17th 2.2 release and instead bring 2.2 out on 1/14  (which is
  when we'd planned 2.3) with performance gains and Xerces2 support.
  
  Revision  Changes    Path
  1.26      +82 -47    xml-xalan/java/src/org/apache/xml/dtm/ref/dom2dtm/DOM2DTM.java
  
  Index: DOM2DTM.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/dom2dtm/DOM2DTM.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- DOM2DTM.java	2001/11/29 16:30:47	1.25
  +++ DOM2DTM.java	2001/12/14 19:47:28	1.26
  @@ -98,6 +98,7 @@
   public class DOM2DTM extends DTMDefaultBaseIterators
   {
     static final boolean JJK_DEBUG=false;
  +  static final boolean JJK_NEWCODE=true;
     
     /** Manefest constant
      */
  @@ -1018,37 +1019,61 @@
      */
     public String getLocalName(int nodeHandle)
     {
  -
  -    String name;
  -    short type = getNodeType(nodeHandle);
  -
  -    switch (type)
  -    {
  -    case DTM.ATTRIBUTE_NODE :
  -    case DTM.ELEMENT_NODE :
  -    case DTM.ENTITY_REFERENCE_NODE :
  -    case DTM.NAMESPACE_NODE :
  -    case DTM.PROCESSING_INSTRUCTION_NODE :
  +    if(JJK_NEWCODE)
       {
  -      Node node = getNode(nodeHandle);
  -
  -      // assume not null.
  -      name = node.getLocalName();
  -
  -      if (null == name)
  +      int id=makeNodeIdentity(nodeHandle);
  +      if(NULL==id) return null;
  +      Node newnode=(Node)m_nodes.elementAt(id);
  +      String newname=newnode.getLocalName();
  +      if (null == newname)
         {
  -        String qname = node.getNodeName();
  -        int index = qname.indexOf(':');
  -
  -        name = (index < 0) ? qname : qname.substring(index + 1);
  +	// XSLT treats PIs, and possibly other things, as having QNames.
  +	String qname = newnode.getNodeName();
  +	if('#'==newnode.getNodeName().charAt(0))
  +	{
  +	  //  Match old default for this function
  +	  // This conversion may or may not be necessary
  +	  newname="";
  +	}
  +	else
  +	{
  +	  int index = qname.indexOf(':');
  +	  newname = (index < 0) ? qname : qname.substring(index + 1);
  +	}
         }
  +      return newname;
       }
  -    break;
  -    default :
  -      name = "";
  +    else
  +    {
  +      String name;
  +      short type = getNodeType(nodeHandle);
  +      switch (type)
  +      {
  +      case DTM.ATTRIBUTE_NODE :
  +      case DTM.ELEMENT_NODE :
  +      case DTM.ENTITY_REFERENCE_NODE :
  +      case DTM.NAMESPACE_NODE :
  +      case DTM.PROCESSING_INSTRUCTION_NODE :
  +	{
  +	  Node node = getNode(nodeHandle);
  +	  
  +	  // assume not null.
  +	  name = node.getLocalName();
  +	  
  +	  if (null == name)
  +	  {
  +	    String qname = node.getNodeName();
  +	    int index = qname.indexOf(':');
  +	    
  +	    name = (index < 0) ? qname : qname.substring(index + 1);
  +	  }
  +	}
  +	break;
  +      default :
  +	name = "";
  +      }
  +      return name;
       }
  -
  -    return name;
     }
   
     /**
  @@ -1114,31 +1139,41 @@
      */
     public String getNamespaceURI(int nodeHandle)
     {
  -
  -    String nsuri;
  -    short type = getNodeType(nodeHandle);
  -
  -    switch (type)
  +    if(JJK_NEWCODE)
       {
  -    case DTM.ATTRIBUTE_NODE :
  -    case DTM.ELEMENT_NODE :
  -    case DTM.ENTITY_REFERENCE_NODE :
  -    case DTM.NAMESPACE_NODE :
  -    case DTM.PROCESSING_INSTRUCTION_NODE :
  +      int id=makeNodeIdentity(nodeHandle);
  +      if(id==NULL) return null;
  +      Node node=(Node)m_nodes.elementAt(id);
  +      return node.getNamespaceURI();
  +    }
  +    else
       {
  -      Node node = getNode(nodeHandle);
  -
  -      // assume not null.
  -      nsuri = node.getNamespaceURI();
  +      String nsuri;
  +      short type = getNodeType(nodeHandle);
  +      
  +      switch (type)
  +      {
  +      case DTM.ATTRIBUTE_NODE :
  +      case DTM.ELEMENT_NODE :
  +      case DTM.ENTITY_REFERENCE_NODE :
  +      case DTM.NAMESPACE_NODE :
  +      case DTM.PROCESSING_INSTRUCTION_NODE :
  +	{
  +	  Node node = getNode(nodeHandle);
  +	  
  +	  // assume not null.
  +	  nsuri = node.getNamespaceURI();
  +	  
  +	  // %TBD% Handle DOM1?
  +	}
  +	break;
  +      default :
  +	nsuri = null;
  +      }
   
  -      // %TBD% Handle DOM1?
  +      return nsuri;
       }
  -    break;
  -    default :
  -      nsuri = null;
  -    }
  -
  -    return nsuri;
  +    
     }
     
     /** Utility function: Given a DOM Text node, determine whether it is
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org