|
1 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
4 |
|
5 package org.mozilla.gecko.sync; |
|
6 |
|
7 import org.mozilla.gecko.sync.net.SyncStorageResponse; |
|
8 |
|
9 import android.content.SyncResult; |
|
10 |
|
11 public class HTTPFailureException extends SyncException { |
|
12 private static final long serialVersionUID = -5415864029780770619L; |
|
13 public SyncStorageResponse response; |
|
14 |
|
15 public HTTPFailureException(SyncStorageResponse response) { |
|
16 this.response = response; |
|
17 } |
|
18 |
|
19 @Override |
|
20 public String toString() { |
|
21 String errorMessage; |
|
22 try { |
|
23 errorMessage = this.response.getErrorMessage(); |
|
24 } catch (Exception e) { |
|
25 // Oh well. |
|
26 errorMessage = "[unknown error message]"; |
|
27 } |
|
28 return "<HTTPFailureException " + this.response.getStatusCode() + |
|
29 " :: (" + errorMessage + ")>"; |
|
30 } |
|
31 |
|
32 @Override |
|
33 public void updateStats(GlobalSession globalSession, SyncResult syncResult) { |
|
34 switch (response.getStatusCode()) { |
|
35 case 401: |
|
36 // Node reassignment 401s get handled internally. |
|
37 syncResult.stats.numAuthExceptions++; |
|
38 return; |
|
39 case 500: |
|
40 case 501: |
|
41 case 503: |
|
42 // TODO: backoff. |
|
43 syncResult.stats.numIoExceptions++; |
|
44 return; |
|
45 } |
|
46 } |
|
47 } |