package org.gcube.datatransfer.resolver.http; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; import org.gcube.contentmanager.storageclient.model.protocol.smp.Handler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author andrea * */ public class HttpResolver extends HttpServlet { private static final long serialVersionUID = 1L; /** The logger. */ private static final Logger logger = LoggerFactory.getLogger(HttpResolver.class); public void init(ServletConfig conf) throws ServletException { super.init(conf); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { logger.info("The http session id is: " + request.getSession().getId()); String uri = request.getParameter("smp-uri"); uri = uri.replace(" ","+"); logger.debug("URI = "+ uri); try { if (uri == null || uri.equals("")) { // the document has not id - not found response.sendError(404); return; } OutputStream out = response.getOutputStream(); Handler.activateProtocol(); String name = ""; response.addHeader("content_name", name); response.addHeader("Content-Name", name); response.addHeader("content-disposition", "attachment; filename=" +name); response.setContentType("unknown/unknown"); logger.info("About to get object"); URL url = new URL(uri); URLConnection uc = null; InputStream in = null; try { uc = ( URLConnection ) url.openConnection ( ); in = uc.getInputStream(); } catch(Exception e){ e.printStackTrace(); } IOUtils.copy(in, out); logger.info("Printing outToString: " + out.toString()); out.flush(); out.close(); in.close(); } catch (Exception e) { e.printStackTrace(); logger.error("Exception:", e); } } }