package com.revolsys.ui.web.rest.interceptor;
import java.util.function.BiFunction;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.revolsys.datatype.DataType;
public interface WebParameterHandler {
static WebParameterHandler fixed(final Object value) {
return (request, response) -> {
return value;
};
}
static WebParameterHandler function(final String name,
final BiFunction<HttpServletRequest, HttpServletResponse, Object> function,
final DataType dataType, final boolean required, final Object defaultValue) {
if (defaultValue == null) {
if (required) {
return (request, response) -> {
final Object value = function.apply(request, response);
if (value == null) {
throw new IllegalArgumentException(name + " is required.");
} else {
return dataType.toObject(value);
}
};
} else {
return (request, response) -> {
final Object value = function.apply(request, response);
return dataType.toObject(value);
};
}
} else {
return (request, response) -> {
final Object value = function.apply(request, response);
if (value == null) {
return defaultValue;
} else {
return dataType.toObject(value);
}
};
}
}
static WebParameterHandler request() {
return (request, response) -> {
return request;
};
}
static WebParameterHandler response() {
return (request, response) -> {
return response;
};
}
Object getParameter(HttpServletRequest request, HttpServletResponse response);
}