private String status = OK;
private String message = "";
+ // TODO: add an exception field
+
/** Canonical constructor */
public ServerAnswer(String status, String message) {
setStatus(status);
public interface MvcConstants {
public final static String ANSWER_MODEL_KEY = "org.argeo.server.mvc.ANSWER";
+ public final static String ANSWER_MODEL_KEY_AS_HTML = "org.argeo.server.mvc.ANSWER_AS_HTML";
}
import javax.servlet.http.HttpServletResponse;
import org.argeo.ArgeoException;
+import org.argeo.server.ServerAnswer;
import org.argeo.server.ServerSerializer;
import org.springframework.web.servlet.view.AbstractView;
protected void renderMergedOutputModel(Map model,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
+ Boolean serverAnswersAsHtml = false;
final Object answer;
if (model.size() == 1) {
answer = model.values().iterator().next();
} else if (model.containsKey(ANSWER_MODEL_KEY)) {
answer = model.get(ANSWER_MODEL_KEY);
+ } else if (model.containsKey(ANSWER_MODEL_KEY_AS_HTML)) {
+ answer = model.get(ANSWER_MODEL_KEY_AS_HTML);
+ serverAnswersAsHtml = true;
} else if (model.containsKey(viewName)) {
answer = model.get(viewName);
} else {
"Model has a size different from 1. Specify a modelKey.");
}
- serializer.serialize(answer, request, response);
+ if ((answer instanceof ServerAnswer) && serverAnswersAsHtml) {
+ response.setContentType("text/html");
+ ServerAnswer serverAnswer = (ServerAnswer) answer;
+ response.getWriter().append("<pre>");
+ response.getWriter().append(serverAnswer.getMessage());
+ response.getWriter().append("</pre>");
+ } else {
+ serializer.serialize(answer, request, response);
+ }
}
public String getViewName() {
@SuppressWarnings("unchecked")
@RequestMapping("/upload/**")
- @ModelAttribute(ANSWER_MODEL_KEY)
+ @ModelAttribute(ANSWER_MODEL_KEY_AS_HTML)
public ServerAnswer upload(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// Parse the request
}
ByteArrayResource res = new ByteArrayResource(arr);
-// String pathInfo = request.getPathInfo();
+ // String pathInfo = request.getPathInfo();
StringBuffer path = new StringBuffer("/");
StringTokenizer st = new StringTokenizer(request.getPathInfo(), "/");
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.argeo.server.ArgeoServerException;
+import org.argeo.ArgeoException;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonNode;
objectFactory = defaultObjectFactory;
if (objectFactory == null || !objectFactory.supports(type))
- throw new ArgeoServerException(
+ throw new ArgeoException(
"Cannot find JSON object factory for type " + type);
return (T) objectFactory.readValue(type, str);
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.argeo.server.ArgeoServerException;
+import org.argeo.ArgeoException;
import org.argeo.server.Deserializer;
import org.argeo.server.ServerDeserializer;
import org.codehaus.jackson.JsonProcessingException;
return getObjectMapper().readValue(reader, targetClass);
} catch (Exception e) {
- throw new ArgeoServerException("Cannot deserialize " + reader, e);
+ throw new ArgeoException("Cannot deserialize " + reader, e);
}
}
return getObjectMapper().readValue(reader, clss);
} catch (Exception e) {
- throw new ArgeoServerException("Cannot deserialize " + reader, e);
+ throw new ArgeoException("Cannot deserialize " + reader, e);
}
}
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.argeo.server.ArgeoServerException;
+import org.argeo.ArgeoException;
import org.argeo.server.Serializer;
import org.argeo.server.ServerSerializer;
import org.codehaus.jackson.JsonFactory;
private Boolean prettyPrint = false;
+ private Boolean asHtml = false;
+
// private String encoding = "UTF8";
public void serialize(Object obj, HttpServletRequest request,
HttpServletResponse response) {
- response.setContentType("application/json");
+ if (asHtml)
+ response.setContentType("text/html");
+ else
+ response.setContentType("application/json");
try {
+ if (asHtml)
+ response.getWriter().append("<pre>");
+
serialize(response.getWriter(), obj);
+
+ if (asHtml)
+ response.getWriter().append("</pre>");
+
} catch (IOException e) {
- throw new ArgeoServerException("Cannot open response stream.", e);
+ throw new ArgeoException("Cannot open response stream.", e);
}
}
objectMapper.writeValue(jsonGenerator, obj);
} catch (Exception e) {
- throw new ArgeoServerException("Cannot serialize " + obj, e);
+ throw new ArgeoException("Cannot serialize " + obj, e);
} finally {
if (jsonGenerator != null)
try {
jsonGenerator.close();
log.debug(stringWriter.toString());
} catch (Exception e) {
- throw new ArgeoServerException("Cannot log JSON", e);
+ throw new ArgeoException("Cannot log JSON", e);
} finally {
if (jsonGenerator != null)
try {