Skip to content
Snippets Groups Projects
Commit b9b81996 authored by felmer's avatar felmer
Browse files

LMS-1870 Recatoring: Extract super class (AbstractServlet) from AbstractFileDownloadServlet

SVN: 18590
parent 9ec65bd5
No related branches found
No related tags found
No related merge requests found
...@@ -17,25 +17,17 @@ ...@@ -17,25 +17,17 @@
package ch.systemsx.cisd.openbis.generic.client.web.server; package ch.systemsx.cisd.openbis.generic.client.web.server;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import ch.systemsx.cisd.common.exceptions.UserFailureException;
import ch.systemsx.cisd.openbis.generic.server.SessionConstants;
/** /**
* Superclass for servlets supporting file download. * Superclass for servlets supporting file download.
* *
* @author Tomasz Pylak * @author Tomasz Pylak
*/ */
abstract public class AbstractFileDownloadServlet extends AbstractController abstract public class AbstractFileDownloadServlet extends AbstractServlet
{ {
protected AbstractFileDownloadServlet() protected AbstractFileDownloadServlet()
{ {
...@@ -45,50 +37,22 @@ abstract public class AbstractFileDownloadServlet extends AbstractController ...@@ -45,50 +37,22 @@ abstract public class AbstractFileDownloadServlet extends AbstractController
abstract protected FileContent getFileContent(final HttpServletRequest request) abstract protected FileContent getFileContent(final HttpServletRequest request)
throws Exception; throws Exception;
protected final String getSessionToken(final HttpServletRequest request)
{
// We must have a session reaching this point. See the constructor where we set
// 'setRequireSession(true)'.
final HttpSession session = request.getSession(false);
assert session != null : "Session must be specified.";
return ((String) session.getAttribute(SessionConstants.OPENBIS_SESSION_TOKEN_ATTRIBUTE_KEY));
}
protected final void writeResponse(final HttpServletResponse response, final String value)
throws IOException
{
final PrintWriter writer = response.getWriter();
writer.write(value);
writer.flush();
writer.close();
}
//
// AbstractController
//
@Override @Override
protected final ModelAndView handleRequestInternal(final HttpServletRequest request, protected void respondToRequest(final HttpServletRequest request,
final HttpServletResponse response) throws Exception final HttpServletResponse response) throws Exception, IOException
{ {
try FileContent fileContent = getFileContent(request);
{ if (fileContent != null)
FileContent fileContent = getFileContent(request);
if (fileContent != null)
{
response.setContentLength(fileContent.getContent().length);
response.setHeader("Content-Disposition", "attachment; filename=\""
+ fileContent.getFileName() + "\"");
final ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(fileContent.getContent());
outputStream.flush();
outputStream.close();
}
} catch (final UserFailureException ex)
{ {
writeResponse(response, ex.getMessage()); response.setContentLength(fileContent.getContent().length);
response.setHeader("Content-Disposition", "attachment; filename=\""
+ fileContent.getFileName() + "\"");
final ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(fileContent.getContent());
outputStream.flush();
outputStream.close();
} }
return null;
} }
// //
......
/*
* Copyright 2010 ETH Zuerich, CISD
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ch.systemsx.cisd.openbis.generic.client.web.server;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import ch.systemsx.cisd.common.exceptions.UserFailureException;
import ch.systemsx.cisd.openbis.generic.server.SessionConstants;
/**
* @author Franz-Josef Elmer
*/
public abstract class AbstractServlet extends AbstractController
{
protected final String getSessionToken(final HttpServletRequest request)
{
// We must have a session reaching this point. See the constructor where we set
// 'setRequireSession(true)'.
final HttpSession session = request.getSession(false);
assert session != null : "Session must be specified.";
return ((String) session.getAttribute(SessionConstants.OPENBIS_SESSION_TOKEN_ATTRIBUTE_KEY));
}
protected final void writeResponse(final HttpServletResponse response, final String value)
throws IOException
{
final PrintWriter writer = response.getWriter();
writer.write(value);
writer.flush();
writer.close();
}
//
// AbstractController
//
@Override
protected final ModelAndView handleRequestInternal(final HttpServletRequest request,
final HttpServletResponse response) throws Exception
{
try
{
respondToRequest(request, response);
} catch (final UserFailureException ex)
{
writeResponse(response, ex.getMessage());
}
return null;
}
protected abstract void respondToRequest(final HttpServletRequest request,
final HttpServletResponse response) throws Exception, IOException;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment