org.opendaylight.controller.netconf.util.xml.XmlElement.getDomElement()方法的使用及代码示例

x33g5p2x  于2022-02-03 转载在 其他  
字(11.1k)|赞(0)|评价(0)|浏览(115)

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

XmlElement.getDomElement介绍

暂无

代码示例

代码示例来源:origin: org.opendaylight.controller/netconf-util

public static String toString(final XmlElement xmlElement) {
  return toString(xmlElement.getDomElement(), false);
}

代码示例来源:origin: org.opendaylight.controller/mdsal-netconf-connector

private ModifyAction getDefaultOperation(final XmlElement operationElement) throws NetconfDocumentedException {
  final NodeList elementsByTagName = operationElement.getDomElement().getElementsByTagName(DEFAULT_OPERATION_KEY);
  if(elementsByTagName.getLength() == 0) {
    return ModifyAction.MERGE;
  } else if(elementsByTagName.getLength() > 1) {
    throw new NetconfDocumentedException("Multiple " + DEFAULT_OPERATION_KEY + " elements",
        ErrorType.rpc, ErrorTag.unknown_attribute, ErrorSeverity.error);
  } else {
    return ModifyAction.fromXmlValue(elementsByTagName.item(0).getTextContent());
  }
}

代码示例来源:origin: org.opendaylight.controller/netconf-testtool

@Override
protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) throws NetconfDocumentedException {
  final Element element = XmlUtil.createElement(document, XmlNetconfConstants.DATA_KEY, Optional.<String>absent());
  for(final XmlElement e : storage.getConfigList()) {
    final Element domElement = e.getDomElement();
    element.appendChild(element.getOwnerDocument().importNode(domElement, true));
  }
  return element;
}

代码示例来源:origin: org.opendaylight.controller/netconf-testtool

@Override
protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) throws NetconfDocumentedException {
  final Element element = XmlUtil.createElement(document, XmlNetconfConstants.DATA_KEY, Optional.<String>absent());
  for(final XmlElement e : storage.getConfigList()) {
    final Element domElement = e.getDomElement();
    element.appendChild(element.getOwnerDocument().importNode(domElement, true));
  }
  return element;
}

代码示例来源:origin: org.opendaylight.controller/netconf-notifications-impl

private static Element getPlaceholder(final Document innerResult)
    throws NetconfDocumentedException {
  final XmlElement rootElement = XmlElement.fromDomElementWithExpected(
      innerResult.getDocumentElement(), XmlNetconfConstants.RPC_REPLY_KEY, XmlNetconfConstants.RFC4741_TARGET_NAMESPACE);
  return rootElement.getOnlyChildElement(XmlNetconfConstants.DATA_KEY).getDomElement();
}

代码示例来源:origin: org.opendaylight.controller/netconf-impl

private static Document filtered(XmlElement filter, Document originalReplyDocument) throws NetconfDocumentedException {
  Document result = XmlUtil.newDocument();
  // even if filter is empty, copy /rpc/data
  Element rpcReply = originalReplyDocument.getDocumentElement();
  Node rpcReplyDst = result.importNode(rpcReply, false);
  result.appendChild(rpcReplyDst);
  XmlElement dataSrc = XmlElement.fromDomElement(rpcReply).getOnlyChildElement("data", XmlNetconfConstants.RFC4741_TARGET_NAMESPACE);
  Element dataDst = (Element) result.importNode(dataSrc.getDomElement(), false);
  rpcReplyDst.appendChild(dataDst);
  addSubtree(filter, dataSrc, XmlElement.fromDomElement(dataDst));
  return result;
}

代码示例来源:origin: org.opendaylight.controller/netconf-impl

private Element getConfigSnapshot(final NetconfOperationRouter opRouter) throws NetconfDocumentedException {
  final Document responseDocument = opRouter.onNetconfMessage(
      getConfigMessage, null);
  XmlElement dataElement;
  XmlElement xmlElement = XmlElement.fromDomElementWithExpected(responseDocument.getDocumentElement(),
      XmlNetconfConstants.RPC_REPLY_KEY, XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0);
  dataElement = xmlElement.getOnlyChildElement(XmlNetconfConstants.DATA_KEY);
  return dataElement.getDomElement();
}

代码示例来源:origin: org.opendaylight.controller/netconf-testtool

.fromDomElement(ncAllFeatureDefinition)
  .getChildElements("configfile")) {
ncAllFeatureDefinition.removeChild(configfile.getDomElement());

代码示例来源:origin: org.opendaylight.controller/mdsal-netconf-connector

private Datastore extractTargetParameter(final XmlElement operationElement) throws NetconfDocumentedException {
  final NodeList elementsByTagName = operationElement.getDomElement().getElementsByTagName(TARGET_KEY);
  // Direct lookup instead of using XmlElement class due to performance
  if (elementsByTagName.getLength() == 0) {
    throw new NetconfDocumentedException("Missing target element", ErrorType.rpc, ErrorTag.missing_attribute, ErrorSeverity.error);
  } else if (elementsByTagName.getLength() > 1) {
    throw new NetconfDocumentedException("Multiple target elements", ErrorType.rpc, ErrorTag.unknown_attribute, ErrorSeverity.error);
  } else {
    final XmlElement targetChildNode = XmlElement.fromDomElement((Element) elementsByTagName.item(0)).getOnlyChildElement();
    return Datastore.valueOf(targetChildNode.getName());
  }
}

代码示例来源:origin: org.opendaylight.controller/netconf-impl

private static MatchingResult addSubtree2(XmlElement filter, XmlElement src, XmlElement dstParent) throws NetconfDocumentedException {
  Document document = dstParent.getDomElement().getOwnerDocument();
  MatchingResult matches = matches(src, filter);
  if (matches != MatchingResult.NO_MATCH && matches != MatchingResult.CONTENT_MISMATCH) {
    Element copied = (Element) document.importNode(src.getDomElement(), filterHasChildren == false);
    boolean shouldAppend = filterHasChildren == false;
    if (filterHasChildren) { // this implies TAG_MATCH
        copied = (Element) document.importNode(src.getDomElement(), true);
      dstParent.getDomElement().appendChild(copied);

代码示例来源:origin: org.opendaylight.controller/sal-netconf-connector

@Override
public synchronized DOMNotification toNotification(final NetconfMessage message) {
  final Map.Entry<Date, XmlElement> stripped = stripNotification(message);
  final QName notificationNoRev;
  try {
    notificationNoRev = QName.create(stripped.getValue().getNamespace(), stripped.getValue().getName()).withoutRevision();
  } catch (final MissingNameSpaceException e) {
    throw new IllegalArgumentException("Unable to parse notification " + message + ", cannot find namespace", e);
  }
  final Collection<NotificationDefinition> notificationDefinitions = mappedNotifications.get(notificationNoRev);
  Preconditions.checkArgument(notificationDefinitions.size() > 0,
      "Unable to parse notification %s, unknown notification. Available notifications: %s", notificationDefinitions, mappedNotifications.keySet());
  // FIXME if multiple revisions for same notifications are present, we should pick the most recent. Or ?
  // We should probably just put the most recent notification versions into our map. We can expect that the device sends the data according to the latest available revision of a model.
  final NotificationDefinition next = notificationDefinitions.iterator().next();
  // We wrap the notification as a container node in order to reuse the parsers and builders for container node
  final ContainerSchemaNode notificationAsContainerSchemaNode = NetconfMessageTransformUtil.createSchemaForNotification(next);
  final ContainerNode content = parserFactory.getContainerNodeParser().parse(Collections.singleton(stripped.getValue().getDomElement()),
      notificationAsContainerSchemaNode);
  return new NetconfDeviceNotification(content, stripped.getKey());
}

代码示例来源:origin: org.opendaylight.controller/mdsal-netconf-connector

/**
 * Parses xml element rpc input into normalized node or null if rpc does not take any input
 * @param oElement rpc xml element
 * @param input input container schema node, or null if rpc does not take any input
 * @return parsed rpc into normalized node, or null if input schema is null
 */
@Nullable
private NormalizedNode<?, ?> rpcToNNode(final XmlElement oElement, @Nullable final ContainerSchemaNode input) {
  return input == null ? null : DomToNormalizedNodeParserFactory
      .getInstance(DomUtils.defaultValueCodecProvider(), schemaContext.getCurrentContext())
      .getContainerNodeParser()
      .parse(Collections.singletonList(oElement.getDomElement()), input);
}

代码示例来源:origin: org.opendaylight.controller/mdsal-netconf-connector

private NormalizedNode filterToNormalizedNode(XmlElement element, DataSchemaNode schemaNode) throws NetconfDocumentedException {
  DomToNormalizedNodeParserFactory parserFactory = DomToNormalizedNodeParserFactory
      .getInstance(DomUtils.defaultValueCodecProvider(), schemaContext.getCurrentContext());
  final NormalizedNode parsedNode;
  if (schemaNode instanceof ContainerSchemaNode) {
    parsedNode = parserFactory.getContainerNodeParser().parse(Collections.singletonList(element.getDomElement()), (ContainerSchemaNode) schemaNode);
  } else if (schemaNode instanceof ListSchemaNode) {
    parsedNode = parserFactory.getMapNodeParser().parse(Collections.singletonList(element.getDomElement()), (ListSchemaNode) schemaNode);
  } else {
    throw new NetconfDocumentedException("Schema node of the top level element is not an instance of container or list",
        ErrorType.application, ErrorTag.unknown_element, ErrorSeverity.error);
  }
  return parsedNode;
}

代码示例来源:origin: org.opendaylight.controller/mdsal-netconf-connector

private NormalizedNode parseIntoNormalizedNode(final DataSchemaNode schemaNode, final XmlElement element,
                        final DomToNormalizedNodeParserFactory.BuildingStrategyProvider editOperationStrategyProvider) {
  if (schemaNode instanceof ContainerSchemaNode) {
    return DomToNormalizedNodeParserFactory
        .getInstance(DomUtils.defaultValueCodecProvider(), schemaContext.getCurrentContext(), editOperationStrategyProvider)
        .getContainerNodeParser()
        .parse(Collections.singletonList(element.getDomElement()), (ContainerSchemaNode) schemaNode);
  } else if (schemaNode instanceof ListSchemaNode) {
    return DomToNormalizedNodeParserFactory
        .getInstance(DomUtils.defaultValueCodecProvider(), schemaContext.getCurrentContext(), editOperationStrategyProvider)
        .getMapNodeParser()
        .parse(Collections.singletonList(element.getDomElement()), (ListSchemaNode) schemaNode);
  } else {
    //this should never happen since edit-config on any other node type should not be possible nor makes sense
    LOG.debug("DataNode from module is not ContainerSchemaNode nor ListSchemaNode, aborting..");
  }
  throw new UnsupportedOperationException("implement exception if parse fails");
}

代码示例来源:origin: org.opendaylight.controller/config-netconf-connector

private Element toXml(Document doc, Object result, AttributeIfc returnType, String namespace, String elementName) throws NetconfDocumentedException {
  AttributeMappingStrategy<?, ? extends OpenType<?>> mappingStrategy = new ObjectMapper().prepareStrategy(returnType);
  Optional<?> mappedAttributeOpt = mappingStrategy.mapAttribute(result);
  Preconditions.checkState(mappedAttributeOpt.isPresent(), "Unable to map return value %s as %s", result, returnType.getOpenType());
  // FIXME: multiple return values defined as leaf-list and list in yang should not be wrapped in output xml element,
  // they need to be appended directly under rpc-reply element
  //
  // Either allow List of Elements to be returned from NetconfOperation or
  // pass reference to parent output xml element for netconf operations to
  // append result(s) on their own
  Element tempParent = XmlUtil.createElement(doc, "output", Optional.of(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0));
  new ObjectXmlWriter().prepareWritingStrategy(elementName, returnType, doc).writeElement(tempParent, namespace, mappedAttributeOpt.get());
  XmlElement xmlElement = XmlElement.fromDomElement(tempParent);
  return xmlElement.getChildElements().size() > 1 ? tempParent : xmlElement.getOnlyChildElement().getDomElement();
}

相关文章