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.model.api.stmt;
10 import com.google.common.annotations.Beta;
12 import java.util.function.Predicate;
13 import javax.annotation.Nonnull;
14 import org.opendaylight.yangtools.yang.common.QName;
15 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
18 * Represents YANG if-feature statement.
20 * The "if-feature" statement makes its parent statement conditional.
22 // FIXME: IfFeatureStatement should extend DeclaredStatement<Predicate<Set<QName>>> and
23 // IfFeatureStatementImpl for Yang1.0 reworked to extend AbstractDeclaredStatement<Predicate<Set<QName>>>.
24 public interface IfFeatureStatement extends DeclaredStatement<QName> {
27 * Used in YANG 1.0 (RFC6020) implementation of IfFeatureStatement
28 * where the argument is the name of a feature
29 * as defined by a "feature" statement.
31 * To be replaced by {@link #getIfFeaturePredicate() getIfFeaturePredicate} method.
33 * @return QName object for the feature
36 @Nonnull QName getName();
39 * This method should be overridden for all Yang 1.1 implementation.
40 * The default implementation is only applicable for Yang 1.0 (RFC6020).
42 * In Yang 1.1 (RFC7950) implementation of IfFeatureStatement, the
43 * argument is a boolean expression over feature names defined by
44 * "feature" statements. Hence, add implementation to return a
45 * predicate on a collection of features against which to evaluate.
47 * @return Predicate on a collection of QNames against which to evaluate
50 @Nonnull default Predicate<Set<QName>> getIfFeaturePredicate() {
51 return setQnames -> setQnames.contains(getName());