All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.glassfish.jersey.server.ServerProperties Maven / Gradle / Ivy

Go to download

A bundle project producing JAX-RS RI bundles. The primary artifact is an "all-in-one" OSGi-fied JAX-RS RI bundle (jaxrs-ri.jar). Attached to that are two compressed JAX-RS RI archives. The first archive (jaxrs-ri.zip) consists of binary RI bits and contains the API jar (under "api" directory), RI libraries (under "lib" directory) as well as all external RI dependencies (under "ext" directory). The secondary archive (jaxrs-ri-src.zip) contains buildable JAX-RS RI source bundle and contains the API jar (under "api" directory), RI sources (under "src" directory) as well as all external RI dependencies (under "ext" directory). The second archive also contains "build.xml" ANT script that builds the RI sources. To build the JAX-RS RI simply unzip the archive, cd to the created jaxrs-ri directory and invoke "ant" from the command line.

There is a newer version: 3.1.6
Show newest version
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 2012-2015 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * http://glassfish.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 */
package org.glassfish.jersey.server;

import java.util.Map;

import javax.ws.rs.RuntimeType;

import org.glassfish.jersey.CommonProperties;
import org.glassfish.jersey.internal.util.PropertiesClass;
import org.glassfish.jersey.internal.util.PropertiesHelper;
import org.glassfish.jersey.internal.util.PropertyAlias;


/**
 * Jersey server-side configuration properties.
 *
 * @author Marek Potociar (marek.potociar at oracle.com)
 * @author Libor Kramolis (libor.kramolis at oracle.com)
 * @author Michal Gajdos (michal.gajdos at oracle.com)
 * @author Martin Matula
 */
@PropertiesClass
public final class ServerProperties {

    /**
     * Defines one or more packages that contain application-specific resources and
     * providers.
     *
     * If the property is set, the specified packages will be scanned for
     * JAX-RS root resources (annotated with {@link javax.ws.rs.Path @Path}) and
     * providers (annotated with {@link javax.ws.rs.ext.Provider @Provider}).
     * 

* The property value MUST be an instance of {@link String} or {@code String[]} * array. Each {@code String} instance represents one or more package names * that MUST be separated only by characters declared in common delimiters: * {@code " ,;\n"}. *

*

* A default value is not set. *

*

* The name of the configuration property is {@value}. *

*/ // TODO add support for ':' and any (number of consecutive) whitespace(s). // TODO implement generic support public static final String PROVIDER_PACKAGES = "jersey.config.server.provider.packages"; /** * Sets the recursion strategy for package scanning. * * The value of {@code true} indicates * that the {@link #PROVIDER_PACKAGES list of provided package names} should be scanned * recursively including any nested packages. Value of {@code false} indicates that only * packages in the list should be scanned. In such case any nested packages will be ignored. *

* The property value MUST be an instance of {@code Boolean} type or a {@code String} convertible * to {@code Boolean} type. *

*

* A default value is {@code true}. *

*

* The name of the configuration property is {@value}. *

* * @see #PROVIDER_PACKAGES */ public static final String PROVIDER_SCANNING_RECURSIVE = "jersey.config.server.provider.scanning.recursive"; /** * Defines class-path that contains application-specific resources and * providers. * * If the property is set, the specified class-path will be scanned * for JAX-RS root resources (annotated with {@link javax.ws.rs.Path @Path}) * and providers (annotated with {@link javax.ws.rs.ext.Provider @Provider}). * Each path element MUST be an absolute or relative directory, or a Jar file. * The contents of a directory, including Java class files, jars files * and sub-directories are scanned (recursively). *

* The property value MUST be an instance of {@link String} or {@code String[]} * array. Each {@code String} instance represents one or more paths * that MUST be separated only by characters declared in common delimiters: * {@code " ,;\n"}. *

*

* A default value is not set. *

*

* The name of the configuration property is {@value}. *

*/ // TODO add support for ':' and any (number of consecutive) whitespace(s). // TODO implement generic support public static final String PROVIDER_CLASSPATH = "jersey.config.server.provider.classpath"; /** * Defines one or more class names that implement application-specific resources * and providers. * * If the property is set, the specified classes will be instantiated * and registered as either application JAX-RS root resources (annotated with * {@link javax.ws.rs.Path @Path}) or providers (annotated with * {@link javax.ws.rs.ext.Provider @Provider}). *

* The property value MUST be an instance of {@link String} or {@code String[]} * array. Each {@code String} instance represents one or more class names * that MUST be separated only by characters declared in common delimiters: * {@code " ,;\n"}. *

*

* A default value is not set. *

*

* The name of the configuration property is {@value}. *

*/ // TODO implement generic support public static final String PROVIDER_CLASSNAMES = "jersey.config.server.provider.classnames"; /** * Defines mapping of URI extensions to media types. * * The property is used by {@link org.glassfish.jersey.server.filter.UriConnegFilter}. See it's javadoc for more * information on media type mappings. *

* The property value MUST be an instance of {@link String}, {@code String[]} or {@code Map<String, MediaType>}. * Each {@code String} instance represents one or more uri-extension-to-media-type map entries separated by * a comma (","). Each map entry is a key-value pair separated by a colon (":"). * Here is an example of an acceptable String value mapping txt extension to text/plain and xml extension to application/xml: *

txt : text/plain, xml : application/xml
*

*

* A default value is not set. *

*

* The name of the configuration property is {@value}. *

*/ public static final String MEDIA_TYPE_MAPPINGS = "jersey.config.server.mediaTypeMappings"; /** * Defines mapping of URI extensions to languages. * * The property is used by {@link org.glassfish.jersey.server.filter.UriConnegFilter}. See it's javadoc for more * information on language mappings. *

* The property value MUST be an instance of {@link String}, {@code String[]} or {@code Map<String, String>}. * Each {@code String} instance represents one or more uri-extension-to-language map entries separated by * a comma (","). Each map entry is a key-value pair separated by a colon (":"). * Here is an example of an acceptable String value mapping english extension to "en" value of Content-Language header * and french extension to "fr" Content-Language header value: *

english : en, french : fr
*

*

* A default value is not set. *

*

* The name of the configuration property is {@value}. *

*/ public static final String LANGUAGE_MAPPINGS = "jersey.config.server.languageMappings"; /** * Defines configuration of HTTP method overriding. * * This property is used by {@link org.glassfish.jersey.server.filter.HttpMethodOverrideFilter} to determine * where it should look for method override information (e.g. request header or query parameters). * {@link org.glassfish.jersey.server.filter.HttpMethodOverrideFilter.Source} enum lists the allowed property * values. *

*

* The property value must be an instance of {@link String}, {@code String[]}, * {@link org.glassfish.jersey.server.filter.HttpMethodOverrideFilter.Source Source} or * {@code Source[]}. * Each {@code String} instance represents one or more class names separated by characters declared in * common delimiters: {@code " ,;\n"}. *

*

* The default value is {@code "HEADER, QUERY"}. *

*

* The name of the configuration property is {@value}. *

*/ public static final String HTTP_METHOD_OVERRIDE = "jersey.config.server.httpMethodOverride"; /** * If set the wadl generator configuration that provides a {@link org.glassfish.jersey.server.wadl.WadlGenerator}. * * If this property is not set the default wadl generator will be used for generating wadl. *

* The type of this property must be a subclass or an instance of a subclass of * {@link org.glassfish.jersey.server.wadl.config.WadlGeneratorConfig}. *

*

* The name of the configuration property is {@value}. *

*/ public static final String WADL_GENERATOR_CONFIG = "jersey.config.server.wadl.generatorConfig"; /** * If {@code true} then disable WADL generation. * * By default WADL generation is automatically enabled, if JAXB is present in the classpath. *

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

*/ public static final String WADL_FEATURE_DISABLE = "jersey.config.server.wadl.disableWadl"; /** * If {@code true} then disable Bean Validation support. * * By default Bean Validation (JSR-349) is automatically enabled, if {@code org.glassfish.jersey.ext::jersey-bean-validation} * Jersey module is present in the classpath. *

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

*/ public static final String BV_FEATURE_DISABLE = "jersey.config.beanValidation.disable.server"; /** * A Bean Validation (JSR-349) support customization property. * * If {@code true} the check whether the overriding / implementing methods are annotated with * {@link javax.validation.executable.ValidateOnExecution} as well as one of their predecessor (in hierarchy) * is disabled. *

* By default this checks is automatically enabled, unless the Bean Validation support is disabled explicitly (see * {@link #BV_FEATURE_DISABLE}). *

*

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

* * @see javax.validation.executable.ValidateOnExecution */ public static final String BV_DISABLE_VALIDATE_ON_EXECUTABLE_OVERRIDE_CHECK = "jersey.config.beanValidation.disable.validateOnExecutableCheck.server"; /** * A Bean Validation (JSR-349) support customization property. * * If set to {@code true} and Bean Validation support has not been explicitly disabled (see * {@link #BV_FEATURE_DISABLE}), the validation error information will be sent in the entity of the * returned {@link javax.ws.rs.core.Response}. *

* The default value is {@code false}. This means that in case of an error response caused by a Bean Validation * error, only a status code is sent in the server {@code Response} by default. *

*

* The name of the configuration property is {@value}. *

*/ public static final String BV_SEND_ERROR_IN_RESPONSE = "jersey.config.beanValidation.enableOutputValidationErrorEntity.server"; /** * If {@code true} then disable auto discovery on server. * * By default auto discovery is automatically enabled if global property * {@value org.glassfish.jersey.CommonProperties#FEATURE_AUTO_DISCOVERY_DISABLE} is not disabled. If set then the server * property value overrides the global property value. *

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

*

* This constant is an alias for {@link CommonProperties#FEATURE_AUTO_DISCOVERY_DISABLE_SERVER} *

* * @see org.glassfish.jersey.CommonProperties#FEATURE_AUTO_DISCOVERY_DISABLE */ @PropertyAlias public static final String FEATURE_AUTO_DISCOVERY_DISABLE = CommonProperties.FEATURE_AUTO_DISCOVERY_DISABLE_SERVER; /** * An integer value that defines the buffer size used to buffer server-side response entity in order to * determine its size and set the value of HTTP {@value javax.ws.rs.core.HttpHeaders#CONTENT_LENGTH} header. *

* If the entity size exceeds the configured buffer size, the buffering would be cancelled and the entity size * would not be determined. Value less or equal to zero disable the buffering of the entity at all. *

* This property can be used on the server side to override the outbound message buffer size value - default or the global * custom value set using the {@value org.glassfish.jersey.CommonProperties#OUTBOUND_CONTENT_LENGTH_BUFFER} global property. *

* The default value is 8192. *

*

* The name of the configuration property is {@value}. *

*

This constant is an alias for {@link CommonProperties#OUTBOUND_CONTENT_LENGTH_BUFFER_SERVER}

* * @since 2.2 */ @PropertyAlias public static final String OUTBOUND_CONTENT_LENGTH_BUFFER = CommonProperties.OUTBOUND_CONTENT_LENGTH_BUFFER_SERVER; /** * If {@code true} then disable configuration of Json Processing (JSR-353) feature on server. * * By default Json Processing is automatically enabled if global property * {@value org.glassfish.jersey.CommonProperties#JSON_PROCESSING_FEATURE_DISABLE} is not disabled. If set then the server * property value overrides the global property value. *

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

*

This constant is an alias for {@link CommonProperties#JSON_PROCESSING_FEATURE_DISABLE_SERVER}

* * @see org.glassfish.jersey.CommonProperties#JSON_PROCESSING_FEATURE_DISABLE */ @PropertyAlias public static final String JSON_PROCESSING_FEATURE_DISABLE = CommonProperties.JSON_PROCESSING_FEATURE_DISABLE_SERVER; /** * If {@code true} then disable META-INF/services lookup on server. * * By default Jersey looks up SPI implementations described by META-INF/services/* files. * Then you can register appropriate provider classes by {@link javax.ws.rs.core.Application}. *

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

*

This constant is an alias for {@link CommonProperties#METAINF_SERVICES_LOOKUP_DISABLE_SERVER}

* * @see org.glassfish.jersey.CommonProperties#METAINF_SERVICES_LOOKUP_DISABLE * @since 2.1 */ @PropertyAlias public static final String METAINF_SERVICES_LOOKUP_DISABLE = CommonProperties.METAINF_SERVICES_LOOKUP_DISABLE_SERVER; /** * If {@code true} then disable configuration of MOXy Json feature on server. * * By default MOXy Json is automatically enabled if global property * {@value org.glassfish.jersey.CommonProperties#MOXY_JSON_FEATURE_DISABLE} is not disabled. If set then the server * property value overrides the global property value. *

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

*

This constant is an alias for {@link CommonProperties#MOXY_JSON_FEATURE_DISABLE_SERVER}

* * @see org.glassfish.jersey.CommonProperties#MOXY_JSON_FEATURE_DISABLE */ @PropertyAlias public static final String MOXY_JSON_FEATURE_DISABLE = CommonProperties.MOXY_JSON_FEATURE_DISABLE_SERVER; /** * If {@code true} then the extensive validation of application resource model is disabled. * * This impacts both the validation of root resources during deployment as well as validation of any sub resources * returned from sub-resource locators. *

* This option is typically used for performance purpose. Note however that in case the application resource models are * not valid, setting the property to {@code true} can cause invalid behaviour and hard to diagnose issues at runtime. *

*

* By default the resource validation is run on models which are created either from the supplied resource class or instance * as well as on any directly provided {@link org.glassfish.jersey.server.model.Resource resource} models. *

*

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

* * @see #RESOURCE_VALIDATION_IGNORE_ERRORS */ public static final String RESOURCE_VALIDATION_DISABLE = "jersey.config.server.resource.validation.disable"; /** * If {@code true} then validation of application resource models does not fail even in case of a fatal * validation errors. All resource model validation issues are still output to the log, unless the resource * model validation is completely disabled (see {@link #RESOURCE_VALIDATION_DISABLE}). * * This impacts both the validation of root resources during deployment as well as validation of any sub resources * returned from sub-resource locators. The option is typically used during development and testing. *

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

* * @see #RESOURCE_VALIDATION_DISABLE */ public static final String RESOURCE_VALIDATION_IGNORE_ERRORS = "jersey.config.server.resource.validation.ignoreErrors"; /** * If {@code true} then application monitoring will be enabled. * * This will enable the possibility * of injecting {@link org.glassfish.jersey.server.monitoring.ApplicationInfo} into resource and providers. *

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

* * @since 2.12 */ public static final String MONITORING_ENABLED = "jersey.config.server.monitoring.enabled"; /** * If {@code true} then calculation of monitoring statistics will be enabled. * * This will enable the possibility * of injecting {@link org.glassfish.jersey.server.monitoring.MonitoringStatistics} into resource and providers * and also the registered listeners * implementing {@link org.glassfish.jersey.server.monitoring.MonitoringStatisticsListener} will be called * when statistics are available. * Monitoring statistics extends basic monitoring feature. Therefore when enabled, * the monitoring gets automatically enabled too (the same result as setting the property * {@link #MONITORING_ENABLED} {@code true}). * Enabling statistics has negative performance impact and therefore should * be enabled only when needed. *

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

* * @see org.glassfish.jersey.server.monitoring.MonitoringStatistics * @see org.glassfish.jersey.server.monitoring.MonitoringStatisticsListener * @see #MONITORING_ENABLED */ public static final String MONITORING_STATISTICS_ENABLED = "jersey.config.server.monitoring.statistics.enabled"; /** * If {@code true} then Jersey will expose MBeans with monitoring statistics. * * Exposed JMX MBeans are based * on {@link org.glassfish.jersey.server.monitoring.MonitoringStatistics} and therefore when they are enabled, * also the calculation of monitoring statistics needs to be enabled. Therefore if this property is {@code true} * the calculation of monitoring statistics is automatically enabled (the same result as setting the property * {@link #MONITORING_STATISTICS_ENABLED} to {@code true}). *

* Enabling statistics MBeans has negative * performance impact and therefore should be enabled only when needed. *

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

* * @see #MONITORING_STATISTICS_ENABLED */ public static final String MONITORING_STATISTICS_MBEANS_ENABLED = "jersey.config.server.monitoring.statistics.mbeans.enabled"; /** * Interval (in {@code ms}) indicating how often will be monitoring statistics refreshed and * {@link org.glassfish.jersey.server.monitoring.MonitoringStatisticsListener#onStatistics(org.glassfish.jersey.server.monitoring.MonitoringStatistics) onStatistics} * method called. *

* The default value is {@code 500}. *

* The name of the configuration property is {@value}. *

* * @since 2.10 */ public static final String MONITORING_STATISTICS_REFRESH_INTERVAL = "jersey.config.server.monitoring.statistics.refresh.interval"; /** * {@link String} property that defines the application name. * * The name is an arbitrary user defined name * which is used to distinguish between Jersey applications in the case that more applications * are deployed on the same runtime (container). The name can be used for example for purposes * of monitoring by JMX when name identifies to which application deployed MBeans belong to. * The name should be unique in the runtime. *

* The property is ignored * if the application name is set programmatically by * {@link org.glassfish.jersey.server.ResourceConfig#getApplicationName()}. *

*

* There is no default value. *

*

* The name of the configuration property is {@value}. *

*/ public static final String APPLICATION_NAME = "jersey.config.server.application.name"; /** * Enable tracing support. * * It allows service developer to get diagnostic information about request processing by Jersey. * Those diagnostic/tracing information are returned in response headers ({@code X-Jersey-Tracing-nnn}). * The feature should not be switched on on production environment. * *

* Allowed values: *

    *
  • {@code OFF} - tracing support is disabled.
  • *
  • {@code ON_DEMAND} - tracing support is in 'stand by' mode, it is enabled on demand by existence of request HTTP header
  • *
  • {@code ALL} - tracing support is enabled for every request.
  • *
* Type of the property value is {@code String}. The default value is {@code "OFF"}. *

*

* The name of the configuration property is {@value}. *

* * @since 2.3 */ public static final String TRACING = "jersey.config.server.tracing.type"; /** * Set level o tracing information. * * The property allows to set application default level o diagnostic information. * Tracing level can be changed for each request by specifying request HTTP header {@code X-Jersey-Tracing-Threshold}. * *

* Allowed values: *

    *
  • {@code SUMMARY}
  • *
  • {@code TRACE}
  • *
  • {@code VERBOSE}
  • *
* Type of the property value is {@code String}. The default value is {@code "TRACE"}. *

*

* The name of the configuration property is {@value}. *

* * @see #TRACING * @since 2.3 */ public static final String TRACING_THRESHOLD = "jersey.config.server.tracing.threshold"; /** * Whenever response status is {@code 4xx} or {@code 5xx} it is possible to choose between {@code sendError} or * {@code setStatus} on container specific {@code Response} implementation. E.g. on servlet container Jersey * can call {@code HttpServletResponse.setStatus(...)} or {@code HttpServletResponse.sendError(...)}. *

* Calling {@code sendError(...)} method usually resets entity, response headers and provide error page for * specified status code (e.g. servlet {@code error-page} configuration). * However if you want to post-process response (e.g. by servlet filter) the only * way to do it is calling {@code setStatus(...)} on container Response object. *

*

* If property value is {@code true} the method {@code Response.setStatus(...)} is used over default * {@code Response.sendError(...)}. *

*

* Type of the property value is {@code boolean}. The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

* * @since 2.5 */ public static final String RESPONSE_SET_STATUS_OVER_SEND_ERROR = "jersey.config.server.response.setStatusOverSendError"; /** * If property value is {@code true} then the errors raised during response processing are tried to handled using available * {@link org.glassfish.jersey.server.spi.ResponseErrorMapper response error mappers}. *

* Type of the property value is {@code boolean}. The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

* * @since 2.8 */ public static final String PROCESSING_RESPONSE_ERRORS_ENABLED = "jersey.config.server.exception.processResponseErrors"; /** * An integer value that defines the size of cache for sub-resource locator models. The cache is used to provide better * performance for application that uses JAX-RS sub-resource locators. *

* The default value is {@value #SUBRESOURCE_LOCATOR_DEFAULT_CACHE_SIZE}. *

*

* The name of the configuration property is {@value}. *

* * @see #SUBRESOURCE_LOCATOR_DEFAULT_CACHE_SIZE * @see #SUBRESOURCE_LOCATOR_CACHE_AGE * @since 2.16 */ public static final String SUBRESOURCE_LOCATOR_CACHE_SIZE = "jersey.config.server.subresource.cache.size"; /** * The default sub-resource locator cache size ({@value}). * * @see #SUBRESOURCE_LOCATOR_CACHE_SIZE * @since 2.16 */ public static final int SUBRESOURCE_LOCATOR_DEFAULT_CACHE_SIZE = 64; /** * An integer value that defines the maximum age (in seconds) for cached for sub-resource locator models. The age of an cache * entry is defined as the time since the last access (read) to the entry in the cache. *

* Entry aging is not enabled by default. *

*

* The name of the configuration property is {@value}. *

* * @see #SUBRESOURCE_LOCATOR_CACHE_SIZE * @since 2.16 */ public static final String SUBRESOURCE_LOCATOR_CACHE_AGE = "jersey.config.server.subresource.cache.age"; /** * If {@code true} then Jersey will cache {@link org.glassfish.jersey.server.model.Resource Jersey resources} in addition to * caching sub-resource locator classes and instances (which are cached by default). *

* To make sure the caching is effective in this case you need to return same Jersey Resource instances for same input * parameters from resource method. This means that generating new Jersey Resource instances for same input parameters would * not have any performance effect and it would only fill-up the cache. *

* The default value is {@code false}. *

*

* The name of the configuration property is {@value}. *

*/ public static final String SUBRESOURCE_LOCATOR_CACHE_JERSEY_RESOURCE_ENABLED = "jersey.config.server.subresource.cache.jersey.resource.enabled"; private ServerProperties() { // prevents instantiation } /** * Get the value of the specified property. * * If the property is not set or the real value type is not compatible with the specified value type, * returns {@code null}. * * @param properties Map of properties to get the property value from. * @param key Name of the property. * @param type Type to retrieve the value as. * @param Type of the property value. * @return Value of the property or {@code null}. * * @since 2.8 */ public static T getValue(final Map properties, final String key, final Class type) { return PropertiesHelper.getValue(properties, key, type, null); } /** * Get the value of the specified property. * * If the property is not set or the real value type is not compatible with {@code defaultValue} type, * the specified {@code defaultValue} is returned. Calling this method is equivalent to calling * {@code ServerProperties.getValue(properties, key, defaultValue, (Class<T>) defaultValue.getClass())}. * * @param properties Map of properties to get the property value from. * @param key Name of the property. * @param defaultValue Default value if property is not registered * @param Type of the property value. * @return Value of the property or {@code null}. * * @since 2.8 */ public static T getValue(final Map properties, final String key, final T defaultValue) { return PropertiesHelper.getValue(properties, key, defaultValue, null); } /** * Get the value of the specified property. * * If the property is not set or the real value type is not compatible with the specified value type, * returns {@code defaultValue}. * * @param properties Map of properties to get the property value from. * @param key Name of the property. * @param defaultValue Default value if property is not registered * @param type Type to retrieve the value as. * @param Type of the property value. * @return Value of the property or {@code null}. * * @since 2.8 */ public static T getValue(final Map properties, final String key, final T defaultValue, final Class type) { return PropertiesHelper.getValue(properties, key, defaultValue, type, null); } /** * Get the value of the specified property. * * If the property is not set or the real value type is not compatible with the specified value type, * returns {@code defaultValue}. * * @param properties Map of properties to get the property value from. * @param runtimeType Runtime type which is used to check whether there is a property with the same * {@code key} but post-fixed by runtime type (.server * or {@code .client}) which would override the {@code key} property. * @param key Name of the property. * @param defaultValue Default value if property is not registered * @param type Type to retrieve the value as. * @param Type of the property value. * @return Value of the property or {@code null}. * * @since 2.8 */ public static T getValue(final Map properties, final RuntimeType runtimeType, final String key, final T defaultValue, final Class type) { return PropertiesHelper.getValue(properties, runtimeType, key, defaultValue, type, null); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy