blob: fa0d8824ed1d14811986d45260b3e92d8065a119 [file] [log] [blame]
/*
* Copyright 2016-present Open Networking Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.yms.app.ydt;
import org.onosproject.yangutils.datamodel.YangSchemaNode;
import org.onosproject.yms.ydt.YdtContext;
import org.onosproject.yms.ydt.YdtContextOperationType;
import java.util.List;
/**
* Abstraction of an entity which represents YANG application data tree context
* information. This context information will be used by protocol to obtain
* the information associated with YDT application node. This is used when
* protocol is walking the application data tree in both visitor and listener
* mechanism.
*/
public interface YdtAppContext {
/**
* Returns the context of parent node.
*
* @return context of parent node
*/
YdtAppContext getParent();
/**
* Sets the context of parent node.
*
* @param parent node
*/
void setParent(YdtAppContext parent);
/**
* Returns the context of first child.
*
* @return context of first child
*/
YdtAppContext getFirstChild();
/**
* Returns the context of last child.
*
* @return context of last child
*/
YdtAppContext getLastChild();
/**
* Returns the context of next sibling.
*
* @return context of next sibling
*/
YdtAppContext getNextSibling();
/**
* Sets the context of next sibling.
*
* @param nextSibling node
*/
void setNextSibling(YdtAppContext nextSibling);
/**
* Returns the context of previous sibling.
*
* @return context of previous sibling
*/
YdtAppContext getPreviousSibling();
/**
* Sets the context of previous sibling.
*
* @param preSibling node
*/
void setPreviousSibling(YdtAppContext preSibling);
/**
* Returns the app tree operation type.
*
* @return app tree operation type
*/
YdtAppNodeOperationType getOperationType();
/**
* Set the app tree operation type.
*
* @param opType app tree operation type
*/
void setOperationType(YdtAppNodeOperationType opType);
/**
* Returns the list of nodes with operation type delete.
*
* @return list of nodes with operation type delete
*/
List<YdtContext> getDeleteNodes();
/**
* Adds the ydt node with operation type delete in module delete node list.
*
* @param node ydt node with operation type delete/remove
*/
void addDeleteNode(YdtNode node);
/**
* Returns application's root ydtContext.
*
* @return YdtContext of application root node
*/
YdtContext getModuleContext();
/**
* Returns the YangSchemaNode of augmenting application.
*
* @return YangSchemaNode of augmenting application
*/
YangSchemaNode getAugmentingSchemaNode();
/**
* Sets the YangSchemaNode of augmenting application root node.
*
* @param schemaNode YangSchemaNode of augmenting application module
*/
void setAugmentingSchemaNode(YangSchemaNode schemaNode);
/**
* Adds a last child to ydt application data tree.
*
* @param newChild name of child to be added
*/
void addChild(YdtAppContext newChild);
/**
* Updates the app tree operation type.
* <p>
* If earlier operation type was OTHER_EDIT and now operation type came as
* DELETE_ONLY or vice-versa, then update operation type to BOTH.
*
* @param opType ydt current context operation type
*/
void updateAppOperationType(YdtContextOperationType opType);
/**
* Sets the application data for given request. If in requested parameters
* schemaNode is not null then appData will be set with
* augmentedSchemaData else with moduleSchemaData object.
*
* @param moduleNode module node of requested app
* @param schemaNode augmented schema node of requested context
*/
void setAppData(YdtNode moduleNode, YangSchemaNode schemaNode);
/**
* Returns the app data for current context.
*
* @return app data
*/
AppData getAppData();
/**
* Returns the yang schema for requested node.
*
* @return schema node
*/
YangSchemaNode getYangSchemaNode();
}