From 33179a62d9ca17f91af80c3ebb07ad1c1ae66704 Mon Sep 17 00:00:00 2001 From: Tom Pantelis Date: Sat, 16 May 2015 15:13:41 -0400 Subject: [PATCH] Fix CDS serialization failures due to YangInstanceIdentifier change YangInstanceIdentifier was recently made an abstract class with 2 implementations which broke CDS serialization as it was looking for an exact match for the YangInstanceIdentifier class. Change-Id: Iba94dda9584f65f5c8d76a1514d3f9f09d2f0483 Signed-off-by: Tom Pantelis (cherry picked from commit bc42ccb9b9bef46de08370e9d958e0e2fe3dda5a) --- .../datastore/node/utils/serialization/ValueType.java | 5 ++++- .../cluster/datastore/node/utils/stream/ValueTypes.java | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueType.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueType.java index 9eec8a300a..0015a06149 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueType.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueType.java @@ -109,7 +109,6 @@ public enum ValueType { b.put(Long.class, LONG_TYPE); b.put(Boolean.class, BOOL_TYPE); b.put(QName.class, QNAME_TYPE); - b.put(YangInstanceIdentifier.class, YANG_IDENTIFIER_TYPE); b.put(Short.class,SHORT_TYPE); b.put(BigInteger.class, BIG_INTEGER_TYPE); b.put(BigDecimal.class, BIG_DECIMAL_TYPE); @@ -133,6 +132,10 @@ public enum ValueType { return BITS_TYPE; } + if (node instanceof YangInstanceIdentifier) { + return YANG_IDENTIFIER_TYPE; + } + throw new IllegalArgumentException("Unknown value type " + node.getClass().getSimpleName()); } } diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/ValueTypes.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/ValueTypes.java index 83099f8a5b..f107ce75a7 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/ValueTypes.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/ValueTypes.java @@ -43,7 +43,6 @@ final class ValueTypes { b.put(Long.class, Byte.valueOf(LONG_TYPE)); b.put(Boolean.class, Byte.valueOf(BOOL_TYPE)); b.put(QName.class, Byte.valueOf(QNAME_TYPE)); - b.put(YangInstanceIdentifier.class, Byte.valueOf(YANG_IDENTIFIER_TYPE)); b.put(Short.class, Byte.valueOf(SHORT_TYPE)); b.put(BigInteger.class, Byte.valueOf(BIG_INTEGER_TYPE)); b.put(BigDecimal.class, Byte.valueOf(BIG_DECIMAL_TYPE)); @@ -65,10 +64,15 @@ final class ValueTypes { if (type != null) { return type; } + if (node instanceof Set) { return BITS_TYPE; } + if (node instanceof YangInstanceIdentifier) { + return YANG_IDENTIFIER_TYPE; + } + throw new IllegalArgumentException("Unknown value type " + node.getClass().getSimpleName()); } } -- 2.36.6