*/
package org.opendaylight.mdsal.binding.util;
+import com.google.common.util.concurrent.FluentFuture;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
* Implementation of {@link TypedWriteTransaction}.
*
* @param <D> The datastore which the transaction targets.
+ * @param <X> WriteTransaction type
*/
-class TypedWriteTransactionImpl<D extends Datastore> extends TypedTransaction<D>
+class TypedWriteTransactionImpl<D extends Datastore, X extends WriteTransaction> extends TypedTransaction<D, X>
implements TypedWriteTransaction<D> {
- // Temporarily package protected for TransactionAdapter
- final WriteTransaction delegate;
-
- TypedWriteTransactionImpl(final Class<D> datastoreType, final WriteTransaction realTx) {
- super(datastoreType);
- this.delegate = realTx;
+ TypedWriteTransactionImpl(final D datastore, final X realTx) {
+ super(datastore, realTx);
}
@Override
- public <T extends DataObject> void put(final InstanceIdentifier<T> path, final T data) {
- delegate.put(getDatastoreType(), path, data);
+ public final <T extends DataObject> void put(final InstanceIdentifier<T> path, final T data) {
+ delegate().put(getDatastoreType(), path, data);
+ postOperation();
}
@Override
- public <T extends DataObject> void put(final InstanceIdentifier<T> path, final T data,
- final boolean createMissingParents) {
- delegate.put(getDatastoreType(), path, data, createMissingParents);
+ public final <T extends DataObject> void mergeParentStructurePut(final InstanceIdentifier<T> path,
+ final T data) {
+ delegate().mergeParentStructurePut(getDatastoreType(), path, data);
+ postOperation();
}
@Override
- public <T extends DataObject> void merge(final InstanceIdentifier<T> path, final T data) {
- delegate.merge(getDatastoreType(), path, data);
+ public final <T extends DataObject> void merge(final InstanceIdentifier<T> path, final T data) {
+ delegate().merge(getDatastoreType(), path, data);
+ postOperation();
}
@Override
- public <T extends DataObject> void merge(final InstanceIdentifier<T> path, final T data,
- final boolean createMissingParents) {
- delegate.merge(getDatastoreType(), path, data, createMissingParents);
+ public final <T extends DataObject> void mergeParentStructureMerge(final InstanceIdentifier<T> path,
+ final T data) {
+ delegate().mergeParentStructureMerge(getDatastoreType(), path, data);
+ postOperation();
}
@Override
- public void delete(final InstanceIdentifier<?> path) {
- delegate.delete(getDatastoreType(), path);
+ public final void delete(final InstanceIdentifier<?> path) {
+ delegate().delete(getDatastoreType(), path);
+ postOperation();
}
@Override
- public Object getIdentifier() {
- return delegate.getIdentifier();
+ public final FluentFuture<?> completionFuture() {
+ return delegate().completionFuture();
+ }
+
+ void postOperation() {
+ // Defaults to no-op
}
}