View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.eclipse.aether.spi.connector.transport.http;
20  
21  import java.util.Collections;
22  import java.util.HashMap;
23  import java.util.Map;
24  
25  import org.eclipse.aether.spi.connector.transport.TransportListener;
26  import org.eclipse.aether.transfer.HttpTransportProperty.HttpVersion;
27  import org.eclipse.aether.transfer.HttpTransportProperty.Key;
28  import org.eclipse.aether.transfer.HttpTransportProperty.SslProtocol;
29  import org.eclipse.aether.transfer.TransferEvent;
30  
31  /**
32   * Builder for HTTP transport properties used in {@link TransportListener#transportPropertiesAvailable(Map)}.
33   * @since 2.0.21
34   */
35  public final class HttpTransportPropertiesBuilder {
36      private final Map<TransferEvent.TransportPropertyKey, Object> properties = new HashMap<>();
37  
38      public HttpTransportPropertiesBuilder(HttpVersion version) {
39          this.properties.put(Key.HTTP_VERSION, version);
40      }
41  
42      public HttpTransportPropertiesBuilder withSslProtocol(String name) {
43          return withSslProtocol(SslProtocol.fromStandardName(name));
44      }
45  
46      public HttpTransportPropertiesBuilder withSslProtocol(SslProtocol sslProtocol) {
47          this.properties.put(Key.SSL_PROTOCOL, sslProtocol);
48          return this;
49      }
50  
51      public HttpTransportPropertiesBuilder withSslCipherSuite(String cipherSuite) {
52          this.properties.put(Key.SSL_CIPHER_SUITE, cipherSuite);
53          return this;
54      }
55  
56      public HttpTransportPropertiesBuilder withContentCoding(String contentCoding) {
57          this.properties.put(Key.CONTENT_CODING, contentCoding);
58          return this;
59      }
60  
61      public Map<TransferEvent.TransportPropertyKey, Object> build() {
62          return Collections.unmodifiableMap(new HashMap<>(properties));
63      }
64  }