- public String getOutputType() {
- return this.outputType.getName();
- }
-
- /**
- * Get path pointed to data in data store.
- *
- * @return Path pointed to data in data store.
- */
- public YangInstanceIdentifier getPath() {
- return this.path;
- }
-
- /**
- * Prepare data of notification and data to client.
- *
- * @param xml data
- */
- private void prepareAndPostData(final String xml) {
- final Event event = new Event(EventType.NOTIFY);
- if (this.outputType.equals(NotificationOutputType.JSON)) {
- try {
- final JsonNode node = new XmlMapper().readTree(xml.getBytes());
- event.setData(node.toString());
- } catch (final IOException e) {
- LOG.error("Error parsing XML {}", xml, e);
- Throwables.propagate(e);
- }
- } else {
- event.setData(xml);
- }
- post(event);
- }
-
- /**
- * Tracks events of data change by customer.
- */
-
- /**
- * Prepare data in printable form and transform it to String.
- *
- * @return Data in printable form.
- */
- private String prepareXml() {
- final SchemaContext schemaContext = schemaHandler.get();
- final DataSchemaContextTree dataContextTree = DataSchemaContextTree.from(schemaContext);
- final Document doc = createDocument();
- final Element notificationElement = basePartDoc(doc);
-
- final Element dataChangedNotificationEventElement = doc.createElementNS(
- "urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote", "data-changed-notification");
-
- addValuesToDataChangedNotificationEventElement(doc, dataChangedNotificationEventElement, this.change,
- schemaContext, dataContextTree);
- notificationElement.appendChild(dataChangedNotificationEventElement);
- return transformDoc(doc);
- }
-
- /**
- * Adds values to data changed notification event element.
- *
- * @param doc
- * {@link Document}
- * @param dataChangedNotificationEventElement
- * {@link Element}
- * @param change
- * {@link AsyncDataChangeEvent}
- */
- private void addValuesToDataChangedNotificationEventElement(final Document doc,
- final Element dataChangedNotificationEventElement,
- final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change,
- final SchemaContext schemaContext, final DataSchemaContextTree dataSchemaContextTree) {
-
- addCreatedChangedValuesFromDataToElement(doc, change.getCreatedData().entrySet(),
- dataChangedNotificationEventElement, Operation.CREATED, schemaContext, dataSchemaContextTree);
-
- addCreatedChangedValuesFromDataToElement(doc, change.getUpdatedData().entrySet(),
- dataChangedNotificationEventElement, Operation.UPDATED, schemaContext, dataSchemaContextTree);
-
- addValuesFromDataToElement(doc, change.getRemovedPaths(), dataChangedNotificationEventElement,
- Operation.DELETED, schemaContext, dataSchemaContextTree);
- }
-
- /**
- * Adds values from data to element.
- *
- * @param doc
- * {@link Document}
- * @param data
- * Set of {@link YangInstanceIdentifier}.
- * @param element
- * {@link Element}
- * @param operation
- * {@link Operation}
- * @param schemaContext
- * schema context
- * @param dataSchemaContextTree
- * data schema context tree
- */
- private void addValuesFromDataToElement(final Document doc, final Set<YangInstanceIdentifier> data,
- final Element element, final Operation operation, final SchemaContext schemaContext,
- final DataSchemaContextTree dataSchemaContextTree) {
- if ((data == null) || data.isEmpty()) {