@Test public void shouldBuildImmutableUser() { LegacyCredential abc = LegacyCredential.forPassword( "123abc" ); LegacyCredential fruit = LegacyCredential.forPassword( "fruit" ); User u1 = new User.Builder( "Steve", abc ).build(); User u2 = new User.Builder( "Steve", fruit ) .withRequiredPasswordChange( true ) .withFlag( "nice_guy" ).build(); assertThat( u1, equalTo( u1 ) ); assertThat( u1, not( equalTo( u2 ) ) ); User u1AsU2 = u1.augment().withCredentials( fruit ) .withRequiredPasswordChange( true ) .withFlag( "nice_guy" ).build(); assertThat( u1, not( equalTo( u1AsU2 ))); assertThat( u2, equalTo( u1AsU2 )); User u2AsU1 = u2.augment().withCredentials( abc ) .withRequiredPasswordChange( false ) .withoutFlag( "nice_guy" ).build(); assertThat( u2, not( equalTo( u2AsU1 ))); assertThat( u1, equalTo( u2AsU1 )); assertThat( u1, not( equalTo( u2 ) ) ); } }
@Override public void activateUser( String username, boolean requirePasswordChange ) throws IOException, InvalidArgumentsException { User user = getUser( username ); if ( user.hasFlag( IS_SUSPENDED ) ) { User activatedUser = user.augment() .withoutFlag( IS_SUSPENDED ) .withRequiredPasswordChange( requirePasswordChange ) .build(); try { synchronized ( this ) { userRepository.update( user, activatedUser ); } } catch ( ConcurrentModificationException e ) { // Try again activateUser( username, requirePasswordChange ); } } clearCacheForUser( username ); }
public Builder withRequiredPasswordChange( boolean change ) { if ( change ) { withFlag( PASSWORD_CHANGE_REQUIRED ); } else { withoutFlag( PASSWORD_CHANGE_REQUIRED ); } return this; }
public Builder withRequiredPasswordChange( boolean change ) { if ( change ) { withFlag( PASSWORD_CHANGE_REQUIRED ); } else { withoutFlag( PASSWORD_CHANGE_REQUIRED ); } return this; }