3030public class ParseInstallation extends ParseObject {
3131 private static final String TAG = "com.parse.ParseInstallation" ;
3232
33+ private static final String KEY_OBJECT_ID = "objectId" ;
3334 private static final String KEY_INSTALLATION_ID = "installationId" ;
3435 private static final String KEY_DEVICE_TYPE = "deviceType" ;
3536 private static final String KEY_APP_NAME = "appName" ;
@@ -45,7 +46,7 @@ public class ParseInstallation extends ParseObject {
4546 private static final List <String > READ_ONLY_FIELDS = Collections .unmodifiableList (
4647 Arrays .asList (KEY_DEVICE_TYPE , KEY_INSTALLATION_ID , KEY_DEVICE_TOKEN , KEY_PUSH_TYPE ,
4748 KEY_TIME_ZONE , KEY_LOCALE , KEY_APP_VERSION , KEY_APP_NAME , KEY_PARSE_VERSION ,
48- KEY_APP_IDENTIFIER ));
49+ KEY_APP_IDENTIFIER , KEY_OBJECT_ID ));
4950
5051 // TODO(mengyan): Inject into ParseInstallationInstanceController
5152 /* package */ static ParseCurrentInstallationController getCurrentInstallationController () {
@@ -94,6 +95,11 @@ public String getInstallationId() {
9495 return getString (KEY_INSTALLATION_ID );
9596 }
9697
98+ @ Override
99+ public void setObjectId (String newObjectId ) {
100+ throw new RuntimeException ("Installation's objectId cannot be changed" );
101+ }
102+
97103 @ Override
98104 /* package */ boolean needsDefaultACL () {
99105 return false ;
@@ -147,7 +153,7 @@ public Task<Void> then(Task<Void> task) throws Exception {
147153 && task .getError () instanceof ParseException
148154 && ((ParseException ) task .getError ()).getCode () == ParseException .OBJECT_NOT_FOUND ) {
149155 synchronized (mutex ) {
150- setObjectId ( null );
156+ setState ( new State . Builder ( getState ()). objectId ( null ). build () );
151157 markAllFieldsDirty ();
152158 return ParseInstallation .super .saveAsync (sessionToken , toAwait );
153159 }
0 commit comments