From cba5bacb5b7677ac4f743d1b828e193e8adec1de Mon Sep 17 00:00:00 2001 From: misterwilliam Date: Thu, 12 May 2016 15:20:15 -0700 Subject: [PATCH 1/4] Updating firebase-event-proxy/pom.xml so that it is more like other pom's and references the parent pom.xml. Adding firebase-event-proxy to parent pom.xml --- .../gae-firebase-event-proxy/pom.xml | 77 +++---------------- .../src/main/webapp/WEB-INF/appengine-web.xml | 3 +- .../src/main/webapp/WEB-INF/web.xml | 3 +- pom.xml | 1 + 4 files changed, 15 insertions(+), 69 deletions(-) diff --git a/appengine/firebase-event-proxy/gae-firebase-event-proxy/pom.xml b/appengine/firebase-event-proxy/gae-firebase-event-proxy/pom.xml index c4975f1f095..ad5aa37c30b 100644 --- a/appengine/firebase-event-proxy/gae-firebase-event-proxy/pom.xml +++ b/appengine/firebase-event-proxy/gae-firebase-event-proxy/pom.xml @@ -10,9 +10,7 @@ See the License for the specific language governing permissions and limitations under the License. --> - - - + 4.0.0 war 1.0-SNAPSHOT @@ -20,11 +18,16 @@ com.example.GaeFirebaseEventProxy GaeFirebaseEventProxy + + com.google.cloud + doc-samples + 1.0.0 + ../../.. + + gae-firebase-event-proxy 1 - 1.9.36 - 2.0.9.74.v20150814 UTF-8 true @@ -38,7 +41,7 @@ com.google.appengine appengine-api-1.0-sdk - ${appengine.version} + ${appengine.sdk.version} javax.servlet @@ -71,13 +74,13 @@ com.google.appengine appengine-testing - ${appengine.version} + ${appengine.sdk.version} test com.google.appengine appengine-api-stubs - ${appengine.version} + ${appengine.sdk.version} test @@ -86,71 +89,15 @@ ${project.build.directory}/${project.build.finalName}/WEB-INF/classes - - org.codehaus.mojo - versions-maven-plugin - 2.1 - - - compile - - display-dependency-updates - display-plugin-updates - - - - - - org.apache.maven.plugins - 3.1 - maven-compiler-plugin - - 1.7 - 1.7 - - - - org.apache.maven.plugins - maven-war-plugin - 2.4 - - true - - - - ${basedir}/src/main/webapp/WEB-INF - true - WEB-INF - - - - - com.google.appengine appengine-maven-plugin - ${appengine.version} + ${appengine.sdk.version} false ${app.version} - - - - - - com.google.appengine - gcloud-maven-plugin - ${gcloud.plugin.version} - - true - - diff --git a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/webapp/WEB-INF/appengine-web.xml b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/webapp/WEB-INF/appengine-web.xml index 96aaab69ef4..dcf0932551f 100644 --- a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/webapp/WEB-INF/appengine-web.xml +++ b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/webapp/WEB-INF/appengine-web.xml @@ -1,3 +1,4 @@ + - - ${app.id} ${app.version} diff --git a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/webapp/WEB-INF/web.xml b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/webapp/WEB-INF/web.xml index b8ded3bcce1..f81a2d31283 100644 --- a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/webapp/WEB-INF/web.xml +++ b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/webapp/WEB-INF/web.xml @@ -1,3 +1,4 @@ + - - appengine/datastore/indexes appengine/datastore/indexes-exploding appengine/datastore/indexes-perfect + appengine/firebase-event-proxy/gae-firebase-event-proxy appengine/guestbook-objectify appengine/helloworld appengine/images From 04dc602b190c1262e4392b54d379977c09d8a681 Mon Sep 17 00:00:00 2001 From: misterwilliam Date: Fri, 13 May 2016 13:34:38 -0700 Subject: [PATCH 2/4] Fixing checkstyle issues --- .../gae-firebase-event-proxy/pom.xml | 4 +-- .../FirebaseEventProxy.java | 26 +++++++++---------- .../ServletContextListenerImpl.java | 2 +- .../src/main/webapp/WEB-INF/web.xml | 2 +- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/appengine/firebase-event-proxy/gae-firebase-event-proxy/pom.xml b/appengine/firebase-event-proxy/gae-firebase-event-proxy/pom.xml index ad5aa37c30b..4554b7dc37c 100644 --- a/appengine/firebase-event-proxy/gae-firebase-event-proxy/pom.xml +++ b/appengine/firebase-event-proxy/gae-firebase-event-proxy/pom.xml @@ -15,8 +15,8 @@ war 1.0-SNAPSHOT - com.example.GaeFirebaseEventProxy - GaeFirebaseEventProxy + com.example.gaefirebaseeventproxy + gaefirebaseeventproxy com.google.cloud diff --git a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/FirebaseEventProxy.java b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/FirebaseEventProxy.java index ffff83eaa34..4c67beb5d14 100644 --- a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/FirebaseEventProxy.java +++ b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/FirebaseEventProxy.java @@ -14,7 +14,17 @@ * limitations under the License. */ -package com.example.GaeFirebaseEventProxy; +package com.example.gaefirebaseeventproxy; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.firebase.client.AuthData; +import com.firebase.client.DataSnapshot; +import com.firebase.client.Firebase; +import com.firebase.client.FirebaseError; +import com.firebase.client.ValueEventListener; +import com.firebase.security.token.TokenGenerator; +import com.google.appengine.api.utils.SystemProperty; import java.io.FileInputStream; import java.io.IOException; @@ -27,16 +37,6 @@ import java.util.Properties; import java.util.logging.Logger; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.firebase.client.AuthData; -import com.firebase.client.DataSnapshot; -import com.firebase.client.Firebase; -import com.firebase.client.FirebaseError; -import com.firebase.client.ValueEventListener; -import com.firebase.security.token.TokenGenerator; -import com.google.appengine.api.utils.SystemProperty; - public class FirebaseEventProxy { private static final Logger log = Logger.getLogger(FirebaseEventProxy.class.getName()); @@ -49,8 +49,8 @@ public FirebaseEventProxy() { } public void start() { - String FIREBASE_LOCATION = "https://gae-fb-proxy.firebaseio.com/"; - Firebase firebase = new Firebase(FIREBASE_LOCATION); + String firebaseLocation = "https://gae-fb-proxy.firebaseio.com/"; + Firebase firebase = new Firebase(firebaseLocation); // Authenticate with Firebase firebase.authWithCustomToken(this.firebaseAuthToken, new Firebase.AuthResultHandler() { diff --git a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/ServletContextListenerImpl.java b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/ServletContextListenerImpl.java index b50dc4d3961..ffee0cee769 100644 --- a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/ServletContextListenerImpl.java +++ b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/ServletContextListenerImpl.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.example.GaeFirebaseEventProxy; +package com.example.gaefirebaseeventproxy; import java.util.logging.Logger; diff --git a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/webapp/WEB-INF/web.xml b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/webapp/WEB-INF/web.xml index f81a2d31283..427fd14c909 100644 --- a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/webapp/WEB-INF/web.xml +++ b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/webapp/WEB-INF/web.xml @@ -17,7 +17,7 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> - com.example.GaeFirebaseEventProxy.ServletContextListenerImpl + com.example.gaefirebaseeventproxy.ServletContextListenerImpl index.jsp From 62362ad0493ee70e29776183f161e7d21f533c9c Mon Sep 17 00:00:00 2001 From: misterwilliam Date: Mon, 23 May 2016 13:14:16 -0700 Subject: [PATCH 3/4] Update firebase-event-proxy sample code to use latest Firebase SDK --- .../gae-firebase-event-proxy/pom.xml | 12 +-- .../FirebaseEventProxy.java | 82 ++++++------------- 2 files changed, 32 insertions(+), 62 deletions(-) diff --git a/appengine/firebase-event-proxy/gae-firebase-event-proxy/pom.xml b/appengine/firebase-event-proxy/gae-firebase-event-proxy/pom.xml index 4554b7dc37c..ec1a518871f 100644 --- a/appengine/firebase-event-proxy/gae-firebase-event-proxy/pom.xml +++ b/appengine/firebase-event-proxy/gae-firebase-event-proxy/pom.xml @@ -55,9 +55,9 @@ 1.2 - com.firebase - firebase-client-jvm - [1.0.8,) + com.google.firebase + firebase-server-sdk + [3.0.0,) com.fasterxml.jackson.core @@ -65,9 +65,9 @@ 2.7.3 - com.firebase - firebase-token-generator - 2.0.0 + com.fasterxml.jackson.core + jackson-databind + 2.5.3 diff --git a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/FirebaseEventProxy.java b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/FirebaseEventProxy.java index 4c67beb5d14..93136638946 100644 --- a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/FirebaseEventProxy.java +++ b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/FirebaseEventProxy.java @@ -18,52 +18,49 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.firebase.client.AuthData; -import com.firebase.client.DataSnapshot; -import com.firebase.client.Firebase; -import com.firebase.client.FirebaseError; -import com.firebase.client.ValueEventListener; -import com.firebase.security.token.TokenGenerator; +import com.google.firebase.FirebaseApp; +import com.google.firebase.FirebaseOptions; +import com.google.firebase.database.DataSnapshot; +import com.google.firebase.database.DatabaseError; +import com.google.firebase.database.DatabaseReference; +import com.google.firebase.database.FirebaseDatabase; +import com.google.firebase.database.ValueEventListener; import com.google.appengine.api.utils.SystemProperty; import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; -import java.util.Properties; import java.util.logging.Logger; public class FirebaseEventProxy { private static final Logger log = Logger.getLogger(FirebaseEventProxy.class.getName()); - private String firebaseAuthToken; - public FirebaseEventProxy() { - // Store Firebase authentication token as an instance variable. - this.firebaseAuthToken = this.getFirebaseAuthToken(this.getFirebaseSecret()); + String FIREBASE_LOCATION = "https://crackling-torch-392.firebaseio.com"; + Map databaseAuthVariableOverride = new HashMap(); + // uid and provider will have to match what you have in your firebase security rules + databaseAuthVariableOverride.put("uid", "gae-firebase-event-proxy"); + databaseAuthVariableOverride.put("provider", "com.example"); + try { + FirebaseOptions options = new FirebaseOptions.Builder() + .setServiceAccount(new FileInputStream("gae-firebase-secrets.json")) + .setDatabaseUrl(FIREBASE_LOCATION) + .setDatabaseAuthVariableOverride(databaseAuthVariableOverride).build(); + FirebaseApp.initializeApp(options); + } catch (IOException e) { + throw new RuntimeException( + "Error reading firebase secrets from file: src/main/webapp/gae-firebase-secrets.json: " + + e.getMessage()); + } } public void start() { - String firebaseLocation = "https://gae-fb-proxy.firebaseio.com/"; - Firebase firebase = new Firebase(firebaseLocation); - - // Authenticate with Firebase - firebase.authWithCustomToken(this.firebaseAuthToken, new Firebase.AuthResultHandler() { - @Override - public void onAuthenticationError(FirebaseError error) { - log.severe("Firebase login error: " + error.getMessage()); - } - - @Override - public void onAuthenticated(AuthData auth) { - log.info("Firebase login successful"); - } - }); + DatabaseReference firebase = FirebaseDatabase.getInstance().getReference(); // Subscribe to value events. Depending on use case, you may want to subscribe to child events // through childEventListener. @@ -73,7 +70,7 @@ public void onDataChange(DataSnapshot snapshot) { if (snapshot.exists()) { try { // Convert value to JSON using Jackson - String json = new ObjectMapper().writeValueAsString(snapshot.getValue()); + String json = new ObjectMapper().writeValueAsString(snapshot.getValue(false)); // Replace the URL with the url of your own listener app. URL dest = new URL("http://gae-firebase-listener-python.appspot.com/log"); @@ -109,36 +106,9 @@ public void onDataChange(DataSnapshot snapshot) { } @Override - public void onCancelled(FirebaseError error) { + public void onCancelled(DatabaseError error) { log.severe("Firebase connection cancelled: " + error.getMessage()); } }); } - - private String getFirebaseSecret() { - Properties props = new Properties(); - try { - // Read from src/main/webapp/firebase-secrets.properties - InputStream inputStream = new FileInputStream("firebase-secret.properties"); - props.load(inputStream); - return props.getProperty("firebaseSecret"); - } catch (java.net.MalformedURLException e) { - throw new RuntimeException( - "Error reading firebase secrets from file: src/main/webapp/firebase-sercrets.properties: " - + e.getMessage()); - } catch (IOException e) { - throw new RuntimeException( - "Error reading firebase secrets from file: src/main/webapp/firebase-sercrets.properties: " - + e.getMessage()); - } - } - - private String getFirebaseAuthToken(String firebaseSecret) { - Map authPayload = new HashMap(); - // uid and provider will have to match what you have in your firebase security rules - authPayload.put("uid", "gae-firebase-event-proxy"); - authPayload.put("provider", "com.example"); - TokenGenerator tokenGenerator = new TokenGenerator(firebaseSecret); - return tokenGenerator.createToken(authPayload); - } } From 0e729beafd1845e54125138650cd9957b5d0e747 Mon Sep 17 00:00:00 2001 From: misterwilliam Date: Mon, 23 May 2016 13:21:10 -0700 Subject: [PATCH 4/4] Linting --- .../example/GaeFirebaseEventProxy/FirebaseEventProxy.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/FirebaseEventProxy.java b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/FirebaseEventProxy.java index 93136638946..bd706ba03e4 100644 --- a/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/FirebaseEventProxy.java +++ b/appengine/firebase-event-proxy/gae-firebase-event-proxy/src/main/java/com/example/GaeFirebaseEventProxy/FirebaseEventProxy.java @@ -18,6 +18,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.appengine.api.utils.SystemProperty; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; import com.google.firebase.database.DataSnapshot; @@ -25,7 +26,6 @@ import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; -import com.google.appengine.api.utils.SystemProperty; import java.io.FileInputStream; import java.io.IOException; @@ -41,7 +41,7 @@ public class FirebaseEventProxy { private static final Logger log = Logger.getLogger(FirebaseEventProxy.class.getName()); public FirebaseEventProxy() { - String FIREBASE_LOCATION = "https://crackling-torch-392.firebaseio.com"; + String firebaseLocation = "https://crackling-torch-392.firebaseio.com"; Map databaseAuthVariableOverride = new HashMap(); // uid and provider will have to match what you have in your firebase security rules databaseAuthVariableOverride.put("uid", "gae-firebase-event-proxy"); @@ -49,7 +49,7 @@ public FirebaseEventProxy() { try { FirebaseOptions options = new FirebaseOptions.Builder() .setServiceAccount(new FileInputStream("gae-firebase-secrets.json")) - .setDatabaseUrl(FIREBASE_LOCATION) + .setDatabaseUrl(firebaseLocation) .setDatabaseAuthVariableOverride(databaseAuthVariableOverride).build(); FirebaseApp.initializeApp(options); } catch (IOException e) {