@@ -0,0 +1,1975 @@
+/*%0A * Licensed to the Apache Software Foundation (ASF) under one or more%0A * contributor license agreements.  See the NOTICE file distributed with%0A * this work for additional information regarding copyright ownership.%0A * The ASF licenses this file to You under the Apache License, Version 2.0%0A * (the %22License%22); you may not use this file except in compliance with%0A * the License.  You may obtain a copy of the License at%0A *%0A *      http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0Apackage org.apache.usergrid.rest.exceptions;%0A%0A%0Aimport com.google.android.gcm.server.InvalidRequestException;%0A%0Aimport javax.ws.rs.NotFoundException;%0Aimport javax.ws.rs.core.Response;%0Aimport javax.ws.rs.ext.Provider;%0A%0Aimport static javax.ws.rs.core.Response.Status.*;%0A%0A%0A@Provider%0Apublic class GCMInvalidRequestExceptionMapper extends AbstractExceptionMapper%3CInvalidRequestException%3E %7B%0A%0A    @Override%0A    public Response toResponse( InvalidRequestException e ) %7B%0A%0A        Response.Status status;%0A        String message;%0A        // purposely overwrite the 401 case%0A        if(e.getHttpStatusCode() == 401)%7B%0A%0A            status = UNAUTHORIZED;%0A            message = %22Invalid GCM API Key or Registration ID(s)%22;%0A%0A        %7Delse%7B%0A            // let's handle the status codes ourselves and pass-through the details from GCM%0A            if (e.getHttpStatusCode() %3E= 400 && e.getHttpStatusCode() %3C= 499)%7B%0A                status = BAD_REQUEST;%0A            %7Delse%7B%0A                status = INTERNAL_SERVER_ERROR;%0A            %7D%0A            message = %22GCM Status Code: %22+ e.getHttpStatusCode()+%22, Detail: %22+e.getMessage();%0A        %7D%0A%0A        return toResponse( status, message );%0A    %7D%0A%7D%0A

Add exception mapper for GCM library InvalidRequest exception.