private void handleCanonicalRegistrationId(Result result) { GcmMessage message = (GcmMessage)result.getContext(); logger.warn(String.format("Actually received 'CanonicalRegistrationId' ::: (canonical=%s), (original=%s)", result.getCanonicalRegistrationId(), message.getGcmId())); Optional<Account> account = getAccountForEvent(message); if (account.isPresent()) { Device device = account.get().getDevice(message.getDeviceId()).get(); device.setGcmId(result.getCanonicalRegistrationId()); accountsManager.update(account.get()); } canonical.mark(); }
private void handleGenericError(Result result) { GcmMessage message = (GcmMessage)result.getContext(); logger.warn(String.format("Unrecoverable Error ::: (error=%s), (gcm_id=%s), " + "(destination=%s), (device_id=%d)", result.getError(), message.getGcmId(), message.getNumber(), message.getDeviceId())); failure.mark(); }
@Override public void onSuccess(Result result) { if (result.isUnregistered() || result.isInvalidRegistrationId()) { handleBadRegistration(result); } else if (result.hasCanonicalRegistrationId()) { handleCanonicalRegistrationId(result); } else if (!result.isSuccess()) { handleGenericError(result); } else { success.mark(); } }
private void handleBadRegistration(Result result) { GcmMessage message = (GcmMessage)result.getContext(); logger.warn("Got GCM unregistered notice! " + message.getGcmId()); Optional<Account> account = getAccountForEvent(message); if (account.isPresent()) { Device device = account.get().getDevice(message.getDeviceId()).get(); device.setGcmId(null); device.setFetchesMessages(false); accountsManager.update(account.get()); if (!account.get().isActive()) { directoryQueue.deleteRegisteredUser(account.get().getNumber()); } } unregistered.mark(); }
private Result parseResult(String body) throws IOException { List<GcmResponseEntity> responseList = objectMapper.readValue(body, GcmResponseListEntity.class) .getResults(); if (responseList == null || responseList.size() == 0) { throw new IOException("Empty response list!"); } GcmResponseEntity responseEntity = responseList.get(0); return new Result(this.requestContext, responseEntity.getCanonicalRegistrationId(), responseEntity.getMessageId(), responseEntity.getError()); } }
private void handleBadRegistration(Result result) { GcmMessage message = (GcmMessage)result.getContext(); logger.warn("Got GCM unregistered notice! " + message.getGcmId()); unregisteredQueue.put(new UnregisteredEvent(message.getGcmId(), null, message.getNumber(), message.getDeviceId(), System.currentTimeMillis())); unregistered.mark(); }
@Override public void onSuccess(Result result) { if (result.isUnregistered() || result.isInvalidRegistrationId()) { handleBadRegistration(result); } else if (result.hasCanonicalRegistrationId()) { handleCanonicalRegistrationId(result); } else if (!result.isSuccess()) { handleGenericError(result); } else { success.mark(); } }
private void handleGenericError(Result result) { GcmMessage message = (GcmMessage)result.getContext(); logger.warn(String.format("Unrecoverable Error ::: (error=%s), (gcm_id=%s), " + "(destination=%s), (device_id=%d)", result.getError(), message.getGcmId(), message.getNumber(), message.getDeviceId())); failure.mark(); }
private void handleCanonicalRegistrationId(Result result) { GcmMessage message = (GcmMessage)result.getContext(); logger.warn(String.format("Actually received 'CanonicalRegistrationId' ::: (canonical=%s), (original=%s)", result.getCanonicalRegistrationId(), message.getGcmId())); unregisteredQueue.put(new UnregisteredEvent(message.getGcmId(), result.getCanonicalRegistrationId(), message.getNumber(), message.getDeviceId(), System.currentTimeMillis())); canonical.mark(); }