From: Michael Vorburger Date: Fri, 22 Sep 2017 22:27:29 +0000 (+0200) Subject: ForwardingRead[Only]/WriteTransaction implementations X-Git-Tag: release/oxygen~77 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=702a44e462672d6e4f7e5bcd94def61b70be8009 ForwardingRead[Only]/WriteTransaction implementations this came up during https://git.opendaylight.org/gerrit/#/c/63372/ a bit similar (but otherwise unrelated) to my earlier https://git.opendaylight.org/gerrit/#/c/63135/ Change-Id: If669f94b47bf41f49e54c66c6024aeff9805f8d6 Signed-off-by: Michael Vorburger --- diff --git a/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/ForwardingReadOnlyTransaction.java b/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/ForwardingReadOnlyTransaction.java new file mode 100644 index 0000000000..bc7d18c8d1 --- /dev/null +++ b/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/ForwardingReadOnlyTransaction.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2017 Red Hat, 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.controller.md.sal.binding.api; + +import com.google.common.base.Optional; +import com.google.common.collect.ForwardingObject; +import com.google.common.util.concurrent.CheckedFuture; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +/** + * Utility {@link ReadOnlyTransaction} implementation which forwards all interface method + * invocation to a delegate instance. + */ +@SuppressWarnings("deprecation") // due to CheckedFuture +public class ForwardingReadOnlyTransaction extends ForwardingObject implements ReadOnlyTransaction { + + private final ReadOnlyTransaction delegate; + + protected ForwardingReadOnlyTransaction(ReadOnlyTransaction delegate) { + super(); + this.delegate = delegate; + } + + @Override + protected ReadTransaction delegate() { + return delegate; + } + + @Override + public CheckedFuture, ReadFailedException> read(LogicalDatastoreType store, + InstanceIdentifier path) { + return delegate.read(store, path); + } + + @Override + public Object getIdentifier() { + return delegate.getIdentifier(); + } + + @Override + public void close() { + delegate.close(); + } +} diff --git a/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/ForwardingReadWriteTransaction.java b/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/ForwardingReadWriteTransaction.java new file mode 100644 index 0000000000..ae7446b1b2 --- /dev/null +++ b/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/ForwardingReadWriteTransaction.java @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2017 Red Hat, 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.controller.md.sal.binding.api; + +import com.google.common.base.Optional; +import com.google.common.collect.ForwardingObject; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.ListenableFuture; +import org.opendaylight.controller.md.sal.common.api.TransactionStatus; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.RpcResult; + +/** + * Utility {@link ReadWriteTransaction} implementation which forwards all interface method + * invocation to a delegate instance. + */ +@SuppressWarnings("deprecation") // due to CheckedFuture & TransactionStatus +public class ForwardingReadWriteTransaction extends ForwardingObject implements ReadWriteTransaction { + + private final ReadWriteTransaction delegate; + + protected ForwardingReadWriteTransaction(ReadWriteTransaction delegate) { + super(); + this.delegate = delegate; + } + + @Override + protected ReadWriteTransaction delegate() { + return delegate; + } + + @Override + public void put(LogicalDatastoreType store, InstanceIdentifier path, T data) { + delegate.put(store, path, data); + } + + @Override + public void put(LogicalDatastoreType store, InstanceIdentifier path, T data, + boolean createMissingParents) { + delegate.put(store, path, data, createMissingParents); + } + + @Override + public CheckedFuture, ReadFailedException> read(LogicalDatastoreType store, + InstanceIdentifier path) { + return delegate.read(store, path); + } + + @Override + public Object getIdentifier() { + return delegate.getIdentifier(); + } + + @Override + public boolean cancel() { + return delegate.cancel(); + } + + @Override + public void merge(LogicalDatastoreType store, InstanceIdentifier path, T data) { + delegate.merge(store, path, data); + } + + @Override + public void merge(LogicalDatastoreType store, InstanceIdentifier path, T data, + boolean createMissingParents) { + delegate.merge(store, path, data, createMissingParents); + } + + @Override + public CheckedFuture submit() { + return delegate.submit(); + } + + @Override + public void delete(LogicalDatastoreType store, InstanceIdentifier path) { + delegate.delete(store, path); + } + + @Override + public ListenableFuture> commit() { + return delegate.commit(); + } +} diff --git a/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/ForwardingWriteTransaction.java b/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/ForwardingWriteTransaction.java new file mode 100644 index 0000000000..81193afe50 --- /dev/null +++ b/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/ForwardingWriteTransaction.java @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2017 Red Hat, 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.controller.md.sal.binding.api; + +import com.google.common.collect.ForwardingObject; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.ListenableFuture; +import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; +import org.opendaylight.controller.md.sal.common.api.TransactionStatus; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.RpcResult; + +/** + * Utility {@link WriteTransaction} implementation which forwards all interface method + * invocation to a delegate instance. + */ +@SuppressWarnings("deprecation") // due to CheckedFuture & TransactionStatus +public class ForwardingWriteTransaction extends ForwardingObject implements WriteTransaction { + + private final WriteTransaction delegate; + + protected ForwardingWriteTransaction(WriteTransaction delegate) { + super(); + this.delegate = delegate; + } + + @Override + protected WriteTransaction delegate() { + return delegate; + } + + @Override + public void put(LogicalDatastoreType store, InstanceIdentifier path, T data) { + delegate.put(store, path, data); + } + + @Override + public void put(LogicalDatastoreType store, InstanceIdentifier path, T data, + boolean createMissingParents) { + delegate.put(store, path, data, createMissingParents); + } + + @Override + public void merge(LogicalDatastoreType store, InstanceIdentifier path, T data) { + delegate.merge(store, path, data); + } + + @Override + public void merge(LogicalDatastoreType store, InstanceIdentifier 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 CheckedFuture submit() { + return delegate.submit(); + } + + @Override + public ListenableFuture> commit() { + return delegate.commit(); + } + + @Override + public Object getIdentifier() { + return delegate.getIdentifier(); + } + +}