Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Copyright 1999,2004 The Apache Software Foundation.
*
* 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 nl.info.webdav.methods;
import nl.info.webdav.IMimeTyper;
import nl.info.webdav.ITransaction;
import nl.info.webdav.IWebdavStore;
import nl.info.webdav.StoredObject;
import nl.info.webdav.WebdavStatus;
import nl.info.webdav.locking.ResourceLocks;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Locale;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
public class DoGet extends DoHead {
private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(DoGet.class);
public DoGet(IWebdavStore store, String dftIndexFile, String insteadOf404,
ResourceLocks resourceLocks, IMimeTyper mimeTyper,
int contentLengthHeader) {
super(store, dftIndexFile, insteadOf404, resourceLocks, mimeTyper,
contentLengthHeader);
}
protected void doBody(ITransaction transaction, HttpServletResponse resp, String path) {
try {
StoredObject so = _store.getStoredObject(transaction, path);
if (so.isNullResource()) {
String methodsAllowed = DeterminableMethod
.determineMethodsAllowed(so);
resp.addHeader("Allow", methodsAllowed);
resp.sendError(WebdavStatus.SC_METHOD_NOT_ALLOWED);
return;
}
OutputStream out = resp.getOutputStream();
InputStream in = _store.getResourceContent(transaction, path);
try {
int read;
byte[] copyBuffer = new byte[BUF_SIZE];
while ((read = in.read(copyBuffer, 0, copyBuffer.length)) != -1) {
out.write(copyBuffer, 0, read);
}
} finally {
// flushing causes a IOE if a file is opened on the webserver
// client disconnected before server finished sending response
try {
in.close();
} catch (IOException e) {
LOG.warn("Closing InputStream causes Exception.", e);
}
try {
out.flush();
out.close();
} catch (IOException e) {
LOG.warn("Flushing OutputStream causes Exception!", e);
}
}
} catch (Exception e) {
LOG.warn("Failed to copy buffer", e);
}
}
protected void folderBody(ITransaction transaction, String path,
HttpServletResponse resp, HttpServletRequest req)
throws IOException {
StoredObject so = _store.getStoredObject(transaction, path);
if (so == null) {
resp.sendError(HttpServletResponse.SC_NOT_FOUND, req
.getRequestURI());
} else {
if (so.isNullResource()) {
String methodsAllowed = DeterminableMethod
.determineMethodsAllowed(so);
resp.addHeader("Allow", methodsAllowed);
resp.sendError(WebdavStatus.SC_METHOD_NOT_ALLOWED);
return;
}
if (so.isFolder()) {
// TODO some folder response (for browsers, DAV tools
// use propfind) in html?
Locale locale = req.getLocale();
DateFormat shortDF= getDateTimeFormat(req.getLocale());
resp.setContentType("text/html");
resp.setCharacterEncoding("UTF8");
OutputStream out = resp.getOutputStream();
String[] children = _store.getChildrenNames(transaction, path);
// Make sure it's not null
children = children == null ? new String[] {} : children;
// Sort by name
Arrays.sort(children);
StringBuilder childrenTemp = new StringBuilder();
childrenTemp.append("Content of folder");
childrenTemp.append(path);
childrenTemp.append("");
childrenTemp.append("");
childrenTemp.append(getHeader(transaction, path, resp, req));
childrenTemp.append("