X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=restconf%2Frestconf-nb%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Frestconf%2Fnb%2Frfc8040%2Fstreams%2FDataTreeChangeSource.java;fp=restconf%2Frestconf-nb%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Frestconf%2Fnb%2Frfc8040%2Fstreams%2FDataTreeChangeSource.java;h=0000000000000000000000000000000000000000;hb=8616c9655db145125c23ca8e66b5f27745126458;hp=3e3d37520afd103d25a359ca81c2930e859f7393;hpb=c8937e6a34ad36d1ea88b037ae14118033b1612c;p=netconf.git diff --git a/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/DataTreeChangeSource.java b/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/DataTreeChangeSource.java deleted file mode 100644 index 3e3d37520a..0000000000 --- a/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/DataTreeChangeSource.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2014, 2016 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.restconf.nb.rfc8040.streams; - -import static java.util.Objects.requireNonNull; - -import com.google.common.base.MoreObjects.ToStringHelper; -import com.google.common.collect.ImmutableMap; -import java.time.Instant; -import java.util.List; -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.mdsal.common.api.LogicalDatastoreType; -import org.opendaylight.mdsal.dom.api.ClusteredDOMDataTreeChangeListener; -import org.opendaylight.mdsal.dom.api.DOMDataBroker; -import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService; -import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; -import org.opendaylight.restconf.nb.rfc8040.databind.DatabindProvider; -import org.opendaylight.restconf.nb.rfc8040.streams.RestconfStream.EncodingName; -import org.opendaylight.restconf.nb.rfc8040.streams.RestconfStream.Sink; -import org.opendaylight.restconf.nb.rfc8040.streams.RestconfStream.Source; -import org.opendaylight.yangtools.concepts.Registration; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate; - -/** - * A {@link RestconfStream} reporting changes on a particular data tree. - */ -public final class DataTreeChangeSource extends Source> { - private static final ImmutableMap ENCODINGS = ImmutableMap.of( - EncodingName.RFC8040_JSON, JSONDataTreeCandidateFormatter.FACTORY, - EncodingName.RFC8040_XML, XMLDataTreeCandidateFormatter.FACTORY); - - private final @NonNull DOMDataTreeChangeService changeService; - private final @NonNull DatabindProvider databindProvider; - private final @NonNull LogicalDatastoreType datastore; - private final @NonNull YangInstanceIdentifier path; - - DataTreeChangeSource(final DatabindProvider databindProvider, final DOMDataBroker dataBroker, - final LogicalDatastoreType datastore, final YangInstanceIdentifier path) { - super(ENCODINGS); - this.databindProvider = requireNonNull(databindProvider); - this.datastore = requireNonNull(datastore); - this.path = requireNonNull(path); - - final var dtcs = dataBroker.getExtensions().getInstance(DOMDataTreeChangeService.class); - if (dtcs == null) { - throw new UnsupportedOperationException("DOMDataBroker does not support the DOMDataTreeChangeService"); - } - changeService = dtcs; - } - - @Override - protected Registration start(final Sink> sink) { - return changeService.registerDataTreeChangeListener(new DOMDataTreeIdentifier(datastore, path), - new ClusteredDOMDataTreeChangeListener() { - @Override - public void onDataTreeChanged(final List changes) { - // FIXME: format one change at a time? - sink.publish(databindProvider.currentContext().modelContext(), changes, Instant.now()); - } - - @Override - public void onInitialData() { - // No-op - } - }); - } - - @Override - protected ToStringHelper addToStringAttributes(final ToStringHelper helper) { - return super.addToStringAttributes(helper.add("path", path)); - } -}