package org.atricore.idbus.kernel.main.mediation.camel.component.http;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.atricore.idbus.kernel.main.util.ConfigurationContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
/**
* IdBus dumps download servlet, only parameter supported is dump ID, dumps are found at:
*
* $JOSSO2_HOME/data/tmp/dump-<ID>.zip
*/
public class OsgiIDBusDumpServlet extends HttpServlet {
private static final Log logger = LogFactory.getLog(OsgiIDBusServlet2.class);
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
final int bufferSize = 65536;
String dumpId = req.getParameter("id");
logger.info("Requested dump: " + dumpId);
if (dumpId == null)
dumpId = "0";
String dumpFile = "dump-" + dumpId + ".zip";
String dumpFolder = System.getProperty("java.io.tmpdir");
if (!dumpFolder.endsWith(File.separator))
dumpFolder += File.separator;
String dumpResource = dumpFolder + dumpFile;
logger.info("Requested dump file " + dumpResource);
resp.setBufferSize(bufferSize);
OutputStream outStream = resp.getOutputStream();
FileInputStream stream = null;
try {
stream = new FileInputStream(new File(dumpResource));
int bytesRead;
byte[] buffer = new byte[bufferSize];
while( (bytesRead = stream.read(buffer, 0, bufferSize)) > 0 ) {
outStream.write(buffer, 0, bytesRead);
outStream.flush();
}
} finally {
if( stream != null )
stream.close();
outStream.close();
}
}
}