From 4821c84d81203297ebc7ea0a3ad8e097d042b7c7 Mon Sep 17 00:00:00 2001 From: Jonah Dahlquist Date: Thu, 15 Dec 2016 20:05:38 -0800 Subject: [PATCH 1/4] First attempt at making GeoFire queries compatible with Google App Engine --- .../com/firebase/geofire/AppEngineEventRaiser.java | 12 ++++++++++++ src/main/java/com/firebase/geofire/GeoFire.java | 5 ++++- .../java/com/firebase/geofire/ThreadEventRaiser.java | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/firebase/geofire/AppEngineEventRaiser.java diff --git a/src/main/java/com/firebase/geofire/AppEngineEventRaiser.java b/src/main/java/com/firebase/geofire/AppEngineEventRaiser.java new file mode 100644 index 0000000..58b2d6a --- /dev/null +++ b/src/main/java/com/firebase/geofire/AppEngineEventRaiser.java @@ -0,0 +1,12 @@ +package com.firebase.geofire; + +import com.google.appengine.api.ThreadManager; +import java.util.concurrent.Executors; + +class AppEngineEventRaiser extends ThreadEventRaiser { + + @Override + public AppEngineEventRaiser() { + this.executorService = Executors.newSingleThreadExecutor(ThreadManager.backgroundThreadFactory()); + } +} diff --git a/src/main/java/com/firebase/geofire/GeoFire.java b/src/main/java/com/firebase/geofire/GeoFire.java index 440afe4..ba73fee 100644 --- a/src/main/java/com/firebase/geofire/GeoFire.java +++ b/src/main/java/com/firebase/geofire/GeoFire.java @@ -124,7 +124,10 @@ public GeoFire(DatabaseReference databaseReference) { try { eventRaiser = new AndroidEventRaiser(); } catch (Throwable e) { - // We're not on Android, use the ThreadEventRaiser + // We're not on Android, try using GAE-specific event raiser + eventRaiser = new AppEngineEventRaiser(); + } catch (Throwable e) { + // We're not on Android or GAE, use the ThreadEventRaiser eventRaiser = new ThreadEventRaiser(); } this.eventRaiser = eventRaiser; diff --git a/src/main/java/com/firebase/geofire/ThreadEventRaiser.java b/src/main/java/com/firebase/geofire/ThreadEventRaiser.java index 8676c46..4d55a9f 100644 --- a/src/main/java/com/firebase/geofire/ThreadEventRaiser.java +++ b/src/main/java/com/firebase/geofire/ThreadEventRaiser.java @@ -5,7 +5,7 @@ class ThreadEventRaiser implements EventRaiser { - private final ExecutorService executorService; + protected final ExecutorService executorService; public ThreadEventRaiser() { this.executorService = Executors.newSingleThreadExecutor(); From e8647cea94660e7d3d7def5418fc7dc6bcc474da Mon Sep 17 00:00:00 2001 From: Jonah Dahlquist Date: Tue, 20 Dec 2016 17:55:08 -0800 Subject: [PATCH 2/4] Fixed compatibility with GAE, sacrificed Android compatibility --- .../java/com/firebase/geofire/AppEngineEventRaiser.java | 8 ++++++-- src/main/java/com/firebase/geofire/GeoFire.java | 5 +---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/firebase/geofire/AppEngineEventRaiser.java b/src/main/java/com/firebase/geofire/AppEngineEventRaiser.java index 58b2d6a..6869f01 100644 --- a/src/main/java/com/firebase/geofire/AppEngineEventRaiser.java +++ b/src/main/java/com/firebase/geofire/AppEngineEventRaiser.java @@ -3,10 +3,14 @@ import com.google.appengine.api.ThreadManager; import java.util.concurrent.Executors; -class AppEngineEventRaiser extends ThreadEventRaiser { +class AppEngineEventRaiser implements EventRaiser { - @Override public AppEngineEventRaiser() { this.executorService = Executors.newSingleThreadExecutor(ThreadManager.backgroundThreadFactory()); } + + public void raiseEvent(Runnable r) { + this.executorService.submit(r); + } } + diff --git a/src/main/java/com/firebase/geofire/GeoFire.java b/src/main/java/com/firebase/geofire/GeoFire.java index ba73fee..3a4f4f7 100644 --- a/src/main/java/com/firebase/geofire/GeoFire.java +++ b/src/main/java/com/firebase/geofire/GeoFire.java @@ -122,12 +122,9 @@ public GeoFire(DatabaseReference databaseReference) { this.databaseReference = databaseReference; EventRaiser eventRaiser; try { - eventRaiser = new AndroidEventRaiser(); - } catch (Throwable e) { - // We're not on Android, try using GAE-specific event raiser eventRaiser = new AppEngineEventRaiser(); } catch (Throwable e) { - // We're not on Android or GAE, use the ThreadEventRaiser + // We're not on GAE, use the ThreadEventRaiser eventRaiser = new ThreadEventRaiser(); } this.eventRaiser = eventRaiser; From 35f951208817bfe6443e73b9fd6dbee41dfbba08 Mon Sep 17 00:00:00 2001 From: Jonah Dahlquist Date: Tue, 20 Dec 2016 23:46:36 -0800 Subject: [PATCH 3/4] Added missing EventRaiser implementation field --- src/main/java/com/firebase/geofire/AppEngineEventRaiser.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/firebase/geofire/AppEngineEventRaiser.java b/src/main/java/com/firebase/geofire/AppEngineEventRaiser.java index 6869f01..fda7d77 100644 --- a/src/main/java/com/firebase/geofire/AppEngineEventRaiser.java +++ b/src/main/java/com/firebase/geofire/AppEngineEventRaiser.java @@ -4,6 +4,8 @@ import java.util.concurrent.Executors; class AppEngineEventRaiser implements EventRaiser { + + private final ExecutorService executorService; public AppEngineEventRaiser() { this.executorService = Executors.newSingleThreadExecutor(ThreadManager.backgroundThreadFactory()); From c83db98602c05479a44359de5aa17f3d9a00428b Mon Sep 17 00:00:00 2001 From: Jonah Dahlquist Date: Tue, 20 Dec 2016 23:47:15 -0800 Subject: [PATCH 4/4] Restored private accessibility to ThreadEventRaiser field --- src/main/java/com/firebase/geofire/ThreadEventRaiser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/firebase/geofire/ThreadEventRaiser.java b/src/main/java/com/firebase/geofire/ThreadEventRaiser.java index 4d55a9f..8676c46 100644 --- a/src/main/java/com/firebase/geofire/ThreadEventRaiser.java +++ b/src/main/java/com/firebase/geofire/ThreadEventRaiser.java @@ -5,7 +5,7 @@ class ThreadEventRaiser implements EventRaiser { - protected final ExecutorService executorService; + private final ExecutorService executorService; public ThreadEventRaiser() { this.executorService = Executors.newSingleThreadExecutor();