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.provider.webdav4;
18  
19  import org.apache.commons.vfs2.FileSystem;
20  import org.apache.commons.vfs2.FileSystemOptions;
21  import org.apache.commons.vfs2.provider.http4.Http4FileSystemConfigBuilder;
22  
23  /**
24   * Configuration options for WebDav based on HTTP4.
25   *
26   * @since 2.5.0
27   */
28  public final class Webdav4FileSystemConfigBuilder extends Http4FileSystemConfigBuilder {
29  
30      /**
31       * Defines whether a trailing slash ( / ) should be appended to the path.
32       * <p>
33       * This parameter expects a value of type {@link Boolean}.
34       * </p>
35       *
36       * @since 2.10.0
37       */
38      protected static final String KEY_APPEND_TRAILING_SLASH = "appendTrailingSlash";
39  
40      private static final Webdav4FileSystemConfigBuilder BUILDER = new Webdav4FileSystemConfigBuilder();
41  
42      private static final boolean DEFAULT_APPEND_TRAILING_SLASH = false;
43  
44      private static final boolean DEFAULT_FOLLOW_REDIRECT = false;
45  
46      /**
47       * Gets the singleton builder.
48       *
49       * @return the singleton builder.
50       */
51      public static Webdav4FileSystemConfigBuilder getInstance() {
52          return BUILDER;
53      }
54  
55      private Webdav4FileSystemConfigBuilder() {
56          super("webdav4.");
57      }
58  
59      /**
60       * Gets whether a trailing slash ( / ) should be appended to the path.
61       *
62       * @param opts The FileSystem options.
63       * @return {@code true} to follow redirects, {@code false} not to.
64       * @see #setAppendTrailingSlash
65       * @since 2.10.0
66       */
67      public boolean getAppendTrailingSlash(final FileSystemOptions opts) {
68          return getBoolean(opts, KEY_APPEND_TRAILING_SLASH, DEFAULT_APPEND_TRAILING_SLASH);
69      }
70  
71      /**
72       * @return The Webdav FileSystem Class object.
73       */
74      @Override
75      protected Class<? extends FileSystem> getConfigClass() {
76          return Webdav4FileSystem.class;
77      }
78  
79      /**
80       * Gets the user name to be associated with changes to the file.
81       *
82       * @param opts The FileSystem options
83       * @return The creatorName.
84       */
85      public String getCreatorName(final FileSystemOptions opts) {
86          return getString(opts, "creatorName");
87      }
88  
89      /**
90       * Gets whether to follow redirects for the connection.
91       *
92       * @param opts The FileSystem options.
93       * @return {@code true} to follow redirects, {@code false} not to.
94       * @see #setFollowRedirect
95       */
96      @Override
97      public boolean getFollowRedirect(final FileSystemOptions opts) {
98          return getBoolean(opts, KEY_FOLLOW_REDIRECT, DEFAULT_FOLLOW_REDIRECT);
99      }
100 
101     /**
102      * The cookies to add to the request.
103      *
104      * @param opts The FileSystem options.
105      * @return true if versioning is enabled.
106      */
107     public boolean isVersioning(final FileSystemOptions opts) {
108         return getBoolean(opts, "versioning", false);
109     }
110 
111     /**
112      * Sets whether a trailing slash ( / ) should be appended to the path.
113      *
114      * @param opts The FileSystem options.
115      * @param appendTrailingSlash {@code true} to append slash, {@code false} not to.
116      * @since 2.10.0
117      */
118     public void setAppendTrailingSlash(final FileSystemOptions opts, final boolean appendTrailingSlash) {
119         setParam(opts, KEY_APPEND_TRAILING_SLASH, appendTrailingSlash);
120     }
121 
122     /**
123      * The user name to be associated with changes to the file.
124      *
125      * @param opts The FileSystem options
126      * @param creatorName The creator name to be associated with the file.
127      */
128     public void setCreatorName(final FileSystemOptions opts, final String creatorName) {
129         setParam(opts, "creatorName", creatorName);
130     }
131 
132     /**
133      * Whether to use versioning.
134      *
135      * @param opts The FileSystem options.
136      * @param versioning true if versioning should be enabled.
137      */
138     public void setVersioning(final FileSystemOptions opts, final boolean versioning) {
139         setParam(opts, "versioning", Boolean.valueOf(versioning));
140     }
141 }