Adjust test suite parser update to conform with API changes
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / deviate / DeviateStatementRFC7950Support.java
1 /*
2  * Copyright (c) 2017 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviate;
9
10 import com.google.common.annotations.Beta;
11 import org.opendaylight.yangtools.yang.model.api.DeviateKind;
12 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
13 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
14
15 /**
16  * Class providing necessary support for processing YANG 1.1 deviate statement.
17  */
18 @Beta
19 public final class DeviateStatementRFC7950Support extends AbstractDeviateStatementSupport {
20
21     private static final SubstatementValidator DEVIATE_ADD_SUBSTATEMENT_VALIDATOR =
22             SubstatementValidator.builder(YangStmtMapping.DEVIATE)
23                 .addOptional(YangStmtMapping.CONFIG)
24                 .addAny(YangStmtMapping.DEFAULT)
25                 .addOptional(YangStmtMapping.MANDATORY)
26                 .addOptional(YangStmtMapping.MAX_ELEMENTS)
27                 .addOptional(YangStmtMapping.MIN_ELEMENTS)
28                 .addAny(YangStmtMapping.MUST)
29                 .addAny(YangStmtMapping.UNIQUE)
30                 .addOptional(YangStmtMapping.UNITS)
31                 .build();
32
33     private static final SubstatementValidator DEVIATE_DELETE_SUBSTATEMENT_VALIDATOR =
34             SubstatementValidator.builder(YangStmtMapping.DEVIATE)
35                 .addAny(YangStmtMapping.DEFAULT)
36                 .addAny(YangStmtMapping.MUST)
37                 .addAny(YangStmtMapping.UNIQUE)
38                 .addOptional(YangStmtMapping.UNITS)
39                 .build();
40
41     @Override
42     protected SubstatementValidator getSubstatementValidatorForDeviate(final DeviateKind deviateKind) {
43         switch (deviateKind) {
44             case NOT_SUPPORTED:
45                 return super.getSubstatementValidatorForDeviate(deviateKind);
46             case ADD:
47                 return DEVIATE_ADD_SUBSTATEMENT_VALIDATOR;
48             case REPLACE:
49                 return super.getSubstatementValidatorForDeviate(deviateKind);
50             case DELETE:
51                 return DEVIATE_DELETE_SUBSTATEMENT_VALIDATOR;
52             default:
53                 throw new IllegalStateException(String.format(
54                         "Substatement validator for deviate %s has not been defined.", deviateKind));
55         }
56     }
57 }