Rev 6988 | Rev 6991 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.serving.controllers;import in.shop2020.model.v1.order.TransactionServiceException;import in.shop2020.thrift.clients.TransactionClient;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.Channels;import java.nio.channels.WritableByteChannel;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.ServletContext;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.struts2.convention.annotation.InterceptorRef;import org.apache.struts2.convention.annotation.InterceptorRefs;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import org.apache.struts2.util.ServletContextAware;import org.apache.thrift.TException;import org.apache.thrift.transport.TTransportException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;@SuppressWarnings("serial")@InterceptorRefs({@InterceptorRef("myDefault"),@InterceptorRef("login")})/**** @author Rajveer**/public class InvoiceController implements ServletResponseAware,ServletRequestAware, ServletContextAware {private static Logger logger = LoggerFactory.getLogger(InvoiceController.class);private ServletContext context;private HttpServletRequest request;private HttpServletResponse response;private HttpSession session;private String id;private String orderId;private String errorMsg = "";public String show(){orderId = id;response.setContentType("application/pdf");response.setHeader("Content-disposition", "inline; filename=invoice-"+orderId+".pdf" );ServletOutputStream sos;try {TransactionClient tc = new TransactionClient("support_transaction_service_server_host", "transaction_service_server_port");ByteBuffer bb = tc.getClient().retrieveInvoice(Long.parseLong(orderId));ByteArrayOutputStream baos = new ByteArrayOutputStream();WritableByteChannel channel = Channels.newChannel(baos);channel.write(bb);sos = response.getOutputStream();baos.writeTo(sos);sos.flush();} catch (Exception e) {errorMsg = "Invoice not found";logger.error("Encountered error while sending invoice response: ", e);}return "show";}@Overridepublic void setServletContext(ServletContext context) {this.context = context;}@Overridepublic void setServletResponse(HttpServletResponse response) {this.response = response;}@Overridepublic void setServletRequest(HttpServletRequest request) {this.request = request;this.session = request.getSession();}public String getId(){return id;}public void setId(String id){this.id = id;}public String getServletContextPath(){return context.getContextPath();}public String getErrorMsg() {return errorMsg;}public void setErrorMsg(String errorMsg) {this.errorMsg = errorMsg;}}