public class InvoiceServlet extends ReflexServlet {

 

       // MODELPackage名を指定

       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. クライアントから受け取ったXMLJSON)をオブジェクトに変換

                     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();

                     }

              }

 

       }

}