You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2013/02/06 16:13:44 UTC
svn commit: r1443005 -
/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileObject.java
Author: ggregory
Date: Wed Feb 6 15:13:44 2013
New Revision: 1443005
URL: http://svn.apache.org/viewvc?rev=1443005&view=rev
Log:
Sort methods in AB order.
Modified:
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileObject.java
Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileObject.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileObject.java?rev=1443005&r1=1443004&r2=1443005&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileObject.java (original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/http/HttpFileObject.java Wed Feb 6 15:13:44 2013
@@ -49,8 +49,32 @@ import org.apache.commons.vfs2.util.Rand
*/
public class HttpFileObject<FS extends HttpFileSystem> extends AbstractFileObject<FS>
{
+ /**
+ * An InputStream that cleans up the HTTP connection on close.
+ */
+ static class HttpInputStream extends MonitorInputStream
+ {
+ private final GetMethod method;
+
+ public HttpInputStream(final GetMethod method)
+ throws IOException
+ {
+ super(method.getResponseBodyAsStream());
+ this.method = method;
+ }
+
+ /**
+ * Called after the stream has been closed.
+ */
+ @Override
+ protected void onClose() throws IOException
+ {
+ method.releaseConnection();
+ }
+ }
private final String urlCharset;
private final boolean followRedirect;
+
private HeadMethod method;
protected HttpFileObject(final AbstractFileName name, final FS fileSystem)
@@ -76,39 +100,6 @@ public class HttpFileObject<FS extends H
}
/**
- * Determines the type of this file. Must not return null. The return
- * value of this method is cached, so the implementation can be expensive.
- */
- @Override
- protected FileType doGetType() throws Exception
- {
- // Use the HEAD method to probe the file.
- final int status = this.getHeadMethod().getStatusCode();
- if (status == HttpURLConnection.HTTP_OK)
- {
- return FileType.FILE;
- }
- else if (status == HttpURLConnection.HTTP_NOT_FOUND
- || status == HttpURLConnection.HTTP_GONE)
- {
- return FileType.IMAGINARY;
- }
- else
- {
- throw new FileSystemException("vfs.provider.http/head.error", getName(), Integer.valueOf(status));
- }
- }
-
- /**
- * Lists the children of this file.
- */
- @Override
- protected String[] doListChildren() throws Exception
- {
- throw new Exception("Not implemented.");
- }
-
- /**
* Returns the size of the file content (in bytes).
*/
@Override
@@ -124,22 +115,6 @@ public class HttpFileObject<FS extends H
}
/**
- * Returns the last modified time of this file.
- * <p/>
- * This implementation throws an exception.
- */
- @Override
- protected long doGetLastModifiedTime() throws Exception
- {
- final Header header = method.getResponseHeader("last-modified");
- if (header == null)
- {
- throw new FileSystemException("vfs.provider.http/last-modified.error", getName());
- }
- return DateUtil.parseDate(header.getValue()).getTime();
- }
-
- /**
* Creates an input stream to read the file content from. Is only called
* if {@link #doGetType} returns {@link FileType#FILE}.
* <p/>
@@ -166,54 +141,65 @@ public class HttpFileObject<FS extends H
return new HttpInputStream(getMethod);
}
- @Override
- protected RandomAccessContent doGetRandomAccessContent(final RandomAccessMode mode) throws Exception
- {
- return new HttpRandomAccessContent(this, mode);
- }
-
/**
- * Prepares a HttpMethod object.
- *
- * @since 2.0 (was package)
+ * Returns the last modified time of this file.
+ * <p/>
+ * This implementation throws an exception.
*/
- protected void setupMethod(final HttpMethod method) throws FileSystemException, URIException
+ @Override
+ protected long doGetLastModifiedTime() throws Exception
{
- final String pathEncoded = ((URLFileName) getName()).getPathQueryEncoded(this.getUrlCharset());
- method.setPath(pathEncoded);
- method.setFollowRedirects(this.getFollowRedirect());
- method.setRequestHeader("User-Agent", "Jakarta-Commons-VFS");
+ final Header header = method.getResponseHeader("last-modified");
+ if (header == null)
+ {
+ throw new FileSystemException("vfs.provider.http/last-modified.error", getName());
+ }
+ return DateUtil.parseDate(header.getValue()).getTime();
}
- protected String encodePath(final String decodedPath) throws URIException
+ @Override
+ protected RandomAccessContent doGetRandomAccessContent(final RandomAccessMode mode) throws Exception
{
- return URIUtil.encodePath(decodedPath);
+ return new HttpRandomAccessContent(this, mode);
}
/**
- * An InputStream that cleans up the HTTP connection on close.
+ * Determines the type of this file. Must not return null. The return
+ * value of this method is cached, so the implementation can be expensive.
*/
- static class HttpInputStream extends MonitorInputStream
+ @Override
+ protected FileType doGetType() throws Exception
{
- private final GetMethod method;
-
- public HttpInputStream(final GetMethod method)
- throws IOException
+ // Use the HEAD method to probe the file.
+ final int status = this.getHeadMethod().getStatusCode();
+ if (status == HttpURLConnection.HTTP_OK)
{
- super(method.getResponseBodyAsStream());
- this.method = method;
+ return FileType.FILE;
}
-
- /**
- * Called after the stream has been closed.
- */
- @Override
- protected void onClose() throws IOException
+ else if (status == HttpURLConnection.HTTP_NOT_FOUND
+ || status == HttpURLConnection.HTTP_GONE)
{
- method.releaseConnection();
+ return FileType.IMAGINARY;
+ }
+ else
+ {
+ throw new FileSystemException("vfs.provider.http/head.error", getName(), Integer.valueOf(status));
}
}
+ /**
+ * Lists the children of this file.
+ */
+ @Override
+ protected String[] doListChildren() throws Exception
+ {
+ throw new Exception("Not implemented.");
+ }
+
+ protected String encodePath(final String decodedPath) throws URIException
+ {
+ return URIUtil.encodePath(decodedPath);
+ }
@Override
protected FileContentInfoFactory getFileContentInfoFactory()
@@ -221,16 +207,12 @@ public class HttpFileObject<FS extends H
return new HttpFileContentInfoFactory();
}
+
protected boolean getFollowRedirect()
{
return followRedirect;
}
- protected String getUrlCharset()
- {
- return urlCharset;
- }
-
HeadMethod getHeadMethod() throws IOException
{
if (method != null)
@@ -245,6 +227,24 @@ public class HttpFileObject<FS extends H
return method;
}
+ protected String getUrlCharset()
+ {
+ return urlCharset;
+ }
+
+ /**
+ * Prepares a HttpMethod object.
+ *
+ * @since 2.0 (was package)
+ */
+ protected void setupMethod(final HttpMethod method) throws FileSystemException, URIException
+ {
+ final String pathEncoded = ((URLFileName) getName()).getPathQueryEncoded(this.getUrlCharset());
+ method.setPath(pathEncoded);
+ method.setFollowRedirects(this.getFollowRedirect());
+ method.setRequestHeader("User-Agent", "Jakarta-Commons-VFS");
+ }
+
/*
protected Map doGetAttributes() throws Exception
{