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;
18:
19: /**
20: * An enumerated type for file name scope, used when resolving a name relative
21: * to a file.
22: *
23: * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
24: * @version $Revision: 480428 $ $Date: 2006-11-28 22:15:24 -0800 (Tue, 28 Nov 2006) $
25: */
26: public final class NameScope {
27: /**
28: * Resolve against the children of the base file. The name is resolved
29: * as described by {@link #FILE_SYSTEM}. However, an exception is
30: * thrown if the resolved file is not a direct child of the base file.
31: */
32: public static final NameScope CHILD = new NameScope("child");
33:
34: /**
35: * Resolve against the descendents of the base file. The name is resolved
36: * as described by {@link #FILE_SYSTEM}. However, an exception is thrown
37: * if the resolved file is not a descendent of the base file.
38: */
39: public static final NameScope DESCENDENT = new NameScope(
40: "descendent");
41:
42: /**
43: * Resolve against the descendents of the base file. The name is resolved
44: * as described by {@link #FILE_SYSTEM}. However, an exception is thrown
45: * if the resolved file is not a descendent of the base file, or the base
46: * files itself.
47: */
48: public static final NameScope DESCENDENT_OR_SELF = new NameScope(
49: "descendent_or_self");
50:
51: /**
52: * Resolve against files in the same file system as the base file.
53: * <p/>
54: * <p>If the supplied name is an absolute path, then it is resolved
55: * relative to the root of the file system that the base file belongs to.
56: * If a relative name is supplied, then it is resolved relative to the base
57: * file.
58: * <p/>
59: * <p>The path may use any mix of <code>/</code>, <code>\</code>, or file
60: * system specific separators to separate elements in the path. It may
61: * also contain <code>.</code> and <code>..</code> elements.
62: * <p/>
63: * <p>A path is considered absolute if it starts with a separator character,
64: * and relative if it does not.
65: */
66: public static final NameScope FILE_SYSTEM = new NameScope(
67: "filesystem");
68:
69: private final String name;
70:
71: private NameScope(final String name) {
72: this .name = name;
73: }
74:
75: /**
76: * Returns the name of the scope.
77: */
78: public String toString() {
79: return name;
80: }
81:
82: /**
83: * Returns the name of the scope.
84: */
85: public String getName() {
86: return name;
87: }
88: }
|