/** * Set the user identifier. * The user identifier needs to start with the c: prefix or must not have a prefix. * If the prefix is missing, the c: prefix will be automatically added. * The userId cannot be empty or just "c:". * * @param userId user identifier. */ @SuppressWarnings("WeakerAccess") public void setUserId(final String userId) { if (UserIdContext.checkUserIdValidForOneCollector(userId)) { Analytics.getInstance().postCommandEvenIfDisabled(new Runnable() { @Override public void run() { mUserId = UserIdContext.getPrefixedUserId(userId); } }); } }
@Test public void userIdInvalidForOneCollector() { assertFalse(UserIdContext.checkUserIdValidForOneCollector("")); assertFalse(UserIdContext.checkUserIdValidForOneCollector(":alice")); assertFalse(UserIdContext.checkUserIdValidForOneCollector("c:")); assertFalse(UserIdContext.checkUserIdValidForOneCollector("x:")); assertFalse(UserIdContext.checkUserIdValidForOneCollector("x:alice")); }
@Test public void userIdValidForOneCollector() { assertTrue(UserIdContext.checkUserIdValidForOneCollector(null)); assertTrue(UserIdContext.checkUserIdValidForOneCollector("c:alice")); assertTrue(UserIdContext.checkUserIdValidForOneCollector("alice")); }
/** * {@link #setUserId(String)} implementation at instance level. */ private synchronized void setInstanceUserId(String userId) { if (!mConfiguredFromApp) { AppCenterLog.error(LOG_TAG, "AppCenter must be configured from application, libraries cannot use call setUserId."); return; } if (mAppSecret == null && mTransmissionTargetToken == null) { AppCenterLog.error(LOG_TAG, "AppCenter must be configured with a secret from application to call setUserId."); return; } if (userId != null) { if (mAppSecret != null && !UserIdContext.checkUserIdValidForAppCenter(userId)) { return; } if (mTransmissionTargetToken != null && !UserIdContext.checkUserIdValidForOneCollector(userId)) { return; } } UserIdContext.getInstance().setUserId(userId); }