// Path: src/main/java/com/epam/reportportal/auth/integration/parameter/SamlParameter.java
// public enum SamlParameter {
// 
// 	BASE_PATH("callbackUrl", false),
// 	IDP_NAME("identityProviderName", true),
// 	IDP_METADATA_URL("identityProviderMetadataUrl", true),
// 	EMAIL_ATTRIBUTE("emailAttribute", true),
// 	IDP_NAME_ID("identityProviderNameId", false),
// 	IDP_ALIAS("identityProviderAlias", false),
// 	IDP_URL("identityProviderUrl", false),
// 	FULL_NAME_ATTRIBUTE("fullNameAttribute", false),
// 	FIRST_NAME_ATTRIBUTE("firstNameAttribute", false),
// 	LAST_NAME_ATTRIBUTE("lastNameAttribute", false);
// 
// 	private String parameterName;
// 
// 	private boolean required;
// 
// 	SamlParameter(String parameterName, boolean required) {
// 		this.parameterName = parameterName;
// 		this.required = required;
// 	}
// 
// 	public String getParameterName() {
// 		return parameterName;
// 	}
// 
// 	public boolean isRequired() {
// 		return required;
// 	}
// 
// 	public Optional<String> getParameter(Integration integration) {
// 		return ofNullable((String) integration.getParams().getParams().get(parameterName));
// 	}
// 
// 	public void setParameter(Integration integration, String value) {
// 		if (Objects.isNull(integration.getParams())) {
// 			integration.setParams(new IntegrationParams(new HashMap<>()));
// 		}
// 		if (Objects.isNull(integration.getParams().getParams())) {
// 			integration.getParams().setParams(new HashMap<>());
// 		}
// 		integration.getParams().getParams().put(parameterName, value);
// 	}
// 
// 	public void removeParameter(Integration integration) {
// 		ofNullable(integration.getParams()).map(IntegrationParams::getParams).ifPresent(params -> params.remove(parameterName));
// 	}
// 
// 	public String getRequiredParameter(Integration integration) {
// 		Optional<String> parameter = getParameter(integration);
// 		if (required) {
// 			if (parameter.isPresent()) {
// 				return parameter.get();
// 			} else {
// 				throw new ReportPortalException(ErrorType.INCORRECT_REQUEST, formattedSupplier("'{}' should be present.", parameterName));
// 			}
// 		} else {
// 			throw new ReportPortalException(ErrorType.INCORRECT_REQUEST, formattedSupplier("'{}' is not required."));
// 		}
// 	}
// 
// 	public boolean exist(Integration integration) {
// 		return getParameter(integration).isPresent();
// 	}
// 
// 	public Optional<String> getParameter(Map<String, Object> parameterMap) {
// 		return ofNullable(parameterMap.get(parameterName)).map(it -> (String) it).filter(StringUtils::isNotBlank);
// 	}
// 
// 	public Optional<String> getParameter(UpdateAuthRQ request) {
// 		return ofNullable(request.getIntegrationParams()).flatMap(this::getParameter);
// 	}
// 
// 	public String getRequiredParameter(UpdateAuthRQ request) {
// 		Optional<String> parameter = getParameter(request);
// 		if (required) {
// 			if (parameter.isPresent()) {
// 				return parameter.get();
// 			} else {
// 				throw new ReportPortalException(ErrorType.INCORRECT_REQUEST, formattedSupplier("'{}' should be present.", parameterName));
// 			}
// 		} else {
// 			throw new ReportPortalException(ErrorType.INCORRECT_REQUEST, formattedSupplier("'{}' is not required."));
// 		}
// 	}
// 
// 	public void setParameter(UpdateAuthRQ request, Integration integration) {
// 		getParameter(request).ifPresent(it -> setParameter(integration, it));
// 	}
// 
// }


import com.epam.reportportal.auth.integration.parameter.SamlParameter;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
package com.epam.reportportal.auth.integration.validator.request.param.provider;



@Service
public class SamlRequiredParamNamesProvider implements ParamNamesProvider {

	@Override
	public List<String> provide() {
// Path: src/main/java/com/epam/reportportal/auth/integration/parameter/SamlParameter.java
// public enum SamlParameter {
// 
// 	BASE_PATH("callbackUrl", false),
// 	IDP_NAME("identityProviderName", true),
// 	IDP_METADATA_URL("identityProviderMetadataUrl", true),
// 	EMAIL_ATTRIBUTE("emailAttribute", true),
// 	IDP_NAME_ID("identityProviderNameId", false),
// 	IDP_ALIAS("identityProviderAlias", false),
// 	IDP_URL("identityProviderUrl", false),
// 	FULL_NAME_ATTRIBUTE("fullNameAttribute", false),
// 	FIRST_NAME_ATTRIBUTE("firstNameAttribute", false),
// 	LAST_NAME_ATTRIBUTE("lastNameAttribute", false);
// 
// 	private String parameterName;
// 
// 	private boolean required;
// 
// 	SamlParameter(String parameterName, boolean required) {
// 		this.parameterName = parameterName;
// 		this.required = required;
// 	}
// 
// 	public String getParameterName() {
// 		return parameterName;
// 	}
// 
// 	public boolean isRequired() {
// 		return required;
// 	}
// 
// 	public Optional<String> getParameter(Integration integration) {
// 		return ofNullable((String) integration.getParams().getParams().get(parameterName));
// 	}
// 
// 	public void setParameter(Integration integration, String value) {
// 		if (Objects.isNull(integration.getParams())) {
// 			integration.setParams(new IntegrationParams(new HashMap<>()));
// 		}
// 		if (Objects.isNull(integration.getParams().getParams())) {
// 			integration.getParams().setParams(new HashMap<>());
// 		}
// 		integration.getParams().getParams().put(parameterName, value);
// 	}
// 
// 	public void removeParameter(Integration integration) {
// 		ofNullable(integration.getParams()).map(IntegrationParams::getParams).ifPresent(params -> params.remove(parameterName));
// 	}
// 
// 	public String getRequiredParameter(Integration integration) {
// 		Optional<String> parameter = getParameter(integration);
// 		if (required) {
// 			if (parameter.isPresent()) {
// 				return parameter.get();
// 			} else {
// 				throw new ReportPortalException(ErrorType.INCORRECT_REQUEST, formattedSupplier("'{}' should be present.", parameterName));
// 			}
// 		} else {
// 			throw new ReportPortalException(ErrorType.INCORRECT_REQUEST, formattedSupplier("'{}' is not required."));
// 		}
// 	}
// 
// 	public boolean exist(Integration integration) {
// 		return getParameter(integration).isPresent();
// 	}
// 
// 	public Optional<String> getParameter(Map<String, Object> parameterMap) {
// 		return ofNullable(parameterMap.get(parameterName)).map(it -> (String) it).filter(StringUtils::isNotBlank);
// 	}
// 
// 	public Optional<String> getParameter(UpdateAuthRQ request) {
// 		return ofNullable(request.getIntegrationParams()).flatMap(this::getParameter);
// 	}
// 
// 	public String getRequiredParameter(UpdateAuthRQ request) {
// 		Optional<String> parameter = getParameter(request);
// 		if (required) {
// 			if (parameter.isPresent()) {
// 				return parameter.get();
// 			} else {
// 				throw new ReportPortalException(ErrorType.INCORRECT_REQUEST, formattedSupplier("'{}' should be present.", parameterName));
// 			}
// 		} else {
// 			throw new ReportPortalException(ErrorType.INCORRECT_REQUEST, formattedSupplier("'{}' is not required."));
// 		}
// 	}
// 
// 	public void setParameter(UpdateAuthRQ request, Integration integration) {
// 		getParameter(request).ifPresent(it -> setParameter(integration, it));
// 	}
// 
// }


// Path: src/main/java/com/epam/reportportal/auth/integration/validator/request/param/provider/SamlRequiredParamNamesProvider.java
import com.epam.reportportal.auth.integration.parameter.SamlParameter;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

package com.epam.reportportal.auth.integration.validator.request.param.provider;



@Service
public class SamlRequiredParamNamesProvider implements ParamNamesProvider {

	@Override
	public List<String> provide() {
		return Arrays.stream(SamlParameter.values())