package org.openntf.xpt.demo.rest; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.openntf.xpt.core.json.JSONService; import org.openntf.xpt.core.utils.ErrorJSONBuilder; import org.openntf.xpt.demo.bo.Contact; import org.openntf.xpt.demo.bo.ContactStorageService; import com.ibm.commons.util.StringUtil; import com.ibm.domino.services.rest.RestServiceEngine; import com.ibm.domino.services.util.JsonWriter; public enum RestGenerator { INSTANCE; public boolean handleRequest(RestServiceEngine engine) { HttpServletRequest hsrequest = engine.getHttpRequest(); HttpServletResponse hsresponse = engine.getHttpResponse(); try { String strAction = hsrequest.getParameter("action"); String strID = hsrequest.getParameter("id"); if (StringUtil.isEmpty(strAction)) { ErrorJSONBuilder.getInstance().processError2JSON(hsresponse, 999, "No action attribute defined", null); return false; } if ("entry".equals(strAction) && StringUtil.isEmpty(strID)) { ErrorJSONBuilder.getInstance().processError2JSON(hsresponse, 999, "No id defined", null); return false; } if ("entry".equals(strAction)) { Contact con = ContactStorageService.getInstance().getById(strID); if (con != null) { JsonWriter jsWriter = new JsonWriter(hsresponse.getWriter(), true); Result res = new Result(); res.setStatus("ok"); List<Contact> lstCon = new ArrayList<Contact>(); lstCon.add(con); res.setContacts(lstCon); JSONService.getInstance().process2JSON(jsWriter, res); jsWriter.close(); return true; } else { ErrorJSONBuilder.getInstance().processError2JSON(hsresponse, 999, "No contact found for ID = " + strID, null); return false; } } if ("mycontacts".equalsIgnoreCase(strAction)) { List<String> lstFields = new ArrayList<String>(); lstFields.add("Observer"); List<Contact> lstCon = ContactStorageService.getInstance().getAllMyObjects("AllContacts", lstFields); JsonWriter jsWriter = new JsonWriter(hsresponse.getWriter(), true); Result res = new Result(); res.setStatus("ok"); res.setContacts(lstCon); JSONService.getInstance().process2JSON(jsWriter, res); jsWriter.close(); return true; } if ("allcontacts".equals(strAction)) { List<Contact> lstCon = ContactStorageService.getInstance().getAll("AllContacts"); JsonWriter jsWriter = new JsonWriter(hsresponse.getWriter(), true); Result res = new Result(); res.setStatus("ok"); res.setContacts(lstCon); JSONService.getInstance().process2JSON(jsWriter, res); jsWriter.close(); return true; } } catch (Exception e) { ErrorJSONBuilder.getInstance().processError2JSON(hsresponse, 999, "General Error", e); } return false; } }