package gw.riskassessment uses com.guidewire.pl.web.controller.WebRequestHandler uses com.guidewire.pl.web.controller.WebRequestInfo uses gw.api.database.Query uses gw.util.StreamUtil uses javax.servlet.http.HttpServletRequest uses javax.servlet.http.HttpServletResponse uses java.lang.IllegalStateException abstract class LocationDetailsRequestHandler implements WebRequestHandler { abstract property get LocationDetailURI() : String abstract property get LocationIDParam() : String abstract function createJSONData(policyLocation : OutboundLocationRiskAssessmentTempStore) : String override function shouldHandleRequest(request : WebRequestInfo): boolean { var httpRequest = request.getRequestWrapper().getRequest() var uri = httpRequest.getRequestURI() return uri.contains(LocationDetailURI) } override function handleRequest(request : WebRequestInfo) { //No cache implementation WebRequestInfo.Util.setNoCacheHeader(request.getResponse()) var response = request.getResponse() var httpServletRequest = request.getRequestWrapper().getRequest() response.setHeader("Access-Control-Allow-Origin", httpServletRequest.getHeader("Origin")) response.setHeader("Access-Control-Allow-Credentials", "true") if (httpServletRequest.getMethod() == "OPTIONS") { response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE") response.setHeader("Access-Control-Allow-Headers", "X-Requested-With, Origin,Content-Type,Accept") } else { var location = retrieveLocation(httpServletRequest) setResponseWithJSONData(location, response) } } private function retrieveLocation(request : HttpServletRequest) : OutboundLocationRiskAssessmentTempStore { var locationID = request.getParameter(LocationIDParam) var requestData = Query.make(OutboundLocationRiskAssessmentTempStore).compare(OutboundLocationRiskAssessmentTempStore#PublicID, Equals, locationID).select().single() if (requestData == null) { throw new IllegalStateException("Location not found with public id : " + locationID) } return requestData } private function setResponseWithJSONData(requestData : OutboundLocationRiskAssessmentTempStore, servletResponse : HttpServletResponse) { servletResponse.setContentType("application/json") servletResponse.getOutputStream().write(StreamUtil.toBytes(createJSONData(requestData))); } }