xalan-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jkess...@apache.org
Subject cvs commit: xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java
Date Wed, 30 Jan 2002 17:54:57 GMT
jkesselm    02/01/30 09:54:56

  Modified:    java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java
  Log:
  Bugzilla 2617, part 1: Construct the data structures and access them correctly.
  Ignore too-late-to-be-safe requests to enable this feature.
  
  This doesn't resolve how to rewrite higher-level code so it makes the
  request early enough to be useful.
  
  Revision  Changes    Path
  1.25      +43 -10    xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm/SAX2DTM.java
  
  Index: SAX2DTM.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm/SAX2DTM.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- SAX2DTM.java	23 Jan 2002 22:53:47 -0000	1.24
  +++ SAX2DTM.java	30 Jan 2002 17:54:56 -0000	1.25
  @@ -866,6 +866,25 @@
       m_exptype.addElement(expandedTypeID);
       m_dataOrQName.addElement(dataOrPrefix);    
   
  +	if (m_useSourceLocationProperty && m_locator != null) 
  +	{
  +		m_sourceSystemId.addElement(m_locator.getSystemId());
  +		m_sourceLine.addElement(m_locator.getLineNumber());
  +		m_sourceColumn.addElement(m_locator.getColumnNumber());
  +
  +		//%REVIEW% %BUG% Prevent this from arising in the first place
  +		// by not allowing the enabling conditions to change after we start
  +		// building the document.
  +		if (m_sourceSystemId.size() != m_size) 
  +		{
  +			System.err.println("CODING ERROR in Source Location: " + m_size
  +				+ " != "
  +				+ m_sourceSystemId.size());
  +			System.exit(1);
  +		}
  +	}
  +
  +
       if (DTM.NULL != previousSibling)
         m_nextsib.setElementAt(nodeIndex,previousSibling);
   
  @@ -1886,9 +1905,6 @@
      */
     public void characters(char ch[], int start, int length) throws SAXException
     {
  -   if (DEBUG)
  -      System.out.println("characters: " + new String(ch,start,length));
  -
       if (m_textPendingStart == -1)  // First one in this block
       {
         m_textPendingStart = m_chars.size();
  @@ -2289,23 +2305,40 @@
      */
     public void setProperty(String property, Object value)
     {
  -    if (property.equals(XalanProperties.SOURCE_LOCATION)) {
  +    if (property.equals(XalanProperties.SOURCE_LOCATION)) 
  +    {
         if (!(value instanceof Boolean))
           throw new RuntimeException(XSLMessages.createMessage(XSLTErrorResources.ER_PROPERTY_VALUE_BOOLEAN,
new Object[]{XalanProperties.SOURCE_LOCATION})); //"Value for property "
                                     // + XalanProperties.SOURCE_LOCATION
                                     // + " should be a Boolean instance");
  -      m_useSourceLocationProperty = ((Boolean)value).booleanValue();
  -      m_sourceSystemId = new StringVector();
  -      m_sourceLine = new IntVector();
  -      m_sourceColumn = new IntVector();
  -    }
  +      // %REVIEW%
  +      // This MUST NOT be set true after document construction has begun,
  +      // since that will leave us with incomplete data structures and cause
  +      // malfunctions. Easier to just say "don't change at all once in progress"
  +      if(m_size<=0)
  +      {
  +		m_useSourceLocationProperty = ((Boolean)value).booleanValue();
  +		if(m_useSourceLocationProperty)
  +  	    {
  +	  	  m_sourceSystemId = new StringVector();
  + 	  	  m_sourceLine = new IntVector();
  +  	  	  m_sourceColumn = new IntVector();
  +      	}
  +      }
  +     }
     }
   
  +  /** Retrieve the SourceLocator associated with a specific node.
  +   * This is only meaningful if the XalanProperties.SOURCE_LOCATION flag was
  +   * set True using setProperty; if it was never set, or was set false, we
  +   * will return null. (We _could_ return a locator with the document's
  +   * base URI and bogus line/column information. Should we?)
  +   * */
     public SourceLocator getSourceLocatorFor(int node)
     {
       if (m_useSourceLocationProperty)
       {
  -      node = node & ExpandedNameTable.MASK_NODEHANDLE;
  +      node = makeNodeIdentity(node);
         
         return new NodeLocator(null,
                                m_sourceSystemId.elementAt(node),
  
  
  

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


Mime
View raw message