/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package jobs; import play.Logger; import play.jobs.Job; import play.libs.WS; import play.libs.WS.HttpResponse; import util.api.ApiMapperUtils; import com.emc.vipr.model.catalog.ApprovalInfo; import com.emc.vipr.model.catalog.ApprovalRestRep; import com.emc.vipr.model.catalog.OrderRestRep; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class NotifyApprovalServiceJob extends Job { private static final String TIMEOUT = "3min"; private String approvalUrl; private ApprovalRestRep approval; public NotifyApprovalServiceJob(String approvalUrl, OrderRestRep order, ApprovalRestRep approval) { this.approvalUrl = approvalUrl; this.approval = approval; } @Override public void doJob() throws Exception { WS.WSRequest wsReq = createRequest(); Logger.debug("POSTING Approval: %s => %s", approvalUrl, wsReq.body); HttpResponse response = wsReq.post(); if (isError(response)) { Logger.error("Approval POST failed: %s, %s %s", approvalUrl, response.getStatus(), response.getString()); } else { Logger.debug("Approval POST succeeded: %s, %s %s", approvalUrl, response.getStatus(), response.getString()); } } protected WS.WSRequest createRequest() { WS.WSRequest wsReq = WS.url(approvalUrl); wsReq.timeout(TIMEOUT); wsReq.setHeader("Accept", "application/json"); wsReq.setHeader("Content-Type", "application/json"); wsReq.body(createBody()); return wsReq; } protected String createBody() { Gson gson = new GsonBuilder().serializeNulls().create(); ApprovalInfo data = ApiMapperUtils.newApprovalInfo(approval); return gson.toJson(data); } protected boolean isError(HttpResponse response) { Integer statusCode = response.getStatus(); if ((statusCode == null) || (statusCode >= 400)) { return true; } else { return false; } } }