af6eeaa91098ac01549f678b43961fc124a0ef88
[yangtools.git] / yang / yang-data-api / src / main / java / org / opendaylight / yangtools / yang / data / api / schema / LeafSetEntryNode.java
1 /*
2  * Copyright (c) 2014 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.data.api.schema;
9
10 import org.opendaylight.yangtools.yang.data.api.AttributesContainer;
11 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
12
13 /**
14  *
15  * Leaf node with multiplicity 0...n
16  *
17  * Leaf node has a value, but no child nodes in the data tree, schema
18  * for leaf node and its value is described by
19  * {@link org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode}.
20  *
21  * @param <T>
22  *            Value type
23  */
24 public interface LeafSetEntryNode<T> extends AttributesContainer, NormalizedNode<NodeWithValue, T> {
25
26     /**
27      * Returns {@link NodeWithValue} which identifies this leaf set entry.
28      *
29      * Returned {@link NodeWithValue} contains same value as this node.
30      *
31      * <h3>Implementation notes</h3> Invocation of
32      * {@link NodeWithValue#getValue()} on returned instance of
33      * {@link NodeWithValue} must returns
34      * same value as invocation of {@link #getValue()}, such as
35      * following condition is allways met:
36      * <code>true == this.getIdentifier().getValue().equals(this.getValue())</code>
37      *
38      *
39      * @return {@link NodeWithValue} which identifies this leaf set entry.
40      */
41     @Override
42     NodeWithValue getIdentifier();
43
44     /**
45      *
46      * Returns value of this leaf node
47      *
48      * <h3>Implementation notes</h3> Invocation of {@link #getValue()} must
49      * provides same value as value in {@link #getIdentifier()}.
50      * <code>true == this.getIdentifier().getValue().equals(this.getValue())</code>
51      *
52      * @return Returned value of this leaf node. Value SHOULD meet criteria
53      *         defined by schema.
54      *
55      */
56     @Override
57     T getValue();
58 }