Introduce restconf.server.{api,spi,mdsal}
[netconf.git] / restconf / restconf-nb / src / main / java / org / opendaylight / restconf / nb / rfc8040 / streams / DataTreeChangeSource.java
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 (file)
index 3e3d375..0000000
+++ /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<List<DataTreeCandidate>> {
-    private static final ImmutableMap<EncodingName, DataTreeCandidateFormatterFactory> 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<List<DataTreeCandidate>> sink) {
-        return changeService.registerDataTreeChangeListener(new DOMDataTreeIdentifier(datastore, path),
-            new ClusteredDOMDataTreeChangeListener() {
-                @Override
-                public void onDataTreeChanged(final List<DataTreeCandidate> 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));
-    }
-}