vcs: Refactoring - inlined "ValueConsumer" logic to "GenericDetailsLoader"
authorKonstantin Kolosovsky <konstantin.kolosovsky@jetbrains.com>
Fri, 4 Nov 2016 11:48:48 +0000 (14:48 +0300)
committerKonstantin Kolosovsky <konstantin.kolosovsky@jetbrains.com>
Wed, 16 Nov 2016 18:01:56 +0000 (21:01 +0300)
platform/vcs-api/src/com/intellij/openapi/vcs/GenericDetailsLoader.java
platform/vcs-api/src/com/intellij/openapi/vcs/ValueConsumer.java [deleted file]

index 460358ef31f3372cf517a3c3fb029dbde46f2a38..21d72cf7c115339ccb67805cfe17354e726175a3 100644 (file)
@@ -23,8 +23,9 @@ import org.jetbrains.annotations.Nullable;
 
 public class GenericDetailsLoader<Id, Data> implements Details<Id, Data> {
   private final Consumer<Id> myLoader;
-  private final ValueConsumer<Id, Data> myValueConsumer;
+  private final PairConsumer<Id, Data> myValueConsumer;
   private Id myCurrentlySelected;
+  private Id mySetId;
 
   /**
    * @param loader - is called in AWT. Should call {@link #take} with data when ready. Also in AWT
@@ -32,15 +33,14 @@ public class GenericDetailsLoader<Id, Data> implements Details<Id, Data> {
    */
   public GenericDetailsLoader(Consumer<Id> loader, PairConsumer<Id, Data> valueConsumer) {
     myLoader = loader;
-    myValueConsumer = new ValueConsumer<>(valueConsumer);
+    myValueConsumer = valueConsumer;
   }
 
   @CalledInAwt
   public void updateSelection(@Nullable Id id, boolean force) {
-    myValueConsumer.setId(id);
-
     Id previousId = myCurrentlySelected;
     myCurrentlySelected = id;
+    mySetId = null;
     if (force || !Comparing.equal(id, previousId)) {
       myLoader.consume(id);
     }
@@ -49,7 +49,10 @@ public class GenericDetailsLoader<Id, Data> implements Details<Id, Data> {
   @CalledInAwt
   @Override
   public void take(Id id, Data data) {
-    myValueConsumer.consume(id, data);
+    if (!id.equals(mySetId) && id.equals(myCurrentlySelected)) {
+      mySetId = id;
+      myValueConsumer.consume(id, data);
+    }
   }
 
   @CalledInAwt
diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/ValueConsumer.java b/platform/vcs-api/src/com/intellij/openapi/vcs/ValueConsumer.java
deleted file mode 100644 (file)
index 9c53d5c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2000-2011 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.intellij.openapi.vcs;
-
-import com.intellij.util.PairConsumer;
-
-public class ValueConsumer<Id, Data> {
-  private Id myId;
-  private Id mySetId;
-  private final PairConsumer<Id, Data> myConsumer;
-
-  protected ValueConsumer(PairConsumer<Id, Data> consumer) {
-    myConsumer = consumer;
-  }
-
-  public void consume(Id id, Data data) {
-    if (!id.equals(mySetId) && id.equals(myId)) {
-      mySetId = id;
-      myConsumer.consume(id, data);
-    }
-  }
-
-  public void setId(Id id) {
-    myId = id;
-    mySetId = null;
-  }
-}