122 lines
4.4 KiB
Java
122 lines
4.4 KiB
Java
|
/*
|
||
|
* Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||
|
* and other contributors as indicated by the @author tags.
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
package org.keycloak.provider;
|
||
|
|
||
|
import org.keycloak.component.ComponentModel;
|
||
|
import org.keycloak.component.ComponentValidationException;
|
||
|
|
||
|
import java.util.List;
|
||
|
|
||
|
/**
|
||
|
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
||
|
*/
|
||
|
public class ConfigurationValidationHelper {
|
||
|
|
||
|
private ComponentModel model;
|
||
|
|
||
|
private ConfigurationValidationHelper(ComponentModel model) {
|
||
|
this.model = model;
|
||
|
}
|
||
|
|
||
|
public static ConfigurationValidationHelper check(ComponentModel model) {
|
||
|
return new ConfigurationValidationHelper(model);
|
||
|
}
|
||
|
|
||
|
public ConfigurationValidationHelper checkInt(ProviderConfigProperty property, boolean required) throws ComponentValidationException {
|
||
|
return checkInt(property.getName(), property.getLabel(), required);
|
||
|
}
|
||
|
|
||
|
public ConfigurationValidationHelper checkInt(String key, String label, boolean required) throws ComponentValidationException {
|
||
|
checkSingle(key, label, required);
|
||
|
|
||
|
String val = model.getConfig().getFirst(key);
|
||
|
if (val != null) {
|
||
|
try {
|
||
|
Integer.parseInt(val);
|
||
|
} catch (NumberFormatException e) {
|
||
|
throw new ComponentValidationException(label + " should be a number");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public ConfigurationValidationHelper checkLong(ProviderConfigProperty property, boolean required) throws ComponentValidationException {
|
||
|
return checkLong(property.getName(), property.getLabel(), required);
|
||
|
}
|
||
|
|
||
|
public ConfigurationValidationHelper checkLong(String key, String label, boolean required) throws ComponentValidationException {
|
||
|
checkSingle(key, label, required);
|
||
|
|
||
|
String val = model.getConfig().getFirst(key);
|
||
|
if (val != null) {
|
||
|
try {
|
||
|
Long.parseLong(val);
|
||
|
} catch (NumberFormatException e) {
|
||
|
throw new ComponentValidationException(label + " should be a number");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public ConfigurationValidationHelper checkSingle(ProviderConfigProperty property, boolean required) throws ComponentValidationException {
|
||
|
return checkSingle(property.getName(), property.getLabel(), required);
|
||
|
}
|
||
|
|
||
|
public ConfigurationValidationHelper checkSingle(String key, String label, boolean required) throws ComponentValidationException {
|
||
|
if (model.getConfig().containsKey(key) && model.getConfig().get(key).size() > 1) {
|
||
|
throw new ComponentValidationException(label + " should be a single entry");
|
||
|
}
|
||
|
|
||
|
if (required) {
|
||
|
checkRequired(key, label);
|
||
|
}
|
||
|
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public ConfigurationValidationHelper checkRequired(ProviderConfigProperty property) throws ComponentValidationException {
|
||
|
return checkRequired(property.getName(), property.getLabel());
|
||
|
}
|
||
|
|
||
|
public ConfigurationValidationHelper checkRequired(String key, String label) throws ComponentValidationException {
|
||
|
List<String> values = model.getConfig().get(key);
|
||
|
if (values == null) {
|
||
|
throw new ComponentValidationException(label + " is required");
|
||
|
}
|
||
|
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public ConfigurationValidationHelper checkBoolean(ProviderConfigProperty property, boolean required) throws ComponentValidationException {
|
||
|
return checkBoolean(property.getName(), property.getLabel(), required);
|
||
|
}
|
||
|
|
||
|
public ConfigurationValidationHelper checkBoolean(String key, String label, boolean required) {
|
||
|
checkSingle(key, label, required);
|
||
|
|
||
|
String val = model.getConfig().getFirst(key);
|
||
|
if (val != null && !(val.equals("true") || val.equals("false"))) {
|
||
|
throw new ComponentValidationException(label + " should be 'true' or 'false'");
|
||
|
}
|
||
|
|
||
|
return this;
|
||
|
}
|
||
|
}
|