/* package */ Task<Void> logOutAsync(boolean revoke) { ParseAuthenticationManager controller = getAuthenticationManager(); List<Task<Void>> tasks = new ArrayList<>(); final String oldSessionToken; synchronized (mutex) { oldSessionToken = getState().sessionToken(); for (Map.Entry<String, Map<String, String>> entry : getAuthData().entrySet()) { tasks.add(controller.deauthenticateAsync(entry.getKey())); } State newState = getState().newBuilder() .sessionToken(null) .isNew(false) .build(); isCurrentUser = false; setState(newState); } if (revoke) { tasks.add(ParseSession.revokeAsync(oldSessionToken)); } return Task.whenAll(tasks); }
.put("newKey", "newValue") .sessionToken("newSessionToken") .isNew(false) .build(); when(userController.logInAsync(any(ParseUser.State.class), any(ParseOperationSet.class)))
.put("newKey", "newValue") .sessionToken("newSessionToken") .isNew(false) .build(); when(userController.logInAsync(any(ParseUser.State.class), any(ParseOperationSet.class)))
.put("newKey", "newValue") .sessionToken("newSessionToken") .isNew(true) .build(); when(userController.logInAsync(any(ParseUser.State.class), any(ParseOperationSet.class)))
@Override public ParseUser.State then(Task<JSONObject> task) { JSONObject result = task.getResult(); // TODO(grantland): Does the server really respond back with complete object data if the // object isn't new? boolean isNew = command.getStatusCode() == STATUS_CODE_CREATED; boolean isComplete = !isNew; return coder.decode(new ParseUser.State.Builder(), result, ParseDecoder.get()) .isComplete(isComplete) .isNew(isNew) .build(); } });
@Override public Builder apply(ParseObject.State other) { isNew(((State) other).isNew()); return super.apply(other); }
@Override public ParseUser.State then(Task<JSONObject> task) { JSONObject result = task.getResult(); return coder.decode(new ParseUser.State.Builder(), result, ParseDecoder.get()) .isComplete(false) .isNew(true) .build(); } });
@Test public void testParcelableState() { ParseUser.State state = new ParseUser.State.Builder() .objectId("test") .isNew(true) .build(); ParseUser user = ParseObject.from(state); assertTrue(user.isNew()); Parcel parcel = Parcel.obtain(); user.writeToParcel(parcel, 0); parcel.setDataPosition(0); user = (ParseUser) ParseObject.CREATOR.createFromParcel(parcel); assertTrue(user.isNew()); }
@Override public ParseUser.State then(Task<JSONObject> task) { JSONObject result = task.getResult(); return coder.decode(new ParseUser.State.Builder(), result, ParseDecoder.get()) .isComplete(true) .isNew(command.getStatusCode() == STATUS_CODE_CREATED) .putAuthData(authType, authData) .build(); } });