package org.genedb.web.mvc.view;
import org.apache.log4j.Logger;
import org.springframework.core.Ordered;
import org.springframework.util.Assert;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
public class UriSuffixServiceViewResolver implements ViewResolver, Ordered {
private static final Logger logger = Logger.getLogger(UriSuffixServiceViewResolver.class);
private ServiceView serviceView;
private int order;
public void setServiceView(ServiceView serviceView) {
this.serviceView = serviceView;
}
@Override
public View resolveViewName(String arg0, Locale arg1) throws Exception {
RequestAttributes attrs = RequestContextHolder.getRequestAttributes();
Assert.isInstanceOf(ServletRequestAttributes.class, attrs);
ServletRequestAttributes servletAttrs = (ServletRequestAttributes) attrs;
HttpServletRequest request = servletAttrs.getRequest();
if (hasExtension(request)) {
return serviceView;
}
return null;
}
/**
* Generates and appropriate extension based on the existing HTTP request.
*
* @param request
* @return
*/
private boolean hasExtension(HttpServletRequest request) {
String uri = request.getRequestURI();
logger.debug("parsing uri: " + uri);
boolean extension = false;
if ((uri.endsWith(".xml")) || (uri.endsWith(".json"))) {
extension = true;
}
return extension;
}
public void setOrder(int order) {
this.order = order;
}
@Override
public int getOrder() {
return order;
}
}