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 net.sf.webdav.methods;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.webdav.IMimeTyper;
import net.sf.webdav.ITransaction;
import net.sf.webdav.IWebdavStore;
import net.sf.webdav.StoredObject;
import net.sf.webdav.WebdavStatus;
import net.sf.webdav.locking.ResourceLocks;
public class DoGet extends DoHead {
private static 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 = -1;
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 (Exception e) {
LOG.warn("Closing InputStream causes Exception!\n"
+ e.toString());
}
try {
out.flush();
out.close();
} catch (Exception e) {
LOG.warn("Flushing OutputStream causes Exception!\n"
+ e.toString());
}
}
} catch (Exception e) {
LOG.trace(e.toString());
}
}
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?
OutputStream out = resp.getOutputStream();
String[] children = _store.getChildrenNames(transaction, path);
children = children == null ? new String[] {} : children;
StringBuffer childrenTemp = new StringBuffer();
childrenTemp.append("Contents of this Folder:\n");
for (String child : children) {
childrenTemp.append(child);
childrenTemp.append("\n");
}
out.write(childrenTemp.toString().getBytes());
}
}
}
}