blob: 190232f94b5aa3eaf27df97613e3daa6a0b42106 [file] [log] [blame]
/*
* Copyright (c) 2017, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package org.glassfish.jersey.jdk.connector;
import java.net.CookiePolicy;
import java.util.Map;
import org.glassfish.jersey.internal.util.PropertiesClass;
import org.glassfish.jersey.internal.util.PropertiesHelper;
/**
* Configuration options specific to {@link org.glassfish.jersey.jdk.connector.internal.JdkConnector}.
*
* @author Adam Lindenthal
*/
@PropertiesClass
public final class JdkConnectorProperties {
/**
* Configuration of the connector thread pool.
* <p/>
* An instance of {@link org.glassfish.jersey.jdk.connector.internal.ThreadPoolConfig} is expected.
*/
public static final String WORKER_THREAD_POOL_CONFIG = "jersey.config.client.JdkConnectorProvider.workerThreadPoolConfig";
/**
* Container idle timeout in milliseconds ({@link Integer} value).
* <p/>
* When the timeout elapses, the shared thread pool will be destroyed.
* <p/>
* The default value is {@value #DEFAULT_CONNECTION_CLOSE_WAIT}
*/
public static final String CONTAINER_IDLE_TIMEOUT = "jersey.config.client.JdkConnectorProvider.containerIdleTimeout";
/**
* A configurable property of HTTP parser. It defines the maximal acceptable size of HTTP response initial line,
* each header and chunk header.
* <p/>
* The default value is {@value #DEFAULT_MAX_HEADER_SIZE}
*/
public static final String MAX_HEADER_SIZE = "jersey.config.client.JdkConnectorProvider.maxHeaderSize";
/**
* The maximal number of redirects during single request.
* <p/>
* Value is expected to be positive {@link Integer}. Default value is {@value #DEFAULT_MAX_REDIRECTS}.
* <p/>
* HTTP redirection must be enabled by property {@link org.glassfish.jersey.client.ClientProperties#FOLLOW_REDIRECTS},
* otherwise {@code MAX_HEADER_SIZE} is not applied.
*
* @see org.glassfish.jersey.client.ClientProperties#FOLLOW_REDIRECTS
* @see org.glassfish.jersey.jdk.connector.internal.RedirectException
*/
public static final String MAX_REDIRECTS = "jersey.config.client.JdkConnectorProvider.maxRedirects";
/**
* To set the cookie policy of this cookie manager.
* <p/>
* The default value is ACCEPT_ORIGINAL_SERVER.
*
* @see java.net.CookieManager
*/
public static final String COOKIE_POLICY = "jersey.config.client.JdkConnectorProvider.cookiePolicy";
/**
* A maximal number of open connection to each destination. A destination is determined by the following triple:
* <ul>
* <li>host</li>
* <li>port</li>
* <li>protocol (HTTP/HTTPS)</li>
* <ul/>
* <p/>
* The default value is {@value #DEFAULT_MAX_CONNECTIONS_PER_DESTINATION}
*/
public static final String MAX_CONNECTIONS_PER_DESTINATION = "jersey.config.client.JdkConnectorProvider"
+ ".maxConnectionsPerDestination";
/**
* An amount of time in milliseconds ({@link Integer} value) during which an idle connection will be kept open.
* <p/>
* The default value is {@value #DEFAULT_CONNECTION_IDLE_TIMEOUT}
*/
public static final String CONNECTION_IDLE_TIMEOUT = "jersey.config.client.JdkConnectorProvider.connectionIdleTimeout";
/**
* Default value for the {@link org.glassfish.jersey.client.ClientProperties#CHUNKED_ENCODING_SIZE} property.
*/
public static final int DEFAULT_HTTP_CHUNK_SIZE = 4096;
/**
* Default value for the {@link #MAX_HEADER_SIZE} property.
*/
public static final int DEFAULT_MAX_HEADER_SIZE = 8192;
/**
* Default value for the {@link #MAX_REDIRECTS} property.
*/
public static final int DEFAULT_MAX_REDIRECTS = 5;
/**
* Default value for the {@link #COOKIE_POLICY} property.
*/
public static final CookiePolicy DEFAULT_COOKIE_POLICY = CookiePolicy.ACCEPT_ORIGINAL_SERVER;
/**
* Default value for the {@link #MAX_CONNECTIONS_PER_DESTINATION} property.
*/
public static final int DEFAULT_MAX_CONNECTIONS_PER_DESTINATION = 20;
/**
* Default value for the {@link #CONNECTION_IDLE_TIMEOUT} property.
*/
public static final int DEFAULT_CONNECTION_IDLE_TIMEOUT = 1000000;
/**
* Default value for the {@link #CONTAINER_IDLE_TIMEOUT} property.
*/
public static final int DEFAULT_CONNECTION_CLOSE_WAIT = 30_000;
public static <T> T getValue(final Map<String, ?> properties, final String key, final Class<T> type) {
return PropertiesHelper.getValue(properties, key, type, null);
}
public static <T> T getValue(final Map<String, ?> properties, final String key, T defaultValue, final Class<T> type) {
return PropertiesHelper.getValue(properties, key, defaultValue, type, null);
}
/**
* Prevents instantiation.
*/
private JdkConnectorProperties() {
throw new AssertionError("No instances allowed.");
}
}