import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.YangLibraryChange;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.YangLibraryUpdate;
import org.opendaylight.yangtools.yang.binding.Notification;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
}
private static class BaseNotificationPublisherReg implements BaseNotificationPublisherRegistration {
-
- static final SchemaPath CAPABILITY_CHANGE_SCHEMA_PATH = SchemaPath.create(true, NetconfCapabilityChange.QNAME);
- static final SchemaPath SESSION_START_PATH = SchemaPath.create(true, NetconfSessionStart.QNAME);
- static final SchemaPath SESSION_END_PATH = SchemaPath.create(true, NetconfSessionEnd.QNAME);
+ static final Absolute CAPABILITY_CHANGE_SCHEMA_PATH = Absolute.of(NetconfCapabilityChange.QNAME);
+ static final Absolute SESSION_START_PATH = Absolute.of(NetconfSessionStart.QNAME);
+ static final Absolute SESSION_END_PATH = Absolute.of(NetconfSessionEnd.QNAME);
private final NotificationPublisherRegistration baseRegistration;
private final NotificationsTransformUtil transformUtil;
baseRegistration.close();
}
- private NetconfNotification serializeNotification(final Notification notification, final SchemaPath path) {
+ private NetconfNotification serializeNotification(final Notification<?> notification, final Absolute path) {
return transformUtil.transform(notification, path);
}
}
private static class YangLibraryPublisherReg implements YangLibraryPublisherRegistration {
- static final SchemaPath YANG_LIBRARY_CHANGE_PATH = SchemaPath.create(true, YangLibraryChange.QNAME);
- static final SchemaPath YANG_LIBRARY_UPDATE_PATH = SchemaPath.create(true, YangLibraryUpdate.QNAME);
+ static final Absolute YANG_LIBRARY_CHANGE_PATH = Absolute.of(YangLibraryChange.QNAME);
+ static final Absolute YANG_LIBRARY_UPDATE_PATH = Absolute.of(YangLibraryUpdate.QNAME);
private final NotificationPublisherRegistration baseRegistration;
private final NotificationsTransformUtil transformUtil;
import org.opendaylight.yangtools.yang.binding.Notification;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.opendaylight.yangtools.yang.parser.api.YangParserException;
import org.opendaylight.yangtools.yang.parser.api.YangParserFactory;
import org.w3c.dom.Document;
/**
* Transform base notification for capabilities into NetconfNotification.
*/
- public NetconfNotification transform(final Notification notification, final SchemaPath path) {
+ public NetconfNotification transform(final Notification<?> notification, final Absolute path) {
return transform(notification, Optional.empty(), path);
}
- public NetconfNotification transform(final Notification notification, final Date eventTime, final SchemaPath path) {
+ public NetconfNotification transform(final Notification<?> notification, final Date eventTime,
+ final Absolute path) {
return transform(notification, Optional.ofNullable(eventTime), path);
}
- private NetconfNotification transform(final Notification notification, final Optional<Date> eventTime,
- final SchemaPath path) {
+ private NetconfNotification transform(final Notification<?> notification, final Optional<Date> eventTime,
+ final Absolute path) {
final ContainerNode containerNode = serializer.toNormalizedNodeNotification(notification);
final DOMResult result = new DOMResult(XmlUtil.newDocument());
try {
- NetconfUtil.writeNormalizedNode(containerNode, result, path, schemaContext);
+ NetconfUtil.writeNormalizedNode(containerNode, result, schemaContext, path);
} catch (final XMLStreamException | IOException e) {
throw new IllegalStateException("Unable to serialize " + notification, e);
}
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfCapabilityChange;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfCapabilityChangeBuilder;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.opendaylight.yangtools.yang.parser.api.YangParserException;
import org.opendaylight.yangtools.yang.parser.impl.DefaultYangParserFactory;
import org.xml.sax.SAXException;
final NetconfCapabilityChange capabilityChange = netconfCapabilityChangeBuilder.build();
final NetconfNotification transform = UTIL.transform(capabilityChange, DATE,
- SchemaPath.create(true, NetconfCapabilityChange.QNAME));
+ Absolute.of(NetconfCapabilityChange.QNAME));
final String serialized = XmlUtil.toString(transform.getDocument());
import javax.xml.stream.XMLStreamWriter;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
+import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.netconf.api.DocumentedException;
import org.opendaylight.netconf.api.xml.XmlElement;
import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
*
* @param normalized data to be written
* @param result DOM result holder
- * @param schemaPath schema path of the parent node
* @param context mountpoint schema context
+ * @param path optional schema node identifier of the parent node
* @throws IOException when failed to write data into {@link NormalizedNodeStreamWriter}
* @throws XMLStreamException when failed to serialize data into XML document
*/
public static void writeNormalizedNode(final NormalizedNode normalized, final DOMResult result,
- final SchemaPath schemaPath, final EffectiveModelContext context) throws IOException, XMLStreamException {
+ final EffectiveModelContext context, final @Nullable Absolute path) throws IOException, XMLStreamException {
final XMLStreamWriter xmlWriter = XML_FACTORY.createXMLStreamWriter(result);
- try (var streamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, context, schemaPath);
+ try (var streamWriter = newWriter(xmlWriter, context, path);
var writer = NormalizedNodeWriter.forStreamWriter(streamWriter)) {
writer.write(normalized);
writer.flush();
* @param normalized data to be written
* @param metadata metadata to be written
* @param result DOM result holder
- * @param schemaPath schema path of the parent node
* @param context mountpoint schema context
+ * @param path optional schema node identifier of the parent node
* @throws IOException when failed to write data into {@link NormalizedNodeStreamWriter}
* @throws XMLStreamException when failed to serialize data into XML document
*/
public static void writeNormalizedNode(final NormalizedNode normalized, final @Nullable NormalizedMetadata metadata,
- final DOMResult result, final SchemaPath schemaPath, final EffectiveModelContext context)
+ final DOMResult result, final EffectiveModelContext context, final @Nullable Absolute path)
throws IOException, XMLStreamException {
if (metadata == null) {
- writeNormalizedNode(normalized, result, schemaPath, context);
+ writeNormalizedNode(normalized, result, context, path);
return;
}
final XMLStreamWriter xmlWriter = XML_FACTORY.createXMLStreamWriter(result);
XML_NAMESPACE_SETTER.initializeNamespace(xmlWriter);
- try (var streamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, context, schemaPath);
+ try (var streamWriter = newWriter(xmlWriter, context, path);
var writer = NormalizedMetadataWriter.forStreamWriter(streamWriter)) {
writer.write(normalized, metadata);
writer.flush();
*
* @param query path to the root node
* @param result DOM result holder
- * @param schemaPath schema path of the parent node
* @param context mountpoint schema context
+ * @param path optional schema node identifier of the parent node
* @throws IOException when failed to write data into {@link NormalizedNodeStreamWriter}
* @throws XMLStreamException when failed to serialize data into XML document
*/
public static void writeNormalizedNode(final YangInstanceIdentifier query, final DOMResult result,
- final SchemaPath schemaPath, final EffectiveModelContext context) throws IOException, XMLStreamException {
+ final EffectiveModelContext context, final @Nullable Absolute path) throws IOException, XMLStreamException {
final XMLStreamWriter xmlWriter = XML_FACTORY.createXMLStreamWriter(result);
XML_NAMESPACE_SETTER.initializeNamespace(xmlWriter);
- try (var streamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, context, schemaPath);
+ try (var streamWriter = newWriter(xmlWriter, context, path);
var writer = new EmptyListXmlWriter(streamWriter, xmlWriter)) {
final Iterator<PathArgument> it = query.getPathArguments().iterator();
final PathArgument first = it.next();
* @param query path to the root node
* @param metadata metadata to be written
* @param result DOM result holder
- * @param schemaPath schema path of the parent node
* @param context mountpoint schema context
+ * @param path optional schema node identifier of the parent node
* @throws IOException when failed to write data into {@link NormalizedNodeStreamWriter}
* @throws XMLStreamException when failed to serialize data into XML document
*/
public static void writeNormalizedNode(final YangInstanceIdentifier query,
- final @Nullable NormalizedMetadata metadata, final DOMResult result, final SchemaPath schemaPath,
- final EffectiveModelContext context) throws IOException, XMLStreamException {
+ final @Nullable NormalizedMetadata metadata, final DOMResult result, final EffectiveModelContext context,
+ final @Nullable Absolute path) throws IOException, XMLStreamException {
if (metadata == null) {
- writeNormalizedNode(query, result, schemaPath, context);
+ writeNormalizedNode(query, result, context, path);
return;
}
final XMLStreamWriter xmlWriter = XML_FACTORY.createXMLStreamWriter(result);
XML_NAMESPACE_SETTER.initializeNamespace(xmlWriter);
- try (var streamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, context, schemaPath);
+ try (var streamWriter = newWriter(xmlWriter, context, path);
var writer = new EmptyListXmlMetadataWriter(streamWriter, xmlWriter,
streamWriter.getExtensions().getInstance(StreamWriterMetadataExtension.class), metadata)) {
final Iterator<PathArgument> it = query.getPathArguments().iterator();
*
* @param query path to the root node
* @param result DOM result holder
- * @param schemaPath schema path of the parent node
* @param context mountpoint schema context
+ * @param path optional schema node identifier of the parent node
* @throws IOException failed to write filter into {@link NormalizedNodeStreamWriter}
* @throws XMLStreamException failed to serialize filter into XML document
*/
public static void writeFilter(final YangInstanceIdentifier query, final DOMResult result,
- final SchemaPath schemaPath, final EffectiveModelContext context) throws IOException, XMLStreamException {
+ final EffectiveModelContext context, final @Nullable Absolute path) throws IOException, XMLStreamException {
if (query.isEmpty()) {
// No query at all
return;
}
final XMLStreamWriter xmlWriter = XML_FACTORY.createXMLStreamWriter(result);
- try (var streamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, context, schemaPath);
+ try (var streamWriter = newWriter(xmlWriter, context, path);
var writer = new EmptyListXmlWriter(streamWriter, xmlWriter)) {
final Iterator<PathArgument> it = query.getPathArguments().iterator();
final PathArgument first = it.next();
*
* @param query path to the root node
* @param result DOM result holder
- * @param schemaPath schema path of the parent node
* @param context mountpoint schema context
+ * @param path optional schema node identifier of the parent node
* @param fields list of specific fields for which the filter should be created
* @throws IOException failed to write filter into {@link NormalizedNodeStreamWriter}
* @throws XMLStreamException failed to serialize filter into XML document
* @throws NullPointerException if any argument is null
*/
public static void writeFilter(final YangInstanceIdentifier query, final DOMResult result,
- final SchemaPath schemaPath, final EffectiveModelContext context,
+ final EffectiveModelContext context, final @Nullable Absolute path,
final List<YangInstanceIdentifier> fields) throws IOException, XMLStreamException {
if (query.isEmpty() || fields.isEmpty()) {
// No query at all
final XMLStreamWriter xmlWriter = XML_FACTORY.createXMLStreamWriter(result);
try {
- try (var streamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, context, schemaPath);
+ try (var streamWriter = newWriter(xmlWriter, context, path);
var writer = new EmptyListXmlWriter(streamWriter, xmlWriter)) {
final PathArgument first = rootNode.element();
StreamingContext.fromSchemaAndQNameChecked(context, first.getNodeType())
final DOMSource value) throws XMLStreamException, URISyntaxException, IOException, SAXException {
return transformDOMSourceToNormalizedNode(new EmptyMountPointContext(schemaContext), value);
}
+
+ // FIXME: this should not be needed once we have yangtools-10.0.1.
+ private static @NonNull NormalizedNodeStreamWriter newWriter(final XMLStreamWriter writer,
+ final EffectiveModelContext context, final @Nullable Absolute path) {
+ return path == null ? XMLStreamNormalizedNodeStreamWriter.create(writer, context)
+ : XMLStreamNormalizedNodeStreamWriter.create(writer, context, path);
+ }
}
import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.w3c.dom.Document;
public class NetconfUtilTest {
.withChild(sessionList)
.build();
final DOMResult result = new DOMResult(XmlUtil.newDocument());
- final SchemaPath path = SchemaPath.create(true, NetconfState.QNAME);
- NetconfUtil.writeNormalizedNode(sessions, result, path, context);
+ NetconfUtil.writeNormalizedNode(sessions, result, context, Absolute.of(NetconfState.QNAME));
final Document actual = (Document) result.getNode();
final Document expected = XmlUtil.readXmlToDocument(getClass().getResourceAsStream("/sessions.xml"));
final Diff diff = XMLUnit.compareXML(expected, actual);
public static final @NonNull NodeIdentifier NETCONF_CONFIG_NODEID = NodeIdentifier.create(NETCONF_CONFIG_QNAME);
public static final @NonNull QName NETCONF_COMMIT_QNAME = QName.create(NETCONF_QNAME, "commit").intern();
- public static final @NonNull SchemaPath NETCONF_COMMIT_PATH = toPath(NETCONF_COMMIT_QNAME);
+ public static final @NonNull Absolute NETCONF_COMMIT_PATH = toPath(NETCONF_COMMIT_QNAME);
public static final @NonNull QName NETCONF_VALIDATE_QNAME = QName.create(NETCONF_QNAME, "validate").intern();
public static final @NonNull NodeIdentifier NETCONF_VALIDATE_NODEID = NodeIdentifier.create(NETCONF_VALIDATE_QNAME);
- public static final @NonNull SchemaPath NETCONF_VALIDATE_PATH = toPath(NETCONF_VALIDATE_QNAME);
+ public static final @NonNull Absolute NETCONF_VALIDATE_PATH = toPath(NETCONF_VALIDATE_QNAME);
public static final @NonNull QName NETCONF_COPY_CONFIG_QNAME = QName.create(NETCONF_QNAME, "copy-config").intern();
public static final @NonNull NodeIdentifier NETCONF_COPY_CONFIG_NODEID =
NodeIdentifier.create(NETCONF_COPY_CONFIG_QNAME);
- public static final @NonNull SchemaPath NETCONF_COPY_CONFIG_PATH = toPath(NETCONF_COPY_CONFIG_QNAME);
+ public static final @NonNull Absolute NETCONF_COPY_CONFIG_PATH = toPath(NETCONF_COPY_CONFIG_QNAME);
public static final @NonNull QName NETCONF_OPERATION_QNAME = QName.create(NETCONF_QNAME, "operation").intern();
private static final @NonNull QName NETCONF_OPERATION_QNAME_LEGACY =
public static final @NonNull QName NETCONF_EDIT_CONFIG_QNAME = QName.create(NETCONF_QNAME, "edit-config").intern();
public static final @NonNull NodeIdentifier NETCONF_EDIT_CONFIG_NODEID =
NodeIdentifier.create(NETCONF_EDIT_CONFIG_QNAME);
- public static final @NonNull SchemaPath NETCONF_EDIT_CONFIG_PATH = toPath(NETCONF_EDIT_CONFIG_QNAME);
+ public static final @NonNull Absolute NETCONF_EDIT_CONFIG_PATH = toPath(NETCONF_EDIT_CONFIG_QNAME);
public static final @NonNull QName NETCONF_GET_CONFIG_QNAME = QName.create(NETCONF_QNAME, "get-config");
public static final @NonNull NodeIdentifier NETCONF_GET_CONFIG_NODEID =
NodeIdentifier.create(NETCONF_GET_CONFIG_QNAME);
- public static final @NonNull SchemaPath NETCONF_GET_CONFIG_PATH = toPath(NETCONF_GET_CONFIG_QNAME);
+ public static final @NonNull Absolute NETCONF_GET_CONFIG_PATH = toPath(NETCONF_GET_CONFIG_QNAME);
public static final @NonNull QName NETCONF_DISCARD_CHANGES_QNAME = QName.create(NETCONF_QNAME, "discard-changes");
- public static final @NonNull SchemaPath NETCONF_DISCARD_CHANGES_PATH = toPath(NETCONF_DISCARD_CHANGES_QNAME);
+ public static final @NonNull Absolute NETCONF_DISCARD_CHANGES_PATH = toPath(NETCONF_DISCARD_CHANGES_QNAME);
public static final @NonNull QName NETCONF_TYPE_QNAME = QName.create(NETCONF_QNAME, "type").intern();
public static final @NonNull QName NETCONF_FILTER_QNAME = QName.create(NETCONF_QNAME, "filter").intern();
public static final @NonNull QName NETCONF_GET_QNAME = QName.create(NETCONF_QNAME, "get").intern();
public static final @NonNull NodeIdentifier NETCONF_GET_NODEID = NodeIdentifier.create(NETCONF_GET_QNAME);
- public static final @NonNull SchemaPath NETCONF_GET_PATH = toPath(NETCONF_GET_QNAME);
+ public static final @NonNull Absolute NETCONF_GET_PATH = toPath(NETCONF_GET_QNAME);
public static final @NonNull QName NETCONF_RPC_QNAME = QName.create(NETCONF_QNAME, "rpc").intern();
public static final QName YANG_QNAME = null;
public static final URI NETCONF_ACTION_NAMESPACE = URI.create("urn:ietf:params:xml:ns:yang:1");
public static final @NonNull QName NETCONF_LOCK_QNAME = QName.create(NETCONF_QNAME, "lock").intern();
public static final @NonNull NodeIdentifier NETCONF_LOCK_NODEID = NodeIdentifier.create(NETCONF_LOCK_QNAME);
- public static final @NonNull SchemaPath NETCONF_LOCK_PATH = toPath(NETCONF_LOCK_QNAME);
+ public static final @NonNull Absolute NETCONF_LOCK_PATH = toPath(NETCONF_LOCK_QNAME);
public static final @NonNull QName NETCONF_UNLOCK_QNAME = QName.create(NETCONF_QNAME, "unlock").intern();
public static final @NonNull NodeIdentifier NETCONF_UNLOCK_NODEID = NodeIdentifier.create(NETCONF_UNLOCK_QNAME);
- public static final @NonNull SchemaPath NETCONF_UNLOCK_PATH = toPath(NETCONF_UNLOCK_QNAME);
+ public static final @NonNull Absolute NETCONF_UNLOCK_PATH = toPath(NETCONF_UNLOCK_QNAME);
public static final @NonNull NodeIdentifier EDIT_CONTENT_NODEID = NodeIdentifier.create(EditContent.QNAME);
public static final @NonNull ContainerNode CREATE_SUBSCRIPTION_RPC_CONTENT = Builders.containerBuilder()
.withNodeIdentifier(NodeIdentifier.create(CREATE_SUBSCRIPTION_RPC_QNAME)).build();
- public static final @NonNull SchemaPath CREATE_SUBSCRIPTION_RPC_PATH = toPath(CREATE_SUBSCRIPTION_RPC_QNAME);
+ public static final @NonNull Absolute CREATE_SUBSCRIPTION_RPC_PATH = toPath(CREATE_SUBSCRIPTION_RPC_QNAME);
public static final @NonNull NodeIdentifier NETCONF_FILTER_NODEID = NodeIdentifier.create(NETCONF_FILTER_QNAME);
final EffectiveModelContext ctx) {
final Element element = getNetconfFilterElement();
try {
- NetconfUtil.writeFilter(identifier, new DOMResult(element), SchemaPath.ROOT, ctx);
+ NetconfUtil.writeFilter(identifier, new DOMResult(element), ctx, null);
} catch (IOException | XMLStreamException e) {
throw new IllegalStateException("Unable to serialize filter element for path " + identifier, e);
}
for (final FieldsFilter filter : fieldsFilters) {
try {
- NetconfUtil.writeFilter(filter.path(), new DOMResult(element), SchemaPath.ROOT, ctx, filter.fields());
+ NetconfUtil.writeFilter(filter.path(), new DOMResult(element), ctx, null, filter.fields());
} catch (IOException | XMLStreamException e) {
throw new IllegalStateException(String.format(
"Unable to serialize filter element for path %s with fields: %s",
nnWriter.write(lastChildOverride.get());
}
}
- NetconfUtil.writeNormalizedNode(result.getResult(), metadata, new DOMResult(element),
- SchemaPath.ROOT, ctx);
+ NetconfUtil.writeNormalizedNode(result.getResult(), metadata, new DOMResult(element), ctx, null);
} else {
- NetconfUtil.writeNormalizedNode(dataPath, metadata, new DOMResult(element), SchemaPath.ROOT, ctx);
+ NetconfUtil.writeNormalizedNode(dataPath, metadata, new DOMResult(element), ctx, null);
}
} catch (final IOException | XMLStreamException e) {
throw new IllegalStateException("Unable to serialize edit config content element for path " + dataPath, e);
.withChild(createEditConfigAnyxml(ctx, dataPath, operation, lastChildOverride)).build();
}
- public static @NonNull SchemaPath toPath(final QName rpc) {
- return SchemaPath.ROOT.createChild(rpc);
+ public static @NonNull Absolute toPath(final QName rpc) {
+ return Absolute.of(rpc);
}
public static Map.Entry<Instant, XmlElement> stripNotification(final NetconfMessage message) {