30
30
public class ParseInstallation extends ParseObject {
31
31
private static final String TAG = "com.parse.ParseInstallation" ;
32
32
33
+ private static final String KEY_OBJECT_ID = "objectId" ;
33
34
private static final String KEY_INSTALLATION_ID = "installationId" ;
34
35
private static final String KEY_DEVICE_TYPE = "deviceType" ;
35
36
private static final String KEY_APP_NAME = "appName" ;
@@ -45,7 +46,7 @@ public class ParseInstallation extends ParseObject {
45
46
private static final List <String > READ_ONLY_FIELDS = Collections .unmodifiableList (
46
47
Arrays .asList (KEY_DEVICE_TYPE , KEY_INSTALLATION_ID , KEY_DEVICE_TOKEN , KEY_PUSH_TYPE ,
47
48
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 ));
49
50
50
51
// TODO(mengyan): Inject into ParseInstallationInstanceController
51
52
/* package */ static ParseCurrentInstallationController getCurrentInstallationController () {
@@ -94,6 +95,11 @@ public String getInstallationId() {
94
95
return getString (KEY_INSTALLATION_ID );
95
96
}
96
97
98
+ @ Override
99
+ public void setObjectId (String newObjectId ) {
100
+ throw new RuntimeException ("Installation's objectId cannot be changed" );
101
+ }
102
+
97
103
@ Override
98
104
/* package */ boolean needsDefaultACL () {
99
105
return false ;
@@ -147,7 +153,7 @@ public Task<Void> then(Task<Void> task) throws Exception {
147
153
&& task .getError () instanceof ParseException
148
154
&& ((ParseException ) task .getError ()).getCode () == ParseException .OBJECT_NOT_FOUND ) {
149
155
synchronized (mutex ) {
150
- setObjectId ( null );
156
+ setState ( new State . Builder ( getState ()). objectId ( null ). build () );
151
157
markAllFieldsDirty ();
152
158
return ParseInstallation .super .saveAsync (sessionToken , toAwait );
153
159
}
0 commit comments