1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs2.provider.http;
18
19 import java.util.Collection;
20
21 import org.apache.commons.httpclient.HttpClient;
22 import org.apache.commons.httpclient.HttpConnectionManager;
23 import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
24 import org.apache.commons.vfs2.Capability;
25 import org.apache.commons.vfs2.FileObject;
26 import org.apache.commons.vfs2.FileSystemOptions;
27 import org.apache.commons.vfs2.provider.AbstractFileName;
28 import org.apache.commons.vfs2.provider.AbstractFileSystem;
29 import org.apache.commons.vfs2.provider.GenericFileName;
30
31
32
33
34 public class HttpFileSystem extends AbstractFileSystem {
35
36 private final HttpClient client;
37
38 protected HttpFileSystem(final GenericFileName rootName, final HttpClient client,
39 final FileSystemOptions fileSystemOptions) {
40 super(rootName, null, fileSystemOptions);
41 this.client = client;
42 }
43
44
45
46
47 @Override
48 protected void addCapabilities(final Collection<Capability> caps) {
49 caps.addAll(HttpFileProvider.CAPABILITIES);
50 }
51
52
53 @Override
54 public void closeCommunicationLink() {
55 if (getClient() != null) {
56 final HttpConnectionManager mgr = getClient().getHttpConnectionManager();
57 if (mgr instanceof MultiThreadedHttpConnectionManager) {
58 ((MultiThreadedHttpConnectionManager) mgr).shutdown();
59 }
60 }
61 }
62
63
64
65
66 @Override
67 protected FileObject createFile(final AbstractFileName name) throws Exception {
68 return new HttpFileObject<>(name, this);
69 }
70
71 protected HttpClient getClient() {
72 return client;
73 }
74 }