File tree Expand file tree Collapse file tree 2 files changed +31
-0
lines changed
Parse/src/main/java/com/parse Expand file tree Collapse file tree 2 files changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -137,6 +137,28 @@ public Task<T> then(Task<Void> task) throws Exception {
137137 }
138138 }
139139
140+ @ Override
141+ /* package */ Task <Void > saveAsync (final String sessionToken , final Task <Void > toAwait ) {
142+ return super .saveAsync (sessionToken , toAwait ).continueWithTask (new Continuation <Void , Task <Void >>() {
143+ @ Override
144+ public Task <Void > then (Task <Void > task ) throws Exception {
145+ // Retry the fetch as a save operation because this Installation was deleted on the server.
146+ // Do not attempt to resave an object if LDS is enabled, since changing objectId is not allowed.
147+ if (!Parse .isLocalDatastoreEnabled ()
148+ && task .getError () != null
149+ && task .getError () instanceof ParseException
150+ && ((ParseException ) task .getError ()).getCode () == ParseException .OBJECT_NOT_FOUND ) {
151+ synchronized (mutex ) {
152+ setObjectId (null );
153+ markAllFieldDirty ();
154+ return ParseInstallation .super .saveAsync (sessionToken , toAwait );
155+ }
156+ }
157+ return task ;
158+ }
159+ });
160+ }
161+
140162 @ Override
141163 /* package */ Task <Void > handleSaveResultAsync (ParseObject .State result ,
142164 ParseOperationSet operationsBeforeSave ) {
Original file line number Diff line number Diff line change @@ -2815,6 +2815,15 @@ private void rebuildEstimatedData() {
28152815 }
28162816 }
28172817
2818+ /* package */ void markAllFieldDirty () {
2819+ synchronized (mutex ) {
2820+ estimatedData .clear ();
2821+ for (String key : state .keySet ()) {
2822+ performPut (key , state .get (key ));
2823+ }
2824+ }
2825+ }
2826+
28182827 /**
28192828 * performOperation() is like {@link #put(String, Object)} but instead of just taking a new value,
28202829 * it takes a ParseFieldOperation that modifies the value.
You can’t perform that action at this time.
0 commit comments