Skip to content

Commit 12622b6

Browse files
Guard Matrix.toString() against a null value
Matrix.ofNull().toString() threw a NullPointerException because ArrayUtil.getType was called with a null flatArray. Return early with a flatArray=null rendering instead. Signed-off-by: Jooyoung Jung <livinglikekrillin@gmail.com>
1 parent 47ce29d commit 12622b6

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

  • opc-ua-stack/stack-core/src
    • main/java/org/eclipse/milo/opcua/stack/core/types/builtin
    • test/java/org/eclipse/milo/opcua/stack/core/types/builtin

opc-ua-stack/stack-core/src/main/java/org/eclipse/milo/opcua/stack/core/types/builtin/Matrix.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,10 @@ public String toString() {
250250
.add("dataTypeId=" + (dataTypeId != null ? dataTypeId.toParseableString() : null))
251251
.add("dimensions=" + Arrays.toString(dimensions));
252252

253+
if (flatArray == null) {
254+
return joiner.add("flatArray=null").toString();
255+
}
256+
253257
Class<?> clazz = ArrayUtil.getType(flatArray);
254258

255259
if (clazz.isPrimitive()) {

opc-ua-stack/stack-core/src/test/java/org/eclipse/milo/opcua/stack/core/types/builtin/MatrixTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,15 @@ void matrixToString() {
8484
boxedMatrix2d.toString());
8585
}
8686

87+
@Test
88+
void nullMatrixToString() {
89+
// A null Matrix has no flatArray; toString() must not throw (previously NPE'd in
90+
// ArrayUtil.getType).
91+
assertEquals(
92+
"Matrix{dataType=null, dataTypeId=null, dimensions=[], flatArray=null}",
93+
Matrix.ofNull().toString());
94+
}
95+
8796
@Test
8897
void getDataType() {
8998
assertEquals(OpcUaDataType.Int32, primitiveMatrix2d.getDataType().orElse(null));

0 commit comments

Comments
 (0)