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 ); + } +}
