public class NavuContainer extends NavuNode implements MaapiDiffIterate
NavuContainer is a representation of the yang
construct container,module and list-entry.
A NavuContainer is usually supplied or returned from
a method call. It can also be created using one of its constructors,
typically NavuContainer(NavuContext).
A NavuContainer is created with a NavuContext
initialized with a Maapi socket:
NavuContext context = new NavuContext(maapi); context.startRunningTrans(Conf.MODE_READ_WRITE); NavuContainer root = new NavuContainer(context);
As shown above, a transaction must be started before the context can be used for navigating.
A transaction can alternatively be started for operational data instead:
NavuContext context = new NavuContext(maapi); context.startOperationalTrans(Conf.MODE_READ_WRITE); NavuContainer root = new NavuContainer(context);
Either way, when a NavuContainer is created using the above
mentioned context, the object pointed to by root is the "root"
of the NAVU-Tree.
The root's children represent all of the loaded modules. To
choose a particular module, the method NavuContainer.container(Integer)
must be called with the hash value of the corresponding module
(ConfNamespace.hash()).
This will return a new NavuContainer pointing to the root of
the chosen module.
NavuContainer module = root.container(new Ncs().hash());
To continue further down to the next child, use
NavuContainer.container(Integer), NavuContainer.container(String),
NavuContainer.list(Integer), NavuContainer.list(String) or NavuContainer.leaf(Integer),
NavuContainer.leaf(String) as dictated by the YANG model.
The string version is the corresponding
MaapiSchemas.hashToString(long) of the Integer parameter
which is the hash value of the tag name.
Usually the generated namespace classes static method are used for convenience. The absence of underscore (_) at the end of the static field name indicates the integer version.
Then continuing with the devices node:
NavuContainer devicesNode = module.container(Ncs._devices);
| Constructor and Description |
|---|
NavuContainer()
This constructor creates a root container.
|
NavuContainer(Cdb cdb,
int hash)
Deprecated.
|
NavuContainer(Maapi m,
int handle,
int rootHash)
Constructor for a single namespace.
|
NavuContainer(Maapi readWrite,
int readWriteTid,
Maapi readOnly,
int readOnlyTid,
int rootHash)
Deprecated.
|
NavuContainer(NavuContext context)
Creates an root
NavuContainer a starting point of
which further navigation is performed. |
| Modifier and Type | Method and Description |
|---|---|
NavuAction |
action(Integer key)
Returns a reference to a subordinate
action with
the hash value key. |
NavuAction |
action(String key)
Returns a reference to a subordinate
action with
the name key. |
Collection<NavuNode> |
children()
Returns a collection containing the children of this container.
|
NavuChoice |
choice(String name)
Returns a reference to a subordinate
choice with
the name name. |
NavuContainer |
container(ConfNamespace ns,
String containerName)
Returns a reference to a subordinate
container with
the name containerName, belonging to the namespace
ns. |
NavuContainer |
container(Integer key)
Returns a reference to a subordinate
container with
the hash value key. |
NavuContainer |
container(String key)
Returns a reference to a subordinate
container with
the name key. |
NavuContainer |
container(String prefix,
String key)
Deprecated.
|
boolean |
containsNode(NavuNode node)
Checks if the given node is a direct child of this container according
to the schema.
|
boolean |
containsNode(String nodeName)
Checks if there is a child node in the schema with given name.
|
NavuContainer |
create()
Creates an optional container.
|
NavuContainer |
delete()
Deletes an optional container.
|
List<ConfXMLParam> |
encodeValues()
Encodes the sub-tree including the current
NavuNode
as the topmost NavuNode as a ConfXMLParam array. |
List<ConfXMLParam> |
encodeXML()
Encodes the sub-tree including the current
NavuNode
as the topmost NavuNode as a ConfXMLParam array. |
Set<Map.Entry<String,NavuNode>> |
entrySet()
Returns a set of value-pairs.
|
boolean |
equals(Object o)
Compares the specified object with this
NavuContainer
for equality. |
boolean |
exists()
Verifies the existence of container.
|
Map<ConfKey,NavuChange> |
findChanges(Integer[] criteria)
Deprecated.
|
Map<ConfKey,NavuChange> |
findChanges(NavuContext delContext,
Integer[] criteria)
Analyzes what changes has been done within this
transaction.
|
NavuNode |
get(String nodeName)
Returns a subordinate node with the name
nodeName. |
ConfKey |
getKey()
If this container is a list instance this method
can be used to get the list entry key.
|
ConfNamespace |
getRootNS()
Returns the root namespace of the topmost ancestor.
|
List<NavuChoice> |
getSelectCaseAsNavuChoice(String choice)
Returns a collection of the "toplevel" choice elements of
the a current selected case.
|
List<NavuNode> |
getSelectCaseAsNavuNode(String choice)
Returns a collection of the top-level node elements of
the currently selected case of the specified
choice. |
MaapiSchemas.CSCase |
getSelectedCase(String choice)
Returns the selected cases of a given choice.
|
int |
getUserSession()
Get the current Maapi user session if this container context uses
Maapi.
|
boolean |
isEmpty()
Checks if the container has any members.
|
boolean |
isListInstance()
Returns
true if this NavuContainer
represents a list-entry |
DiffIterateResultFlag |
iterate(ConfObject[] kp,
DiffIterateOperFlag op,
ConfObject oldValue,
ConfObject newValue,
Object state) |
Set<String> |
keySet()
Returns a set of nodeNames.
|
NavuLeaf |
leaf(ConfNamespace ns,
String leafName)
Returns a reference to a subordinate
leaf with
the name leafName, belonging to the namespace
ns. |
NavuLeaf |
leaf(Integer key)
Returns a reference to a subordinate
leaf with
the hash value key. |
NavuLeaf |
leaf(String key)
Returns a reference to a subordinate
leaf with
the name key. |
NavuLeaf |
leaf(String prefix,
String key)
Deprecated.
|
NavuLeafList |
leafList(ConfNamespace ns,
String leafListName)
Returns a reference to a subordinate
leaf-list with
the name leafListName, belonging to the namespace
ns. |
NavuLeafList |
leafList(Integer key)
Returns a reference to a subordinate
leaf-list with
the hash value key. |
NavuLeafList |
leafList(String key)
Returns a reference to a subordinate
leaf-list with
the name key. |
NavuLeafList |
leafList(String prefix,
String key)
Deprecated.
|
NavuList |
list(ConfNamespace ns,
String listName)
Returns a reference to a subordinate
list with
the name listName, belonging to the namespace
ns. |
NavuList |
list(Integer key)
Returns a reference to a subordinate
list with the
hash value key. |
NavuList |
list(String key)
Returns a reference to a subordinate
list with
the name key. |
NavuList |
list(String prefix,
String key)
Deprecated.
|
NavuContainer |
namespace(String ns)
The namespace specified here will be used when selecting a child
to this NavuContainer and returns a reference to this NavuContainer
object according to the given namespace id
ns. |
void |
reset()
Resets the contained nodes
|
NavuContainer |
safeCreate()
Creates an optional container.
|
Collection<NavuNode> |
select(ConfObject[] kp) |
Collection<NavuNode> |
select(List<String> path) |
Collection<NavuNode> |
select(String path) |
void |
set(String xml)
Deprecated.
|
NavuNode |
setChange(List<ConfObject> path,
DiffIterateOperFlag op,
ConfValue oldValue,
NavuContext delContext) |
NavuContainer |
setOperationalDataCase(String choiceStr,
String caseStr)
Deprecated.
Use the method
NavuContainer.setOperDataCase(String , String) |
void |
setOperDataCase(String choiceStr,
String caseStr)
Set a case with the name
caseStr for a choice
choiceStr for Cdb when writing operational data. |
NavuContainer |
sharedCreate()
Creates an optional container.
|
int |
size()
Returns the number of nodes contained by the container.
|
String |
toString() |
void |
valueUpdateInd(NavuNode child)
An indication received from a child node.
|
context, getCdbSession, getChange, getChangeFlag, getChanges, getChanges, getChanges, getChanges, getChanges, getChanges, getConfPath, getInfo, getKeyPath, getName, getNavuNode, getParent, getValues, getValues, getXml, hashCode, prepareXMLCall, setValues, setValues, sharedSetValues, sharedSetValues, startCdbSession, stopCdbSession, xPathSelect, xPathSelectIteratepublic NavuContainer()
public NavuContainer(NavuContext context)
NavuContainer a starting point of
which further navigation is performed.context - determines the Navigation restriction and
constraintspublic NavuContainer(Maapi m, int handle, int rootHash)
m - READ or READ_WRITE MAAPI sockethandle - a valid transaction handlerootHash - the root hash of the module@Deprecated public NavuContainer(Maapi readWrite, int readWriteTid, Maapi readOnly, int readOnlyTid, int rootHash)
readWrite - MAAPI socket to perform changes onreadWriteTid - READ/WRITE transaction handle to use for
READ/WRITE operationsreadOnly - MAAPI socket to the RUNNING datastorereadOnlyTid - READ transaction handle to use when readingrootHash - root hash of the module@Deprecated public NavuContainer(Cdb cdb, int hash)
NavuContainer that will be able to
connect to the Cdb database to retrieve config and
operational data.cdb - The CDB instance to use for read/write operationshash - Namespace hash integer value representation of the
modulepublic NavuContainer namespace(String ns) throws ConfException, IOException
ns.namespace in class NavuNodens - the namespace idConfExceptionIOExceptionpublic NavuContainer container(Integer key) throws NavuException
container with
the hash value key.
The container hash value can be obtained as a constant
from a namespace file generated by confdc or
ncsc, or retrieved with one of the methods
ConfNamespace.stringToHash(String) or
MaapiSchemas.stringToHash(String). It is also possible to access
a container based on its name only, using the overloaded method
NavuContainer.container(String).container in class NavuNodekey - hashed name of the container to returnNavuException - if the corresponding subordinate node is not
a container or if there is no subordinate node
with the hash value keypublic NavuContainer container(String key) throws NavuException
container with
the name key.container in class NavuNodekey - the name of the subordinate containerNavuException - if the corresponding subordinate node is not
a container node or if there is no subordinate node
with the name keypublic NavuContainer container(ConfNamespace ns, String containerName) throws NavuException
Returns a reference to a subordinate container with
the name containerName, belonging to the namespace
ns.
Note that if containerName by itself uniquely identifies a
subordinate container, that container will still have to belong to the
namespace ns contrary to the functionality of the previous
method using prefix and containerName.
container in class NavuNodens - the namespace objectcontainerName - the name of the subordinate containerNavuException - if the corresponding subordinate node is not
a container node or if there is no subordinate node
with the name containerName in the namespace
ns@Deprecated public NavuContainer container(String prefix, String key) throws NavuException
NavuContainer.container(ConfNamespace, String)
or #namespace(String).container(String) instead.container in class NavuNodeNavuExceptionpublic NavuLeaf leaf(Integer key) throws NavuException
leaf with
the hash value key.leaf in class NavuNodekey - hashed name of the subordinate leafNavuException - if the corresponding subordinate node is not
a leaf node or if there is no subordinate node
with the hash value keypublic NavuLeaf leaf(String key) throws NavuException
leaf with
the name key.leaf in class NavuNodekey - the name of the subordinate leafNavuException - if the corresponding subordinate node is not
a leaf node or if there is no subordinate node
with the name keypublic NavuLeaf leaf(ConfNamespace ns, String leafName) throws NavuException
Returns a reference to a subordinate leaf with
the name leafName, belonging to the namespace
ns.
Note that if leafName by itself uniquely identifies a
subordinate leaf, that leaf will still have to belong to the
namespace ns contrary to the functionality of the previous
method using prefix and leafName.
leaf in class NavuNodens - the namespace objectleafName - the name of the subordinate leafNavuException - if the corresponding subordinate node is not
a leaf node or if there is no subordinate node
with the name key in the namespace
ns@Deprecated public NavuLeaf leaf(String prefix, String key) throws NavuException
NavuContainer.leaf(ConfNamespace, String)
or #namespace(String).leaf(String) instead.leaf in class NavuNodeNavuExceptionpublic NavuLeafList leafList(Integer key) throws NavuException
leaf-list with
the hash value key.leafList in class NavuNodekey - hashed name of the subordinate leaf-listNavuException - if the corresponding subordinate node is not
a leaf-list node or if there is no subordinate node
with the hash value keypublic NavuLeafList leafList(String key) throws NavuException
leaf-list with
the name key.leafList in class NavuNodekey - the name of the subordinate leaf-listNavuException - if the corresponding subordinate node is not
a leaf-list node or if there is no subordinate node
with the name keypublic NavuLeafList leafList(ConfNamespace ns, String leafListName) throws NavuException
Returns a reference to a subordinate leaf-list with
the name leafListName, belonging to the namespace
ns.
Note that if leafListName by itself uniquely identifies a
subordinate leaf-list, that leaf-list will still have to belong to the
namespace ns contrary to the functionality of the previous
method using prefix and leafListName.
leafList in class NavuNodens - the namespace objectleafListName - the name of the subordinate leaf-listNavuException - if the corresponding subordinate node is not
a leaf-list node or if there is no subordinate node
with the name leafListName in the namespace
ns@Deprecated public NavuLeafList leafList(String prefix, String key) throws NavuException
NavuContainer.leafList(ConfNamespace, String)
or #namespace(String).leafList(String) instead.leafList in class NavuNodeNavuExceptionpublic NavuList list(Integer key) throws NavuException
list with the
hash value key.list in class NavuNodekey - the hashed name of the subordinate listNavuException - if the corresponding subordinate node is not
a list node or if there is no subordinate node
with the hash value keypublic NavuList list(String key) throws NavuException
list with
the name key.list in class NavuNodekey - the name of the subordinate listNavuException - if the corresponding subordinate node is not
a list node or if there is no subordinate node
with the name keypublic NavuList list(ConfNamespace ns, String listName) throws NavuException
Returns a reference to a subordinate list with
the name listName, belonging to the namespace
ns.
Note that if listName by itself uniquely identifies a
subordinate list, that list will still have to belong to the
namespace ns contrary to the functionality of the previous
method using prefix and listName.
list in class NavuNodens - the namespace objectlistName - the name of the subordinate listNavuException - if the corresponding subordinate node is not
a list node or if there is no subordinate node
with the name listName in the namespace
ns@Deprecated public NavuList list(String prefix, String key) throws NavuException
NavuContainer.list(ConfNamespace, String)
or #namespace(String).list(String) instead.list in class NavuNodeNavuExceptionpublic NavuAction action(Integer key) throws NavuException
action with
the hash value key.key - the name of the subordinate actionNavuException - if the corresponding subordinate node is not
an action node or if there is no subordinate node
with the hash value keypublic NavuAction action(String key) throws NavuException
action with
the name key.key - the name of the subordinate actionNavuException - if the corresponding subordinate node is not
a action node or if there is no subordinate node
with the name keypublic boolean isListInstance()
true if this NavuContainer
represents a list-entrytrue if this NavuContainer
is a list-entry false otherwisepublic ConfKey getKey()
public Collection<NavuNode> children() throws NavuException
children in class NavuNodeNavuExceptionpublic NavuChoice choice(String name) throws NavuException
choice with
the name name.name - the name of the choice to returnNavuExceptionpublic boolean containsNode(NavuNode node) throws NavuException
node - node is a child of this containerNavuExceptionpublic boolean containsNode(String nodeName) throws NavuException
nodeName - the name of a node to look forNavuExceptionpublic NavuContainer create() throws NavuException
NavuExceptionpublic NavuContainer safeCreate() throws NavuException
NavuExceptionpublic NavuContainer sharedCreate() throws NavuException
Will silently ignore the error when the container is not a presence container. It will also maintain a counter (as an attribute) counting how many times the same containers has been created. This makes this method very useful for NCS fastmap users where sometimes we wish to create services where multiple service instances share the seam structure. Furthermore, and attribute "Backpointer" will be created on the created container indicating which "service" created the object
NavuExceptionpublic boolean exists()
throws NavuException
exists in class NavuNodeNavuExceptionpublic NavuContainer delete() throws NavuException
NavuExceptionpublic List<ConfXMLParam> encodeXML() throws NavuException
NavuNodeNavuNode
as the topmost NavuNode as a ConfXMLParam array.
The returned ConfXMLParam array contains no values except
for list keys. The leaf elements are encoded as ConfXMLParamLeaf.
Therefore, the returning array can be used as a the input parameter
to NavuNode.getValues(ConfXMLParam[]) on the current node's parent.
NavuNode node = ...; ConfXMLParam[] cxa = node.encodeXML().toArray(new ConfXMLParam[0]); // cxa contains a structure that does not contain values except for // keys in list elements NavuNode parent = node.getParent(); ConfXMLParam[] cxb = parent.getValues(cxa); // cxb contains the same sub-tree with all the values
encodeXML in class NavuNodeConfXMLParam objects corresponding to the
sub-tree of this node, with no values except list keys.NavuExceptionConfXMLParam,
ConfXMLParamValuepublic List<ConfXMLParam> encodeValues() throws NavuException
NavuNodeNavuNode
as the topmost NavuNode as a ConfXMLParam array.
As opposed to NavuNode.encodeXML(), the returned ConfXMLParam
array does contain values in the form of ConfXMLParamValue
encodeValues in class NavuNodeConfXMLParam objects corresponding to the
sub-tree of this node, including all values.NavuExceptionConfXMLParam,
ConfXMLParamValuepublic Set<Map.Entry<String,NavuNode>> entrySet() throws NavuException
NavuExceptionpublic Map<ConfKey,NavuChange> findChanges(NavuContext delContext, Integer[] criteria) throws NavuException
The delContext is a NavuContext with a read transaction
on the running database to read deletes. If null delete changes will not
be able to be retrieved.
delContext - NavuContext to retrieve deleted values with.criteria - a list hash values representing a search
path. The first element is the module name hash. The analysis
will be started at the end of the list. List elements are
represented by 0.IOExceptionConfExceptionNavuException@Deprecated public Map<ConfKey,NavuChange> findChanges(Integer[] criteria) throws NavuException
NavuContainer.findChanges(NavuContext, Integer[])NavuExceptionpublic NavuNode get(String nodeName) throws NavuException
nodeName.nodeName - a name of a node contained within this container.NavuException - if subordinate node has no matching container
with the name nodeNamepublic MaapiSchemas.CSCase getSelectedCase(String choice) throws NavuException
choice - of the choice to get selected case for.NavuExceptionpublic List<NavuNode> getSelectCaseAsNavuNode(String choice) throws NavuException
choice.
Returns null if no case is selected for the specified
choice or if the selected case contains no nodes.
Which of the subclasses NavuContainer, NavuList or NavuLeaf that actually constitute this case is defined by the model or has to be tested.
choice - the choice name to get selected case forNavuException - if this container does not contains the
choice with the specified name choicepublic List<NavuChoice> getSelectCaseAsNavuChoice(String choice) throws NavuException
choice - the choice name to get selected case forNavuException - if this container does not contains the
choice with the specified name choicepublic boolean isEmpty()
throws NavuException
NavuExceptionpublic DiffIterateResultFlag iterate(ConfObject[] kp, DiffIterateOperFlag op, ConfObject oldValue, ConfObject newValue, Object state)
iterate in interface MaapiDiffIteratepublic Set<String> keySet() throws NavuException
NavuExceptionpublic int getUserSession()
throws NavuException
NavuExceptionpublic Collection<NavuNode> select(List<String> path) throws NavuException
select in class NavuNodepath - a list of regular expression.NavuExceptionpublic Collection<NavuNode> select(String path) throws NavuException
select in class NavuNodepath - a "/" separated regular expression.NavuExceptionpublic NavuNode setChange(List<ConfObject> path, DiffIterateOperFlag op, ConfValue oldValue, NavuContext delContext) throws NavuException
setChange in class NavuNodeNavuExceptionpublic int size()
throws NavuException
NavuExceptionpublic void valueUpdateInd(NavuNode child) throws NavuException
valueUpdateInd in class NavuNodechild - the child node doing the update.NavuExceptionpublic Collection<NavuNode> select(ConfObject[] kp) throws NavuException
select in class NavuNodeNavuExceptionpublic ConfNamespace getRootNS()
NavuNode@Deprecated public void set(String xml) throws NavuException
NavuNode.setValues(String) instead.xml - -
XML structure corresponding values that will be set.NavuException@Deprecated public NavuContainer setOperationalDataCase(String choiceStr, String caseStr) throws NavuException
NavuContainer.setOperDataCase(String , String)choiceStr - name of the choicecaseStr - name of the case to set as selected caseNavuExceptionpublic void setOperDataCase(String choiceStr, String caseStr) throws NavuException
caseStr for a choice
choiceStr for Cdb when writing operational data.
There is a difference in how cases for a choice is set in a Maapi context
and a Cdb context. In Maapi, when writing configuration data,
the cases are set implicitly as any leaf are
set below a choice in the model tree. For Cdb, when writing operational
data, this case has to be set explicitly. This is done using this method.
The method returns a NavuContainer representing the selected case which
can be used to navigate down the model tree.choiceStr - name of the choicecaseStr - name of the case to set as selected caseNavuException - If the caseStr could not be setpublic boolean equals(Object o)
NavuContainer
for equality. Returns true if the specified object
is also a NavuContainer and either of the following
is true:
NavuNodeInfo.isModule())
and they have the same namespace URI.
ConfPath
instances.