7040ab16fd6d414113033b020089308e5a140beb
[yangtools.git] / yang / yang-parser-api / src / main / java / org / opendaylight / yangtools / yang / model / parser / api / YangParserConfiguration.java
1 /*
2  * Copyright (c) 2021 PANTHEON.tech, s.r.o. 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.model.parser.api;
9
10 import static java.util.Objects.requireNonNull;
11
12 import com.google.common.annotations.Beta;
13 import org.eclipse.jdt.annotation.NonNullByDefault;
14 import org.opendaylight.yangtools.concepts.Immutable;
15 import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode;
16
17 /**
18  * A configuration of {@link YangParser} wiring for use with {@link YangParserFactory}.
19  */
20 @Beta
21 @NonNullByDefault
22 public final class YangParserConfiguration implements Immutable {
23     public static final YangParserConfiguration DEFAULT = new YangParserConfiguration(StatementParserMode.DEFAULT_MODE);
24
25     private final StatementParserMode parserMode;
26
27     private YangParserConfiguration(final StatementParserMode parserMode) {
28         this.parserMode = requireNonNull(parserMode);
29     }
30
31     public StatementParserMode parserMode() {
32         return parserMode;
33     }
34
35     public static Builder builder() {
36         return new Builder();
37     }
38
39     public static final class Builder implements org.opendaylight.yangtools.concepts.Builder<YangParserConfiguration> {
40         private StatementParserMode parserMode = StatementParserMode.DEFAULT_MODE;
41
42         private Builder() {
43             // Hidden on purpose
44         }
45
46         @Override
47         public YangParserConfiguration build() {
48             return new YangParserConfiguration(parserMode);
49         }
50
51         public Builder setParserMode(final StatementParserMode parserMode) {
52             this.parserMode = requireNonNull(parserMode);
53             return this;
54         }
55     }
56 }