Repository: usergrid
Updated Branches:
  refs/heads/master 63091f349 -> fa01f84fc


Add exception mapper for GCM library InvalidRequest exception.


Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/fa01f84f
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/fa01f84f
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/fa01f84f

Branch: refs/heads/master
Commit: fa01f84fcaa6cc4164518ff9c07d96b7f62c4f9d
Parents: 63091f3
Author: Michael Russo <[email protected]>
Authored: Fri Jan 8 11:28:07 2016 -0800
Committer: Michael Russo <[email protected]>
Committed: Fri Jan 8 11:28:07 2016 -0800

----------------------------------------------------------------------
 .../GCMInvalidRequestExceptionMapper.java       | 55 ++++++++++++++++++++
 1 file changed, 55 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/fa01f84f/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/GCMInvalidRequestExceptionMapper.java
----------------------------------------------------------------------
diff --git 
a/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/GCMInvalidRequestExceptionMapper.java
 
b/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/GCMInvalidRequestExceptionMapper.java
new file mode 100644
index 0000000..778ab85
--- /dev/null
+++ 
b/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/GCMInvalidRequestExceptionMapper.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.rest.exceptions;
+
+
+import com.google.android.gcm.server.InvalidRequestException;
+
+import javax.ws.rs.NotFoundException;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.Provider;
+
+import static javax.ws.rs.core.Response.Status.*;
+
+
+@Provider
+public class GCMInvalidRequestExceptionMapper extends 
AbstractExceptionMapper<InvalidRequestException> {
+
+    @Override
+    public Response toResponse( InvalidRequestException e ) {
+
+        Response.Status status;
+        String message;
+        // purposely overwrite the 401 case
+        if(e.getHttpStatusCode() == 401){
+
+            status = UNAUTHORIZED;
+            message = "Invalid GCM API Key or Registration ID(s)";
+
+        }else{
+            // let's handle the status codes ourselves and pass-through the 
details from GCM
+            if (e.getHttpStatusCode() >= 400 && e.getHttpStatusCode() <= 499){
+                status = BAD_REQUEST;
+            }else{
+                status = INTERNAL_SERVER_ERROR;
+            }
+            message = "GCM Status Code: "+ e.getHttpStatusCode()+", Detail: 
"+e.getMessage();
+        }
+
+        return toResponse( status, message );
+    }
+}

Reply via email to