private Optional<Serializable> getUserSettingOptional( UserSettingKey key, String username )
{
UserCredentials userCredentials = userService.getUserCredentialsByUsername( username );
if ( userCredentials == null )
{
return Optional.empty();
}
UserSetting setting = transactionTemplate.execute( new TransactionCallback<UserSetting>()
{
public UserSetting doInTransaction( TransactionStatus status )
{
return userSettingStore.getUserSetting( userCredentials.getUserInfo(), key.getName() );
}
} );
Serializable value = setting != null && setting.hasValue() ? setting.getValue() : key.getDefaultValue();
return Optional.ofNullable( value );
}