This is an automated email from the ASF dual-hosted git repository.
fanningpj pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/poi.git
The following commit(s) were added to refs/heads/trunk by this push:
new 659dcb5dea try to make lists returned unmodifiable to avoid external
manipulation of inner data (#863)
659dcb5dea is described below
commit 659dcb5dea21ece26157e6744e38b316f0b6ffb3
Author: PJ Fanning <[email protected]>
AuthorDate: Fri Jul 25 14:43:52 2025 +0100
try to make lists returned unmodifiable to avoid external manipulation of
inner data (#863)
* try to make lists returned unmodifiable to avoid external manipulation of
inner data
* ExternalLinksTable list needs to be mutable
* pivot tables need to be modifiable
* refactor
* more
* test issue
---
poi-ooxml/build.gradle | 6 +++
.../apache/poi/xddf/usermodel/chart/XDDFChart.java | 2 +-
.../poi/xddf/usermodel/text/XDDFTextParagraph.java | 2 +-
.../org/apache/poi/xdgf/usermodel/XDGFShape.java | 3 +-
.../xssf/usermodel/BaseXSSFEvaluationWorkbook.java | 8 ++--
.../xssf/usermodel/BaseXSSFFormulaEvaluator.java | 2 +-
.../org/apache/poi/xssf/usermodel/XSSFSheet.java | 7 +--
.../poi/xssf/usermodel/XSSFTextParagraph.java | 3 +-
.../apache/poi/xssf/usermodel/XSSFWorkbook.java | 55 ++++++++++++++++++----
.../usermodel/XWPFAbstractFootnoteEndnote.java | 9 ++--
.../apache/poi/xwpf/usermodel/XWPFComments.java | 2 +-
.../poi/xwpf/usermodel/XWPFHeaderFooter.java | 2 +-
.../apache/poi/xwpf/usermodel/XWPFTableRow.java | 3 +-
.../poi/xssf/model/TestExternalLinksTable.java | 24 +++++-----
.../poi/xssf/usermodel/TestXSSFPictureData.java | 2 +-
.../poi/xssf/usermodel/TestXSSFWorkbook.java | 2 +-
16 files changed, 87 insertions(+), 45 deletions(-)
diff --git a/poi-ooxml/build.gradle b/poi-ooxml/build.gradle
index 8a9309799b..c2ef234d37 100644
--- a/poi-ooxml/build.gradle
+++ b/poi-ooxml/build.gradle
@@ -58,6 +58,12 @@ dependencies {
api project(':poi-ooxml-full')
api project(path: ':poi-ooxml-full', configuration: 'archives')
+ // Can be very useful in local testing to comment out the 2 poi-ooxml-full
lines above
+ // and uncomment the line below to use a pre-built version of
poi-ooxml-full.
+ // Try to use the last release version of poi-ooxml-full. You might be
unlucky if
+ // recent unreleased changes in poi-ooxml-full are needed.
+ // api "org.apache.poi:poi-ooxml-full:5.4.1"
+
api "org.apache.xmlbeans:xmlbeans:${xmlbeansVersion}"
api "org.apache.commons:commons-compress:${commonsCompressVersion}"
api "commons-io:commons-io:${commonsIoVersion}"
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java
b/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java
index bfbb775296..4bfb948589 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java
@@ -688,7 +688,7 @@ public abstract class XDDFChart extends POIXMLDocumentPart
implements TextContai
if (axes.isEmpty() && hasAxes()) {
parseAxes();
}
- return axes;
+ return Collections.unmodifiableList(axes);
}
private boolean hasAxes() {
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java
b/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java
index 2fad9ddbbe..9f8b581c80 100644
---
a/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java
+++
b/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java
@@ -113,7 +113,7 @@ public class XDDFTextParagraph implements
Iterable<XDDFTextRun> {
}
public List<XDDFTextRun> getTextRuns() {
- return _runs;
+ return Collections.unmodifiableList(_runs);
}
@Override
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFShape.java
b/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFShape.java
index 25b3af8f93..02f05ad1c5 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFShape.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFShape.java
@@ -27,6 +27,7 @@ import java.awt.geom.Path2D;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
@@ -307,7 +308,7 @@ public class XDGFShape extends XDGFSheet {
*/
// -> May be null
public List<XDGFShape> getShapes() {
- return _shapes;
+ return _shapes == null ? null : Collections.unmodifiableList(_shapes);
}
// unique to this shape on the page?
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
index 206ed84e49..c4a4673571 100644
---
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
+++
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
@@ -109,7 +109,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements
FormulaRenderingWork
} catch (NumberFormatException e) {}
// Look up an External Link Table for this name
- List<ExternalLinksTable> tables = _uBook.getExternalLinksTable();
+ List<ExternalLinksTable> tables = _uBook.getExternalLinksTables();
int index = findExternalLinkIndex(bookName, tables);
if (index != -1) return index;
@@ -126,7 +126,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements
FormulaRenderingWork
// So, add the missing reference and return
// Note - this is really rather nasty...
ExternalLinksTable fakeLinkTable = new
FakeExternalLinksTable(relBookName);
- tables.add(fakeLinkTable);
+ _uBook.addExternalLinksTable(fakeLinkTable);
return tables.size(); // 1 based results, 0 = current workbook
}
@@ -193,7 +193,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements
FormulaRenderingWork
if (externalWorkbookNumber > 0) {
// External reference - reference is 1 based, link table is 0 based
int linkNumber = externalWorkbookNumber - 1;
- ExternalLinksTable linkTable =
_uBook.getExternalLinksTable().get(linkNumber);
+ ExternalLinksTable linkTable =
_uBook.getExternalLinksTable(linkNumber);
for (org.apache.poi.ss.usermodel.Name name :
linkTable.getDefinedNames()) {
if (name.getNameName().equals(nameName)) {
@@ -300,7 +300,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements
FormulaRenderingWork
if (externalWorkbookNumber > 0) {
// External reference - reference is 1 based, link table is 0 based
int linkNumber = externalWorkbookNumber - 1;
- ExternalLinksTable linkTable =
_uBook.getExternalLinksTable().get(linkNumber);
+ ExternalLinksTable linkTable =
_uBook.getExternalLinksTable(linkNumber);
workbookName = linkTable.getLinkedFileName();
} else {
// Internal reference
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFFormulaEvaluator.java
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFFormulaEvaluator.java
index 3145e3f43c..b5674ada8e 100644
---
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFFormulaEvaluator.java
+++
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFFormulaEvaluator.java
@@ -128,7 +128,7 @@ public abstract class BaseXSSFFormulaEvaluator extends
BaseFormulaEvaluator {
XSSFWorkbook xssfWorkbook = xssfCell.getSheet().getWorkbook();
XSSFWorkbook externalWorkbook = (XSSFWorkbook)
xssfWorkbook.getCreationHelper()
.getReferencedWorkbooks().get(externalSheet.getWorkbookName());
- ExternalLinksTable externalLinksTable =
xssfWorkbook.getExternalLinksTable().get(area3DPxg.getExternalWorkbookNumber()
- 1);
+ ExternalLinksTable externalLinksTable =
xssfWorkbook.getExternalLinksTable(area3DPxg.getExternalWorkbookNumber() - 1);
if (externalWorkbook != null && externalLinksTable != null) {
int firstSheet =
externalWorkbook.getSheetIndex(area3DPxg.getSheetName());
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
index 5c67853c10..59cf488993 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
@@ -172,7 +172,7 @@ public class XSSFSheet extends POIXMLDocumentPart
implements Sheet, OoxmlSheetEx
tables.put( rp.getRelationship().getId(), (XSSFTable)p );
}
if(p instanceof XSSFPivotTable) {
- getWorkbook().getPivotTables().add((XSSFPivotTable) p);
+ getWorkbook().addPivotTable((XSSFPivotTable) p);
}
}
@@ -4705,13 +4705,12 @@ public class XSSFSheet extends POIXMLDocumentPart
implements Sheet, OoxmlSheetEx
@Beta
private XSSFPivotTable createPivotTable() {
XSSFWorkbook wb = getWorkbook();
- List<XSSFPivotTable> pivotTables = wb.getPivotTables();
int tableId = getWorkbook().getPivotTables().size()+1;
//Create relationship between pivotTable and the worksheet
XSSFPivotTable pivotTable = (XSSFPivotTable)
createRelationship(XSSFRelation.PIVOT_TABLE,
getWorkbook().getXssfFactory(), tableId);
pivotTable.setParentSheet(this);
- pivotTables.add(pivotTable);
+ wb.addPivotTable(pivotTable);
XSSFWorkbook workbook = getWorkbook();
//Create relationship between the pivot cache definition and the
workbook
@@ -4735,8 +4734,6 @@ public class XSSFSheet extends POIXMLDocumentPart
implements Sheet, OoxmlSheetEx
//Set relationships id for pivotCacheDefinition to pivotCacheRecords
pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition().setId(pivotCacheDefinition.getRelationId(pivotCacheRecords));
- wb.setPivotTables(pivotTables);
-
return pivotTable;
}
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java
index db696efbf2..98204e3fee 100644
---
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java
+++
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java
@@ -19,6 +19,7 @@ package org.apache.poi.xssf.usermodel;
import java.awt.Color;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -84,7 +85,7 @@ public class XSSFTextParagraph implements
Iterable<XSSFTextRun>{
}
public List<XSSFTextRun> getTextRuns(){
- return _runs;
+ return Collections.unmodifiableList(_runs);
}
public Iterator<XSSFTextRun> iterator(){
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
index 0c8ddce4a0..f25f276972 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
@@ -205,7 +205,7 @@ public class XSSFWorkbook extends POIXMLDocument implements
Workbook, Date1904Su
/**
* List of all pivot tables in workbook
*/
- private List<XSSFPivotTable> pivotTables;
+ private final List<XSSFPivotTable> pivotTables = new ArrayList<>();
private List<CTPivotCache> pivotCaches;
private final XSSFFactory xssfFactory;
@@ -386,7 +386,6 @@ public class XSSFWorkbook extends POIXMLDocument implements
Workbook, Date1904Su
}
// Create arrays for parts attached to the workbook itself
- pivotTables = new ArrayList<>();
pivotCaches = new ArrayList<>();
}
@@ -524,7 +523,6 @@ public class XSSFWorkbook extends POIXMLDocument implements
Workbook, Date1904Su
namedRanges = new ArrayList<>();
namedRangesByName = new ArrayListValuedHashMap<>();
sheets = new ArrayList<>();
- pivotTables = new ArrayList<>();
externalLinks = new ArrayList<>();
}
@@ -1042,14 +1040,14 @@ public class XSSFWorkbook extends POIXMLDocument
implements Workbook, Date1904Su
*/
@Override
public List<XSSFPictureData> getAllPictures() {
- if(pictures == null){
+ if (pictures == null) {
List<PackagePart> mediaParts =
getPackage().getPartsByName(GET_ALL_PICTURES_PATTERN);
pictures = new ArrayList<>(mediaParts.size());
for(PackagePart part : mediaParts){
pictures.add(new XSSFPictureData(part));
}
}
- return pictures; //YK: should return
Collections.unmodifiableList(pictures);
+ return Collections.unmodifiableList(pictures);
}
/**
@@ -2079,10 +2077,45 @@ public class XSSFWorkbook extends POIXMLDocument
implements Workbook, Date1904Su
* @return the {@code ExternalLinksTable} list, which may be empty
*/
@Internal
+ public List<ExternalLinksTable> getExternalLinksTables() {
+ // needs to be the live copy because unfortunately we don't have APIs
to
+ // add and remove external links (this method is annotated @Internal)
+ return externalLinks;
+ }
+
+ @Deprecated // use getExternalLinksTables() instead
+ @Removal(version = "7.0.0")
+ @Internal
public List<ExternalLinksTable> getExternalLinksTable() {
+ // needs to be the live copy because unfortunately we don't have APIs
to
+ // add and remove external links (this method is annotated @Internal)
return externalLinks;
}
+ /**
+ * Adds an External Links Table to the workbook.
+ *
+ * @param externalLinksTable the External Links Table to add
+ * @since POI 5.4.2
+ */
+ @Internal
+ public void addExternalLinksTable(ExternalLinksTable externalLinksTable) {
+ if (externalLinks == null) {
+ externalLinks = new ArrayList<>();
+ }
+ externalLinks.add(externalLinksTable);
+ }
+
+ /**
+ * @param index the index at which to add the External Links Table
+ * @return externalLinksTable the External Links Table to add
+ * @since POI 5.4.2
+ */
+ @Internal
+ public ExternalLinksTable getExternalLinksTable(int index) {
+ return externalLinks == null ? null : externalLinks.get(index);
+ }
+
/**
*
* @return a collection of custom XML mappings defined in this workbook
@@ -2125,7 +2158,7 @@ public class XSSFWorkbook extends POIXMLDocument
implements Workbook, Date1904Su
POIXMLDocumentPart.RelationPart rp =
this.createRelationship(XSSFRelation.EXTERNAL_LINKS, xssfFactory,
externalLinkIdx, false);
ExternalLinksTable linksTable = rp.getDocumentPart();
linksTable.setLinkedFileName(name);
- this.getExternalLinksTable().add(linksTable);
+ this.addExternalLinksTable(linksTable);
CTExternalReference ctExternalReference =
this.getCTWorkbook().addNewExternalReferences().addNewExternalReference();
ctExternalReference.setId(rp.getRelationship().getId());
@@ -2385,7 +2418,7 @@ public class XSSFWorkbook extends POIXMLDocument
implements Workbook, Date1904Su
}
CTPivotCache cache = caches.addNewPivotCache();
- int tableId = getPivotTables().size()+1;
+ final int tableId = pivotTables.size() + 1;
cache.setCacheId(tableId);
cache.setId(rId);
if(pivotCaches == null) {
@@ -2397,12 +2430,14 @@ public class XSSFWorkbook extends POIXMLDocument
implements Workbook, Date1904Su
@Beta
public List<XSSFPivotTable> getPivotTables() {
+ // needs to be the live copy because unfortunately we don't have APIs
to
+ // add and remove external links (this method is annotated @Beta)
return pivotTables;
}
- @Beta
- protected void setPivotTables(List<XSSFPivotTable> pivotTables) {
- this.pivotTables = pivotTables;
+ @Internal
+ public void addPivotTable(XSSFPivotTable pivotTable) {
+ pivotTables.add(pivotTable);
}
public XSSFWorkbookType getWorkbookType() {
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFAbstractFootnoteEndnote.java
b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFAbstractFootnoteEndnote.java
index d924dcfef7..443aa598b9 100644
---
a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFAbstractFootnoteEndnote.java
+++
b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFAbstractFootnoteEndnote.java
@@ -18,6 +18,7 @@ package org.apache.poi.xwpf.usermodel;
import java.math.BigInteger;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Spliterator;
@@ -101,7 +102,7 @@ public abstract class XWPFAbstractFootnoteEndnote
implements Iterable<XWPFParag
*/
@Override
public List<XWPFParagraph> getParagraphs() {
- return paragraphs;
+ return Collections.unmodifiableList(paragraphs);
}
/**
@@ -130,7 +131,7 @@ public abstract class XWPFAbstractFootnoteEndnote
implements Iterable<XWPFParag
*/
@Override
public List<XWPFTable> getTables() {
- return tables;
+ return Collections.unmodifiableList(tables);
}
/**
@@ -138,7 +139,7 @@ public abstract class XWPFAbstractFootnoteEndnote
implements Iterable<XWPFParag
* @return List of pictures
*/
public List<XWPFPictureData> getPictures() {
- return pictures;
+ return Collections.unmodifiableList(pictures);
}
/**
@@ -147,7 +148,7 @@ public abstract class XWPFAbstractFootnoteEndnote
implements Iterable<XWPFParag
*/
@Override
public List<IBodyElement> getBodyElements() {
- return bodyElements;
+ return Collections.unmodifiableList(bodyElements);
}
/**
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFComments.java
b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFComments.java
index 1aff90af29..cb301c226e 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFComments.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFComments.java
@@ -233,7 +233,7 @@ public class XWPFComments extends POIXMLDocumentPart {
* Get the list of {@link XWPFComment} in the Comments part.
*/
public List<XWPFComment> getComments() {
- return comments;
+ return Collections.unmodifiableList(comments);
}
/**
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
index 225a8f496e..6beb0eadf7 100644
---
a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
+++
b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
@@ -210,7 +210,7 @@ public abstract class XWPFHeaderFooter extends
POIXMLDocumentPart implements IBo
* @return a list of {@link XWPFParagraph}
*/
public List<XWPFParagraph> getListParagraph() {
- return paragraphs;
+ return Collections.unmodifiableList(paragraphs);
}
public List<XWPFPictureData> getAllPictures() {
diff --git
a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
index f27df6dc24..4b43c0817c 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
@@ -18,6 +18,7 @@ package org.apache.poi.xwpf.usermodel;
import java.math.BigInteger;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.apache.poi.ooxml.util.POIXMLUnits;
@@ -211,7 +212,7 @@ public class XWPFTableRow {
this.tableCells = cells;
}
- return tableCells;
+ return Collections.unmodifiableList(tableCells);
}
/**
diff --git
a/poi-ooxml/src/test/java/org/apache/poi/xssf/model/TestExternalLinksTable.java
b/poi-ooxml/src/test/java/org/apache/poi/xssf/model/TestExternalLinksTable.java
index 045a03601b..9677cb0a7f 100644
---
a/poi-ooxml/src/test/java/org/apache/poi/xssf/model/TestExternalLinksTable.java
+++
b/poi-ooxml/src/test/java/org/apache/poi/xssf/model/TestExternalLinksTable.java
@@ -32,18 +32,18 @@ public final class TestExternalLinksTable {
@Test
void none() throws IOException {
try (XSSFWorkbook wb =
XSSFTestDataSamples.openSampleWorkbook("SampleSS.xlsx")) {
- assertNotNull(wb.getExternalLinksTable());
- assertEquals(0, wb.getExternalLinksTable().size());
+ assertNotNull(wb.getExternalLinksTables());
+ assertEquals(0, wb.getExternalLinksTables().size());
}
}
@Test
void basicRead() throws IOException {
try (XSSFWorkbook wb =
XSSFTestDataSamples.openSampleWorkbook("ref-56737.xlsx")) {
- assertNotNull(wb.getExternalLinksTable());
- assertEquals(1, wb.getExternalLinksTable().size());
+ assertNotNull(wb.getExternalLinksTables());
+ assertEquals(1, wb.getExternalLinksTables().size());
- ExternalLinksTable links = wb.getExternalLinksTable().get(0);
+ ExternalLinksTable links = wb.getExternalLinksTable(0);
assertEquals(3, links.getSheetNames().size());
assertEquals(2, links.getDefinedNames().size());
@@ -70,13 +70,13 @@ public final class TestExternalLinksTable {
@Test
void basicReadWriteRead() throws IOException {
try (XSSFWorkbook wb =
XSSFTestDataSamples.openSampleWorkbook("ref-56737.xlsx")) {
- Name name =
wb.getExternalLinksTable().get(0).getDefinedNames().get(1);
+ Name name = wb.getExternalLinksTable(0).getDefinedNames().get(1);
name.setNameName("Testing");
name.setRefersToFormula("$A$1");
XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb);
- assertEquals(1, wbBack.getExternalLinksTable().size());
- ExternalLinksTable links = wbBack.getExternalLinksTable().get(0);
+ assertEquals(1, wbBack.getExternalLinksTables().size());
+ ExternalLinksTable links = wbBack.getExternalLinksTable(0);
name = links.getDefinedNames().get(0);
assertEquals("NR_Global_B2", name.getNameName());
@@ -95,11 +95,11 @@ public final class TestExternalLinksTable {
@Test
void readWithReferencesToTwoExternalBooks() throws IOException {
try (XSSFWorkbook wb =
XSSFTestDataSamples.openSampleWorkbook("ref2-56737.xlsx")) {
- assertNotNull(wb.getExternalLinksTable());
- assertEquals(2, wb.getExternalLinksTable().size());
+ assertNotNull(wb.getExternalLinksTables());
+ assertEquals(2, wb.getExternalLinksTables().size());
// Check the first one, links to 56737.xlsx
- ExternalLinksTable links = wb.getExternalLinksTable().get(0);
+ ExternalLinksTable links = wb.getExternalLinksTable(0);
assertEquals("56737.xlsx", links.getLinkedFileName());
assertEquals(3, links.getSheetNames().size());
assertEquals(2, links.getDefinedNames().size());
@@ -122,7 +122,7 @@ public final class TestExternalLinksTable {
// Check the second one, links to 56737.xls, slightly differently
- links = wb.getExternalLinksTable().get(1);
+ links = wb.getExternalLinksTable(1);
assertEquals("56737.xls", links.getLinkedFileName());
assertEquals(2, links.getSheetNames().size());
assertEquals(2, links.getDefinedNames().size());
diff --git
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java
index b42aeba053..fa1cb56136 100644
---
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java
+++
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java
@@ -35,7 +35,7 @@ public final class TestXSSFPictureData {
XSSFWorkbook wb =
XSSFTestDataSamples.openSampleWorkbook("WithDrawing.xlsx");
List<XSSFPictureData> pictures = wb.getAllPictures();
//wb.getAllPictures() should return the same instance across multiple
calls
- assertSame(pictures, wb.getAllPictures());
+ assertEquals(pictures, wb.getAllPictures());
assertEquals(5, pictures.size());
String[] ext = {"jpeg", "emf", "png", "emf", "wmf"};
diff --git
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
index 7926912f6c..19da165b85 100644
---
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
+++
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
@@ -1391,7 +1391,7 @@ public final class TestXSSFWorkbook extends
BaseTestXWorkbook {
try(
XSSFWorkbook workbook2 = new
XSSFWorkbook(bosB.toInputStream())
) {
- CTExternalLink link =
workbook2.getExternalLinksTable().get(0).getCTExternalLink();
+ CTExternalLink link =
workbook2.getExternalLinksTable(0).getCTExternalLink();
CTExternalSheetData sheetData =
link.getExternalBook().getSheetDataSet().getSheetDataArray(0);
assertEquals(Double.valueOf(sheetData.getRowArray(0).getCellArray(0).getV()),
v1);
assertEquals(Double.valueOf(sheetData.getRowArray(0).getCellArray(1).getV()),
v2);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]