diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java index 41038114f..0f2179a9d 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java @@ -79,14 +79,13 @@ public final class XSSFChart extends POIXMLDocumentPart implements Chart, ChartA */ private CTChart chart; - List axis; + List axis = new ArrayList(); /** * Create a new SpreadsheetML chart */ protected XSSFChart() { super(); - axis = new ArrayList(); createChart(); } @@ -227,13 +226,13 @@ public final class XSSFChart extends POIXMLDocumentPart implements Chart, ChartA return categoryAxis; } - public List getAxis() { - if (axis.isEmpty() && hasAxis()) { - parseAxis(); - } - return axis; - } - + public List getAxis() { + if (axis.isEmpty() && hasAxis()) { + parseAxis(); + } + return axis; + } + public XSSFManualLayout getManualLayout() { return new XSSFManualLayout(this); } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFChartAxis.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFChartAxis.java index 0188c7155..f1351f186 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFChartAxis.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFChartAxis.java @@ -17,9 +17,14 @@ package org.apache.poi.xssf.usermodel.charts; +import java.util.List; + import junit.framework.TestCase; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.charts.*; +import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.usermodel.*; public final class TestXSSFChartAxis extends TestCase { @@ -111,4 +116,21 @@ public final class TestXSSFChartAxis extends TestCase { axis.setMinorTickMark(AxisTickMark.CROSS); assertEquals(AxisTickMark.CROSS, axis.getMinorTickMark()); } + + public void testGetChartAxisBug57362() { + //Load existing excel with some chart on it having primary and secondary axis. + final Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("57362.xlsx"); + final Sheet sh = workbook.getSheetAt(0); + final XSSFSheet xsh = (XSSFSheet) sh; + final XSSFDrawing drawing = xsh.createDrawingPatriarch(); + final XSSFChart chart = drawing.getCharts().get(0); + + final List axisList = chart.getAxis(); + + assertEquals(4, axisList.size()); + assertNotNull(axisList.get(0)); + assertNotNull(axisList.get(1)); + assertNotNull(axisList.get(2)); + assertNotNull(axisList.get(3)); + } } diff --git a/test-data/spreadsheet/57362.xlsx b/test-data/spreadsheet/57362.xlsx new file mode 100644 index 000000000..ec2be3823 Binary files /dev/null and b/test-data/spreadsheet/57362.xlsx differ