Fix YangXPathMathSupport serializability 52/81152/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 25 Mar 2019 20:27:52 +0000 (21:27 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 25 Mar 2019 20:28:46 +0000 (21:28 +0100)
Supports should always resolve to a singleton.

Change-Id: I9888465d7fe89fbf9c2e75aa4e7a807ea16ed0e0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-xpath-api/src/main/java/org/opendaylight/yangtools/yang/xpath/api/AbstractYangXPathMathSupport.java
yang/yang-xpath-api/src/main/java/org/opendaylight/yangtools/yang/xpath/api/BigDecimalXPathMathSupport.java
yang/yang-xpath-api/src/main/java/org/opendaylight/yangtools/yang/xpath/api/DoubleXPathMathSupport.java
yang/yang-xpath-api/src/main/java/org/opendaylight/yangtools/yang/xpath/api/YangXPathMathSupport.java

index 589f8e26c4901f388d66366be530fa8528113f9e..f0e756e5ffcf22c3e80d622277ba3a24e40fed63 100644 (file)
@@ -22,6 +22,8 @@ import java.util.Optional;
  */
 @Beta
 public abstract class AbstractYangXPathMathSupport<N extends YangNumberExpr> implements YangXPathMathSupport {
+    private static final long serialVersionUID = 1L;
+
     private final Class<N> numberClass;
 
     protected AbstractYangXPathMathSupport(final Class<N> numberClass) {
@@ -64,4 +66,6 @@ public abstract class AbstractYangXPathMathSupport<N extends YangNumberExpr> imp
      * @return Evaluation result
      */
     protected abstract YangExpr doEvaluate(YangBinaryOperator operator, N left, N right);
+
+    protected abstract Object readResolve();
 }
index f489b98c5ab5e174c272efb66156325dbccaed29..437ff0dc50add0f1dc3d7285d8af33cf7555068a 100644 (file)
@@ -12,6 +12,7 @@ import java.math.BigDecimal;
 final class BigDecimalXPathMathSupport extends AbstractYangXPathMathSupport<BigDecimalNumberExpr> {
     static final BigDecimalXPathMathSupport INSTANCE = new BigDecimalXPathMathSupport();
 
+    private static final long serialVersionUID = 1L;
     private static final BigDecimalNumberExpr ZERO = BigDecimalNumberExpr.of(BigDecimal.ZERO);
     private static final BigDecimalNumberExpr ONE = BigDecimalNumberExpr.of(BigDecimal.ONE);
     private static final BigDecimalNumberExpr TEN = BigDecimalNumberExpr.of(BigDecimal.TEN);
@@ -94,4 +95,9 @@ final class BigDecimalXPathMathSupport extends AbstractYangXPathMathSupport<BigD
 
         return BigDecimalNumberExpr.of(result);
     }
+
+    @Override
+    protected Object readResolve() {
+        return INSTANCE;
+    }
 }
index 72f31d8b3879bc88001d89255904a1f108eff5c8..4662b725017b52acc3773a4e41cc272c86525803 100644 (file)
@@ -10,6 +10,8 @@ package org.opendaylight.yangtools.yang.xpath.api;
 final class DoubleXPathMathSupport extends AbstractYangXPathMathSupport<DoubleNumberExpr> {
     static final DoubleXPathMathSupport INSTANCE = new DoubleXPathMathSupport();
 
+    private static final long serialVersionUID = 1L;
+
     private DoubleXPathMathSupport() {
         super(DoubleNumberExpr.class);
     }
@@ -70,4 +72,9 @@ final class DoubleXPathMathSupport extends AbstractYangXPathMathSupport<DoubleNu
 
         return DoubleNumberExpr.of(result);
     }
+
+    @Override
+    protected Object readResolve() {
+        return INSTANCE;
+    }
 }
index e3385640733d7a88c7ef40d9afc860bd1be4db1f..e6c2b0d8a085c41423d10e8c5e6c8a578f30c9d3 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.yang.xpath.api;
 
 import com.google.common.annotations.Beta;
+import java.io.Serializable;
 import java.util.Optional;
 
 /**
@@ -17,7 +18,7 @@ import java.util.Optional;
  * @author Robert Varga
  */
 @Beta
-public interface YangXPathMathSupport {
+public interface YangXPathMathSupport extends Serializable {
     /**
      * Create a {@link YangNumberExpr} backed by specified string.
      *