Use pattern matching on instanceof in yang-common
[yangtools.git] / common / yang-common / src / main / java / org / opendaylight / yangtools / yang / common / ErrorTag.java
index 4e0a0b913b2bfd58b0f1d728e91acfa0ea8bb139..90bce0263418e375e407280b5e4389ac88bb6fb7 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.common;
 
 import static java.util.Objects.requireNonNull;
 
+import java.io.Serializable;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 
@@ -23,7 +24,7 @@ import org.eclipse.jdt.annotation.Nullable;
  * error tag.
  */
 @NonNullByDefault
-public final class ErrorTag {
+public final class ErrorTag implements Serializable {
     /**
      * {@code access-denied} {@link ErrorTag}.
      */
@@ -74,6 +75,12 @@ public final class ErrorTag {
      * {@code lock-denied} {@link ErrorTag}.
      */
     public static final ErrorTag LOCK_DENIED = new ErrorTag("lock-denied");
+    /**
+     * {@code unknown-element} {@link ErrorTag}. Covers mechanics specified in
+     * <a href="https://datatracker.ietf.org/doc/html/rfc6241#page-80">RFC6241, Appendix A, last item</a>. Note the
+     * specification expressly forbids reporting this tag for NETCONF clients older than {@code :base:1.1}.
+     */
+    public static final ErrorTag MALFORMED_MESSAGE = new ErrorTag("malformed-message");
     /**
      * {@code missing-attribute} {@link ErrorTag}.
      */
@@ -147,6 +154,8 @@ public final class ErrorTag {
      */
     public static final ErrorTag UNKNOWN_NAMESPACE = new ErrorTag("unknown-namespace");
 
+    private static final long serialVersionUID = 1L;
+
     private final String elementBody;
 
     public ErrorTag(final String elementBody) {
@@ -169,11 +178,15 @@ public final class ErrorTag {
 
     @Override
     public boolean equals(final @Nullable Object obj) {
-        return obj == this || obj instanceof ErrorTag && elementBody.equals(((ErrorTag) obj).elementBody);
+        return obj == this || obj instanceof ErrorTag other && elementBody.equals(other.elementBody);
     }
 
     @Override
     public String toString() {
         return elementBody;
     }
-}
\ No newline at end of file
+
+    Object writeReplace() {
+        return new ETv1(this);
+    }
+}