summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPJ Fanning <fanningpj@apache.org>2021-10-07 13:28:45 +0000
committerPJ Fanning <fanningpj@apache.org>2021-10-07 13:28:45 +0000
commit36cf0e943e7a66f2f2fadd76bfd1c24a2d158c46 (patch)
tree43f777624e90a30f67b1283d9132fb7d89a9ee8a
parent56520578dda28706c485f473b36b4c563b9d5b41 (diff)
downloadpoi-36cf0e943e7a66f2f2fadd76bfd1c24a2d158c46.tar.gz
poi-36cf0e943e7a66f2f2fadd76bfd1c24a2d158c46.zip
[github-260] Check XDGFCell value for null to avoid NullPointerException. Thanks to Dmitry Komarov.
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1893988 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFCell.java19
1 files changed, 14 insertions, 5 deletions
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFCell.java b/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFCell.java
index e4bdfcd8a5..2aef6b4c31 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFCell.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFCell.java
@@ -31,7 +31,7 @@ import com.microsoft.schemas.office.visio.x2012.main.CellType;
*
* The various attributes of a Cell are constrained, and are better defined in
* the XSD 1.1 visio schema
- *
+ *
* Values of a cell are often the result of a formula computation. Luckily for
* you, Visio seems to always write the result to the document file, so unless
* the values change we don't need to recompute the values.
@@ -39,9 +39,9 @@ import com.microsoft.schemas.office.visio.x2012.main.CellType;
public class XDGFCell {
public static Boolean maybeGetBoolean(Map<String, XDGFCell> cells,
- String name) {
+ String name) {
XDGFCell cell = cells.get(name);
- if (cell == null)
+ if (cell == null || cell.getValue() == null)
return null;
if (cell.getValue().equals("0"))
@@ -61,7 +61,7 @@ public class XDGFCell {
}
public static Integer maybeGetInteger(Map<String, XDGFCell> cells,
- String name) {
+ String name) {
XDGFCell cell = cells.get(name);
if (cell != null)
return parseIntegerValue(cell._cell);
@@ -72,7 +72,7 @@ public class XDGFCell {
XDGFCell cell = cells.get(name);
if (cell != null) {
String v = cell._cell.getV();
- if (v.equals("Themed"))
+ if (v == null || v.equals("Themed"))
return null;
return v;
}
@@ -80,6 +80,9 @@ public class XDGFCell {
}
public static Double parseDoubleValue(CellType cell) {
+ if (cell.getV() == null) {
+ return null;
+ }
try {
return Double.parseDouble(cell.getV());
} catch (NumberFormatException e) {
@@ -91,6 +94,9 @@ public class XDGFCell {
}
public static Integer parseIntegerValue(CellType cell) {
+ if (cell.getV() == null) {
+ return null;
+ }
try {
return Integer.parseInt(cell.getV());
} catch (NumberFormatException e) {
@@ -106,6 +112,9 @@ public class XDGFCell {
* @return A value converted to inches
*/
public static Double parseVLength(CellType cell) {
+ if (cell.getV() == null) {
+ return null;
+ }
try {
return Double.parseDouble(cell.getV());
} catch (NumberFormatException e) {