View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *      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.local;
18  
19  import org.apache.commons.vfs.FileName;
20  import org.apache.commons.vfs.FileSystemException;
21  import org.apache.commons.vfs.FileType;
22  
23  /***
24   * A general-purpose file name parser.
25   *
26   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
27   * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Mi, 29 Nov 2006) $
28   */
29  public class GenericFileNameParser
30      extends LocalFileNameParser
31  {
32      private static final GenericFileNameParser INSTANCE = new GenericFileNameParser();
33  
34      /***
35       * retrieve a instance to this parser
36       *
37       * @return the parser
38       */
39      public static GenericFileNameParser getInstance()
40      {
41          return INSTANCE;
42      }
43  
44      /***
45       * Pops the root prefix off a URI, which has had the scheme removed.
46       */
47      protected String extractRootPrefix(final String uri,
48                                         final StringBuffer name)
49          throws FileSystemException
50      {
51          // TODO - this class isn't generic at all.  Need to fix this
52  
53          // Looking for <sep>
54          if (name.length() == 0 || name.charAt(0) != '/')
55          {
56              throw new FileSystemException("vfs.provider.local/not-absolute-file-name.error", uri);
57          }
58  
59          // do not strip the separator, BUT also return it ...
60          return "/";
61      }
62  
63      /*
64       * ... this is why whe need this:
65       * here the rootFilename can only be "/" (see above) put this "/" is also in the pathname
66       * so its of no value for the LocalFileName instance
67       */
68      protected FileName createFileName(String scheme, final String rootFile, final String path, final FileType type)
69      {
70          return new LocalFileName(scheme, "", path, type);
71      }
72  }