Merge "java: Implement a BlePlugin for Java. This doesn't expose all of the discovery APIs yet.  That will come in a second change that will make the reverse JNI call happen."
diff --git a/projects/syncslidepresenter/src/main/java/io/v/syncslidepresenter/Main.java b/projects/syncslidepresenter/src/main/java/io/v/syncslidepresenter/Main.java
index 73ba305..e8f0a1c 100644
--- a/projects/syncslidepresenter/src/main/java/io/v/syncslidepresenter/Main.java
+++ b/projects/syncslidepresenter/src/main/java/io/v/syncslidepresenter/Main.java
@@ -12,6 +12,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
+import io.v.v23.VIterable;
 import org.joda.time.Duration;
 
 import java.awt.Dimension;
@@ -78,7 +79,6 @@
 import io.v.v23.syncbase.nosql.BatchDatabase;
 import io.v.v23.syncbase.nosql.Database;
 import io.v.v23.syncbase.nosql.RowRange;
-import io.v.v23.syncbase.nosql.Stream;
 import io.v.v23.syncbase.nosql.Syncgroup;
 import io.v.v23.syncbase.nosql.Table;
 import io.v.v23.syncbase.nosql.WatchChange;
@@ -251,14 +251,13 @@
         String rowKey = Joiner.on("/").join(presentation.getDeckId(), presentation
                 .getPresentationId(), "CurrentSlide");
         logger.info("going to watch row key " + rowKey);
-        Stream<WatchChange> watchStream = db.watch(context, presentations.name(), rowKey,
-                marker);
+        VIterable<WatchChange> changes = db.watch(context, presentations.name(), rowKey, marker);
 
-        for (WatchChange w : watchStream) {
-            logger.info("Change detected in " + w.getRowName());
-            logger.info("Type: " + w.getChangeType());
+        for (WatchChange change : changes) {
+            logger.info("Change detected in " + change.getRowName());
+            logger.info("Type: " + change.getChangeType());
             try {
-                VCurrentSlide currentSlide = (VCurrentSlide) VomUtil.decode(w.getVomValue(),
+                VCurrentSlide currentSlide = (VCurrentSlide) VomUtil.decode(change.getVomValue(),
                         VCurrentSlide.class);
                 logger.info("Current slide: " + currentSlide);
                 // Read the corresponding slide.
@@ -270,6 +269,10 @@
                 logger.log(Level.WARNING, "exception encountered while handling change event", e);
             }
         }
+
+        if (changes.error() != null) {
+            logger.log(Level.WARNING, "Premature end of slide changes: " + changes.error());
+        }
     }
 
     private static void enableOSXFullscreen(Window window) {