s = findOne(myLocId);
+
+ return s.flatMap(myLoc ->
+ // merge historical and live data
+ Streams.merge(locationSaveEvents,
+ Streams.from(locations.findAll())
+ .dispatchOn(Environment.cachedDispatcher())
+
+ // not us
+ .filter(l -> !nullSafeEquals(l.getId(), myLocId))
+
+ // only Locations within given Distance
+ .filter(new GeoNearPredicate(myLoc.toPoint(), new Distance(distance)))
+ ));
+ }
}
diff --git a/src/main/java/demo/geo/GeoNearPredicate.java b/src/main/java/demo/geo/GeoNearPredicate.java
index 3d3ad9c..e0f69d1 100644
--- a/src/main/java/demo/geo/GeoNearPredicate.java
+++ b/src/main/java/demo/geo/GeoNearPredicate.java
@@ -3,13 +3,13 @@
import demo.domain.Location;
import org.springframework.data.geo.Distance;
import org.springframework.data.geo.Point;
-import reactor.function.Predicate;
+import reactor.fn.Predicate;
/**
- * This {@link reactor.function.Predicate} implementation calculates the distance between a "home" {@link
+ * This {@link reactor.fn.Predicate} implementation calculates the distance between a "home" {@link
* org.springframework.data.geo.Point} set at instantiation time to the {@link demo.domain.Location Locations} passing
* through a {@link reactor.rx.Stream} using a Haversine formula [1]. If the distance is within the specified amount,
- * the {@link reactor.function.Predicate} allows the {@link demo.domain.Location} to pass through the {@link
+ * the {@link reactor.fn.Predicate} allows the {@link demo.domain.Location} to pass through the {@link
* reactor.rx.Stream}j to be processed. [1] - http://rosettacode.org/wiki/Haversine_formula#Java
*
* @author Jon Brisbin
From 736c942fbf3ec655d81353de49c2ed9058168206 Mon Sep 17 00:00:00 2001
From: Tiare Balbi <0484.gerente@olearys.com.br>
Date: Fri, 20 Feb 2015 14:54:26 -0200
Subject: [PATCH 2/2] ratpack updated and updated the usage of Environment
---
pom.xml | 2 +-
src/main/java/demo/ProcessorApplication.java | 3 ++-
src/main/java/demo/domain/LocationService.java | 6 +++---
3 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/pom.xml b/pom.xml
index 462c424..94478c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,7 +106,7 @@
1.8
1.0.0.BUILD-SNAPSHOT
2.0.0.BUILD-SNAPSHOT
- 0.9.9-SNAPSHOT
+ 0.9.11-SNAPSHOT
diff --git a/src/main/java/demo/ProcessorApplication.java b/src/main/java/demo/ProcessorApplication.java
index 1e23658..99cc5b5 100644
--- a/src/main/java/demo/ProcessorApplication.java
+++ b/src/main/java/demo/ProcessorApplication.java
@@ -18,6 +18,7 @@
import ratpack.render.RendererSupport;
import ratpack.spring.annotation.EnableRatpack;
import reactor.Environment;
+import reactor.rx.Streams;
import reactor.rx.broadcast.Broadcaster;
import reactor.spring.context.config.EnableReactor;
@@ -39,7 +40,7 @@ public class ProcessorApplication {
}
@Bean
- public Broadcaster locationEventStream() {
+ public Broadcaster locationEventStream(Environment env) {
return Broadcaster.create();
}
diff --git a/src/main/java/demo/domain/LocationService.java b/src/main/java/demo/domain/LocationService.java
index eae110b..8016852 100644
--- a/src/main/java/demo/domain/LocationService.java
+++ b/src/main/java/demo/domain/LocationService.java
@@ -46,13 +46,13 @@ public Map> registry() {
public Stream findOne(String id) {
return Streams.just(id)
- .dispatchOn(Environment.cachedDispatcher())
+ .dispatchOn(Environment.get())
.map(locations::findOne);
}
public Stream update(Location loc) {
return Streams.just(loc)
- .dispatchOn(Environment.cachedDispatcher())
+ .dispatchOn(Environment.get())
// persist incoming to MongoDB
.map(locations::save)
@@ -68,7 +68,7 @@ public Stream nearby(String myLocId, int distance) {
// merge historical and live data
Streams.merge(locationSaveEvents,
Streams.from(locations.findAll())
- .dispatchOn(Environment.cachedDispatcher())
+ .dispatchOn(Environment.get())
// not us
.filter(l -> !nullSafeEquals(l.getId(), myLocId))