package com.psddev.cms.db;
import java.util.Arrays;
import java.util.stream.Stream;
import com.psddev.cms.view.ViewCreator;
import com.psddev.cms.view.ViewRequest;
import com.psddev.dari.util.ObjectUtils;
import com.psddev.dari.util.TypeDefinition;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @deprecated no replacement.
*/
@Deprecated
class ServletViewRequest implements ViewRequest {
private static final Logger LOGGER = LoggerFactory.getLogger(ServletViewRequest.class);
private HttpServletRequest request;
public ServletViewRequest(HttpServletRequest request) {
this.request = request;
}
@Override
public <V> V createView(Class<V> viewClass, Object model) {
Class<? extends ViewCreator<? super Object, V, ? super ServletViewRequest>> viewCreatorClass = ViewCreator.findCreatorClass(model, viewClass, null, this);
if (viewCreatorClass != null) {
ViewCreator<? super Object, ? extends V, ? super ServletViewRequest> vc = TypeDefinition.getInstance(viewCreatorClass).newInstance();
return vc.createView(model, this);
} else {
LOGGER.warn("Could not find view creator for view of type [" + viewClass.getName()
+ "] and object of type [" + (model != null ? model.getClass() : "null") + "]!");
return null;
}
}
@Override
public Object createView(String viewType, Object model) {
Class<? extends ViewCreator<? super Object, ?, ? super ServletViewRequest>> viewCreatorClass = ViewCreator.findCreatorClass(model, null, viewType, this);
if (viewCreatorClass != null) {
ViewCreator<? super Object, ?, ? super ServletViewRequest> vc = TypeDefinition.getInstance(viewCreatorClass).newInstance();
return vc.createView(model, this);
} else {
LOGGER.warn("Could not find view creator for view of type [" + viewType
+ "] and object of type [" + (model != null ? model.getClass() : "null") + "]!");
return null;
}
}
// To support backward compatibility from 3.1 when the concept of namespace
// had not yet been introduced.
@Deprecated
public <T> Stream<T> getParameter(Class<T> returnType, String name) {
String[] values = request.getParameterValues(name);
return values != null ? Arrays.asList(values).stream()
.map(rawItem -> ObjectUtils.to(returnType, rawItem))
.filter(item -> item != null) : Stream.empty();
}
}