/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.sync;
import org.mozilla.gecko.sync.net.SyncStorageResponse;
import android.content.SyncResult;
public class HTTPFailureException extends SyncException {
private static final long serialVersionUID = -5415864029780770619L;
public SyncStorageResponse response;
public HTTPFailureException(SyncStorageResponse response) {
this.response = response;
}
@Override
public String toString() {
String errorMessage;
try {
errorMessage = this.response.getErrorMessage();
} catch (Exception e) {
// Oh well.
errorMessage = "[unknown error message]";
}
return "<HTTPFailureException " + this.response.getStatusCode() +
" :: (" + errorMessage + ")>";
}
@Override
public void updateStats(GlobalSession globalSession, SyncResult syncResult) {
switch (response.getStatusCode()) {
case 401:
// Node reassignment 401s get handled internally.
syncResult.stats.numAuthExceptions++;
return;
case 500:
case 501:
case 503:
// TODO: backoff.
syncResult.stats.numIoExceptions++;
return;
}
}
}