/* * Copyright (c) 2021 PANTHEON.tech, s.r.o. 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 static org.opendaylight.yangtools.yang.common.YangConstants.BAD_ATTRIBUTE_QNAME; import static org.opendaylight.yangtools.yang.common.YangConstants.BAD_ELEMENT_QNAME; import static org.opendaylight.yangtools.yang.common.YangConstants.BAD_NAMESPACE_QNAME; import static org.opendaylight.yangtools.yang.common.YangConstants.ERR_ELEMENT_QNAME; import static org.opendaylight.yangtools.yang.common.YangConstants.MISSING_CHOICE_QNAME; import static org.opendaylight.yangtools.yang.common.YangConstants.NON_UNIQUE_QNAME; import static org.opendaylight.yangtools.yang.common.YangConstants.NOOP_ELEMENT_QNAME; import static org.opendaylight.yangtools.yang.common.YangConstants.OK_ELEMENT_QNAME; import static org.opendaylight.yangtools.yang.common.YangConstants.SESSION_ID_QNAME; import com.google.common.annotations.Beta; import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.yangtools.yang.common.ErrorTag; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.data.api.YangErrorInfo; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; @Beta @NonNullByDefault public final class YangErrorInfos { private static final NodeIdentifier BAD_ATTRIBUTE_NODEID = NodeIdentifier.create(BAD_ATTRIBUTE_QNAME); private static final NodeIdentifier BAD_ELEMENT_NODEID = NodeIdentifier.create(BAD_ELEMENT_QNAME); private static final NodeIdentifier BAD_NAMESPACE_NODEID = NodeIdentifier.create(BAD_NAMESPACE_QNAME); private static final NodeIdentifier MISSING_CHOICE_NODEID = NodeIdentifier.create(MISSING_CHOICE_QNAME); private static final NodeIdentifier NON_UNIQUE_NODEID = NodeIdentifier.create(NON_UNIQUE_QNAME); private static final NodeIdentifier SESSION_ID_NODEID = NodeIdentifier.create(SESSION_ID_QNAME); @Deprecated(since = "RFC6241") private static final NodeIdentifier ERR_ELEMENT_NODEID = NodeIdentifier.create(ERR_ELEMENT_QNAME); @Deprecated(since = "RFC6241") private static final NodeIdentifier NOOP_ELEMENT_NODEID = NodeIdentifier.create(NOOP_ELEMENT_QNAME); @Deprecated(since = "RFC6241") private static final NodeIdentifier OK_ELEMENT_NODEID = NodeIdentifier.create(OK_ELEMENT_QNAME); private YangErrorInfos() { // Hidden on purpose } public static YangErrorInfo of(final QName name, final Object value) { return of(new NodeIdentifier(name), value); } public static YangErrorInfo of(final NodeIdentifier name, final Object value) { return YangErrorInfo.of(ImmutableNodes.leafNode(name, value)); } /** * {@code bad-attribute} with the name of the attribute. */ public static YangErrorInfo badAttribute(final QName attributeName) { return of(BAD_ATTRIBUTE_NODEID, attributeName); } /** * {@code bad-element} with the name of the element. */ public static YangErrorInfo badElement(final QName elementName) { return of(BAD_ELEMENT_NODEID, elementName); } /** * {@code bad-namespace} with the name of the namespace. */ public static YangErrorInfo badNamespace(final QName namespaceName) { return of(BAD_NAMESPACE_NODEID, namespaceName); } /** * {@code session-id} with the session identifier, as modeled in {@code SessionIdOrZero}. */ public static YangErrorInfo sessionId(final Uint32 sessionId) { return of(SESSION_ID_NODEID, sessionId); } /** * {@code ok-element} with the name of the element. * * @deprecated This error-info specified by {@link ErrorTag#PARTIAL_OPERATION}. */ @Deprecated(since = "RFC6241") public static YangErrorInfo errElement(final QName elementName) { return of(ERR_ELEMENT_NODEID, elementName); } /** * {@code noop-element}, with the name of the element. * * @deprecated This error-info specified by {@link ErrorTag#PARTIAL_OPERATION}. */ @Deprecated(since = "RFC6241") public static YangErrorInfo noopElement(final QName elementName) { return of(NOOP_ELEMENT_NODEID, elementName); } /** * {@code ok-element}, with the name of the element. * * @deprecated This error-info specified by {@link ErrorTag#PARTIAL_OPERATION}. */ @Deprecated(since = "RFC6241") public static YangErrorInfo okElement(final QName elementName) { return of(OK_ELEMENT_NODEID, elementName); } /** * {@code non-unique} as defined in * RFC6020, section 13.1. Note this * is only a prototype, which needs to be bound to a path representation type. */ public static YangErrorInfo nonUnique(final YangInstanceIdentifier leafPath) { return of(NON_UNIQUE_NODEID, leafPath); } /** * {@code missing-choice} as defined in * RFC6020, section 13.7. */ public static YangErrorInfo missingChoice(final NodeIdentifier choiceName) { return of(MISSING_CHOICE_NODEID, choiceName); } }