public class InvoiceServlet extends ReflexServlet {
// MODELのPackage名を指定
private static final String MODEL_PACKAGE = "jp.reflexworks.invoice.model";
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
boolean toXml = true;
if (req.getParameter("xml") != null) {
toXml = false; // toJSON
}
try {
// 1.
クライアントから受け取ったXML(JSON)をオブジェクトに変換
JdoUtils jdoUtils = new JdoUtils();
Invoice
invoice = (Invoice) getEntity(req, MODEL_PACKAGE);
try {
jdoUtils.getInvoiceByKey(invoice);
// 2. すでに登録されている場合エラー
Status
status = new Status();
status.code = HttpStatus.SC_CONFLICT;
status.message = "PK already exists.";
doResponse(resp, status, toXml, MODEL_PACKAGE);
}
catch (JDOObjectNotFoundException e) {
// 3. 登録されていなければinsert
jdoUtils.insert(invoice);
doResponse(resp, invoice, toXml, MODEL_PACKAGE, HttpStatus.SC_CREATED);
}
// 4. エラーが発生したらエラー内容を返す
}
catch (Exception e) {
e.printStackTrace();
Status
status = new Status();
status.code = HttpStatus.SC_INTERNAL_SERVER_ERROR;
status.message = e.getMessage();
try {
doErrorPage(resp, e);
}
catch (Exception ee) {
ee.printStackTrace();
}
}
}
}