*/
package org.opendaylight.restconf.nb.rfc8040;
+import com.google.common.annotations.Beta;
import java.net.URI;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.$YangModuleInfoImpl;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.Module;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.module.Deviation;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.common.Revision;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
/**
* Base Draft for Restconf project.
public static final QName LEAF_LOCATION_ACCESS_QNAME = QName.create(MODULE_QNAME, LEAF_LOCATION_ACCESS_NAME)
.intern();
+ private static final YangInstanceIdentifier RESTCONF_STATE_STREAMS = YangInstanceIdentifier.create(
+ NodeIdentifier.create(CONT_RESTCONF_STATE_QNAME), NodeIdentifier.create(CONT_STREAMS_QNAME),
+ NodeIdentifier.create(LIST_STREAM_QNAME));
+
+ @Beta
+ // FIXME: move this method somewhere else
+ public static @NonNull YangInstanceIdentifier restconfStateStreamPath(final String streamName) {
+ return restconfStateStreamPath(NodeIdentifierWithPredicates.of(LIST_STREAM_QNAME, LEAF_NAME_STREAM_QNAME,
+ streamName));
+ }
+
+ @Beta
+ // FIXME: move this method somewhere else
+ public static @NonNull YangInstanceIdentifier restconfStateStreamPath(final NodeIdentifierWithPredicates arg) {
+ return RESTCONF_STATE_STREAMS.node(arg);
+ }
+
/**
* Constants for capabilities.
*/
import org.opendaylight.restconf.nb.rfc8040.streams.Configuration;
import org.opendaylight.restconf.nb.rfc8040.streams.listeners.NotificationListenerAdapter;
import org.opendaylight.restconf.nb.rfc8040.utils.mapping.RestconfMappingNodeUtil;
-import org.opendaylight.restconf.nb.rfc8040.utils.parser.IdentifierCodec;
import org.opendaylight.restconf.nb.rfc8040.utils.parser.ParserIdentifier;
import org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.NotificationOutputTypeGrouping.NotificationOutputType;
import org.opendaylight.yangtools.concepts.Immutable;
listener.getSchemaPath().lastNodeIdentifier(), schemaContext.getNotifications(), null,
listener.getOutputType(), uri);
- final String name = listener.getSchemaPath().lastNodeIdentifier().getLocalName();
transaction.merge(LogicalDatastoreType.OPERATIONAL,
- IdentifierCodec.deserialize(Rfc8040.MonitoringModule.PATH_TO_STREAM_WITHOUT_KEY + name, schemaContext),
- mapToStreams);
+ Rfc8040.MonitoringModule.restconfStateStreamPath(mapToStreams.getIdentifier()), mapToStreams);
}
@Override
notificationListenerAdapter.get().getSchemaPath().lastNodeIdentifier(),
schemaContext.getNotifications(), notificationQueryParams.getStart(),
notificationListenerAdapter.get().getOutputType(), uri);
- writeDataToDS(schemaContext,
- notificationListenerAdapter.get().getSchemaPath().lastNodeIdentifier().getLocalName(), writeTransaction,
- mapToStreams);
+ writeDataToDS(writeTransaction, mapToStreams);
submitData(writeTransaction);
transactionChain.close();
return uri;
final DOMTransactionChain transactionChain = handlersHolder.getTransactionChainHandler().get();
final DOMDataTreeReadWriteTransaction writeTransaction = transactionChain.newReadWriteTransaction();
final EffectiveModelContext schemaContext = handlersHolder.getSchemaHandler().get();
- final String serializedPath = IdentifierCodec.serialize(listener.get().getPath(), schemaContext);
final MapEntryNode mapToStreams =
RestconfMappingNodeUtil.mapDataChangeNotificationStreamByIetfRestconfMonitoring(listener.get().getPath(),
- notificationQueryParams.getStart(), listener.get().getOutputType(), uri, schemaContext, serializedPath);
- writeDataToDS(schemaContext, serializedPath, writeTransaction, mapToStreams);
+ notificationQueryParams.getStart(), listener.get().getOutputType(), uri, schemaContext,
+ IdentifierCodec.serialize(listener.get().getPath(), schemaContext));
+ writeDataToDS(writeTransaction, mapToStreams);
submitData(writeTransaction);
transactionChain.close();
return uri;
}
- private static void writeDataToDS(final EffectiveModelContext schemaContext, final String name,
- final DOMDataTreeReadWriteTransaction readWriteTransaction, final MapEntryNode mapToStreams) {
+ private static void writeDataToDS(final DOMDataTreeReadWriteTransaction readWriteTransaction,
+ final MapEntryNode mapToStreams) {
readWriteTransaction.merge(LogicalDatastoreType.OPERATIONAL,
- // FIXME: do not use IdentifierCodec here
- IdentifierCodec.deserialize(MonitoringModule.PATH_TO_STREAM_WITHOUT_KEY + name, schemaContext),
- mapToStreams);
+ MonitoringModule.restconfStateStreamPath(mapToStreams.getIdentifier()), mapToStreams);
}
private static void submitData(final DOMDataTreeReadWriteTransaction readWriteTransaction) {
import org.opendaylight.restconf.nb.rfc8040.Rfc8040.MonitoringModule;
import org.opendaylight.restconf.nb.rfc8040.handlers.SchemaContextHandler;
import org.opendaylight.restconf.nb.rfc8040.handlers.TransactionChainHandler;
-import org.opendaylight.restconf.nb.rfc8040.utils.parser.IdentifierCodec;
import org.opendaylight.yangtools.util.xml.UntrustedXML;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
protected void deleteDataInDS() throws Exception {
try (DOMTransactionChain transactionChain = this.transactionChainHandler.get()) {
final DOMDataTreeWriteTransaction wTx = transactionChain.newWriteOnlyTransaction();
- wTx.delete(LogicalDatastoreType.OPERATIONAL, IdentifierCodec
- .deserialize(MonitoringModule.PATH_TO_STREAM_WITHOUT_KEY + this.localName, this.schemaHandler.get()));
+ wTx.delete(LogicalDatastoreType.OPERATIONAL, MonitoringModule.restconfStateStreamPath(this.localName));
wTx.commit().get();
}
}