2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
10 import java.util.Collection;
11 import java.util.Collections;
12 import java.util.Objects;
13 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
14 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
15 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
16 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
17 import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
18 import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryStatement;
20 abstract class EmptyMandatoryStatement implements MandatoryStatement {
21 static final MandatoryStatement FALSE = new EmptyMandatoryStatement() {
23 public Boolean getValue() {
28 EffectiveStatement<Boolean, MandatoryStatement> toEffective() {
29 return EmptyMandatoryEffectiveStatement.FALSE;
33 static final MandatoryStatement TRUE = new EmptyMandatoryStatement() {
35 public Boolean getValue() {
40 EffectiveStatement<Boolean, MandatoryStatement> toEffective() {
41 return EmptyMandatoryEffectiveStatement.TRUE;
45 private EmptyMandatoryStatement() {
46 // Invisible on purpose
49 abstract EffectiveStatement<Boolean, MandatoryStatement> toEffective();
52 public final Collection<? extends DeclaredStatement<?>> declaredSubstatements() {
53 return Collections.emptyList();
57 public final StatementDefinition statementDefinition() {
58 return Rfc6020Mapping.MANDATORY;
62 public final String rawArgument() {
63 return getValue().toString();
67 public final Boolean argument() {
72 public final StatementSource getStatementSource() {
73 return StatementSource.DECLARATION;
77 public final int hashCode() {
78 return Objects.hash(statementDefinition(), getStatementSource(), argument(),
79 rawArgument(), declaredSubstatements(), getValue());
83 public final boolean equals(final Object obj) {
87 if (!(obj instanceof MandatoryStatement)) {
91 final MandatoryStatement other = (MandatoryStatement) obj;
93 return argument().equals(other.argument()) &&
94 rawArgument().equals(other.rawArgument()) &&
95 getValue().equals(other.getValue()) &&
96 statementDefinition().equals(other.statementDefinition()) &&
97 getStatementSource().equals(other.getStatementSource()) &&
98 declaredSubstatements().equals(other.declaredSubstatements());