2 * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
\r
4 * This library is free software; you can redistribute it and/or modify it under
\r
5 * the terms of the GNU Lesser General Public License as published by the Free
\r
6 * Software Foundation; either version 2.1 of the License, or (at your option)
\r
9 * This library is distributed in the hope that it will be useful, but WITHOUT
\r
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
\r
11 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
\r
15 package com.liferay.portal.webdav.methods;
\r
17 import com.liferay.portal.kernel.log.Log;
\r
18 import com.liferay.portal.kernel.log.LogFactoryUtil;
\r
19 import com.liferay.portal.kernel.servlet.ServletResponseUtil;
\r
20 import com.liferay.portal.kernel.webdav.Resource;
\r
21 import com.liferay.portal.kernel.webdav.WebDAVException;
\r
22 import com.liferay.portal.kernel.webdav.WebDAVRequest;
\r
23 import com.liferay.portal.kernel.webdav.WebDAVStorage;
\r
25 import java.io.InputStream;
\r
26 import java.text.DateFormat;
\r
27 import java.text.SimpleDateFormat;
\r
28 import java.util.Locale;
\r
30 import javax.servlet.http.HttpServletRequest;
\r
31 import javax.servlet.http.HttpServletResponse;
\r
34 * @author Brian Wing Shun Chan
\r
35 * @author Alexander Chow
\r
37 public class GetMethodImpl implements Method {
\r
39 private static DateFormat _modifiedDateFormatter =
\r
40 new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
\r
42 public int process(WebDAVRequest webDavRequest) throws WebDAVException {
\r
43 InputStream is = null;
\r
46 WebDAVStorage storage = webDavRequest.getWebDAVStorage();
\r
47 HttpServletRequest request = webDavRequest.getHttpServletRequest();
\r
48 HttpServletResponse response =
\r
49 webDavRequest.getHttpServletResponse();
\r
51 Resource resource = storage.getResource(webDavRequest);
\r
53 if (resource == null) {
\r
54 return HttpServletResponse.SC_NOT_FOUND;
\r
58 is = resource.getContentAsStream();
\r
60 catch (Exception e) {
\r
61 if (_log.isErrorEnabled()) {
\r
62 _log.error(e.getMessage());
\r
69 response.setContentLength((int) resource.getSize());
\r
70 response.setContentType(resource.getContentType());
\r
71 response.setDateHeader("Last-Modified", _modifiedDateFormatter.parse(resource.getModifiedDate()).getTime());
\r
73 ServletResponseUtil.sendFile(
\r
74 request, response, resource.getDisplayName(), is,
\r
75 resource.getSize(), resource.getContentType());
\r
77 catch (Exception e) {
\r
78 if (_log.isWarnEnabled()) {
\r
83 response.addHeader("Translate", "F");
\r
84 return HttpServletResponse.SC_OK;
\r
87 return HttpServletResponse.SC_NOT_FOUND;
\r
89 catch (Exception e) {
\r
90 throw new WebDAVException(e);
\r
94 private static Log _log = LogFactoryUtil.getLog(GetMethodImpl.class);
\r