Avoid exception when looking up the providerId
This is a performance optimization, as creating an exception is expensive. Closes #20176
This commit is contained in:
parent
04ab848003
commit
2758d78865
1 changed files with 12 additions and 4 deletions
|
@ -23,6 +23,7 @@ import org.keycloak.models.RequiredActionProviderModel;
|
||||||
import org.keycloak.models.UserModel;
|
import org.keycloak.models.UserModel;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
@ -291,6 +292,13 @@ public class DefaultRequiredActions {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final HashSet<String> REQUIRED_ACTIONS = new HashSet<>();
|
||||||
|
static {
|
||||||
|
for (UserModel.RequiredAction value : UserModel.RequiredAction.values()) {
|
||||||
|
REQUIRED_ACTIONS.add(value.name());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether given {@code providerId} case insensitively matches any of {@link UserModel.RequiredAction} enum
|
* Checks whether given {@code providerId} case insensitively matches any of {@link UserModel.RequiredAction} enum
|
||||||
* and if yes, it returns the value in correct form.
|
* and if yes, it returns the value in correct form.
|
||||||
|
@ -303,10 +311,10 @@ public class DefaultRequiredActions {
|
||||||
* of {@link UserModel.RequiredAction}
|
* of {@link UserModel.RequiredAction}
|
||||||
*/
|
*/
|
||||||
public static String getDefaultRequiredActionCaseInsensitively(String providerId) {
|
public static String getDefaultRequiredActionCaseInsensitively(String providerId) {
|
||||||
try {
|
String upperCase = providerId.toUpperCase();
|
||||||
return UserModel.RequiredAction.valueOf(providerId.toUpperCase()).name();
|
if (REQUIRED_ACTIONS.contains(upperCase)) {
|
||||||
} catch (IllegalArgumentException iae) {
|
return upperCase;
|
||||||
return providerId;
|
|
||||||
}
|
}
|
||||||
|
return providerId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue