GIRAPH-1216

closes #99
diff --git a/giraph-block-app/src/main/java/org/apache/giraph/block_app/library/internal/SendMessageWithCombinerPiece.java b/giraph-block-app/src/main/java/org/apache/giraph/block_app/library/internal/SendMessageWithCombinerPiece.java
index c44ef8d..122ed68 100644
--- a/giraph-block-app/src/main/java/org/apache/giraph/block_app/library/internal/SendMessageWithCombinerPiece.java
+++ b/giraph-block-app/src/main/java/org/apache/giraph/block_app/library/internal/SendMessageWithCombinerPiece.java
@@ -18,6 +18,9 @@
 package org.apache.giraph.block_app.library.internal;
 
 import java.util.Iterator;
+import java.util.Spliterator;
+import java.util.Spliterators;
+import java.util.stream.StreamSupport;
 
 import org.apache.giraph.block_app.framework.api.BlockWorkerReceiveApi;
 import org.apache.giraph.block_app.framework.api.BlockWorkerSendApi;
@@ -39,7 +42,6 @@
 import org.apache.hadoop.io.WritableComparable;
 
 import com.google.common.base.Preconditions;
-import com.google.common.collect.Iterators;
 
 /**
  * Piece that sends a message provided through messageProducer to given set of
@@ -103,14 +105,10 @@
                   new SupplierFromVertex<I, V, E, Iterator<I>>() {
                     @Override
                     public Iterator<I> get(Vertex<I, V, E> vertex) {
-                      return Iterators.filter(
-                          targetsSupplier.get(vertex),
-                          new com.google.common.base.Predicate<I>() {
-                            @Override
-                            public boolean apply(I targetId) {
-                              return stripePredicate.apply(targetId);
-                            }
-                          });
+                      return StreamSupport.stream(
+                        Spliterators.spliteratorUnknownSize(
+                          targetsSupplier.get(vertex), Spliterator.ORDERED),
+                        false).filter(stripePredicate::apply).iterator();
                     }
                   },
                   messagesConsumer));
diff --git a/giraph-core/src/main/java/org/apache/giraph/edge/ByteArrayEdges.java b/giraph-core/src/main/java/org/apache/giraph/edge/ByteArrayEdges.java
index 509546c..a2b53e3 100644
--- a/giraph-core/src/main/java/org/apache/giraph/edge/ByteArrayEdges.java
+++ b/giraph-core/src/main/java/org/apache/giraph/edge/ByteArrayEdges.java
@@ -18,7 +18,6 @@
 
 package org.apache.giraph.edge;
 
-import com.google.common.collect.Iterators;
 import com.google.common.collect.UnmodifiableIterator;
 import org.apache.giraph.utils.ExtendedDataInput;
 import org.apache.giraph.utils.ExtendedDataOutput;
@@ -34,6 +33,7 @@
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Collections;
 
 /**
  * {@link OutEdges} implementation backed by a byte array.
@@ -177,7 +177,7 @@
   @Override
   public Iterator<Edge<I, E>> iterator() {
     if (edgeCount == 0) {
-      return Iterators.emptyIterator();
+      return Collections.emptyListIterator();
     } else {
       return new ByteArrayEdgeIterator();
     }
diff --git a/giraph-core/src/main/java/org/apache/giraph/factories/DefaultMessageValueFactory.java b/giraph-core/src/main/java/org/apache/giraph/factories/DefaultMessageValueFactory.java
index b10d30c..61a2a44 100644
--- a/giraph-core/src/main/java/org/apache/giraph/factories/DefaultMessageValueFactory.java
+++ b/giraph-core/src/main/java/org/apache/giraph/factories/DefaultMessageValueFactory.java
@@ -17,12 +17,11 @@
  */
 package org.apache.giraph.factories;
 
+import com.google.common.base.MoreObjects;
 import org.apache.giraph.conf.ImmutableClassesGiraphConfiguration;
 import org.apache.giraph.utils.WritableUtils;
 import org.apache.hadoop.io.Writable;
 
-import com.google.common.base.Objects;
-
 /**
  * Factory class to create default message values.
  *
@@ -51,7 +50,7 @@
   }
 
   @Override public String toString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("messageValueClass", messageValueClass)
         .toString();
   }
diff --git a/giraph-core/src/main/java/org/apache/giraph/jython/JythonJob.java b/giraph-core/src/main/java/org/apache/giraph/jython/JythonJob.java
index c7e9eae..128c41b 100644
--- a/giraph-core/src/main/java/org/apache/giraph/jython/JythonJob.java
+++ b/giraph-core/src/main/java/org/apache/giraph/jython/JythonJob.java
@@ -17,9 +17,9 @@
  */
 package org.apache.giraph.jython;
 
+import com.google.common.base.MoreObjects;
 import org.apache.giraph.combiner.MessageCombiner;
 
-import com.google.common.base.Objects;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
@@ -60,7 +60,7 @@
     }
 
     @Override public String toString() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
           .add("table", table)
           .add("partition_filter", partition_filter)
           .toString();
@@ -93,7 +93,7 @@
     }
 
     @Override public String toString() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
           .add("table", getTable())
           .add("partition_filter", getPartition_filter())
           .add("id_column", id_column)
@@ -138,7 +138,7 @@
     }
 
     @Override public String toString() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
           .add("table", getTable())
           .add("partition_filter", getPartition_filter())
           .add("source_id_column", source_id_column)
@@ -190,7 +190,7 @@
     }
 
     @Override public String toString() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
           .add("table", table)
           .add("partition", partition)
           .add("id_column", id_column)
diff --git a/giraph-core/src/main/java/org/apache/giraph/scripting/DeployedScript.java b/giraph-core/src/main/java/org/apache/giraph/scripting/DeployedScript.java
index c4353d3..59fec59 100644
--- a/giraph-core/src/main/java/org/apache/giraph/scripting/DeployedScript.java
+++ b/giraph-core/src/main/java/org/apache/giraph/scripting/DeployedScript.java
@@ -17,6 +17,7 @@
  */
 package org.apache.giraph.scripting;
 
+import com.google.common.base.MoreObjects;
 import org.apache.giraph.graph.Language;
 import org.codehaus.jackson.annotate.JsonCreator;
 import org.codehaus.jackson.annotate.JsonProperty;
@@ -87,7 +88,7 @@
 
   @Override
   public String toString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("path", path)
         .add("deployType", deployType)
         .add("language", language)
diff --git a/giraph-core/src/main/java/org/apache/giraph/types/JavaWritablePair.java b/giraph-core/src/main/java/org/apache/giraph/types/JavaWritablePair.java
index 752f5c1..6fa624e 100644
--- a/giraph-core/src/main/java/org/apache/giraph/types/JavaWritablePair.java
+++ b/giraph-core/src/main/java/org/apache/giraph/types/JavaWritablePair.java
@@ -17,6 +17,7 @@
  */
 package org.apache.giraph.types;
 
+import com.google.common.base.MoreObjects;
 import org.apache.hadoop.io.BooleanWritable;
 import org.apache.hadoop.io.ByteWritable;
 import org.apache.hadoop.io.DoubleWritable;
@@ -136,7 +137,7 @@
 
   @Override
   public String toString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("javaClass", javaClass.getSimpleName())
         .add("writableClass", writableClass.getSimpleName())
         .toString();
diff --git a/giraph-core/src/main/java/org/apache/giraph/utils/EmptyIterable.java b/giraph-core/src/main/java/org/apache/giraph/utils/EmptyIterable.java
index 8be82b5..0e4f4ce 100644
--- a/giraph-core/src/main/java/org/apache/giraph/utils/EmptyIterable.java
+++ b/giraph-core/src/main/java/org/apache/giraph/utils/EmptyIterable.java
@@ -18,7 +18,7 @@
 
 package org.apache.giraph.utils;
 
-import com.google.common.collect.Iterators;
+import java.util.Collections;
 
 import java.util.Iterator;
 
@@ -43,7 +43,7 @@
 
   @Override
   public Iterator<T> iterator() {
-    return Iterators.emptyIterator();
+    return Collections.emptyIterator();
   }
 }
 
diff --git a/giraph-core/src/main/java/org/apache/giraph/utils/TestGraph.java b/giraph-core/src/main/java/org/apache/giraph/utils/TestGraph.java
index 363d4c0..9ff6b0f 100644
--- a/giraph-core/src/main/java/org/apache/giraph/utils/TestGraph.java
+++ b/giraph-core/src/main/java/org/apache/giraph/utils/TestGraph.java
@@ -23,6 +23,7 @@
 import java.util.List;
 import java.util.Map.Entry;
 
+import com.google.common.base.MoreObjects;
 import org.apache.giraph.conf.GiraphConfiguration;
 import org.apache.giraph.conf.GiraphConstants;
 import org.apache.giraph.conf.ImmutableClassesGiraphConfiguration;
@@ -36,7 +37,6 @@
 import org.apache.hadoop.io.Writable;
 import org.apache.hadoop.io.WritableComparable;
 
-import com.google.common.base.Objects;
 import com.google.common.collect.Lists;
 
 /**
@@ -238,6 +238,7 @@
 
   @Override
   public String toString() {
-    return Objects.toStringHelper(this).add("vertices", vertices).toString();
+    return MoreObjects.toStringHelper(this).add(
+      "vertices", vertices).toString();
   }
 }
diff --git a/pom.xml b/pom.xml
index b10ba6f..dc54640 100644
--- a/pom.xml
+++ b/pom.xml
@@ -332,7 +332,7 @@
     <dep.fasterxml-jackson.version>2.1.2</dep.fasterxml-jackson.version>
     <dep.fastutil.version>6.5.4</dep.fastutil.version>
     <dep.google.findbugs.version>2.0.2</dep.google.findbugs.version>
-    <dep.guava.version>18.0</dep.guava.version>
+    <dep.guava.version>21.0</dep.guava.version>
     <dep.hbase.version>0.94.16</dep.hbase.version>
     <dep.hcatalog.version>0.5.0-incubating</dep.hcatalog.version>
     <dep.hive.version>0.11.0</dep.hive.version>
@@ -632,16 +632,6 @@
                   <exclude>commons-logging:commons-logging-api</exclude>
                   <!-- clashes with cglib:cglib-nodep -->
                   <exclude>cglib:cglib</exclude>
-                  <!-- use guava -->
-                  <exclude>com.google.collections:google-collections</exclude>
-                  <!-- but not the badly numbered ones... -->
-                  <exclude>com.google.guava:guava</exclude>
-                  <!-- Clashes with com.google.code.findbugs:annotations and having both jars -->
-                  <!-- as a dependency then clashes with the dependency checker (because it   -->
-                  <!-- is not very good at handling annotations). Use the annotations jar     -->
-                  <!-- instead which has all jsr305 annotations and the additional findbugs   -->
-                  <!-- stuff. -->
-                  <exclude>com.google.code.findbugs:jsr305</exclude>
                   <!-- Use the official version at javax.servlet:javax.servlet-api -->
                   <exclude>org.eclipse.jetty.orbit:javax.servlet</exclude>
                   <!-- Renamed airlift modules -->
@@ -655,10 +645,6 @@
                   <exclude>io.airlift:rack-packaging-experimental</exclude>
                   <exclude>io.airlift:rack-server-base-experimental</exclude>
                 </excludes>
-                <includes>
-                  <!-- whitelist the well numbered guava releases -->
-                  <include>com.google.guava:guava:[10.0.1,)</include>
-                </includes>
               </bannedDependencies>
               <requireMavenVersion>
                 <version>${project.maven.version}</version>
@@ -862,10 +848,6 @@
         <groupId>com.ning.maven.plugins</groupId>
         <artifactId>maven-dependency-versions-check-plugin</artifactId>
       </plugin>
-      <plugin>
-        <groupId>com.ning.maven.plugins</groupId>
-        <artifactId>maven-duplicate-finder-plugin</artifactId>
-      </plugin>
     </plugins>
   </build>