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.configuration2.builder;
18  
19  import java.io.File;
20  import java.net.URL;
21  
22  import org.apache.commons.configuration2.io.FileLocationStrategy;
23  import org.apache.commons.configuration2.io.FileSystem;
24  import org.apache.commons.configuration2.io.URLConnectionOptions;
25  
26  /**
27   * <p>
28   * Definition of a properties interface for parameters of file-based configurations.
29   * </p>
30   * <p>
31   * This interface defines a set of properties which can be used to specify the location of a configuration source.
32   * </p>
33   *
34   * @param <T> the type of the result of all set methods for method chaining
35   */
36  public interface FileBasedBuilderProperties<T> {
37      /**
38       * Sets the base path of the associated {@code FileHandler}.
39       *
40       * @param path the base path
41       * @return a reference to this object for method chaining
42       */
43      T setBasePath(String path);
44  
45      /**
46       * Sets the encoding of the associated {@code FileHandler}.
47       *
48       * @param enc the encoding
49       * @return a reference to this object for method chaining
50       */
51      T setEncoding(String enc);
52  
53      /**
54       * Sets the location of the associated {@code FileHandler} as a {@code File} object.
55       *
56       * @param file the {@code File} location
57       * @return a reference to this object for method chaining
58       */
59      T setFile(File file);
60  
61      /**
62       * Sets the file name of the associated {@code FileHandler}.
63       *
64       * @param name the file name
65       * @return a reference to this object for method chaining
66       */
67      T setFileName(String name);
68  
69      /**
70       * Sets the {@code FileSystem} of the associated {@code FileHandler}.
71       *
72       * @param fs the {@code FileSystem}
73       * @return a reference to this object for method chaining
74       */
75      T setFileSystem(FileSystem fs);
76  
77      /**
78       * Sets the {@code FileLocationStrategy} for resolving the referenced file.
79       *
80       * @param strategy the {@code FileLocationStrategy}
81       * @return a reference to this object for method chaining
82       */
83      T setLocationStrategy(FileLocationStrategy strategy);
84  
85      /**
86       * Sets the location of the associated {@code FileHandler} as an absolute file path.
87       *
88       * @param path the path location
89       * @return a reference to this object for method chaining
90       */
91      T setPath(String path);
92  
93      /**
94       * Sets the factory for creating {@code ReloadingDetector} objects. With this method a custom factory for reloading
95       * detectors can be installed. Per default, a factory creating {@code FileHandlerReloadingDetector} objects is used.
96       *
97       * @param factory the {@code ReloadingDetectorFactory}
98       * @return a reference to this object for method chaining
99       */
100     T setReloadingDetectorFactory(ReloadingDetectorFactory factory);
101 
102     /**
103      * Sets the refresh delay for reloading support
104      *
105      * @param reloadingRefreshDelay the refresh delay (in milliseconds)
106      * @return a reference to this object for method chaining
107      */
108     T setReloadingRefreshDelay(Long reloadingRefreshDelay);
109 
110     /**
111      * Sets the location of the associated {@code FileHandler} as a {@code URL} object.
112      *
113      * @param url the {@code URL} location
114      * @return a reference to this object for method chaining
115      */
116     T setURL(URL url);
117 
118     /**
119      * Sets the location of the associated {@code FileHandler} as a {@code URL} object.
120      *
121      * @param url the {@code URL} location
122      * @param urlConnectionOptions options
123      * @return a reference to this object for method chaining
124      * @since 2.8.0
125      */
126     default T setURL(final URL url, final URLConnectionOptions urlConnectionOptions) {
127         return setURL(url);
128     }
129 }