Remove deprecated methods from DOMDataTreeCommitCohort 73/74473/4
authorTom Pantelis <tompantelis@gmail.com>
Wed, 25 Jul 2018 18:39:57 +0000 (14:39 -0400)
committerRobert Varga <nite@hq.sk>
Thu, 26 Jul 2018 19:10:38 +0000 (19:10 +0000)
Downstream users have been modified so we can remove the
deprecated default methods from DOMDataTreeCommitCohort.

Change-Id: If298a16298db1537abc0017ea75da387af6fe580
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeCommitCohortAdapterTest.java
binding2/mdsal-binding2-api/src/main/java/org/opendaylight/mdsal/binding/javav2/api/DataTreeCommitCohort.java
binding2/mdsal-binding2-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/adapter/impl/data/tree/BindingDOMDataTreeCommitCohortAdapter.java
binding2/mdsal-binding2-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/javav2/dom/adapter/impl/data/tree/BindingDOMDataTreeCommitCohortAdapterTest.java
common/mdsal-common-api/src/main/java/org/opendaylight/mdsal/common/api/PostCanCommitStep.java
dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMDataTreeCommitCohort.java

index 237ed65b50eb7f751c7bf8a47063f3e81305cada..3debcb2d86267619cf237a069dfa4391bf11d6d8 100644 (file)
@@ -13,7 +13,6 @@ import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.verify;
 
 import java.util.Arrays;
@@ -66,10 +65,5 @@ public class BindingDOMDataTreeCommitCohortAdapterTest {
         ArgumentCaptor<Collection> modifications = ArgumentCaptor.forClass(Collection.class);
         verify(cohort).canCommit(eq(txId), modifications.capture());
         assertEquals(2, modifications.getValue().size());
-
-        reset(cohort);
-        doReturn(PostCanCommitStep.NOOP_SUCCESSFUL_FUTURE).when(cohort).canCommit(any(), any());
-        adapter.canCommit(txId, Arrays.asList(domDataTreeCandidate), null);
-        verify(cohort).canCommit(eq(txId), any());
     }
 }
index 25063fa093d81c50dd82bb9658966d92295e348e..45394d448310a0323bedab5af865ec2eb010f0d7 100644 (file)
@@ -9,6 +9,7 @@
 package org.opendaylight.mdsal.binding.javav2.api;
 
 import com.google.common.annotations.Beta;
+import java.util.Collection;
 import java.util.function.BiConsumer;
 import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode;
 import org.opendaylight.mdsal.common.api.DataValidationFailedException;
@@ -67,9 +68,9 @@ public interface DataTreeCommitCohort<T extends TreeNode> {
      * Performs canCommit? message in three-phase commit algorithm.
      *
      * @param txId Transaction identifier
-     * @param modification modification of data tree
+     * @param modifications the {@link DataTreeModification} to validate
      * @param callback result callback
      */
-    void canCommit(Object txId, DataTreeModification<T> modification,
+    void canCommit(Object txId, Collection<DataTreeModification<T>> modifications,
         BiConsumer<DataValidationFailedException, PostCanCommitStep> callback);
 }
index 9ac71591f4cb1e9f7be2e4a783d4d96d0b022eae..82f50d9d13a42c82e31cbed929c1714dbc33e0c7 100644 (file)
@@ -9,21 +9,16 @@ package org.opendaylight.mdsal.binding.javav2.dom.adapter.impl.data.tree;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.MoreExecutors;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.function.BiConsumer;
+import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.SettableFuture;
+import java.util.Collection;
+import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import org.opendaylight.mdsal.binding.javav2.api.DataTreeCommitCohort;
 import org.opendaylight.mdsal.binding.javav2.api.DataTreeModification;
 import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.BindingToNormalizedNodeCodec;
 import org.opendaylight.mdsal.binding.javav2.dom.codec.modification.LazyDataTreeModification;
 import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode;
-import org.opendaylight.mdsal.common.api.DataValidationFailedException;
-import org.opendaylight.mdsal.common.api.MappingCheckedFuture;
 import org.opendaylight.mdsal.common.api.PostCanCommitStep;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeCandidate;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohort;
@@ -49,21 +44,21 @@ public class BindingDOMDataTreeCommitCohortAdapter<T extends TreeNode> implement
 
     @Nonnull
     @Override
-    public CheckedFuture<PostCanCommitStep, DataValidationFailedException> canCommit(@Nonnull final Object txId,
-            @Nonnull final DOMDataTreeCandidate candidate, @Nonnull final SchemaContext ctx) {
-        final DataTreeModification<T> modification = LazyDataTreeModification.create(codec, candidate);
-        final List<CheckedFuture<PostCanCommitStep, DataValidationFailedException>> futures = new ArrayList<>();
-        final BiConsumer<DataValidationFailedException, PostCanCommitStep> biConsumer = (ex, cc) -> {
-            final ListenableFuture<PostCanCommitStep> immediateFuture = Futures.immediateFuture(cc);
-            futures.add(MappingCheckedFuture.create(immediateFuture,
-                            new DataValidationFailedExceptionMapper("canCommit", candidate.getRootPath())));
-        };
-        final ListenableFuture<PostCanCommitStep> resultFuture =
-                Futures.transform(Futures.allAsList(futures), input -> input.get(input.size() - 1),
-                        MoreExecutors.directExecutor());
-        cohort.canCommit(txId, modification, biConsumer);
-        return MappingCheckedFuture.create(resultFuture,
-                new DataValidationFailedExceptionMapper("canCommit", candidate.getRootPath()));
+    public FluentFuture<PostCanCommitStep> canCommit(Object txId, SchemaContext ctx,
+            Collection<DOMDataTreeCandidate> candidates)  {
+        final Collection<DataTreeModification<T>> modifications = candidates.stream().map(
+            candidate -> LazyDataTreeModification.<T>create(codec, candidate)).collect(Collectors.toList());
+        final SettableFuture<PostCanCommitStep> resultFuture = SettableFuture.create();
+
+        cohort.canCommit(txId, modifications, (ex, pccs) -> {
+            if (ex != null) {
+                resultFuture.setException(ex);
+            } else {
+                resultFuture.set(pccs);
+            }
+        });
+
+        return resultFuture;
     }
 }
 
index beeca8e99fdea8c3287d1a6d75ba0cbd5c11622f..3943dbbf9871959dff17ee3616b2dce4064c5b62 100644 (file)
@@ -13,6 +13,7 @@ import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 
+import java.util.Arrays;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.opendaylight.mdsal.binding.javav2.api.DataTreeCommitCohort;
@@ -67,7 +68,7 @@ public class BindingDOMDataTreeCommitCohortAdapterTest {
         assertNotNull(LazyDataTreeModification.create(codec, domDataTreeCandidate));
 
         Mockito.doNothing().when(cohort).canCommit(any(), any(), any());
-        adapter.canCommit(new Object(), domDataTreeCandidate, null);
+        adapter.canCommit(new Object(), null, Arrays.asList(domDataTreeCandidate));
         verify(cohort).canCommit(any(), any(), any());
     }
-}
\ No newline at end of file
+}
index 9b9e12217e7d6d0719db779dc476e5cfbc478278..7f3287fa866ee36764553e779756a49eb5fdff59 100644 (file)
@@ -8,9 +8,7 @@
 package org.opendaylight.mdsal.common.api;
 
 import com.google.common.annotations.Beta;
-import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FluentFuture;
-import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.util.concurrent.FluentFutures;
@@ -42,13 +40,6 @@ public interface PostCanCommitStep extends ThreePhaseCommitStep {
         }
     };
 
-    /**
-     * Successful future, returning {@link #NOOP} implementation of {@link PostCanCommitStep}s.
-     */
-    @Deprecated
-    CheckedFuture<PostCanCommitStep, DataValidationFailedException> NOOP_SUCCESS_FUTURE =
-            Futures.immediateCheckedFuture(NOOP);
-
     FluentFuture<PostCanCommitStep> NOOP_SUCCESSFUL_FUTURE = FluentFutures.immediateFluentFuture(NOOP);
 
     /**
index 17b0344c6693c31f290072ed0c5b65d90ce2f9bb..669a0ea258cbe46525ed54f6877a9c49c2925926 100644 (file)
@@ -8,22 +8,13 @@
 package org.opendaylight.mdsal.dom.api;
 
 import com.google.common.annotations.Beta;
-import com.google.common.collect.Iterables;
-import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FluentFuture;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.MoreExecutors;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 import javax.annotation.Nonnull;
 import org.opendaylight.mdsal.common.api.DataValidationFailedException;
-import org.opendaylight.mdsal.common.api.MappingCheckedFuture;
 import org.opendaylight.mdsal.common.api.PostCanCommitStep;
 import org.opendaylight.yangtools.util.concurrent.ExceptionMapper;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.slf4j.LoggerFactory;
 
 /**
  * Commit cohort participating in commit of data modification, which can validate data tree
@@ -69,44 +60,6 @@ import org.slf4j.LoggerFactory;
 @Beta
 public interface DOMDataTreeCommitCohort {
 
-    /**
-     * DO NOT implement or invoke this method. It is deprecated in favor of
-     * {@link #canCommit(Object, Collection, SchemaContext)} and only exists for backwards compatibility. The
-     * default implementation returns {@link PostCanCommitStep#NOOP_SUCCESS_FUTURE} and is invoked by the
-     * default implementation of {@link #canCommit(Object, Collection, SchemaContext)}.
-     *
-     * @deprecated Implement and invoke {@link #canCommit(Object, Collection, SchemaContext)} instead.
-     */
-    @Deprecated
-    @Nonnull
-    default CheckedFuture<PostCanCommitStep, DataValidationFailedException> canCommit(@Nonnull final Object txId,
-            @Nonnull final DOMDataTreeCandidate candidate, @Nonnull final SchemaContext ctx) {
-        LoggerFactory.getLogger(getClass()).error(
-                "The default implementation of DOMDataTreeCommitCohort#canCommit(Object, DOMDataTreeCandidate, "
-                + "SchemaContext) was invoked on {}", getClass());
-        return PostCanCommitStep.NOOP_SUCCESS_FUTURE;
-    }
-
-    /**
-     * DO NOT implement or invoke this method. It is deprecated in favor of
-     * {@link #canCommit(Object, SchemaContext, Collection)} which returns a {@link FluentFuture} instead of the
-     * deprecated {@link CheckedFuture} which is scheduled for remkoval in a future guava release. The
-     * default implementation calls {@link #canCommit(Object, SchemaContext, Collection)}.
-     *
-     * @deprecated Implement and invoke {@link #canCommit(Object, SchemaContext, Collection)} instead.
-     */
-    @Deprecated
-    @Nonnull
-    default CheckedFuture<PostCanCommitStep, DataValidationFailedException> canCommit(@Nonnull final Object txId,
-            @Nonnull final Collection<DOMDataTreeCandidate> candidates, @Nonnull final SchemaContext ctx) {
-        LoggerFactory.getLogger(getClass()).error(
-                "The default implementation of DOMDataTreeCommitCohort#canCommit(Object, Collection, "
-                + "SchemaContext) was invoked on {}", getClass());
-
-        return MappingCheckedFuture.create(canCommit(txId, ctx, candidates), new DataValidationFailedExceptionMapper(
-                "canCommit", Iterables.getLast(candidates).getRootPath()));
-    }
-
     /**
      * Validates the supplied data tree modifications and associates the cohort-specific steps with data broker
      * transaction.
@@ -140,23 +93,8 @@ public interface DOMDataTreeCommitCohort {
      *         validation failure reason.
      */
     @Nonnull
-    default FluentFuture<PostCanCommitStep> canCommit(@Nonnull final Object txId,
-            @Nonnull final SchemaContext ctx, @Nonnull final Collection<DOMDataTreeCandidate> candidates) {
-        LoggerFactory.getLogger(getClass()).warn("DOMDataTreeCommitCohort implementation {} should override "
-                + "canCommit(Object, SchemaContext, Collection)", getClass());
-
-        // For backwards compatibility, the default implementation is to invoke the deprecated
-        // canCommit(Object, DOMDataTreeCandidate, SchemaContext) method for each DOMDataTreeCandidate and return the
-        // last PostCanCommitStep.
-        List<ListenableFuture<PostCanCommitStep>> futures = new ArrayList<>();
-        for (DOMDataTreeCandidate candidate : candidates) {
-            futures.add(canCommit(txId, candidate, ctx));
-        }
-
-        final ListenableFuture<PostCanCommitStep> resultFuture = Futures.transform(Futures.allAsList(futures),
-            input -> input.get(input.size() - 1), MoreExecutors.directExecutor());
-        return FluentFuture.from(resultFuture);
-    }
+    FluentFuture<PostCanCommitStep> canCommit(@Nonnull Object txId,
+            @Nonnull SchemaContext ctx, @Nonnull Collection<DOMDataTreeCandidate> candidates);
 
     /**
      * An ExceptionMapper that translates an Exception to a DataValidationFailedException.