Add forwarding transactions to binding v1 89/74289/7
authorStephen Kitt <skitt@redhat.com>
Mon, 23 Jul 2018 10:57:25 +0000 (12:57 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 27 Jul 2018 21:25:08 +0000 (23:25 +0200)
This ports the forwarding transactions from controller.

Change-Id: I1c1ce1a340424e8fb3f86d7b92fa53d1d623de00
Signed-off-by: Stephen Kitt <skitt@redhat.com>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-spi/pom.xml [new file with mode: 0644]
binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingDataBroker.java [new file with mode: 0644]
binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingReadTransaction.java [new file with mode: 0644]
binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingReadWriteTransaction.java [new file with mode: 0644]
binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingWriteTransaction.java [new file with mode: 0644]
binding/pom.xml
common/artifacts/pom.xml
common/features/odl-mdsal-binding-api/pom.xml

diff --git a/binding/mdsal-binding-spi/pom.xml b/binding/mdsal-binding-spi/pom.xml
new file mode 100644 (file)
index 0000000..566bef3
--- /dev/null
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright © 2018 Red Hat, Inc. and others.
+
+ 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
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.opendaylight.odlparent</groupId>
+        <artifactId>bundle-parent</artifactId>
+        <version>3.1.3</version>
+    </parent>
+
+    <groupId>org.opendaylight.mdsal</groupId>
+    <artifactId>mdsal-binding-spi</artifactId>
+    <version>2.5.0-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.opendaylight.mdsal</groupId>
+                <artifactId>mdsal-artifacts</artifactId>
+                <version>2.5.0-SNAPSHOT</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>yang-binding</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <configuration>
+                    <propertyExpansion>checkstyle.violationSeverity=error</propertyExpansion>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingDataBroker.java b/binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingDataBroker.java
new file mode 100644 (file)
index 0000000..7f8467f
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Copyright © 2017, 2018 Red Hat, Inc. and others.
+ *
+ * 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.mdsal.binding.spi;
+
+import com.google.common.collect.ForwardingObject;
+import javax.annotation.Nonnull;
+import org.opendaylight.mdsal.binding.api.BindingTransactionChain;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
+import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
+import org.opendaylight.mdsal.binding.api.WriteTransaction;
+import org.opendaylight.mdsal.common.api.TransactionChainListener;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+
+/**
+ * Utility {@link DataBroker} implementation which forwards all interface method
+ * invocation to a delegate instance.
+ */
+public abstract class ForwardingDataBroker extends ForwardingObject implements DataBroker {
+
+    @Override
+    protected abstract @Nonnull DataBroker delegate();
+
+    @Override
+    public ReadTransaction newReadOnlyTransaction() {
+        return delegate().newReadOnlyTransaction();
+    }
+
+    @Override
+    public ReadWriteTransaction newReadWriteTransaction() {
+        return delegate().newReadWriteTransaction();
+    }
+
+    @Override
+    public WriteTransaction newWriteOnlyTransaction() {
+        return delegate().newWriteOnlyTransaction();
+    }
+
+    @Override
+    public <T extends DataObject, L extends DataTreeChangeListener<T>> ListenerRegistration<L>
+            registerDataTreeChangeListener(DataTreeIdentifier<T> treeId, L listener) {
+        return delegate().registerDataTreeChangeListener(treeId, listener);
+    }
+
+    @Override
+    public BindingTransactionChain createTransactionChain(TransactionChainListener listener) {
+        return delegate().createTransactionChain(listener);
+    }
+
+}
diff --git a/binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingReadTransaction.java b/binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingReadTransaction.java
new file mode 100644 (file)
index 0000000..88dcd41
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright © 2017, 2018 Red Hat, Inc. and others.
+ *
+ * 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.mdsal.binding.spi;
+
+import com.google.common.collect.ForwardingObject;
+import com.google.common.util.concurrent.FluentFuture;
+import java.util.Optional;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Utility {@link ReadTransaction} implementation which forwards all interface method
+ * invocation to a delegate instance.
+ */
+public class ForwardingReadTransaction extends ForwardingObject implements ReadTransaction {
+
+    private final ReadTransaction delegate;
+
+    protected ForwardingReadTransaction(ReadTransaction delegate) {
+        this.delegate = delegate;
+    }
+
+    @Override
+    protected ReadTransaction delegate() {
+        return delegate;
+    }
+
+    @Override
+    public <T extends DataObject> FluentFuture<Optional<T>> read(LogicalDatastoreType store,
+            InstanceIdentifier<T> path) {
+        return delegate.read(store, path);
+    }
+
+    @Override
+    public Object getIdentifier() {
+        return delegate.getIdentifier();
+    }
+
+    @Override
+    public void close() {
+        delegate.close();
+    }
+}
diff --git a/binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingReadWriteTransaction.java b/binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingReadWriteTransaction.java
new file mode 100644 (file)
index 0000000..5b5c39f
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright © 2017, 2018 Red Hat, Inc. and others.
+ *
+ * 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.mdsal.binding.spi;
+
+import com.google.common.collect.ForwardingObject;
+import com.google.common.util.concurrent.FluentFuture;
+import java.util.Optional;
+import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
+import org.opendaylight.mdsal.common.api.CommitInfo;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Utility {@link ReadWriteTransaction} implementation which forwards all interface method
+ * invocation to a delegate instance.
+ */
+public class ForwardingReadWriteTransaction extends ForwardingObject implements ReadWriteTransaction {
+
+    private final ReadWriteTransaction delegate;
+
+    protected ForwardingReadWriteTransaction(ReadWriteTransaction delegate) {
+        this.delegate = delegate;
+    }
+
+    @Override
+    protected ReadWriteTransaction delegate() {
+        return delegate;
+    }
+
+    @Override
+    public <T extends DataObject> void put(LogicalDatastoreType store, InstanceIdentifier<T> path, T data) {
+        delegate.put(store, path, data);
+    }
+
+    @Override
+    public <T extends DataObject> void put(LogicalDatastoreType store, InstanceIdentifier<T> path, T data,
+            boolean createMissingParents) {
+        delegate.put(store, path, data, createMissingParents);
+    }
+
+    @Override
+    public <T extends DataObject> FluentFuture<Optional<T>> read(LogicalDatastoreType store,
+            InstanceIdentifier<T> path) {
+        return delegate.read(store, path);
+    }
+
+    @Override
+    public Object getIdentifier() {
+        return delegate.getIdentifier();
+    }
+
+    @Override
+    public boolean cancel() {
+        return delegate.cancel();
+    }
+
+    @Override
+    public <T extends DataObject> void merge(LogicalDatastoreType store, InstanceIdentifier<T> path, T data) {
+        delegate.merge(store, path, data);
+    }
+
+    @Override
+    public <T extends DataObject> void merge(LogicalDatastoreType store, InstanceIdentifier<T> path, T data,
+            boolean createMissingParents) {
+        delegate.merge(store, path, data, createMissingParents);
+    }
+
+    @Override
+    public FluentFuture<? extends CommitInfo> commit() {
+        return delegate.commit();
+    }
+
+    @Override
+    public void delete(LogicalDatastoreType store, InstanceIdentifier<?> path) {
+        delegate.delete(store, path);
+    }
+
+    @Override
+    public void close() {
+        delegate.close();
+    }
+}
diff --git a/binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingWriteTransaction.java b/binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingWriteTransaction.java
new file mode 100644 (file)
index 0000000..6e29fa1
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Copyright © 2017, 2018 Red Hat, Inc. and others.
+ *
+ * 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.mdsal.binding.spi;
+
+import com.google.common.collect.ForwardingObject;
+import com.google.common.util.concurrent.FluentFuture;
+import org.opendaylight.mdsal.binding.api.WriteTransaction;
+import org.opendaylight.mdsal.common.api.CommitInfo;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Utility {@link WriteTransaction} implementation which forwards all interface method
+ * invocation to a delegate instance.
+ */
+public class ForwardingWriteTransaction extends ForwardingObject implements WriteTransaction {
+
+    private final WriteTransaction delegate;
+
+    protected ForwardingWriteTransaction(WriteTransaction delegate) {
+        this.delegate = delegate;
+    }
+
+    @Override
+    protected WriteTransaction delegate() {
+        return delegate;
+    }
+
+    @Override
+    public <T extends DataObject> void put(LogicalDatastoreType store, InstanceIdentifier<T> path, T data) {
+        delegate.put(store, path, data);
+    }
+
+    @Override
+    public <T extends DataObject> void put(LogicalDatastoreType store, InstanceIdentifier<T> path, T data,
+            boolean createMissingParents) {
+        delegate.put(store, path, data, createMissingParents);
+    }
+
+    @Override
+    public <T extends DataObject> void merge(LogicalDatastoreType store, InstanceIdentifier<T> path, T data) {
+        delegate.merge(store, path, data);
+    }
+
+    @Override
+    public <T extends DataObject> void merge(LogicalDatastoreType store, InstanceIdentifier<T> path, T data,
+            boolean createMissingParents) {
+        delegate.merge(store, path, data, createMissingParents);
+    }
+
+    @Override
+    public void delete(LogicalDatastoreType store, InstanceIdentifier<?> path) {
+        delegate.delete(store, path);
+    }
+
+    @Override
+    public boolean cancel() {
+        return delegate.cancel();
+    }
+
+    @Override
+    public FluentFuture<? extends CommitInfo> commit() {
+        return delegate.commit();
+    }
+
+    @Override
+    public Object getIdentifier() {
+        return delegate.getIdentifier();
+    }
+}
index 3d09f76268345dc31746a005e790be821e5a78ef..d1faf0d3ee214b49fd22a7a13589aa5ada4eda15 100644 (file)
@@ -40,6 +40,7 @@
         <module>mdsal-binding-dom-codec-osgi</module>
 
         <module>mdsal-binding-api</module>
+        <module>mdsal-binding-spi</module>
         <module>mdsal-binding-util</module>
         <module>mdsal-binding-test-utils</module>
         <module>mdsal-binding-dom-adapter</module>
index 4e8bde0e58dd1badfc48c74af69cea97add3c1e1..9204254c14d4b47887bbced139a89f5bbc4bc98b 100644 (file)
                 <type>test-jar</type>
                 <scope>test</scope>
             </dependency>
+            <dependency>
+                <groupId>org.opendaylight.mdsal</groupId>
+                <artifactId>mdsal-binding-spi</artifactId>
+                <version>${project.version}</version>
+            </dependency>
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-binding-util</artifactId>
index 65f78ef19f7331dcdbcf0759446a1312cd13d643..54669ead961eb85e7c87754c9dcebef4acffd4c2 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>mdsal-binding-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>mdsal-binding-spi</artifactId>
+        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>mdsal-binding-util</artifactId>