gpt4 book ai didi

org.onosproject.yang.compiler.linker.impl.YangResolutionInfoImpl类的使用及代码示例

转载 作者:知者 更新时间:2024-03-19 11:47:31 27 4
gpt4 key购买 nike

本文整理了Java中org.onosproject.yang.compiler.linker.impl.YangResolutionInfoImpl类的一些代码示例,展示了YangResolutionInfoImpl类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。YangResolutionInfoImpl类的具体详情如下:
包路径:org.onosproject.yang.compiler.linker.impl.YangResolutionInfoImpl
类名称:YangResolutionInfoImpl

YangResolutionInfoImpl介绍

[英]Represents implementation of resolution object which will be resolved by linker.
[中]表示将由链接器解析的解析对象的实现。

代码示例

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

@Override
public void linkInterFile(YangReferenceResolver dataModelRootNode)
    throws DataModelException {
  curRefResolver = dataModelRootNode;
  // Current node to resolve, it can be a YANG type or YANG uses.
  T entityToResolve = entityToResolveInfo.getEntityToResolve();
  // Check if linking is already done
  if (entityToResolve instanceof Resolvable) {
    Resolvable resolvable = (Resolvable) entityToResolve;
    if (resolvable.getResolvableStatus() == RESOLVED) {
      return;
    }
  } else {
    throw new DataModelException(UNRESOLVABLE);
  }
  if (entityToResolve instanceof YangXPathResolver &&
      !(entityToResolve instanceof YangLeafRef)) {
    //Process x-path linking.
    processXPathLinking(entityToResolve, dataModelRootNode);
  } else {
    // Push the initial entity to resolve in stack.
    addInPartialResolvedStack(entityToResolveInfo);
    // Inter file linking and resolution.
    linkInterFileAndResolve();
    addDerivedRefTypeToRefTypeResolutionList();
  }
}

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

/**
 * Returns if there is any unresolved if-feature in feature.
 *
 * @param node module/submodule node
 */
private void addUnResolvedIfFeatureToStack(YangNode node) {
  YangFeature refFeature = ((YangIfFeature) getCurEntityToResolveFromStack())
      .getReferredFeature();
  List<YangIfFeature> ifFeatureList = refFeature.getIfFeatureList();
  if (ifFeatureList != null && !ifFeatureList.isEmpty()) {
    Iterator<YangIfFeature> ifFeatureIterator = ifFeatureList.iterator();
    while (ifFeatureIterator.hasNext()) {
      addEntityToStack((T) ifFeatureIterator.next(), node);
    }
  }
}

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

throws DataModelException {
YangFeatureHolder featureHolder = getFeatureHolder(ancestorRefNode);
YangNode curRefNode = (YangNode) featureHolder;
if (isReferredNode(curRefNode)) {
  addReferredEntityLink(curRefNode, LINKED);
  addUnresolvedRecursiveReferenceToStack(curRefNode);
  return;
if (getRefPrefix() == null || getRefPrefix()
    .contentEquals(curRefResolver.getPrefix())) {
  ((Resolvable) getCurEntityToResolveFromStack())
      .setResolvableStatus(INTRA_FILE_RESOLVED);

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

private boolean addUnResolvedRefToStack(YangNode linkedNode)
    throws DataModelException {
  // Add the link to external entity.
  addReferredEntityLink(linkedNode, INTER_FILE_LINKED);
  // Add the type/uses of referred typedef/grouping to the stack.
  addUnresolvedRecursiveReferenceToStack(linkedNode);
  return true;
}

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

/**
 * Checks for the referred node defined in a ancestor scope.
 *
 * @param refNode potential referred node
 * @return status of resolution and updating the partial resolved stack with
 * the any recursive references
 * @throws DataModelException a violation of data model rules
 */
private boolean isReferredNodeInSiblingListProcessed(YangNode refNode)
    throws DataModelException {
  while (refNode != null) {
    // Check if the potential referred node is the actual referred node
    if (isReferredNode(refNode)) {
      // Adds reference link of entity to the node under resolution.
      addReferredEntityLink(refNode, LINKED);
      /*
       * resolve the reference and update the partial resolution stack
       * with any further recursive references
       */
      addUnresolvedRecursiveReferenceToStack(refNode);
      /*
       * return true, since the reference is linked and any recursive
       * unresolved references is added to the stack
       */
      return true;
    }
    refNode = refNode.getNextSibling();
  }
  return false;
}

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

((YangAugmentableNode) targetNode).addAugmentation(augment);
    augment.setAugmentedNode(targetNode);
    setAugmentedFlagInAncestors(targetNode);
    Resolvable resolvable = (Resolvable) entityToResolve;
    resolvable.setResolvableStatus(RESOLVED);
    leaf = (YangLeaf) target;
    leafRef.setResolvableStatus(INTER_FILE_LINKED);
    addUnResolvedLeafRefTypeToStack((T) leaf, entityToResolveInfo
        .getHolderOfEntityToResolve());
  } else {
    leafList = (YangLeafList) target;
    leafRef.setResolvableStatus(INTER_FILE_LINKED);
    addUnResolvedLeafRefTypeToStack(
        (T) leafList, entityToResolveInfo.getHolderOfEntityToResolve());
List<YangAtomicPath> path = deviation.getTargetNode();
YangAtomicPath targetPath = path.get(path.size() - 1);
YangSchemaNode target = findDeviationTarget(entityToResolve, root,
                      xPathLinker);
  resolveDeviationNotSupported(target, targetPath);
} else {
  List<YangDeviateAdd> deviateAddList = deviation.getDeviateAdd();
    resolveDeviateAdd(deviateAddList, target, targetPath);
      .getDeviateDelete();
  if (deviateDeleteList != null && !deviateDeleteList.isEmpty()) {

代码示例来源:origin: org.onosproject/onos-yang-compiler-parser

resolutionInfo = new YangResolutionInfoImpl<>(
    idRef, (YangNode) parentNode, errLine, errPos);
addToResolution(resolutionInfo, ctx);

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

T entity = getCurEntityToResolveFromStack();
if (entity instanceof YangType) {
    addEntityToStack((T) ((YangTypeDef) refNode).getTypeDefBaseType(),
             refNode);
  addUnResolvedUsesToStack(refNode);
} else if (entity instanceof YangIfFeature) {
  addUnResolvedIfFeatureToStack(refNode);
} else if (entity instanceof YangLeafRef) {
  addUnResolvedBaseToStack(refNode);
} else {
  throw new DataModelException(getErrorMsg(

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

/**
 * Adds resolvable type (leaf-ref) info to resolution list.
 *
 * @param extType resolvable type
 * @param type    YANG type
 * @param holder  holder node
 * @throws DataModelException if there is a data model error
 */
private void addRefTypeInfo(T extType, YangType<T> type, YangNode holder)
    throws DataModelException {
  type.resetYangType();
  type.setResolvableStatus(RESOLVED);
  type.setDataType(YangDataTypes.LEAFREF);
  type.setDataTypeName(LEAFREF);
  type.setDataTypeExtendedInfo(extType);
  YangLeafRef leafRef = (YangLeafRef) extType;
  (leafRef).setResolvableStatus(UNRESOLVED);
  leafRef.setParentNode(holder);
  YangResolutionInfoImpl info = new YangResolutionInfoImpl<>(
      leafRef, holder, getLineNumber(), getCharPosition());
  curRefResolver.addToResolutionList(info, YANG_LEAFREF);
  curRefResolver.resolveSelfFileLinking(YANG_LEAFREF);
}

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

/**
 * Returns the status of the referred identity found for base/identityref.
 *
 * @param nodeName        the name of the base node
 *                        identifier/identityref node identifier
 * @param ancestorRefNode the parent node of base/identityref
 * @return status of referred base/identityref
 * @throws DataModelException a violation of data model rules
 */
private boolean isIdentityReferenceFound(String nodeName, YangNode ancestorRefNode)
    throws DataModelException {
  // When child is not present return.
  if (ancestorRefNode.getChild() == null) {
    return false;
  }
  ancestorRefNode = ancestorRefNode.getChild();
  // Checks all the siblings under the node and returns the matched node.
  YangNode nodeFound = isReferredNodeInSiblingProcessedForIdentity(ancestorRefNode,
                                   nodeName);
  if (nodeFound != null) {
    // Adds reference link of entity to the node under resolution.
    addReferredEntityLink(nodeFound, LINKED);
    /*
     * resolve the reference and update the partial resolution stack with any further recursive references
     */
    addUnresolvedRecursiveReferenceToStack(nodeFound);
    return true;
  }
  return false;
}

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

@Override
public void resolveLinkingForResolutionInfo(YangReferenceResolver dataModelRootNode)
    throws DataModelException {
  curRefResolver = dataModelRootNode;
/*
   * Current node to resolve, it can be a YANG type, YANG uses or YANG if-feature or
   * YANG leafref or YANG base or YANG identityref.
   */
  T entityToResolve = entityToResolveInfo.getEntityToResolve();
  // Check if linking is already done
  if (entityToResolve instanceof Resolvable) {
    Resolvable resolvable = (Resolvable) entityToResolve;
    if (resolvable.getResolvableStatus() == RESOLVED) {
      /*
       * entity is already resolved, so nothing to do
       */
      return;
    }
  } else {
    throw new DataModelException(LINKER_ERROR);
  }
  // Push the initial entity to resolve in stack.
  addInPartialResolvedStack(entityToResolveInfo);
  linkAndResolvePartialResolvedStack();
  addDerivedRefTypeToRefTypeResolutionList();
}

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

/**
 * Adds leaf-ref to the resolution list, with different context if
 * leaf-ref is defined under derived type. Leaf-ref must be resolved from
 * where the typedef is referenced.
 */
private void addDerivedRefTypeToRefTypeResolutionList()
    throws DataModelException {
  YangNode refNode = entityToResolveInfo.getHolderOfEntityToResolve();
  YangDerivedInfo info = getValidResolvableType();
  if (info == null) {
    return;
  }
  YangType<T> type =
      (YangType<T>) entityToResolveInfo.getEntityToResolve();
  T extType = (T) info.getReferredTypeDef().getTypeDefBaseType()
      .getDataTypeExtendedInfo();
  while (extType instanceof YangDerivedInfo) {
    info = (YangDerivedInfo) extType;
    extType = (T) info.getReferredTypeDef().getTypeDefBaseType()
        .getDataTypeExtendedInfo();
  }
  /*
   * Backup the leaf-ref info from derived type and deletes the derived
   * type info. Copies the backed up leaf-ref data to the actual type in
   * replacement of derived type. Adds to the resolution list in this
   * context.
   */
  addRefTypeInfo(extType, type, refNode);
}

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

T entity = getCurEntityToResolveFromStack();
if (entity instanceof YangType) {
  YangDerivedInfo<?> derivedInfo =
} else if (entity instanceof YangBase) {
  ((YangBase) entity).setReferredIdentity((YangIdentity) refNode);
  addToIdentityExtendList(((YangIdentity) ((YangBase) entity)
      .getParentIdentity()), (YangIdentity) refNode);
} else if (entity instanceof YangIdentityRef) {

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

/**
 * Returns if there is any unresolved base in identity.
 *
 * @param node module/submodule node
 */
private void addUnResolvedBaseToStack(YangNode node) {
  YangIdentity curNode = (YangIdentity) node;
  if (curNode.getBaseNode() != null) {
    if (curNode.getBaseNode().getResolvableStatus() != RESOLVED) {
      addEntityToStack((T) curNode.getBaseNode(), node);
    }
  }
}

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

private void addEntityToStack(T entity, YangNode holder) {
  YangEntityToResolveInfoImpl<T> unResolvedEntityInfo =
      new YangEntityToResolveInfoImpl<>();
  unResolvedEntityInfo.setEntityToResolve(entity);
  unResolvedEntityInfo.setHolderOfEntityToResolve(holder);
  addInPartialResolvedStack(unResolvedEntityInfo);
}

代码示例来源:origin: org.onosproject/onos-yang-compiler-parser

/**
 * Performs validations and update the data model tree when parser exits
 * from grammar rule (augment).
 *
 * @param listener listener's object
 * @param ctx      context object of the grammar rule
 */
public static void processAugmentExit(TreeWalkListener listener,
                   AugmentStatementContext ctx) {
  //Check for stack to be non empty.
  checkStackIsNotEmpty(listener, MISSING_HOLDER, AUGMENT_DATA,
             ctx.augment().getText(), EXIT);
  if (!(listener.getParsedDataStack().peek() instanceof YangAugment)) {
    throw new ParserException(constructListenerErrorMessage(
        MISSING_CURRENT_HOLDER, AUGMENT_DATA,
        ctx.augment().getText(), EXIT));
  }
  YangAugment augment = (YangAugment) listener.getParsedDataStack().pop();
  boolean isDup = isDuplicateNode(augment);
  if (isDup) {
    removeAugment(augment);
  } else {
    Token txt = ctx.getStart();
    YangResolutionInfoImpl<YangAugment> info =
        new YangResolutionInfoImpl<>(augment, augment.getParent(),
                       txt.getLine(),
                       txt.getCharPositionInLine());
    addToResolution(info, ctx);
  }
}

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

addEntityToStack((T) curNode, node);

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

private void addUnResolvedTypeDataToStack(YangType refType, YangNode
    ancestorRefNode, T extendedInfo) {
  YangEntityToResolveInfoImpl<YangLeafRef<?>> unResolvedLeafRef =
      new YangEntityToResolveInfoImpl<>();
  YangEntityToResolveInfoImpl<YangType<?>> unResolvedTypeDef =
      new YangEntityToResolveInfoImpl<>();
  if (refType.getDataType() == YangDataTypes.LEAFREF) {
    unResolvedLeafRef.setEntityToResolve((YangLeafRef<?>) extendedInfo);
    unResolvedLeafRef.setHolderOfEntityToResolve(ancestorRefNode);
    addInPartialResolvedStack((YangEntityToResolveInfoImpl<T>) unResolvedLeafRef);
  } else if (refType.getDataType() == YangDataTypes.DERIVED) {
    unResolvedTypeDef.setEntityToResolve(refType);
    unResolvedTypeDef.setHolderOfEntityToResolve(ancestorRefNode);
    addInPartialResolvedStack((YangEntityToResolveInfoImpl<T>) unResolvedTypeDef);
  }
}

代码示例来源:origin: org.onosproject/onos-yang-compiler-linker

new YangResolutionInfoImpl<>(type, (YangNode) leavesHolder,
                   type.getLineNumber(), type.getCharPosition());
try {
    new YangResolutionInfoImpl<>(identityRef, (YangNode) leavesHolder,
                          identityRef.getLineNumber(),
                          identityRef.getCharPosition());
    new YangResolutionInfoImpl<>(type, (YangNode) leavesHolder,
                       type.getLineNumber(), type.getCharPosition());
try {
    new YangResolutionInfoImpl<>(identityRef, (YangNode) leavesHolder,
                          identityRef.getLineNumber(),
                          identityRef.getCharPosition());

代码示例来源:origin: org.onosproject/onos-yang-compiler-parser

new YangResolutionInfoImpl<YangLeafRef>(leafRef, (YangNode) parentNodeOfLeaf,
                        errorLine, errorPosition);
addToResolutionList(resolutionInfo);
    new YangResolutionInfoImpl<YangLeafRef>(leafRef, (YangNode) parentNodeOfLeafList,
                        errorLine, errorPosition);
addToResolutionList(resolutionInfoImpl);

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com