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.vfs2;
18  
19  import java.net.InetAddress;
20  import java.net.UnknownHostException;
21  
22  import org.apache.commons.vfs2.cache.SoftRefFilesCache;
23  import org.apache.commons.vfs2.impl.DefaultFileSystemManager;
24  
25  /**
26   * A partial {@link org.apache.commons.vfs2.ProviderTestConfig} implementation.
27   */
28  public abstract class AbstractProviderTestConfig extends AbstractProviderTestCase implements ProviderTestConfig {
29  
30      public static final String MIME_TYPE_APPLICATION_OCTET_STREAM = "application/octet-stream";
31  
32      public static final String MIME_TYPE_APPLICATION_X_TAR = "application/x-tar";
33  
34      public static final String MIME_TYPE_APPLICATION_ZIP = "application/zip";
35  
36      public static String getLocalCanonicalHostName() throws UnknownHostException {
37          return InetAddress.getLocalHost().getCanonicalHostName();
38      }
39  
40      public static String getLocalHostUriString(final String scheme, final int socketPort) throws UnknownHostException {
41          return scheme + "://" + getLocalCanonicalHostName() + ":" + socketPort;
42      }
43  
44      private FilesCache filesCache;
45  
46      /**
47       * Subclasses can override.
48       *
49       * @return A new cache.
50       */
51      protected FilesCache createFilesCache() {
52          return new SoftRefFilesCache();
53      }
54  
55      /**
56       * Returns a DefaultFileSystemManager instance (or subclass instance).
57       */
58      @Override
59      public DefaultFileSystemManager getDefaultFileSystemManager() {
60          return new DefaultFileSystemManager();
61      }
62  
63      @Override
64      public final FilesCache getFilesCache() {
65          if (filesCache == null) {
66              filesCache = createFilesCache();
67          }
68          return filesCache;
69      }
70  
71      @Override
72      public boolean isFileSystemRootAccessible() {
73          return true;
74      }
75  
76      /**
77       * Prepares the file system manager. This implementation does nothing.
78       */
79      @Override
80      public void prepare(final DefaultFileSystemManager manager) throws Exception {
81          // default is do nothing.
82      }
83  
84      @Override
85      public void tearDown() throws Exception {
86          if (filesCache != null) {
87              filesCache.close();
88              // Give a chance for any threads to end.
89              Thread.sleep(20);
90          }
91      }
92  
93  }