https://bz.apache.org/bugzilla/show_bug.cgi?id=58432

            Bug ID: 58432
           Summary: Sheet and Row iterators expose remove method which
                    does not correctly remove the row or cell
           Product: POI
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: SS Common
          Assignee: dev@poi.apache.org
          Reporter: javenon...@gmail.com

Sheet[1] and Row[2] interfaces expose an iterator interface that has a remove
method. This allows sheets to be removed from the underlying data structure
(TreeMap.values() -> Collection view of TreeMap's values), but doesn't do the
rest of the cleanup that is done in removeRow(Row)[3] or removeCell(Cell)[4].
If I understand the behavior of a Collection *view* correctly, this would
remove the row/cell from the TreeMap without cleaning up the rest of the data
structures.

The rowIterator and cellIterator should explicitly disallow the remove method
unless the method correctly handles the rest of the cleanup without causing a
ConcurrentModificationException.

Perhaps this would be a good usage for Collections.unmodifiableMap or
Collections.unmodifiableList[5]. Otherwise, a custom iterator could be written
like was done for XSSFWorkbook.iterator[6]

[1] XSSFSheet.iterator
https://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?revision=1702802&view=markup#l1780
[2] XSSFRow.iterator
https://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java?revision=1649107&view=markup#l95
[3] XSSFSheet.removeRow
https://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?revision=1702802&view=markup#l1689
[4] XSSFRow.removeCell
https://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java?revision=1649107&view=markup#l406
[5] Collections.unmodifiableMap
https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html
[6] XSSFWorkbook.SheetIterator
https://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java?revision=1703573&view=markup#l1058

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@poi.apache.org
For additional commands, e-mail: dev-h...@poi.apache.org

Reply via email to