Make sure protocol version is always set in sync services

* A recent change caused an issue in which protocolVersion could
  be null, resulting in an NPE
* Ensure that protocolVersion is always set to a valid version,
  defaulting to 2.5

Bug: 2353859
Change-Id: I6e07ba3df5362c988658e401bebc1776a6780876
This commit is contained in:
Marc Blank 2010-01-07 11:58:03 -08:00
parent f06d3c2d90
commit 89ab89dd83

View File

@ -91,6 +91,9 @@ public class EasSyncService extends AbstractSyncService {
static private final String PING_COMMAND = "Ping"; static private final String PING_COMMAND = "Ping";
static private final int COMMAND_TIMEOUT = 20*SECONDS; static private final int COMMAND_TIMEOUT = 20*SECONDS;
// Define our default protocol version as 2.5 (Exchange 2003)
static private final String DEFAULT_PROTOCOL_VERSION = "2.5";
/** /**
* We start with an 8 minute timeout, and increase/decrease by 3 minutes at a time. There's * We start with an 8 minute timeout, and increase/decrease by 3 minutes at a time. There's
* no point having a timeout shorter than 5 minutes, I think; at that point, we can just let * no point having a timeout shorter than 5 minutes, I think; at that point, we can just let
@ -119,7 +122,7 @@ public class EasSyncService extends AbstractSyncService {
static private final int PING_FALLBACK_PIM = 25; static private final int PING_FALLBACK_PIM = 25;
// Reasonable default // Reasonable default
String mProtocolVersion = "2.5"; public String mProtocolVersion = DEFAULT_PROTOCOL_VERSION;
public Double mProtocolVersionDouble; public Double mProtocolVersionDouble;
protected String mDeviceId = null; protected String mDeviceId = null;
private String mDeviceType = "Android"; private String mDeviceType = "Android";
@ -557,7 +560,7 @@ public class EasSyncService extends AbstractSyncService {
SyncManager.kick("change ping boxes to push"); SyncManager.kick("change ping boxes to push");
} }
// Determine our protocol version, if we haven't already // Determine our protocol version, if we haven't already and save it in the Account
if (mAccount.mProtocolVersion == null) { if (mAccount.mProtocolVersion == null) {
userLog("Determine EAS protocol version"); userLog("Determine EAS protocol version");
HttpResponse resp = sendHttpClientOptions(); HttpResponse resp = sendHttpClientOptions();
@ -574,6 +577,10 @@ public class EasSyncService extends AbstractSyncService {
} }
mProtocolVersionDouble = Double.parseDouble(mProtocolVersion); mProtocolVersionDouble = Double.parseDouble(mProtocolVersion);
mAccount.mProtocolVersion = mProtocolVersion; mAccount.mProtocolVersion = mProtocolVersion;
// Save the protocol version
cv.clear();
cv.put(Account.PROTOCOL_VERSION, mProtocolVersion);
mAccount.update(mContext, cv);
userLog(versions); userLog(versions);
userLog("Using version ", mProtocolVersion); userLog("Using version ", mProtocolVersion);
} else { } else {
@ -588,7 +595,7 @@ public class EasSyncService extends AbstractSyncService {
// Change all pushable boxes to push when we start the account mailbox // Change all pushable boxes to push when we start the account mailbox
if (mAccount.mSyncInterval == Account.CHECK_INTERVAL_PUSH) { if (mAccount.mSyncInterval == Account.CHECK_INTERVAL_PUSH) {
cv = new ContentValues(); cv.clear();
cv.put(Mailbox.SYNC_INTERVAL, Mailbox.CHECK_INTERVAL_PUSH); cv.put(Mailbox.SYNC_INTERVAL, Mailbox.CHECK_INTERVAL_PUSH);
if (mContentResolver.update(Mailbox.CONTENT_URI, cv, if (mContentResolver.update(Mailbox.CONTENT_URI, cv,
SyncManager.WHERE_IN_ACCOUNT_AND_PUSHABLE, SyncManager.WHERE_IN_ACCOUNT_AND_PUSHABLE,
@ -623,7 +630,7 @@ public class EasSyncService extends AbstractSyncService {
} }
// Change all push/hold boxes to push // Change all push/hold boxes to push
cv = new ContentValues(); cv.clear();
cv.put(Mailbox.SYNC_INTERVAL, Account.CHECK_INTERVAL_PUSH); cv.put(Mailbox.SYNC_INTERVAL, Account.CHECK_INTERVAL_PUSH);
if (mContentResolver.update(Mailbox.CONTENT_URI, cv, if (mContentResolver.update(Mailbox.CONTENT_URI, cv,
WHERE_PUSH_HOLD_NOT_ACCOUNT_MAILBOX, WHERE_PUSH_HOLD_NOT_ACCOUNT_MAILBOX,
@ -1101,11 +1108,13 @@ public class EasSyncService extends AbstractSyncService {
mUserName = ha.mLogin; mUserName = ha.mLogin;
mPassword = ha.mPassword; mPassword = ha.mPassword;
// Set up our protocol version // Set up our protocol version from the Account
mProtocolVersion = mAccount.mProtocolVersion; mProtocolVersion = mAccount.mProtocolVersion;
if (mProtocolVersion != null) { // If it hasn't been set up, start with default version
mProtocolVersionDouble = Double.parseDouble(mProtocolVersion); if (mProtocolVersion == null) {
mProtocolVersion = DEFAULT_PROTOCOL_VERSION;
} }
mProtocolVersionDouble = Double.parseDouble(mProtocolVersion);
return true; return true;
} }