01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17: package org.apache.commons.vfs.provider.compressed;
18:
19: import org.apache.commons.vfs.FileName;
20: import org.apache.commons.vfs.FileObject;
21: import org.apache.commons.vfs.FileSystem;
22: import org.apache.commons.vfs.FileSystemException;
23: import org.apache.commons.vfs.FileSystemOptions;
24: import org.apache.commons.vfs.FileType;
25: import org.apache.commons.vfs.provider.AbstractLayeredFileProvider;
26: import org.apache.commons.vfs.provider.FileProvider;
27: import org.apache.commons.vfs.provider.LayeredFileName;
28:
29: import java.util.Collection;
30:
31: /**
32: * A file system provider for compressed files. Provides read-only file
33: * systems.
34: *
35: * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
36: * @version $Revision: 480428 $ $Date: 2006-11-28 22:15:24 -0800 (Tue, 28 Nov 2006) $
37: */
38: public abstract class CompressedFileFileProvider extends
39: AbstractLayeredFileProvider implements FileProvider {
40: public CompressedFileFileProvider() {
41: super ();
42: }
43:
44: /**
45: * Parses an absolute URI.
46: *
47: * @param uri The URI to parse.
48: */
49: /*
50: public FileName parseUri(final String uri)
51: throws FileSystemException
52: {
53: return ZipFileName.parseUri(uri);
54: }
55: */
56:
57: /**
58: * Creates a layered file system. This method is called if the file system
59: * is not cached.
60: *
61: * @param scheme The URI scheme.
62: * @param file The file to create the file system on top of.
63: * @return The file system.
64: */
65: protected FileSystem doCreateFileSystem(final String scheme,
66: final FileObject file,
67: final FileSystemOptions fileSystemOptions)
68: throws FileSystemException {
69: final FileName name = new LayeredFileName(scheme, file
70: .getName(), FileName.ROOT_PATH, FileType.FOLDER);
71: return createFileSystem(name, file, fileSystemOptions);
72: }
73:
74: protected abstract FileSystem createFileSystem(final FileName name,
75: final FileObject file,
76: final FileSystemOptions fileSystemOptions)
77: throws FileSystemException;
78:
79: public abstract Collection getCapabilities();
80: }
|