Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java Sun 
Nov 26 14:03:01 2017
@@ -26,15 +26,13 @@ import java.util.List;
 
 import javax.xml.namespace.QName;
 
-import org.apache.poi.POIXMLDocumentPart;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.ss.usermodel.Chart;
-import org.apache.poi.ss.usermodel.charts.AxisPosition;
 import org.apache.poi.ss.usermodel.charts.ChartAxis;
 import org.apache.poi.ss.usermodel.charts.ChartAxisFactory;
 import org.apache.poi.ss.usermodel.charts.ChartData;
-import org.apache.poi.util.Internal;
 import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFChart;
 import org.apache.poi.xssf.usermodel.charts.XSSFCategoryAxis;
 import org.apache.poi.xssf.usermodel.charts.XSSFChartAxis;
 import org.apache.poi.xssf.usermodel.charts.XSSFChartDataFactory;
@@ -46,7 +44,6 @@ import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;
 import org.apache.xmlbeans.XmlOptions;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTCatAx;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTChartSpace;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTDateAx;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTPageMargins;
@@ -56,7 +53,6 @@ import org.openxmlformats.schemas.drawin
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTTitle;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTTx;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTValAx;
-import org.openxmlformats.schemas.drawingml.x2006.chart.ChartSpaceDocument;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTRegularTextRun;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTTextField;
@@ -68,139 +64,119 @@ import org.w3c.dom.Text;
 /**
  * Represents a SpreadsheetML Chart
  */
-public final class XSSFChart extends POIXMLDocumentPart implements Chart, 
ChartAxisFactory {
+public final class XSSFChart extends XDDFChart implements Chart, 
ChartAxisFactory {
 
-       /**
-        * Parent graphic frame.
-        */
-       private XSSFGraphicFrame frame;
+    /**
+     * Parent graphic frame.
+     */
+    private XSSFGraphicFrame frame;
 
-       /**
-        * Root element of the SpreadsheetML Chart part
-        */
-       private CTChartSpace chartSpace;
-       /**
-        * The Chart within that
-        */
-       private CTChart chart;
+    @Deprecated
+    @Removal(version="4.2")
+    List<XSSFChartAxis> axis = new ArrayList<>();
 
-       List<XSSFChartAxis> axis = new ArrayList<>();
+    /**
+     * Create a new SpreadsheetML chart
+     */
+    protected XSSFChart() {
+        super();
+        createChart();
+    }
 
-       /**
-        * Create a new SpreadsheetML chart
-        */
-       protected XSSFChart() {
-               super();
-               createChart();
-       }
+    /**
+     * Construct a SpreadsheetML chart from a package part.
+     *
+     * @param part
+     *            the package part holding the chart data, the content type 
must be
+     *            
<code>application/vnd.openxmlformats-officedocument.drawingml.chart+xml</code>
+     *
+     * @since POI 3.14-Beta1
+     */
+    protected XSSFChart(PackagePart part) throws IOException, XmlException {
+        super(part);
+    }
 
-       /**
-        * Construct a SpreadsheetML chart from a package part.
-        *
-        * @param part the package part holding the chart data,
-        * the content type must be 
<code>application/vnd.openxmlformats-officedocument.drawingml.chart+xml</code>
-        * 
-        * @since POI 3.14-Beta1
-        */
-       protected XSSFChart(PackagePart part) throws IOException, XmlException {
-               super(part);
+    /**
+     * Construct a new CTChartSpace bean. By default, it's just an empty 
placeholder for chart objects.
+     */
+    private void createChart() {
+        CTPlotArea plotArea = getCTPlotArea();
 
-               chartSpace = 
ChartSpaceDocument.Factory.parse(part.getInputStream(), 
DEFAULT_XML_OPTIONS).getChartSpace(); 
-               chart = chartSpace.getChart();
-       }
-       
-       /**
-        * Construct a new CTChartSpace bean.
-        * By default, it's just an empty placeholder for chart objects.
-        */
-       private void createChart() {
-               chartSpace = CTChartSpace.Factory.newInstance();
-               chart = chartSpace.addNewChart();
-               CTPlotArea plotArea = chart.addNewPlotArea();
-
-               plotArea.addNewLayout();
-               chart.addNewPlotVisOnly().setVal(true);
-
-               CTPrintSettings printSettings = 
chartSpace.addNewPrintSettings();
-               printSettings.addNewHeaderFooter();
-
-               CTPageMargins pageMargins = printSettings.addNewPageMargins();
-               pageMargins.setB(0.75);
-               pageMargins.setL(0.70);
-               pageMargins.setR(0.70);
-               pageMargins.setT(0.75);
-               pageMargins.setHeader(0.30);
-               pageMargins.setFooter(0.30);
-               printSettings.addNewPageSetup();
-       }
+        plotArea.addNewLayout();
+        chart.addNewPlotVisOnly().setVal(true);
 
-       /**
-        * Return the underlying CTChartSpace bean, the root element of the 
SpreadsheetML Chart part.
-        *
-        * @return the underlying CTChartSpace bean
-        */
-       @Internal
-       public CTChartSpace getCTChartSpace(){
-               return chartSpace;
-       }
+        CTPrintSettings printSettings = chartSpace.addNewPrintSettings();
+        printSettings.addNewHeaderFooter();
 
-       /**
-        * Return the underlying CTChart bean, within the Chart Space
-        *
-        * @return the underlying CTChart bean
-        */
-       @Internal
-       public CTChart getCTChart(){
-               return chart;
-       }
-
-       @Override
-       protected void commit() throws IOException {
-               XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
-
-               /*
-                  Saved chart space must have the following namespaces set:
-                  <c:chartSpace
-                     
xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart";
-                     
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main";
-                     
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships";>
-                */
-               xmlOptions.setSaveSyntheticDocumentElement(new 
QName(CTChartSpace.type.getName().getNamespaceURI(), "chartSpace", "c"));
-
-               PackagePart part = getPackagePart();
-               OutputStream out = part.getOutputStream();
-               chartSpace.save(out, xmlOptions);
-               out.close();
-       }
+        CTPageMargins pageMargins = printSettings.addNewPageMargins();
+        pageMargins.setB(0.75);
+        pageMargins.setL(0.70);
+        pageMargins.setR(0.70);
+        pageMargins.setT(0.75);
+        pageMargins.setHeader(0.30);
+        pageMargins.setFooter(0.30);
+        printSettings.addNewPageSetup();
+    }
 
-       /**
-        * Returns the parent graphic frame.
-        * @return the graphic frame this chart belongs to
-        */
-       public XSSFGraphicFrame getGraphicFrame() {
-               return frame;
-       }
+    @Override
+    protected void commit() throws IOException {
+        XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
+
+        /*
+         * Saved chart space must have the following namespaces set: 
<c:chartSpace
+         * xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart";
+         * xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"; 
xmlns:r=
+         * 
"http://schemas.openxmlformats.org/officeDocument/2006/relationships";>
+         */
+        xmlOptions.setSaveSyntheticDocumentElement(new 
QName(CTChartSpace.type.getName().getNamespaceURI(), "chartSpace", "c"));
+
+        PackagePart part = getPackagePart();
+        try (OutputStream out = part.getOutputStream()) {
+            chartSpace.save(out, xmlOptions);
+        }
+    }
 
-       /**
-        * Sets the parent graphic frame.
-        */
-       protected void setGraphicFrame(XSSFGraphicFrame frame) {
-               this.frame = frame;
-       }
+    /**
+     * Returns the parent graphic frame.
+     *
+     * @return the graphic frame this chart belongs to
+     */
+    public XSSFGraphicFrame getGraphicFrame() {
+        return frame;
+    }
+
+    /**
+     * Sets the parent graphic frame.
+     */
+    protected void setGraphicFrame(XSSFGraphicFrame frame) {
+        this.frame = frame;
+    }
 
+    @Override
+    @Deprecated
+    @Removal(version="4.2")
        public XSSFChartDataFactory getChartDataFactory() {
                return XSSFChartDataFactory.getInstance();
        }
 
+    @Override
+    @Deprecated
+    @Removal(version="4.2")
        public XSSFChart getChartAxisFactory() {
                return this;
        }
 
+    @Override
+    @Deprecated
+    @Removal(version="4.2")
        public void plot(ChartData data, ChartAxis... chartAxis) {
                data.fillChart(this, chartAxis);
        }
 
-       public XSSFValueAxis createValueAxis(AxisPosition pos) {
+    @Override
+    @Deprecated
+    @Removal(version="4.2")
+       public XSSFValueAxis 
createValueAxis(org.apache.poi.ss.usermodel.charts.AxisPosition pos) {
                long id = axis.size() + 1;
                XSSFValueAxis valueAxis = new XSSFValueAxis(this, id, pos);
                if (axis.size() == 1) {
@@ -212,7 +188,10 @@ public final class XSSFChart extends POI
                return valueAxis;
        }
 
-       public XSSFCategoryAxis createCategoryAxis(AxisPosition pos) {
+    @Override
+    @Deprecated
+    @Removal(version="4.2")
+       public XSSFCategoryAxis 
createCategoryAxis(org.apache.poi.ss.usermodel.charts.AxisPosition pos) {
                long id = axis.size() + 1;
                XSSFCategoryAxis categoryAxis = new XSSFCategoryAxis(this, id, 
pos);
                if (axis.size() == 1) {
@@ -224,46 +203,42 @@ public final class XSSFChart extends POI
                return categoryAxis;
        }
 
-       public XSSFDateAxis createDateAxis(AxisPosition pos) {
-           long id = axis.size() + 1;
-           XSSFDateAxis dateAxis = new XSSFDateAxis(this, id, pos);
-           if (axis.size() == 1) {
-               ChartAxis ax = axis.get(0);
-               ax.crossAxis(dateAxis);
-               dateAxis.crossAxis(ax);
-           }
-           axis.add(dateAxis);
-           return dateAxis;
+    @Override
+    @Deprecated
+    @Removal(version="4.2")
+       public XSSFDateAxis 
createDateAxis(org.apache.poi.ss.usermodel.charts.AxisPosition pos) {
+               long id = axis.size() + 1;
+               XSSFDateAxis dateAxis = new XSSFDateAxis(this, id, pos);
+               if (axis.size() == 1) {
+                       ChartAxis ax = axis.get(0);
+                       ax.crossAxis(dateAxis);
+                       dateAxis.crossAxis(ax);
+               }
+               axis.add(dateAxis);
+               return dateAxis;
        }
-       
+
+    /**
+     * @deprecated use {@link getAxes} instead
+     */
+    @Override
+    @Deprecated
+    @Removal(version="4.2")
     public List<? extends XSSFChartAxis> getAxis() {
         if (axis.isEmpty() && hasAxis()) {
             parseAxis();
         }
         return axis;
     }
-       
+
+    @Override
+    @Deprecated
+    @Removal(version="4.2")
        public XSSFManualLayout getManualLayout() {
                return new XSSFManualLayout(this);
        }
 
        /**
-        * @return true if only visible cells will be present on the chart,
-        *         false otherwise
-        */
-       public boolean isPlotOnlyVisibleCells() {
-               return chart.getPlotVisOnly().getVal();
-       }
-
-       /**
-        * @param plotVisOnly a flag specifying if only visible cells should be
-        *        present on the chart
-        */
-       public void setPlotOnlyVisibleCells(boolean plotVisOnly) {
-               chart.getPlotVisOnly().setVal(plotVisOnly);
-       }
-
-       /**
         * Returns the title static text, or null if none is set.
         * Note that a title formula may be set instead.
         * @return static title text, if set
@@ -274,14 +249,14 @@ public final class XSSFChart extends POI
        public XSSFRichTextString getTitle() {
            return getTitleText();
        }
-       
+
        /**
      * Returns the title static text, or null if none is set.
      * Note that a title formula may be set instead.
      * Empty text result is for backward compatibility, and could mean the 
title text is empty or there is a formula instead.
      * Check for a formula first, falling back on text for cleaner logic.
-     * @return static title text if set, 
-     *         null if there is no title, 
+     * @return static title text if set,
+     *         null if there is no title,
      *         empty string if the title text is empty or the title uses a 
formula instead
         */
        public XSSFRichTextString getTitleText() {
@@ -295,8 +270,8 @@ public final class XSSFChart extends POI
                StringBuilder text = new StringBuilder(64);
                XmlObject[] t = title
                        .selectPath("declare namespace 
a='"+XSSFDrawing.NAMESPACE_A+"' .//a:t");
-               for (int m = 0; m < t.length; m++) {
-                       NodeList kids = t[m].getDomNode().getChildNodes();
+               for (XmlObject element : t) {
+                       NodeList kids = element.getDomNode().getChildNodes();
                        final int count = kids.getLength();
                        for (int n = 0; n < count; n++) {
                                Node kid = kids.item(n);
@@ -315,161 +290,169 @@ public final class XSSFChart extends POI
         * @deprecated POI 3.16, use {@link #setTitleText(String)} instead.
         */
     @Deprecated
-    @Removal(version="4.0")
-       public void setTitle(String newTitle) {
-           
-       }
-       
+    @Removal(version = "4.0")
+    public void setTitle(String newTitle) {
+
+    }
+
     /**
      * Sets the title text as a static string.
-     * @param newTitle to use
+     *
+     * @param newTitle
+     *            to use
      */
-       public void setTitleText(String newTitle) {
-               CTTitle ctTitle;
-               if (chart.isSetTitle()) {
-                       ctTitle = chart.getTitle();
-               } else {
-                       ctTitle = chart.addNewTitle();
-               }
+    public void setTitleText(String newTitle) {
+        CTTitle ctTitle;
+        if (chart.isSetTitle()) {
+            ctTitle = chart.getTitle();
+        } else {
+            ctTitle = chart.addNewTitle();
+        }
 
-               CTTx tx;
-               if (ctTitle.isSetTx()) {
-                       tx = ctTitle.getTx();
-               } else {
-                       tx = ctTitle.addNewTx();
-               }
+        CTTx tx;
+        if (ctTitle.isSetTx()) {
+            tx = ctTitle.getTx();
+        } else {
+            tx = ctTitle.addNewTx();
+        }
 
-               if (tx.isSetStrRef()) {
-                       tx.unsetStrRef();
-               }
+        if (tx.isSetStrRef()) {
+            tx.unsetStrRef();
+        }
 
-               CTTextBody rich;
-               if (tx.isSetRich()) {
-                       rich = tx.getRich();
-               } else {
-                       rich = tx.addNewRich();
-                       rich.addNewBodyPr();  // body properties must exist 
(but can be empty)
-               }
+        CTTextBody rich;
+        if (tx.isSetRich()) {
+            rich = tx.getRich();
+        } else {
+            rich = tx.addNewRich();
+            rich.addNewBodyPr(); // body properties must exist (but can be
+                                 // empty)
+        }
 
-               CTTextParagraph para;
-               if (rich.sizeOfPArray() > 0) {
-                       para = rich.getPArray(0);
-               } else {
-                       para = rich.addNewP();
-               }
+        CTTextParagraph para;
+        if (rich.sizeOfPArray() > 0) {
+            para = rich.getPArray(0);
+        } else {
+            para = rich.addNewP();
+        }
 
-               if (para.sizeOfRArray() > 0) {
-                       CTRegularTextRun run = para.getRArray(0);
-                       run.setT(newTitle);
-               } else if (para.sizeOfFldArray() > 0) {
-                       CTTextField fld = para.getFldArray(0);
-                       fld.setT(newTitle);
-               } else {
-                       CTRegularTextRun run = para.addNewR();
-                       run.setT(newTitle);
-               }
-       }
-       
-       /**
-        * Get the chart title formula expression if there is one
-        * @return formula expression or null
-        */
-       public String getTitleFormula() {
-           if(! chart.isSetTitle()) {
-               return null;
-           }
-
-           CTTitle title = chart.getTitle();
-           
-           if (! title.isSetTx()) {
-               return null;
-           }
-           
-           CTTx tx = title.getTx();
-           
-           if (! tx.isSetStrRef()) {
-               return null;
-           }
-           
-           return tx.getStrRef().getF();
-       }
-       
-       /**
-        * Set the formula expression to use for the chart title
-        * @param formula
-        */
-       public void setTitleFormula(String formula) {
-           CTTitle ctTitle;
-           if (chart.isSetTitle()) {
-               ctTitle = chart.getTitle();
-           } else {
-               ctTitle = chart.addNewTitle();
-           }
-
-           CTTx tx;
-           if (ctTitle.isSetTx()) {
-               tx = ctTitle.getTx();
-           } else {
-               tx = ctTitle.addNewTx();
-           }
-
-           if (tx.isSetRich()) {
-               tx.unsetRich();
-           }
-           
-           CTStrRef strRef;
-           if (tx.isSetStrRef()) {
-               strRef = tx.getStrRef();
-           } else {
-               strRef = tx.addNewStrRef();
-           }
-           
-           strRef.setF(formula);
-       }
+        if (para.sizeOfRArray() > 0) {
+            CTRegularTextRun run = para.getRArray(0);
+            run.setT(newTitle);
+        } else if (para.sizeOfFldArray() > 0) {
+            CTTextField fld = para.getFldArray(0);
+            fld.setT(newTitle);
+        } else {
+            CTRegularTextRun run = para.addNewR();
+            run.setT(newTitle);
+        }
+    }
+
+    /**
+     * Get the chart title formula expression if there is one
+     *
+     * @return formula expression or null
+     */
+    public String getTitleFormula() {
+        if (!chart.isSetTitle()) {
+            return null;
+        }
+
+        CTTitle title = chart.getTitle();
+
+        if (!title.isSetTx()) {
+            return null;
+        }
+
+        CTTx tx = title.getTx();
+
+        if (!tx.isSetStrRef()) {
+            return null;
+        }
 
+        return tx.getStrRef().getF();
+    }
+
+    /**
+     * Set the formula expression to use for the chart title
+     *
+     * @param formula
+     */
+    public void setTitleFormula(String formula) {
+        CTTitle ctTitle;
+        if (chart.isSetTitle()) {
+            ctTitle = chart.getTitle();
+        } else {
+            ctTitle = chart.addNewTitle();
+        }
+
+        CTTx tx;
+        if (ctTitle.isSetTx()) {
+            tx = ctTitle.getTx();
+        } else {
+            tx = ctTitle.addNewTx();
+        }
+
+        if (tx.isSetRich()) {
+            tx.unsetRich();
+        }
+
+        CTStrRef strRef;
+        if (tx.isSetStrRef()) {
+            strRef = tx.getStrRef();
+        } else {
+            strRef = tx.addNewStrRef();
+        }
+
+        strRef.setF(formula);
+    }
+
+    @Override
+    @Deprecated
+    @Removal(version="4.2")
        public XSSFChartLegend getOrCreateLegend() {
                return new XSSFChartLegend(this);
        }
 
-       public void deleteLegend() {
-               if (chart.isSetLegend()) {
-                       chart.unsetLegend();
-               }
-       }
-
+       @Deprecated
+       @Removal(version="4.2")
        private boolean hasAxis() {
-               CTPlotArea ctPlotArea = chart.getPlotArea();
-               int totalAxisCount =
-                       ctPlotArea.sizeOfValAxArray()  +
-                       ctPlotArea.sizeOfCatAxArray()  +
-                       ctPlotArea.sizeOfDateAxArray() +
-                       ctPlotArea.sizeOfSerAxArray();
-               return totalAxisCount > 0;
-       }
-
-       private void parseAxis() {
-               // TODO: add other axis types
-               parseCategoryAxis();
-               parseDateAxis();
-               parseValueAxis();
-       }
-
-       private void parseCategoryAxis() {
-               for (CTCatAx catAx : chart.getPlotArea().getCatAxArray()) {
-                       axis.add(new XSSFCategoryAxis(this, catAx));
-               }
+        CTPlotArea ctPlotArea = chart.getPlotArea();
+        int totalAxisCount = ctPlotArea.sizeOfValAxArray() + 
ctPlotArea.sizeOfCatAxArray() + ctPlotArea.sizeOfDateAxArray() + 
ctPlotArea.sizeOfSerAxArray();
+        return totalAxisCount > 0;
        }
 
-       private void parseDateAxis() {
-           for (CTDateAx dateAx : chart.getPlotArea().getDateAxArray()) {
-               axis.add(new XSSFDateAxis(this, dateAx));
-           }
-       }
-       
-       private void parseValueAxis() {
-               for (CTValAx valAx : chart.getPlotArea().getValAxArray()) {
-                       axis.add(new XSSFValueAxis(this, valAx));
-               }
-       }
+    @Deprecated
+    @Removal(version="4.2")
+    private void parseAxis() {
+        // TODO: add other axis types
+        parseCategoryAxis();
+        parseDateAxis();
+        parseValueAxis();
+    }
+
+    @Deprecated
+    @Removal(version="4.2")
+    private void parseCategoryAxis() {
+        for (CTCatAx catAx : chart.getPlotArea().getCatAxArray()) {
+            axis.add(new XSSFCategoryAxis(this, catAx));
+        }
+    }
+
+    @Deprecated
+    @Removal(version="4.2")
+    private void parseDateAxis() {
+        for (CTDateAx dateAx : chart.getPlotArea().getDateAxArray()) {
+            axis.add(new XSSFDateAxis(this, dateAx));
+        }
+    }
+
+    @Deprecated
+    @Removal(version="4.2")
+    private void parseValueAxis() {
+        for (CTValAx valAx : chart.getPlotArea().getValAxArray()) {
+            axis.add(new XSSFValueAxis(this, valAx));
+        }
+    }
 
 }

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java Sun 
Nov 26 14:03:01 2017
@@ -239,7 +239,12 @@ public final class XSSFDrawing extends P
         return chart;
     }
 
-       @Override
+       /**
+        * Creates a chart.
+        * @param anchor the client anchor describes how this chart is attached 
to
+        *               the sheet.
+        * @return the newly created chart
+        */
     public XSSFChart createChart(ClientAnchor anchor) {
                return createChart((XSSFClientAnchor)anchor);
        }
@@ -389,7 +394,7 @@ public final class XSSFDrawing extends P
 
         /*
          * The shape id of the ole object seems to be a legacy shape id.
-         * 
+         *
          * see 5.3.2.1 legacyDrawing (Legacy Drawing Object):
          * Legacy Shape ID that is unique throughout the entire document.
          * Legacy shape IDs should be assigned based on which portion of the 
document the
@@ -439,7 +444,7 @@ public final class XSSFDrawing extends P
         cur1.insertAttributeWithValue("moveWithCells", "1");
 
         CTTwoCellAnchor ctAnchor = 
createTwoCellAnchor((XSSFClientAnchor)anchor);
-        
+
         XmlCursor cur2 = ctAnchor.newCursor();
         cur2.copyXmlContents(cur1);
         cur2.dispose();
@@ -456,12 +461,12 @@ public final class XSSFDrawing extends P
         CTShape ctShape = ctAnchor.addNewSp();
         ctShape.set(XSSFObjectData.prototype());
         ctShape.getSpPr().setXfrm(createXfrm((XSSFClientAnchor)anchor));
-        
+
         // workaround for not having the vmlDrawing filled
         CTBlipFillProperties blipFill = ctShape.getSpPr().addNewBlipFill();
         blipFill.addNewBlip().setEmbed(imgDrawPR.getId());
         blipFill.addNewStretch().addNewFillRect();
-        
+
         CTNonVisualDrawingProps cNvPr = ctShape.getNvSpPr().getCNvPr();
         cNvPr.setId(shapeId);
         cNvPr.setName("Object "+shapeId);

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/AbstractXSSFChartSeries.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/AbstractXSSFChartSeries.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/AbstractXSSFChartSeries.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/AbstractXSSFChartSeries.java
 Sun Nov 26 14:03:01 2017
@@ -20,27 +20,36 @@ package org.apache.poi.xssf.usermodel.ch
 import org.apache.poi.ss.usermodel.charts.ChartSeries;
 import org.apache.poi.ss.usermodel.charts.TitleType;
 import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFChartData;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerTx;
 
 /**
  * Base of all XSSF Chart Series
+ *
+ * @deprecated use {@link XDDFChartData.Series} instead
  */
+@Deprecated
+@Removal(version="4.2")
 public abstract class AbstractXSSFChartSeries implements ChartSeries {
 
     private String titleValue;
     private CellReference titleRef;
     private TitleType titleType;
 
+    @Override
     public void setTitle(CellReference titleReference) {
         titleType = TitleType.CELL_REFERENCE;
         titleRef = titleReference;
     }
 
+    @Override
     public void setTitle(String title) {
         titleType = TitleType.STRING;
         titleValue = title;
     }
 
+    @Override
     public CellReference getTitleCellReference() {
         if (TitleType.CELL_REFERENCE.equals(titleType)) {
             return titleRef;
@@ -48,6 +57,7 @@ public abstract class AbstractXSSFChartS
         throw new IllegalStateException("Title type is not CellReference.");
     }
 
+    @Override
     public String getTitleString() {
         if (TitleType.STRING.equals(titleType)) {
             return titleValue;
@@ -55,6 +65,7 @@ public abstract class AbstractXSSFChartS
         throw new IllegalStateException("Title type is not String.");
     }
 
+    @Override
     public TitleType getTitleType() {
         return titleType;
     }

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFCategoryAxis.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFCategoryAxis.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFCategoryAxis.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFCategoryAxis.java
 Sun Nov 26 14:03:01 2017
@@ -22,8 +22,9 @@ import org.apache.poi.ss.usermodel.chart
 import org.apache.poi.ss.usermodel.charts.AxisPosition;
 import org.apache.poi.ss.usermodel.charts.AxisTickMark;
 import org.apache.poi.ss.usermodel.charts.ChartAxis;
-import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFCategoryAxis;
 import org.apache.poi.xssf.usermodel.XSSFChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxPos;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTBoolean;
@@ -39,9 +40,10 @@ import org.openxmlformats.schemas.drawin
 /**
  * Category axis type.
  *
- * @author Martin Andersson
+ * @deprecated use {@link XDDFCategoryAxis} instead
  */
-@Beta
+@Deprecated
+@Removal(version="4.2")
 public class XSSFCategoryAxis extends XSSFChartAxis {
 
        private CTCatAx ctCatAx;
@@ -66,7 +68,7 @@ public class XSSFCategoryAxis extends XS
        public CTShapeProperties getLine() {
            return ctCatAx.getSpPr();
        }
-       
+
        @Override
        protected CTAxPos getCTAxPos() {
                return ctCatAx.getAxPos();
@@ -110,7 +112,7 @@ public class XSSFCategoryAxis extends XS
        public CTChartLines getMajorGridLines() {
            return ctCatAx.getMajorGridlines();
        }
-       
+
        @Override
        public void crossAxis(ChartAxis axis) {
                ctCatAx.getCrossAx().setVal(axis.getId());

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartAxis.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartAxis.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartAxis.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartAxis.java
 Sun Nov 26 14:03:01 2017
@@ -22,8 +22,9 @@ import org.apache.poi.ss.usermodel.chart
 import org.apache.poi.ss.usermodel.charts.AxisPosition;
 import org.apache.poi.ss.usermodel.charts.AxisTickMark;
 import org.apache.poi.ss.usermodel.charts.ChartAxis;
-import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFChartAxis;
 import org.apache.poi.xssf.usermodel.XSSFChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxPos;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTBoolean;
@@ -43,9 +44,10 @@ import org.openxmlformats.schemas.drawin
 /**
  * Base class for all axis types.
  *
- * @author Roman Kashitsyn
+ * @deprecated use {@link XDDFChartAxis} instead
  */
-@Beta
+@Deprecated
+@Removal(version="4.2")
 public abstract class XSSFChartAxis implements ChartAxis {
 
        protected XSSFChart chart;
@@ -221,7 +223,7 @@ public abstract class XSSFChartAxis impl
        protected abstract CTTickMark getMinorCTTickMark();
        @Internal public abstract CTChartLines getMajorGridLines();
        @Internal public abstract CTShapeProperties getLine();
-       
+
        private static STOrientation.Enum fromAxisOrientation(AxisOrientation 
orientation) {
                switch (orientation) {
                        case MIN_MAX: return STOrientation.MIN_MAX;

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartDataFactory.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartDataFactory.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartDataFactory.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartDataFactory.java
 Sun Nov 26 14:03:01 2017
@@ -17,13 +17,14 @@
 
 package org.apache.poi.xssf.usermodel.charts;
 
-import org.apache.poi.ss.usermodel.charts.*;
-import org.apache.poi.util.Beta;
+import org.apache.poi.ss.usermodel.charts.ChartDataFactory;
+import org.apache.poi.util.Removal;
 
 /**
- * @author Roman Kashitsyn
+ * @deprecated
  */
-@Beta
+@Deprecated
+@Removal(version="4.2")
 public class XSSFChartDataFactory implements ChartDataFactory {
 
        private static XSSFChartDataFactory instance;
@@ -35,14 +36,16 @@ public class XSSFChartDataFactory implem
        /**
         * @return new scatter charts data instance
         */
-       public XSSFScatterChartData createScatterChartData() {
+       @Override
+    public XSSFScatterChartData createScatterChartData() {
                return new XSSFScatterChartData();
        }
 
        /**
         * @return new line charts data instance
         */
-       public XSSFLineChartData createLineChartData() {
+       @Override
+    public XSSFLineChartData createLineChartData() {
                return new XSSFLineChartData();
        }
 

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartLegend.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartLegend.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartLegend.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartLegend.java
 Sun Nov 26 14:03:01 2017
@@ -17,10 +17,11 @@
 
 package org.apache.poi.xssf.usermodel.charts;
 
-import org.apache.poi.util.Beta;
-import org.apache.poi.util.Internal;
 import org.apache.poi.ss.usermodel.charts.ChartLegend;
 import org.apache.poi.ss.usermodel.charts.LegendPosition;
+import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFChartLegend;
 import org.apache.poi.xssf.usermodel.XSSFChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTLegend;
@@ -29,10 +30,10 @@ import org.openxmlformats.schemas.drawin
 
 /**
  * Represents a SpreadsheetML chart legend
- * @author Roman Kashitsyn
- * @author Martin Andersson
+ * @deprecated use {@link XDDFChartLegend} instead
  */
-@Beta
+@Deprecated
+@Removal(version="4.2")
 public final class XSSFChartLegend implements ChartLegend {
 
        /**
@@ -72,7 +73,8 @@ public final class XSSFChartLegend imple
                return legend;
        }
 
-       public void setPosition(LegendPosition position) {
+       @Override
+    public void setPosition(LegendPosition position) {
                if (!legend.isSetLegendPos()) {
                        legend.addNewLegendPos();
                }
@@ -82,7 +84,8 @@ public final class XSSFChartLegend imple
        /*
         * According to ECMA-376 default position is RIGHT.
         */
-       public LegendPosition getPosition() {
+       @Override
+    public LegendPosition getPosition() {
                if (legend.isSetLegendPos()) {
                        return toLegendPosition(legend.getLegendPos());
                } else {
@@ -90,18 +93,21 @@ public final class XSSFChartLegend imple
                }
        }
 
-       public XSSFManualLayout getManualLayout() {
+       @Override
+    public XSSFManualLayout getManualLayout() {
                if (!legend.isSetLayout()) {
                        legend.addNewLayout();
                }
                return new XSSFManualLayout(legend.getLayout());
        }
 
-       public boolean isOverlay() {
+       @Override
+    public boolean isOverlay() {
                return legend.getOverlay().getVal();
        }
 
-       public void setOverlay(boolean value) {
+       @Override
+    public void setOverlay(boolean value) {
                legend.getOverlay().setVal(value);
        }
 

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartUtil.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartUtil.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartUtil.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartUtil.java
 Sun Nov 26 14:03:01 2017
@@ -20,13 +20,23 @@
 package org.apache.poi.xssf.usermodel.charts;
 
 import org.apache.poi.ss.usermodel.charts.ChartDataSource;
-import org.openxmlformats.schemas.drawingml.x2006.chart.*;
+import org.apache.poi.util.Removal;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumData;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumRef;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumVal;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrData;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrRef;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrVal;
 
 /**
  * Package private class with utility methods.
  *
- * @author Roman Kashitsyn
+ * @deprecated
  */
+@Deprecated
+@Removal(version="4.2")
 class XSSFChartUtil {
 
     private XSSFChartUtil() {}

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFDateAxis.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFDateAxis.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFDateAxis.java 
(original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFDateAxis.java 
Sun Nov 26 14:03:01 2017
@@ -22,8 +22,9 @@ import org.apache.poi.ss.usermodel.chart
 import org.apache.poi.ss.usermodel.charts.AxisPosition;
 import org.apache.poi.ss.usermodel.charts.AxisTickMark;
 import org.apache.poi.ss.usermodel.charts.ChartAxis;
-import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFDateAxis;
 import org.apache.poi.xssf.usermodel.XSSFChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxPos;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTBoolean;
@@ -38,8 +39,11 @@ import org.openxmlformats.schemas.drawin
 
 /**
  * Date axis type.  Currently only implements the same values as {@link 
XSSFCategoryAxis}, since the two are nearly identical.
+ *
+ * @deprecated use {@link XDDFDateAxis} instead
  */
-@Beta
+@Deprecated
+@Removal(version="4.2")
 public class XSSFDateAxis extends XSSFChartAxis {
 
        private CTDateAx ctDateAx;
@@ -108,7 +112,7 @@ public class XSSFDateAxis extends XSSFCh
        public CTChartLines getMajorGridLines() {
            return ctDateAx.getMajorGridlines();
        }
-       
+
        @Override
        public void crossAxis(ChartAxis axis) {
                ctDateAx.getCrossAx().setVal(axis.getId());

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFLineChartData.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFLineChartData.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFLineChartData.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFLineChartData.java
 Sun Nov 26 14:03:01 2017
@@ -25,7 +25,8 @@ import org.apache.poi.ss.usermodel.chart
 import org.apache.poi.ss.usermodel.charts.ChartDataSource;
 import org.apache.poi.ss.usermodel.charts.LineChartData;
 import org.apache.poi.ss.usermodel.charts.LineChartSeries;
-import org.apache.poi.util.Beta;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFLineChartData;
 import org.apache.poi.xssf.usermodel.XSSFChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTLineChart;
@@ -36,8 +37,11 @@ import org.openxmlformats.schemas.drawin
 
 /**
  * Holds data for a XSSF Line Chart
+ *
+ * @deprecated use {@link XDDFLineChartData} instead
  */
-@Beta
+@Deprecated
+@Removal(version="4.2")
 public class XSSFLineChartData implements LineChartData {
 
     /**
@@ -46,7 +50,7 @@ public class XSSFLineChartData implement
     private List<Series> series;
 
     public XSSFLineChartData() {
-        series = new ArrayList<>();
+        series = new ArrayList<Series>();
     }
 
     static class Series extends AbstractXSSFChartSeries implements 
LineChartSeries {
@@ -64,10 +68,12 @@ public class XSSFLineChartData implement
             this.values = values;
         }
 
+        @Override
         public ChartDataSource<?> getCategoryAxisData() {
             return categories;
         }
 
+        @Override
         public ChartDataSource<? extends Number> getValues() {
             return values;
         }
@@ -91,6 +97,7 @@ public class XSSFLineChartData implement
         }
     }
 
+    @Override
     public LineChartSeries addSeries(ChartDataSource<?> categoryAxisData, 
ChartDataSource<? extends Number> values) {
         if (!values.isNumeric()) {
             throw new IllegalArgumentException("Value data source must be 
numeric.");
@@ -101,10 +108,12 @@ public class XSSFLineChartData implement
         return newSeries;
     }
 
+    @Override
     public List<? extends LineChartSeries> getSeries() {
         return series;
     }
 
+    @Override
     public void fillChart(Chart chart, ChartAxis... axis) {
         if (!(chart instanceof XSSFChart)) {
             throw new IllegalArgumentException("Chart must be instance of 
XSSFChart");

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFManualLayout.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFManualLayout.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFManualLayout.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFManualLayout.java
 Sun Nov 26 14:03:01 2017
@@ -17,25 +17,27 @@
 
 package org.apache.poi.xssf.usermodel.charts;
 
-import org.apache.poi.util.Beta;
-import org.apache.poi.util.Internal;
-import org.apache.poi.ss.usermodel.charts.ManualLayout;
 import org.apache.poi.ss.usermodel.charts.LayoutMode;
 import org.apache.poi.ss.usermodel.charts.LayoutTarget;
+import org.apache.poi.ss.usermodel.charts.ManualLayout;
+import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFManualLayout;
 import org.apache.poi.xssf.usermodel.XSSFChart;
-import org.openxmlformats.schemas.drawingml.x2006.chart.STLayoutTarget;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTLayout;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTManualLayout;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTPlotArea;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTLayoutMode;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTLayoutTarget;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTManualLayout;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTPlotArea;
 import org.openxmlformats.schemas.drawingml.x2006.chart.STLayoutMode;
+import org.openxmlformats.schemas.drawingml.x2006.chart.STLayoutTarget;
 
 /**
  * Represents a SpreadsheetML manual layout.
- * @author Roman Kashitsyn
+ * @deprecated use {@link XDDFManualLayout instead}
  */
-@Beta
+@Deprecated
+@Removal(version="4.2")
 public final class XSSFManualLayout implements ManualLayout {
 
        /**
@@ -75,126 +77,144 @@ public final class XSSFManualLayout impl
                return layout;
        }
 
-       public void setWidthRatio(double ratio) {
+       @Override
+    public void setWidthRatio(double ratio) {
                if (!layout.isSetW()) {
                        layout.addNewW();
                }
                layout.getW().setVal(ratio);
        }
 
-       public double getWidthRatio() {
+       @Override
+    public double getWidthRatio() {
                if (!layout.isSetW()) {
                        return 0.0;
                }
                return layout.getW().getVal();
        }
 
-       public void setHeightRatio(double ratio) {
+       @Override
+    public void setHeightRatio(double ratio) {
                if (!layout.isSetH()) {
                        layout.addNewH();
                }
                layout.getH().setVal(ratio);
        }
 
-       public double getHeightRatio() {
+       @Override
+    public double getHeightRatio() {
                if (!layout.isSetH()) {
                        return 0.0;
                }
                return layout.getH().getVal();
        }
 
-       public LayoutTarget getTarget() {
+       @Override
+    public LayoutTarget getTarget() {
                if (!layout.isSetLayoutTarget()) {
                        return defaultLayoutTarget;
                }
                return toLayoutTarget(layout.getLayoutTarget());
        }
 
-       public void setTarget(LayoutTarget target) {
+       @Override
+    public void setTarget(LayoutTarget target) {
                if (!layout.isSetLayoutTarget()) {
                        layout.addNewLayoutTarget();
                }
                layout.getLayoutTarget().setVal(fromLayoutTarget(target));
        }
 
-       public LayoutMode getXMode() {
+       @Override
+    public LayoutMode getXMode() {
                if (!layout.isSetXMode()) {
                        return defaultLayoutMode;
                }
                return toLayoutMode(layout.getXMode());
        }
 
-       public void setXMode(LayoutMode mode) {
+       @Override
+    public void setXMode(LayoutMode mode) {
                if (!layout.isSetXMode()) {
                        layout.addNewXMode();
                }
                layout.getXMode().setVal(fromLayoutMode(mode));
        }
 
-       public LayoutMode getYMode() {
+       @Override
+    public LayoutMode getYMode() {
                if (!layout.isSetYMode()) {
                        return defaultLayoutMode;
                }
                return toLayoutMode(layout.getYMode());
        }
 
-       public void setYMode(LayoutMode mode) {
+       @Override
+    public void setYMode(LayoutMode mode) {
                if (!layout.isSetYMode()) {
                        layout.addNewYMode();
                }
                layout.getYMode().setVal(fromLayoutMode(mode));
        }
 
-       public double getX() {
+       @Override
+    public double getX() {
                if (!layout.isSetX()) {
                        return 0.0;
                }
                return layout.getX().getVal();
        }
 
-       public void setX(double x) {
+       @Override
+    public void setX(double x) {
                if (!layout.isSetX()) {
                        layout.addNewX();
                }
                layout.getX().setVal(x);
        }
 
-       public double getY() {
+       @Override
+    public double getY() {
                if (!layout.isSetY()) {
                        return 0.0;
                }
                return layout.getY().getVal();
        }
 
-       public void setY(double y) {
+       @Override
+    public void setY(double y) {
                if (!layout.isSetY()) {
                        layout.addNewY();
                }
                layout.getY().setVal(y);
        }
 
-       public LayoutMode getWidthMode() {
+       @Override
+    public LayoutMode getWidthMode() {
                if (!layout.isSetWMode()) {
                        return defaultLayoutMode;
                }
                return toLayoutMode(layout.getWMode());
        }
 
-       public void setWidthMode(LayoutMode mode) {
+       @Override
+    public void setWidthMode(LayoutMode mode) {
                if (!layout.isSetWMode()) {
                        layout.addNewWMode();
                }
                layout.getWMode().setVal(fromLayoutMode(mode));
        }
 
-       public LayoutMode getHeightMode() {
+       @Override
+    public LayoutMode getHeightMode() {
                if (!layout.isSetHMode()) {
                        return defaultLayoutMode;
                }
                return toLayoutMode(layout.getHMode());
        }
 
-       public void setHeightMode(LayoutMode mode) {
+       @Override
+    public void setHeightMode(LayoutMode mode) {
                if (!layout.isSetHMode()) {
                        layout.addNewHMode();
                }

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFScatterChartData.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFScatterChartData.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFScatterChartData.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFScatterChartData.java
 Sun Nov 26 14:03:01 2017
@@ -25,7 +25,8 @@ import org.apache.poi.ss.usermodel.chart
 import org.apache.poi.ss.usermodel.charts.ChartDataSource;
 import org.apache.poi.ss.usermodel.charts.ScatterChartData;
 import org.apache.poi.ss.usermodel.charts.ScatterChartSeries;
-import org.apache.poi.util.Beta;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFScatterChartData;
 import org.apache.poi.xssf.usermodel.XSSFChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource;
@@ -38,8 +39,11 @@ import org.openxmlformats.schemas.drawin
 
 /**
  * Represents DrawingML scatter charts.
+ *
+ * @deprecated use {@link XDDFScatterChartData} instead
  */
-@Beta
+@Deprecated
+@Removal(version="4.2")
 public class XSSFScatterChartData implements ScatterChartData {
 
     /**
@@ -48,7 +52,7 @@ public class XSSFScatterChartData implem
     private List<Series> series;
 
     public XSSFScatterChartData() {
-        series = new ArrayList<>();
+        series = new ArrayList<Series>();
     }
 
     /**
@@ -74,6 +78,7 @@ public class XSSFScatterChartData implem
          * Returns data source used for X axis values.
          * @return data source used for X axis values
          */
+        @Override
         public ChartDataSource<?> getXValues() {
             return xs;
         }
@@ -82,6 +87,7 @@ public class XSSFScatterChartData implem
          * Returns data source used for Y axis values.
          * @return data source used for Y axis values
          */
+        @Override
         public ChartDataSource<? extends Number> getYValues() {
             return ys;
         }
@@ -103,6 +109,7 @@ public class XSSFScatterChartData implem
         }
     }
 
+    @Override
     public ScatterChartSeries addSerie(ChartDataSource<?> xs,
                                       ChartDataSource<? extends Number> ys) {
         if (!ys.isNumeric()) {
@@ -114,6 +121,7 @@ public class XSSFScatterChartData implem
         return newSerie;
     }
 
+    @Override
     public void fillChart(Chart chart, ChartAxis... axis) {
         if (!(chart instanceof XSSFChart)) {
             throw new IllegalArgumentException("Chart must be instance of 
XSSFChart");
@@ -133,6 +141,7 @@ public class XSSFScatterChartData implem
         }
     }
 
+    @Override
     public List<? extends Series> getSeries() {
         return series;
     }

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFValueAxis.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFValueAxis.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFValueAxis.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFValueAxis.java
 Sun Nov 26 14:03:01 2017
@@ -24,8 +24,9 @@ import org.apache.poi.ss.usermodel.chart
 import org.apache.poi.ss.usermodel.charts.AxisTickMark;
 import org.apache.poi.ss.usermodel.charts.ChartAxis;
 import org.apache.poi.ss.usermodel.charts.ValueAxis;
-import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFValueAxis;
 import org.apache.poi.xssf.usermodel.XSSFChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxPos;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTBoolean;
@@ -42,9 +43,10 @@ import org.openxmlformats.schemas.drawin
 /**
  * Value axis type.
  *
- * @author Roman Kashitsyn
+ * @deprecated use {@link XDDFValueAxis} instead
  */
-@Beta
+@Deprecated
+@Removal(version="4.2")
 public class XSSFValueAxis extends XSSFChartAxis implements ValueAxis {
 
        private CTValAx ctValAx;

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFChart.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFChart.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFChart.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFChart.java Sun 
Nov 26 14:03:01 2017
@@ -22,39 +22,23 @@ import static org.apache.poi.POIXMLTypeL
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.util.Arrays;
 
 import javax.xml.namespace.QName;
 
-import org.apache.poi.POIXMLDocumentPart;
 import org.apache.poi.POIXMLException;
-import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.openxml4j.opc.PackagePart;
-import org.apache.poi.openxml4j.opc.PackageRelationship;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.IOUtils;
-import org.apache.poi.util.Internal;
+import org.apache.poi.xddf.usermodel.chart.XDDFChart;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlOptions;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTChartSpace;
-import org.openxmlformats.schemas.drawingml.x2006.chart.ChartSpaceDocument;
 
 /**
  * Represents a Chart in a .docx file
  */
 @Beta
-public class XWPFChart extends POIXMLDocumentPart {
-
-    /**
-     * Root element of the Chart part
-     */
-    private final CTChartSpace chartSpace;
-
-    /**
-     * The Chart within that
-     */
-    private final CTChart chart;
+public class XWPFChart extends XDDFChart {
 
     // lazy initialization
     private Long checksum;
@@ -64,39 +48,11 @@ public class XWPFChart extends POIXMLDoc
      *
      * @param part the package part holding the chart data,
      * the content type must be 
<code>application/vnd.openxmlformats-officedocument.drawingml.chart+xml</code>
-     * 
+     *
      * @since POI 4.0.0
      */
     protected XWPFChart(PackagePart part) throws IOException, XmlException {
         super(part);
-
-        chartSpace = ChartSpaceDocument.Factory.parse(part.getInputStream(), 
DEFAULT_XML_OPTIONS).getChartSpace(); 
-        chart = chartSpace.getChart();
-    }
-      
-    @Override
-    protected void onDocumentRead() throws IOException {
-        super.onDocumentRead();
-    }
-
-    /**
-     * Return the underlying CTChartSpace bean, the root element of the Chart 
part.
-     *
-     * @return the underlying CTChartSpace bean
-     */
-    @Internal
-    public CTChartSpace getCTChartSpace() {
-        return chartSpace;
-    }
-
-    /**
-     * Return the underlying CTChart bean, within the Chart Space
-     *
-     * @return the underlying CTChart bean
-     */
-    @Internal
-    public CTChart getCTChart() {
-        return chart;
     }
 
     @Override
@@ -108,7 +64,7 @@ public class XWPFChart extends POIXMLDoc
             chartSpace.save(out, xmlOptions);
         }
     }
-    
+
     public Long getChecksum() {
         if (this.checksum == null) {
             InputStream is = null;
@@ -120,7 +76,9 @@ public class XWPFChart extends POIXMLDoc
                 throw new POIXMLException(e);
             } finally {
                 try {
-                    if (is != null) is.close();
+                    if (is != null) {
+                        is.close();
+                    }
                 } catch (IOException e) {
                     throw new POIXMLException(e);
                 }
@@ -157,7 +115,7 @@ public class XWPFChart extends POIXMLDoc
         }
         return false;
     }
-   
+
     @Override
     public int hashCode() {
         return getChecksum().hashCode();

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java 
Sun Nov 26 14:03:01 2017
@@ -63,7 +63,27 @@ import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;
 import org.apache.xmlbeans.XmlOptions;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBody;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTComment;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocument1;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdn;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtBlock;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyles;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CommentsDocument;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.DocumentDocument;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.EndnotesDocument;
+import 
org.openxmlformats.schemas.wordprocessingml.x2006.main.FootnotesDocument;
+import 
org.openxmlformats.schemas.wordprocessingml.x2006.main.NumberingDocument;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STDocProtect;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHdrFtr;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument;
 
 /**
  * <p>High(ish) level class for working with .docx files.</p>
@@ -79,7 +99,7 @@ import org.openxmlformats.schemas.wordpr
  */
 public class XWPFDocument extends POIXMLDocument implements Document, IBody {
     private static final POILogger LOG = 
POILogFactory.getLogger(XWPFDocument.class);
-    
+
     protected List<XWPFFooter> footers = new ArrayList<>();
     protected List<XWPFHeader> headers = new ArrayList<>();
     protected List<XWPFComment> comments = new ArrayList<>();
@@ -186,8 +206,9 @@ public class XWPFDocument extends POIXML
             }
             docCursor.dispose();
             // Sort out headers and footers
-            if (doc.getDocument().getBody().getSectPr() != null)
+            if (doc.getDocument().getBody().getSectPr() != null) {
                 headerFooterPolicy = new XWPFHeaderFooterPolicy(this);
+            }
 
             // Create for each XML-part in the Package a PartClass
             for (RelationPart rp : getRelationParts()) {
@@ -224,7 +245,7 @@ public class XWPFDocument extends POIXML
                 } else if (relation.equals(XWPFRelation.CHART.getRelation())) {
                     //now we can use all methods to modify charts in 
XWPFDocument
                     XWPFChart chartData = (XWPFChart) p;
-                    chartData.onDocumentRead();
+//                    chartData.onDocumentRead(); // ??? there is nothing to 
be done there!!!
                     charts.add(chartData);
                 } else if 
(relation.equals(XWPFRelation.GLOSSARY_DOCUMENT.getRelation())) {
                     // We don't currently process the glossary itself
@@ -380,20 +401,25 @@ public class XWPFDocument extends POIXML
 
     public XWPFHyperlink getHyperlinkByID(String id) {
         for (XWPFHyperlink link : hyperlinks) {
-            if (link.getId().equals(id))
+            if (link.getId().equals(id)) {
                 return link;
+            }
         }
 
         return null;
     }
 
     public XWPFFootnote getFootnoteByID(int id) {
-        if (footnotes == null) return null;
+        if (footnotes == null) {
+            return null;
+        }
         return footnotes.getFootnoteById(id);
     }
 
     public XWPFFootnote getEndnoteByID(int id) {
-        if (endnotes == null) return null;
+        if (endnotes == null) {
+            return null;
+        }
         return endnotes.get(id);
     }
 
@@ -410,8 +436,9 @@ public class XWPFDocument extends POIXML
 
     public XWPFComment getCommentByID(String id) {
         for (XWPFComment comment : comments) {
-            if (comment.getId().equals(id))
+            if (comment.getId().equals(id)) {
                 return comment;
+            }
         }
 
         return null;
@@ -450,7 +477,7 @@ public class XWPFDocument extends POIXML
         }
         return headerFooterPolicy;
     }
-    
+
     /**
      * Create a header of the given type
      *
@@ -471,8 +498,8 @@ public class XWPFDocument extends POIXML
         }
         return hfPolicy.createHeader(STHdrFtr.Enum.forInt(type.toInt()));
     }
-    
-    
+
+
     /**
      * Create a footer of the given type
      *
@@ -619,7 +646,7 @@ public class XWPFDocument extends POIXML
             String uri = CTP.type.getName().getNamespaceURI();
             /*
              * TODO DO not use a coded constant, find the constant in the OOXML
-             * classes instead, as the child of type CT_Paragraph is defined 
in the 
+             * classes instead, as the child of type CT_Paragraph is defined 
in the
              * OOXML schema as 'p'
              */
             String localPart = "p";
@@ -667,8 +694,9 @@ public class XWPFDocument extends POIXML
                 cursor.toCursor(newParaPos);
                 while (cursor.toPrevSibling()) {
                     o = cursor.getObject();
-                    if (o instanceof CTP || o instanceof CTTbl)
+                    if (o instanceof CTP || o instanceof CTTbl) {
                         i++;
+                    }
                 }
                 bodyElements.add(i, newP);
                 cursor.toCursor(newParaPos);
@@ -706,8 +734,9 @@ public class XWPFDocument extends POIXML
                 cursor.toCursor(tableCursor);
                 while (cursor.toPrevSibling()) {
                     o = cursor.getObject();
-                    if (o instanceof CTP || o instanceof CTTbl)
+                    if (o instanceof CTP || o instanceof CTTbl) {
                         i++;
+                    }
                 }
                 bodyElements.add(i, newT);
                 cursor.toCursor(tableCursor);
@@ -984,7 +1013,7 @@ public class XWPFDocument extends POIXML
         tables.set(pos, table);
         ctDocument.getBody().setTblArray(pos, table.getCTTbl());
     }
-       
+
        /**
      * Verifies that the documentProtection tag in settings.xml file <br>
      * specifies that the protection is enforced (w:enforcement="1") <br>
@@ -1288,7 +1317,7 @@ public class XWPFDocument extends POIXML
     public void setZoomPercent(long zoomPercent) {
         settings.setZoomPercent(zoomPercent);
     }
-    
+
     /**
      * inserts an existing XWPFTable to the arrays bodyElements and tables
      *
@@ -1378,7 +1407,9 @@ public class XWPFDocument extends POIXML
                 throw new POIXMLException(e);
             } finally {
                 try {
-                    if (out != null) out.close();
+                    if (out != null) {
+                        out.close();
+                    }
                 } catch (IOException e) {
                     // ignore
                 }

Added: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFDataSourcesFactory.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFDataSourcesFactory.java?rev=1816383&view=auto
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFDataSourcesFactory.java
 (added)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFDataSourcesFactory.java
 Sun Nov 26 14:03:01 2017
@@ -0,0 +1,134 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+package org.apache.poi.xddf.usermodel.chart;
+
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.util.SheetBuilder;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for {@link XDDFDataSourcesFactory}.
+ */
+public class TestXDDFDataSourcesFactory extends TestCase {
+
+    private static final Object[][] numericCells = {
+            {0.0,      1.0,       2.0,     3.0,      4.0},
+            {0.0, "=B1*2",  "=C1*2", "=D1*2", "=E1*2"}
+    };
+
+    private static final Object[][] stringCells = {
+            {  1,    2,    3,   4,    5},
+            {"A", "B", "C", "D", "E"}
+    };
+
+    private static final Object[][] mixedCells = {
+            {1.0, "2.0", 3.0, "4.0", 5.0, "6.0"}
+    };
+
+    public void testNumericArrayDataSource() {
+        Double[] doubles = new Double[]{1.0, 2.0, 3.0, 4.0, 5.0};
+        XDDFDataSource<Double> doubleDataSource = 
XDDFDataSourcesFactory.fromArray(doubles, null);
+        assertTrue(doubleDataSource.isNumeric());
+        assertFalse(doubleDataSource.isReference());
+        assertDataSourceIsEqualToArray(doubleDataSource, doubles);
+    }
+
+    public void testStringArrayDataSource() {
+        String[] strings = new String[]{"one", "two", "three", "four", "five"};
+        XDDFDataSource<String> stringDataSource = 
XDDFDataSourcesFactory.fromArray(strings, null);
+        assertFalse(stringDataSource.isNumeric());
+        assertFalse(stringDataSource.isReference());
+        assertDataSourceIsEqualToArray(stringDataSource, strings);
+    }
+
+    public void testNumericCellDataSource() {
+        XSSFWorkbook wb = new XSSFWorkbook();
+        XSSFSheet sheet = (XSSFSheet) new SheetBuilder(wb, 
numericCells).build();
+        CellRangeAddress numCellRange = CellRangeAddress.valueOf("A2:E2");
+        XDDFDataSource<Double> numDataSource = 
XDDFDataSourcesFactory.fromNumericCellRange(sheet, numCellRange);
+        assertTrue(numDataSource.isReference());
+        assertTrue(numDataSource.isNumeric());
+        assertEquals(numericCells[0].length, numDataSource.getPointCount());
+        for (int i = 0; i < numericCells[0].length; ++i) {
+            assertEquals(((Double) numericCells[0][i]) * 2,
+                    numDataSource.getPointAt(i), 0.00001);
+        }
+    }
+
+    public void testStringCellDataSource() {
+        XSSFWorkbook wb = new XSSFWorkbook();
+        XSSFSheet sheet = (XSSFSheet) new SheetBuilder(wb, 
stringCells).build();
+        CellRangeAddress numCellRange = CellRangeAddress.valueOf("A2:E2");
+        XDDFDataSource<String> numDataSource = 
XDDFDataSourcesFactory.fromStringCellRange(sheet, numCellRange);
+        assertTrue(numDataSource.isReference());
+        assertFalse(numDataSource.isNumeric());
+        assertEquals(numericCells[0].length, numDataSource.getPointCount());
+        for (int i = 0; i < stringCells[1].length; ++i) {
+            assertEquals(stringCells[1][i], numDataSource.getPointAt(i));
+        }
+    }
+
+    public void testMixedCellDataSource() {
+        XSSFWorkbook wb = new XSSFWorkbook();
+        XSSFSheet sheet = (XSSFSheet) new SheetBuilder(wb, mixedCells).build();
+        CellRangeAddress mixedCellRange = CellRangeAddress.valueOf("A1:F1");
+        XDDFDataSource<String> strDataSource = 
XDDFDataSourcesFactory.fromStringCellRange(sheet, mixedCellRange);
+        XDDFDataSource<Double> numDataSource = 
XDDFDataSourcesFactory.fromNumericCellRange(sheet, mixedCellRange);
+        for (int i = 0; i < mixedCells[0].length; ++i) {
+            if (i % 2 == 0) {
+                assertNull(strDataSource.getPointAt(i));
+                assertEquals(((Double) mixedCells[0][i]),
+                        numDataSource.getPointAt(i), 0.00001);
+            } else {
+                assertNull(numDataSource.getPointAt(i));
+                assertEquals(mixedCells[0][i], strDataSource.getPointAt(i));
+            }
+        }
+    }
+
+    public void testIOBExceptionOnInvalidIndex() {
+        XSSFWorkbook wb = new XSSFWorkbook();
+        XSSFSheet sheet = (XSSFSheet) new SheetBuilder(wb, 
numericCells).build();
+        CellRangeAddress rangeAddress = CellRangeAddress.valueOf("A2:E2");
+        XDDFDataSource<Double> numDataSource = 
XDDFDataSourcesFactory.fromNumericCellRange(sheet, rangeAddress);
+        IndexOutOfBoundsException exception = null;
+        try {
+            numDataSource.getPointAt(-1);
+        } catch (IndexOutOfBoundsException e) {
+            exception = e;
+        }
+        assertNotNull(exception);
+
+        exception = null;
+        try {
+            numDataSource.getPointAt(numDataSource.getPointCount());
+        } catch (IndexOutOfBoundsException e) {
+            exception = e;
+        }
+        assertNotNull(exception);
+    }
+
+    private <T> void assertDataSourceIsEqualToArray(XDDFDataSource<T> ds, T[] 
array) {
+        assertEquals(ds.getPointCount(), array.length);
+        for (int i = 0; i < array.length; ++i) {
+            assertEquals(ds.getPointAt(i), array[i]);
+        }
+    }
+}

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFChart.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFChart.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFChart.java 
(original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFChart.java 
Sun Nov 26 14:03:01 2017
@@ -18,44 +18,151 @@
  */
 package org.apache.poi.xslf.usermodel;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
 import java.io.IOException;
-import java.io.OutputStream;
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.util.List;
 
 import org.apache.poi.POIXMLDocumentPart;
 import org.apache.poi.ss.util.CellRangeAddress;
-import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.xddf.usermodel.chart.AxisCrossBetween;
+import org.apache.poi.xddf.usermodel.chart.AxisCrosses;
+import org.apache.poi.xddf.usermodel.chart.AxisOrientation;
+import org.apache.poi.xddf.usermodel.chart.AxisPosition;
+import org.apache.poi.xddf.usermodel.chart.AxisTickMark;
+import org.apache.poi.xddf.usermodel.chart.BarDirection;
+import org.apache.poi.xddf.usermodel.chart.BarGrouping;
+import org.apache.poi.xddf.usermodel.chart.Grouping;
+import org.apache.poi.xddf.usermodel.chart.LayoutMode;
+import org.apache.poi.xddf.usermodel.chart.LayoutTarget;
+import org.apache.poi.xddf.usermodel.chart.LegendPosition;
+import org.apache.poi.xddf.usermodel.chart.RadarStyle;
+import org.apache.poi.xddf.usermodel.chart.ScatterStyle;
+import org.apache.poi.xddf.usermodel.chart.XDDFBarChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFChartLegend;
+import org.apache.poi.xddf.usermodel.chart.XDDFDataSource;
+import org.apache.poi.xddf.usermodel.chart.XDDFDataSourcesFactory;
+import org.apache.poi.xddf.usermodel.chart.XDDFLineChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFManualLayout;
+import org.apache.poi.xddf.usermodel.chart.XDDFNumericalDataSource;
+import org.apache.poi.xddf.usermodel.chart.XDDFPieChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFRadarChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFScatterChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFValueAxis;
 import org.apache.poi.xslf.XSLFTestDataSamples;
-import org.apache.poi.xssf.usermodel.XSSFRow;
-import org.apache.poi.xssf.usermodel.XSSFSheet;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.junit.Test;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTChart;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumData;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumVal;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTPieChart;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTPieSer;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTPlotArea;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerTx;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrData;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrVal;
 
+/**
+ * a modified version from POI-examples
+ */
 public class TestXSLFChart {
-
-    /**
-     * a modified version from POI-examples
-     */
     @Test
-    public void testFillChartTemplate() throws IOException {
+    public void testFillPieChartTemplate() throws IOException {
+        XMLSlideShow pptx = 
XSLFTestDataSamples.openSampleDocument("pie-chart.pptx");
+        XSLFChart chart = findChart(pptx.getSlides().get(0));
+        List<XDDFChartData> data = findChartData(chart);
 
-        String chartTitle = "Apache POI";  // first line is chart title
+        XDDFPieChartData pie = (XDDFPieChartData) data.get(0);
+        XDDFPieChartData.Series firstSeries = (XDDFPieChartData.Series) 
pie.getSeries().get(0);
+        firstSeries.setExplosion(25);
+        assertEquals(25, firstSeries.getExplosion());
 
-        XMLSlideShow pptx = 
XSLFTestDataSamples.openSampleDocument("pie-chart.pptx");
+        fillChartData(chart, pie);
+        pptx.close();
+    }
+
+    @Test
+    public void testFillBarChartTemplate() throws IOException {
+        XMLSlideShow pptx = 
XSLFTestDataSamples.openSampleDocument("bar-chart.pptx");
         XSLFSlide slide = pptx.getSlides().get(0);
+        // duplicate slide and chart before applying "destructive" tests to it
+        XSLFChart chart2 = findChart(pptx.createSlide().importContent(slide));
+        XSLFChart chart = findChart(slide);
+
+        List<XDDFChartData> data = findChartData(chart);
+        XDDFBarChartData bar = (XDDFBarChartData) data.get(0);
+        assertEquals(BarDirection.BAR, bar.getBarDirection());
+        assertEquals(BarGrouping.CLUSTERED, bar.getBarGrouping());
+        assertEquals(100, bar.getGapWidth());
+        fillChartData(chart, bar);
+
+        XDDFBarChartData column = (XDDFBarChartData) 
findChartData(chart2).get(0);
+        column.setBarDirection(BarDirection.COL);
+        assertEquals(BarDirection.COL, column.getBarDirection());
+        column.getCategoryAxis().setOrientation(AxisOrientation.MIN_MAX);
+        column.getValueAxes().get(0).setPosition(AxisPosition.BOTTOM);
+        fillChartData(chart2, column);
+
+        pptx.close();
+    }
+
+    @Test
+    public void testFillLineChartTemplate() throws IOException {
+        XMLSlideShow pptx = 
XSLFTestDataSamples.openSampleDocument("line-chart.pptx");
+        XSLFChart chart = findChart(pptx.getSlides().get(0));
+        List<XDDFChartData> data = findChartData(chart);
+
+        XDDFLineChartData line = (XDDFLineChartData) data.get(0);
+        assertEquals(Grouping.STANDARD, line.getGrouping());
+        line.setGrouping(Grouping.PERCENT_STACKED);
+        assertEquals(Grouping.PERCENT_STACKED, line.getGrouping());
+
+        fillChartData(chart, line);
+        pptx.close();
+    }
 
+    @Test
+    public void testFillRadarChartTemplate() throws IOException {
+        XMLSlideShow pptx = 
XSLFTestDataSamples.openSampleDocument("radar-chart.pptx");
+        XSLFChart chart = findChart(pptx.getSlides().get(0));
+        List<XDDFChartData> data = findChartData(chart);
+
+        XDDFRadarChartData radar = (XDDFRadarChartData) data.get(0);
+        assertEquals(RadarStyle.MARKER, radar.getStyle());
+        radar.setStyle(RadarStyle.FILLED);
+        assertEquals(RadarStyle.FILLED, radar.getStyle());
+
+        fillChartData(chart, radar);
+        pptx.close();
+    }
+
+    @Test
+    public void testFillScatterChartTemplate() throws IOException {
+        XMLSlideShow pptx = 
XSLFTestDataSamples.openSampleDocument("scatter-chart.pptx");
+        XSLFChart chart = findChart(pptx.getSlides().get(0));
+        List<XDDFChartData> data = findChartData(chart);
+
+        XDDFScatterChartData scatter = (XDDFScatterChartData) data.get(0);
+        assertEquals(ScatterStyle.LINE_MARKER, scatter.getStyle());
+        scatter.setStyle(ScatterStyle.SMOOTH);
+        assertEquals(ScatterStyle.SMOOTH, scatter.getStyle());
+
+        fillChartData(chart, scatter);
+        pptx.close();
+    }
+
+       private void fillChartData(XSLFChart chart, XDDFChartData data) {
+           final int numOfPoints = 3;
+        final String[] categories = {"First", "Second", "Third"};
+        final Integer[] values = {1, 3, 4};
+
+        final String categoryDataRange = chart.formatRange(new 
CellRangeAddress(1, numOfPoints, 0, 0));
+        final String valuesDataRange = chart.formatRange(new 
CellRangeAddress(1, numOfPoints, 1, 1));
+
+               final XDDFChartData.Series series = data.getSeries().get(0);
+               final XDDFDataSource<?> categoryData = 
XDDFDataSourcesFactory.fromArray(categories, categoryDataRange);
+        final XDDFNumericalDataSource<Integer> valuesData = 
XDDFDataSourcesFactory.fromArray(values, valuesDataRange);
+        series.replaceData(categoryData, valuesData);
+        final String title = "Apache POI";
+        series.setTitle(title, chart.setSheetTitle(title));
+        chart.plot(data);
+       }
+
+    private XSLFChart findChart(XSLFSlide slide) {
         // find chart in the slide
         XSLFChart chart = null;
         for(POIXMLDocumentPart part : slide.getRelations()){
@@ -65,76 +172,161 @@ public class TestXSLFChart {
             }
         }
 
-        if(chart == null) throw new IllegalStateException("chart not found in 
the template");
-
-        // embedded Excel workbook that holds the chart data
-        POIXMLDocumentPart xlsPart = chart.getRelations().get(0);
-        XSSFWorkbook wb = new XSSFWorkbook();
-        XSSFSheet sheet = wb.createSheet();
-
-        CTChart ctChart = chart.getCTChart();
-        CTPlotArea plotArea = ctChart.getPlotArea();
-
-        CTPieChart pieChart = plotArea.getPieChartArray(0);
-        //Pie Chart Series
-        CTPieSer ser = pieChart.getSerArray(0);
-
-        // Series Text
-        CTSerTx tx = ser.getTx();
-        tx.getStrRef().getStrCache().getPtArray(0).setV(chartTitle);
-        sheet.createRow(0).createCell(1).setCellValue(chartTitle);
-        String titleRef = new CellReference(sheet.getSheetName(), 0, 1, true, 
true).formatAsString();
-        tx.getStrRef().setF(titleRef);
-
-
-        // Category Axis Data
-        CTAxDataSource cat = ser.getCat();
-        CTStrData strData = cat.getStrRef().getStrCache();
-
-        // Values
-        CTNumDataSource valSrc = ser.getVal();
-        CTNumData numData = valSrc.getNumRef().getNumCache();
-
-        strData.setPtArray(null);  // unset old axis text
-        numData.setPtArray(null);  // unset old values
-
-        Map<String, Double> pieModel = new LinkedHashMap<>();
-        pieModel.put("First", 1.0);
-        pieModel.put("Second", 3.0);
-        pieModel.put("Third", 4.0);
-
-        // set model
-        int idx = 0;
-        int rownum = 1;
-        for(String key : pieModel.keySet()){
-            double val = pieModel.get(key);
-
-            CTNumVal numVal = numData.addNewPt();
-            numVal.setIdx(idx);
-            numVal.setV("" + val);
-
-            CTStrVal sVal = strData.addNewPt();
-            sVal.setIdx(idx);
-            sVal.setV(key);
-
-            idx++;
-            XSSFRow row = sheet.createRow(rownum++);
-            row.createCell(0).setCellValue(key);
-            row.createCell(1).setCellValue(val);
+        if(chart == null) {
+            throw new IllegalStateException("chart not found in the template");
         }
-        numData.getPtCount().setVal(idx);
-        strData.getPtCount().setVal(idx);
 
-        String numDataRange = new CellRangeAddress(1, rownum-1, 1, 
1).formatAsString(sheet.getSheetName(), true);
-        valSrc.getNumRef().setF(numDataRange);
-        String axisDataRange = new CellRangeAddress(1, rownum-1, 0, 
0).formatAsString(sheet.getSheetName(), true);
-        cat.getStrRef().setF(axisDataRange);
-
-        // updated the embedded workbook with the data
-        OutputStream xlsOut = xlsPart.getPackagePart().getOutputStream();
-        wb.write(xlsOut);
-        xlsOut.close();
-        wb.close();
+        checkLegendOperations(chart);
+        return chart;
+    }
+
+    private List<XDDFChartData> findChartData(XSLFChart chart) {
+        List<XDDFChartData> data = chart.getChartSeries();
+        assertNotNull(data);
+        assertEquals(1, data.size());
+
+        XDDFChartData firstSeries = data.get(0);
+               assertNotNull(firstSeries);
+               if (firstSeries instanceof XDDFScatterChartData) {
+            assertEquals(null, firstSeries.getCategoryAxis());
+            assertEquals(2, firstSeries.getValueAxes().size());
+            checkAxisOperations(firstSeries.getValueAxes().get(0));
+            checkAxisOperations(firstSeries.getValueAxes().get(1));
+               } else if (!(firstSeries instanceof XDDFPieChartData)) {
+                       assertNotNull(firstSeries.getCategoryAxis());
+                       assertEquals(1, firstSeries.getValueAxes().size());
+                       checkAxisOperations(firstSeries.getValueAxes().get(0));
+               }
+
+        return data;
     }
 
-}
\ No newline at end of file
+       private void checkLegendOperations(XSLFChart chart) {
+               XDDFChartLegend legend = chart.getOrAddLegend();
+        assertFalse(legend.isOverlay());
+               legend.setOverlay(true);
+        assertTrue(legend.isOverlay());
+               legend.setPosition(LegendPosition.TOP_RIGHT);
+               assertEquals(LegendPosition.TOP_RIGHT, legend.getPosition());
+
+               XDDFManualLayout layout = legend.getOrAddManualLayout();
+               assertNotNull(layout.getTarget());
+               assertNotNull(layout.getXMode());
+               assertNotNull(layout.getYMode());
+               assertNotNull(layout.getHeightMode());
+               assertNotNull(layout.getWidthMode());
+               /*
+                * According to interface, 0.0 should be returned for
+                * uninitialized double properties.
+                */
+               assertTrue(layout.getX() == 0.0);
+               assertTrue(layout.getY() == 0.0);
+               assertTrue(layout.getWidthRatio() == 0.0);
+               assertTrue(layout.getHeightRatio() == 0.0);
+
+               final double newRatio = 1.1;
+               final double newCoordinate = 0.3;
+               final LayoutMode nonDefaultMode = LayoutMode.FACTOR;
+               final LayoutTarget nonDefaultTarget = LayoutTarget.OUTER;
+
+               layout.setWidthRatio(newRatio);
+               assertTrue(layout.getWidthRatio() == newRatio);
+
+               layout.setHeightRatio(newRatio);
+               assertTrue(layout.getHeightRatio() == newRatio);
+
+               layout.setX(newCoordinate);
+               assertTrue(layout.getX() == newCoordinate);
+
+               layout.setY(newCoordinate);
+               assertTrue(layout.getY() == newCoordinate);
+
+               layout.setXMode(nonDefaultMode);
+               assertTrue(layout.getXMode() == nonDefaultMode);
+
+               layout.setYMode(nonDefaultMode);
+               assertTrue(layout.getYMode() == nonDefaultMode);
+
+               layout.setWidthMode(nonDefaultMode);
+               assertTrue(layout.getWidthMode() == nonDefaultMode);
+
+               layout.setHeightMode(nonDefaultMode);
+               assertTrue(layout.getHeightMode() == nonDefaultMode);
+
+               layout.setTarget(nonDefaultTarget);
+               assertTrue(layout.getTarget() == nonDefaultTarget);
+       }
+
+       private void checkAxisOperations(XDDFValueAxis axis) {
+               axis.setCrossBetween(AxisCrossBetween.MIDPOINT_CATEGORY);
+               assertEquals(AxisCrossBetween.MIDPOINT_CATEGORY, 
axis.getCrossBetween());
+
+               axis.setCrosses(AxisCrosses.AUTO_ZERO);
+               assertEquals(AxisCrosses.AUTO_ZERO, axis.getCrosses());
+
+               final String numberFormat = "General";
+               axis.setNumberFormat(numberFormat);
+               assertEquals(numberFormat, axis.getNumberFormat());
+
+               axis.setPosition(AxisPosition.BOTTOM);
+               assertEquals(AxisPosition.BOTTOM, axis.getPosition());
+
+               axis.setMajorTickMark(AxisTickMark.NONE);
+               assertEquals(AxisTickMark.NONE, axis.getMajorTickMark());
+
+               axis.setMajorTickMark(AxisTickMark.IN);
+               assertEquals(AxisTickMark.IN, axis.getMajorTickMark());
+
+               axis.setMajorTickMark(AxisTickMark.OUT);
+               assertEquals(AxisTickMark.OUT, axis.getMajorTickMark());
+
+               axis.setMajorTickMark(AxisTickMark.CROSS);
+               assertEquals(AxisTickMark.CROSS, axis.getMajorTickMark());
+
+               axis.setMinorTickMark(AxisTickMark.NONE);
+               assertEquals(AxisTickMark.NONE, axis.getMinorTickMark());
+
+               axis.setMinorTickMark(AxisTickMark.IN);
+               assertEquals(AxisTickMark.IN, axis.getMinorTickMark());
+
+               axis.setMinorTickMark(AxisTickMark.OUT);
+               assertEquals(AxisTickMark.OUT, axis.getMinorTickMark());
+
+               axis.setMinorTickMark(AxisTickMark.CROSS);
+               assertEquals(AxisTickMark.CROSS, axis.getMinorTickMark());
+
+               axis.setVisible(true);
+               assertTrue(axis.isVisible());
+
+               axis.setVisible(false);
+               assertFalse(axis.isVisible());
+
+               final double EPSILON = 1E-7;
+               axis.setLogBase(Math.E);
+               assertTrue(Math.abs(axis.getLogBase() - Math.E) < EPSILON);
+
+               final double newValue = 10.0;
+
+               axis.setMinimum(newValue);
+               assertTrue(Math.abs(axis.getMinimum() - newValue) < EPSILON);
+
+               axis.setMaximum(newValue);
+               assertTrue(Math.abs(axis.getMaximum() - newValue) < EPSILON);
+
+               IllegalArgumentException iae = null;
+               try {
+                       axis.setLogBase(0.0);
+               } catch (IllegalArgumentException e) {
+                       iae = e;
+               }
+               assertNotNull(iae);
+
+               iae = null;
+               try {
+                       axis.setLogBase(30000.0);
+               } catch (IllegalArgumentException e) {
+                       iae = e;
+               }
+               assertNotNull(iae);
+       }
+}

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFChart.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFChart.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFChart.java 
(original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFChart.java 
Sun Nov 26 14:03:01 2017
@@ -17,46 +17,46 @@
 
 package org.apache.poi.xssf.usermodel;
 
-import junit.framework.TestCase;
-
 import org.apache.poi.xssf.XSSFTestDataSamples;
 
+import junit.framework.TestCase;
+
 public final class TestXSSFChart extends TestCase {
- 
+
     public void testGetAccessors() {
         XSSFWorkbook wb = 
XSSFTestDataSamples.openSampleWorkbook("WithThreeCharts.xlsx");
         XSSFSheet s1 = wb.getSheetAt(0);
         XSSFSheet s2 = wb.getSheetAt(1);
         XSSFSheet s3 = wb.getSheetAt(2);
-        
+
         assertEquals(0, s1.getRelations().size());
         assertEquals(1, s2.getRelations().size());
         assertEquals(1, s3.getRelations().size());
-        
+
         assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
     }
-    
+
     public void testGetCharts() throws Exception {
        XSSFWorkbook wb = 
XSSFTestDataSamples.openSampleWorkbook("WithThreeCharts.xlsx");
-       
+
        XSSFSheet s1 = wb.getSheetAt(0);
        XSSFSheet s2 = wb.getSheetAt(1);
        XSSFSheet s3 = wb.getSheetAt(2);
-       
+
        assertEquals(0, s1.createDrawingPatriarch().getCharts().size());
        assertEquals(2, s2.createDrawingPatriarch().getCharts().size());
        assertEquals(1, s3.createDrawingPatriarch().getCharts().size());
-       
+
        // Check the titles
        XSSFChart chart = s2.createDrawingPatriarch().getCharts().get(0);
        assertEquals(null, chart.getTitleText());
-       
+
        chart = s2.createDrawingPatriarch().getCharts().get(1);
        assertEquals("Pie Chart Title Thingy", 
chart.getTitleText().getString());
-       
+
        chart = s3.createDrawingPatriarch().getCharts().get(0);
        assertEquals("Sheet 3 Chart with Title", 
chart.getTitleText().getString());
-       
+
        assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
     }
 
@@ -68,14 +68,15 @@ public final class TestXSSFChart extends
                XSSFChart c1 = d1.createChart(a1);
 
                assertEquals(1, d1.getCharts().size());
+
                assertNotNull(c1.getGraphicFrame());
-               assertNotNull(c1.getOrCreateLegend());
+               assertNotNull(c1.getOrAddLegend());
 
                XSSFClientAnchor a2 = new XSSFClientAnchor(0, 0, 0, 0, 1, 11, 
10, 60);
                XSSFChart c2 = d1.createChart(a2);
                assertNotNull(c2);
                assertEquals(2, d1.getCharts().size());
-        
+
         assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
        }
 }

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFCategoryAxis.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFCategoryAxis.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFCategoryAxis.java
 (original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFCategoryAxis.java
 Sun Nov 26 14:03:01 2017
@@ -17,24 +17,32 @@
 
 package org.apache.poi.xssf.usermodel.charts;
 
-import junit.framework.TestCase;
+import org.apache.poi.xddf.usermodel.chart.AxisCrosses;
+import org.apache.poi.xddf.usermodel.chart.AxisPosition;
+import org.apache.poi.xddf.usermodel.chart.XDDFCategoryAxis;
+import org.apache.poi.xssf.usermodel.XSSFChart;
+import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
+import org.apache.poi.xssf.usermodel.XSSFDrawing;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
-import org.apache.poi.ss.usermodel.charts.*;
-import org.apache.poi.xssf.usermodel.*;
+import junit.framework.TestCase;
 
 public final class TestXSSFCategoryAxis extends TestCase {
- 
+
        public void testAccessMethods() throws Exception {
                XSSFWorkbook wb = new XSSFWorkbook();
                XSSFSheet sheet = wb.createSheet();
                XSSFDrawing drawing = sheet.createDrawingPatriarch();
                XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 1, 
1, 10, 30);
                XSSFChart chart = drawing.createChart(anchor);
-               XSSFCategoryAxis axis = 
chart.getChartAxisFactory().createCategoryAxis(AxisPosition.BOTTOM);
+               XDDFCategoryAxis axis = 
chart.createCategoryAxis(AxisPosition.BOTTOM);
 
                axis.setCrosses(AxisCrosses.AUTO_ZERO);
                assertEquals(axis.getCrosses(), AxisCrosses.AUTO_ZERO);
 
-               assertEquals(chart.getAxis().size(), 1);
+               assertEquals(chart.getAxes().size(), 1);
+
+               wb.close();
        }
 }



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

Reply via email to