You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mr...@apache.org on 2007/03/06 22:07:11 UTC

svn commit: r515302 - in /xerces/java/trunk/src/org/apache/xerces/dom: CoreDocumentImpl.java DocumentImpl.java RangeImpl.java

Author: mrglavas
Date: Tue Mar  6 13:07:10 2007
New Revision: 515302

URL: http://svn.apache.org/viewvc?view=rev&rev=515302
Log:
Fixing JIRA Bug #1229:
http://issues.apache.org/jira/browse/XERCESJ-1229

Ensuring that the start and end offsets of Ranges which have a CDATASection/Comment/ProcessingInstruction 
start and/or end container are updated when text is inserted, deleted or replaced. This was not working
before.


Modified:
    xerces/java/trunk/src/org/apache/xerces/dom/CoreDocumentImpl.java
    xerces/java/trunk/src/org/apache/xerces/dom/DocumentImpl.java
    xerces/java/trunk/src/org/apache/xerces/dom/RangeImpl.java

Modified: xerces/java/trunk/src/org/apache/xerces/dom/CoreDocumentImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/dom/CoreDocumentImpl.java?view=diff&rev=515302&r1=515301&r2=515302
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/dom/CoreDocumentImpl.java (original)
+++ xerces/java/trunk/src/org/apache/xerces/dom/CoreDocumentImpl.java Tue Mar  6 13:07:10 2007
@@ -2647,21 +2647,21 @@
      * A method to be called when some text was changed in a text node,
      * so that live objects can be notified.
      */
-    void replacedText(NodeImpl node) {
+    void replacedText(CharacterDataImpl node) {
     }
 
     /**
      * A method to be called when some text was deleted from a text node,
      * so that live objects can be notified.
      */
-    void deletedText(NodeImpl node, int offset, int count) {
+    void deletedText(CharacterDataImpl node, int offset, int count) {
     }
 
     /**
      * A method to be called when some text was inserted into a text node,
      * so that live objects can be notified.
      */
-    void insertedText(NodeImpl node, int offset, int count) {
+    void insertedText(CharacterDataImpl node, int offset, int count) {
     }
 
     /**

Modified: xerces/java/trunk/src/org/apache/xerces/dom/DocumentImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/dom/DocumentImpl.java?view=diff&rev=515302&r1=515301&r2=515302
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/dom/DocumentImpl.java (original)
+++ xerces/java/trunk/src/org/apache/xerces/dom/DocumentImpl.java Tue Mar  6 13:07:10 2007
@@ -323,14 +323,14 @@
      * A method to be called when some text was changed in a text node,
      * so that live objects can be notified.
      */
-    void replacedText(NodeImpl node) {
+    void replacedText(CharacterDataImpl node) {
         // notify ranges
         if (ranges != null) {
             notifyRangesReplacedText(node);
         }
     }
     
-    private void notifyRangesReplacedText(NodeImpl node) {
+    private void notifyRangesReplacedText(CharacterDataImpl node) {
         final int size = ranges.size();
         for (int i = 0; i != size; i++) {
             ((RangeImpl)ranges.elementAt(i)).receiveReplacedText(node);
@@ -341,14 +341,14 @@
      * A method to be called when some text was deleted from a text node,
      * so that live objects can be notified.
      */
-    void deletedText(NodeImpl node, int offset, int count) {
+    void deletedText(CharacterDataImpl node, int offset, int count) {
         // notify ranges
         if (ranges != null) {
             notifyRangesDeletedText(node, offset, count);
         }
     }
     
-    private void notifyRangesDeletedText(NodeImpl node, int offset, int count) {
+    private void notifyRangesDeletedText(CharacterDataImpl node, int offset, int count) {
         final int size = ranges.size();
         for (int i = 0; i != size; i++) {
             ((RangeImpl)ranges.elementAt(i)).receiveDeletedText(node, offset, count);
@@ -359,14 +359,14 @@
      * A method to be called when some text was inserted into a text node,
      * so that live objects can be notified.
      */
-    void insertedText(NodeImpl node, int offset, int count) {
+    void insertedText(CharacterDataImpl node, int offset, int count) {
         // notify ranges
         if (ranges != null) {
             notifyRangesInsertedText(node, offset, count);
         }
     }
     
-    private void notifyRangesInsertedText(NodeImpl node, int offset, int count) {
+    private void notifyRangesInsertedText(CharacterDataImpl node, int offset, int count) {
         final int size = ranges.size();
         for (int i = 0; i != size; i++) {
             ((RangeImpl)ranges.elementAt(i)).receiveInsertedText(node, offset, count);

Modified: xerces/java/trunk/src/org/apache/xerces/dom/RangeImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/dom/RangeImpl.java?view=diff&rev=515302&r1=515301&r2=515302
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/dom/RangeImpl.java (original)
+++ xerces/java/trunk/src/org/apache/xerces/dom/RangeImpl.java Tue Mar  6 13:07:10 2007
@@ -892,24 +892,22 @@
      *  The  text has already beeen inserted.
      *  Fix-up any offsets.
      */
-    void receiveDeletedText(Node node, int offset, int count) {
+    void receiveDeletedText(CharacterDataImpl node, int offset, int count) {
         if (node == null) return;
         if (fDeleteNode == node) return;
-        if (node == fStartContainer 
-        && fStartContainer.getNodeType() == Node.TEXT_NODE) {
-            if (fStartOffset > offset+count) {
-                fStartOffset = offset+(fStartOffset-(offset+count));
-            } else 
-            if (fStartOffset > offset) {
+        if (node == fStartContainer) {
+            if (fStartOffset > offset + count) {
+                fStartOffset = offset + (fStartOffset - (offset + count));
+            } 
+            else if (fStartOffset > offset) {
                 fStartOffset = offset;
             }  
         }
-        if (node == fEndContainer 
-        && fEndContainer.getNodeType() == Node.TEXT_NODE) {
-            if (fEndOffset > offset+count) {
-                fEndOffset = offset+(fEndOffset-(offset+count));
-            } else 
-            if (fEndOffset > offset) {
+        if (node == fEndContainer) {
+            if (fEndOffset > offset + count) {
+                fEndOffset = offset + (fEndOffset - (offset + count));
+            } 
+            else if (fEndOffset > offset) {
                 fEndOffset = offset;
             }  
         }
@@ -926,43 +924,39 @@
     }
     
     
-    /** This function is called from DOM.
-     *  The  text has already beeen inserted.
+    /** 
+     *  This function is called from DOM.
+     *  The text has already beeen inserted.
      *  Fix-up any offsets.
      */
-    void receiveInsertedText(Node node, int index, int len) {
+    void receiveInsertedText(CharacterDataImpl node, int index, int len) {
         if (node == null) return;
         if (fInsertNode == node) return;
-        if (node == fStartContainer 
-        && fStartContainer.getNodeType() == Node.TEXT_NODE) {
+        if (node == fStartContainer) {
             if (index < fStartOffset) {
-                fStartOffset = fStartOffset+len;
+                fStartOffset = fStartOffset + len;
             }
         }
-        if (node == fEndContainer 
-        && fEndContainer.getNodeType() == Node.TEXT_NODE) {
+        if (node == fEndContainer) {
             if (index < fEndOffset) {
-                fEndOffset = fEndOffset+len;
+                fEndOffset = fEndOffset + len;
             }
         }
-        
     }
    
-    /** This function is called from DOM.
-     *  The  text has already beeen replaced.
+    /** 
+     *  This function is called from DOM.
+     *  The text has already beeen replaced.
      *  Fix-up any offsets.
      */
-    void receiveReplacedText(Node node) {
+    void receiveReplacedText(CharacterDataImpl node) {
         if (node == null) return;
-        if (node == fStartContainer 
-        && fStartContainer.getNodeType() == Node.TEXT_NODE) {
+        if (node == fStartContainer) {
             fStartOffset = 0;
         }
-        if (node == fEndContainer 
-        && fEndContainer.getNodeType() == Node.TEXT_NODE) {
+        if (node == fEndContainer) {
             fEndOffset = 0;
         }
-        
     }
     
     /** This function is called from the DOM.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org