Add statusCode to ResponseValues

This commit is contained in:
rjy7 2010-09-17 15:11:03 +00:00
parent 0d93be55d4
commit 0406db8b59

View file

@ -185,6 +185,12 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
protected void doResponse(VitroRequest vreq, HttpServletResponse response, ResponseValues values) { protected void doResponse(VitroRequest vreq, HttpServletResponse response, ResponseValues values) {
try { try {
int statusCode = values.getStatusCode();
if (statusCode > 0) {
response.setStatus(statusCode);
}
// switch (values.getType()) { // switch (values.getType()) {
// case TEMPLATE: // case TEMPLATE:
// doTemplate(vreq, response, values); // doTemplate(vreq, response, values);
@ -535,6 +541,10 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
String getTemplateName(); String getTemplateName();
int getStatusCode();
void setStatusCode(int statusCode);
Map<String, Object> getMap(); Map<String, Object> getMap();
String getRedirectUrl(); String getRedirectUrl();
@ -543,8 +553,26 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
Throwable getException(); Throwable getException();
} }
protected static abstract class BaseResponseValues implements ResponseValues {
private int statusCode = 0;
BaseResponseValues() { }
BaseResponseValues(int statusCode) {
this.statusCode = statusCode;
}
public int getStatusCode() {
return statusCode;
}
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
}
protected static class TemplateResponseValues implements ResponseValues { protected static class TemplateResponseValues extends BaseResponseValues {
private final String templateName; private final String templateName;
private final Map<String, Object> map; private final Map<String, Object> map;
@ -553,10 +581,22 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
this.map = new HashMap<String, Object>(); this.map = new HashMap<String, Object>();
} }
public TemplateResponseValues(String templateName, int statusCode) {
super(statusCode);
this.templateName = templateName;
this.map = new HashMap<String, Object>();
}
public TemplateResponseValues(String templateName, Map<String, Object> map) { public TemplateResponseValues(String templateName, Map<String, Object> map) {
this.templateName = templateName; this.templateName = templateName;
this.map = map; this.map = map;
} }
public TemplateResponseValues(String templateName, Map<String, Object> map, int statusCode) {
super(statusCode);
this.templateName = templateName;
this.map = map;
}
public TemplateResponseValues put(String key, Object value) { public TemplateResponseValues put(String key, Object value) {
this.map.put(key, value); this.map.put(key, value);
@ -598,13 +638,18 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
} }
protected static class RedirectResponseValues implements ResponseValues { protected static class RedirectResponseValues extends BaseResponseValues {
private final String redirectUrl; private final String redirectUrl;
public RedirectResponseValues(String redirectUrl) { public RedirectResponseValues(String redirectUrl) {
this.redirectUrl = redirectUrl; this.redirectUrl = redirectUrl;
} }
public RedirectResponseValues(String redirectUrl, int statusCode) {
super(statusCode);
this.redirectUrl = redirectUrl;
}
// @Override // @Override
// public ResponseType getType() { // public ResponseType getType() {
// return ResponseType.REDIRECT; // return ResponseType.REDIRECT;
@ -641,13 +686,18 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
} }
protected static class ForwardResponseValues implements ResponseValues { protected static class ForwardResponseValues extends BaseResponseValues {
private final String forwardUrl; private final String forwardUrl;
public ForwardResponseValues(String forwardUrl) { public ForwardResponseValues(String forwardUrl) {
this.forwardUrl = forwardUrl; this.forwardUrl = forwardUrl;
} }
public ForwardResponseValues(String forwardUrl, int statusCode) {
super(statusCode);
this.forwardUrl = forwardUrl;
}
// @Override // @Override
// public ResponseType getType() { // public ResponseType getType() {
// return ResponseType.FORWARD; // return ResponseType.FORWARD;
@ -692,17 +742,32 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
super(DEFAULT_TEMPLATE_NAME); super(DEFAULT_TEMPLATE_NAME);
this.cause = cause; this.cause = cause;
} }
public ExceptionResponseValues(Throwable cause, int statusCode) {
super(DEFAULT_TEMPLATE_NAME, statusCode);
this.cause = cause;
}
public ExceptionResponseValues(String templateName, Throwable cause) { public ExceptionResponseValues(String templateName, Throwable cause) {
super(templateName); super(templateName);
this.cause = cause; this.cause = cause;
} }
public ExceptionResponseValues(String templateName, Throwable cause, int statusCode) {
super(templateName, statusCode);
this.cause = cause;
}
public ExceptionResponseValues(String templateName, Map<String, Object> map, Throwable cause) { public ExceptionResponseValues(String templateName, Map<String, Object> map, Throwable cause) {
super(templateName, map); super(templateName, map);
this.cause = cause; this.cause = cause;
} }
public ExceptionResponseValues(String templateName, Map<String, Object> map, Throwable cause, int statusCode) {
super(templateName, map, statusCode);
this.cause = cause;
}
// @Override // @Override
// public ResponseType getType() { // public ResponseType getType() {
// return ResponseType.EXCEPTION; // return ResponseType.EXCEPTION;