Bug 2983 - Throws ResultAlreadySet instead of IllegalStateException 82/19382/1
authorJan Hajnar <jhajnar@cisco.com>
Wed, 22 Apr 2015 14:11:32 +0000 (16:11 +0200)
committerTony Tkacik <ttkacik@cisco.com>
Thu, 30 Apr 2015 13:21:43 +0000 (13:21 +0000)
* added custom exception when trying to set NormalizedNodeResult
* added more descriptive error when getting NormalizedNodeResult already
set exception

Change-Id: I35beffc79a4951134ba64c07ad1ed627b431031b
Signed-off-by: Jan Hajnar <jhajnar@cisco.com>
(cherry picked from commit 7974d0f2bc2e3182cc521bbab543450dbdb7af83)

yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedNodeResult.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ResultAlreadySetException.java [new file with mode: 0644]

index 76b28e93aaad9a7775068b3a37e383cdf9738ac1..47723fd788f00ed91ce4f499fcd245e258e27be8 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.data.impl.schema;
 
-import com.google.common.base.Preconditions;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
 /**
@@ -33,7 +32,9 @@ public class NormalizedNodeResult {
     }
 
     void setResult(final NormalizedNode<?, ?> result) {
-        Preconditions.checkState(!this.finished, "Result was already set.");
+        if (finished) {
+            throw new ResultAlreadySetException("Normalized Node result was already set.", this.result);
+        }
         this.finished = true;
         this.result = result;
     }
diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ResultAlreadySetException.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ResultAlreadySetException.java
new file mode 100644 (file)
index 0000000..f73c315
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.data.impl.schema;
+
+import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+
+public class ResultAlreadySetException extends IllegalStateException {
+    private final NormalizedNode<?, ?> resultData;
+
+    public ResultAlreadySetException(String message, NormalizedNode<?, ?> resultData) {
+        this(message, resultData, null);
+    }
+
+    public ResultAlreadySetException(String message, NormalizedNode<?, ?> resultData, Throwable cause) {
+        super(message, cause);
+        this.resultData = resultData;
+    }
+
+    public NormalizedNode<?, ?> getResultData() {
+        return resultData;
+    }
+}