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

org.glassfish.jersey.internal.PropertiesResolver 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.9
Show newest version
/*
 * Copyright (c) 2020, 2023 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.internal;

import org.glassfish.jersey.internal.util.PropertiesHelper;

import jakarta.ws.rs.core.Configuration;

/**
 *  Resolver of a property value for the specified property {@code name} from the
 *  request-specific property bag, or the {@link Configuration global runtime configuration}.
 */
public interface PropertiesResolver {
    /**
     * Resolve a property value for the specified property {@code name}.
     *
     * 

* The method returns the value of the property registered in the request-specific * property bag, if available. If no property for the given property name is found * in the request-specific property bag, the method looks at the properties stored * in the {@link Configuration global runtime configuration} this request * belongs to. If there is a value defined in the runtime configuration, * it is returned, otherwise the method returns {@code null} if no such property is * registered neither in the runtime nor in the request-specific property bag. *

* * @param name property name. * @param type expected property class type. * @param property Java type. * @return resolved property value or {@code null} if no such property is registered. */ public T resolveProperty(final String name, final Class type); /** * Resolve a property value for the specified property {@code name}. * *

* The method returns the value of the property registered in the request-specific * property bag, if available. If no property for the given property name is found * in the request-specific property bag, the method looks at the properties stored * in the {@link Configuration global runtime configuration} this request * belongs to. If there is a value defined in the runtime configuration, * it is returned, otherwise the method returns {@code defaultValue} if no such property is * registered neither in the runtime nor in the request-specific property bag. *

* * @param name property name. * @param defaultValue default value to return if the property is not registered. * @param property Java type. * @return resolved property value or {@code defaultValue} if no such property is registered. */ public T resolveProperty(final String name, final T defaultValue); /** * Return new instance of {@link PropertiesResolver}. * @param configuration Runtime {@link Configuration}. * @param delegate Request scoped {@link PropertiesDelegate properties delegate}. * @return A new instance of {@link PropertiesResolver}. */ public static PropertiesResolver create(Configuration configuration, PropertiesDelegate delegate) { return new PropertiesResolver() { @Override public T resolveProperty(String name, Class type) { return resolveProperty(name, null, type); } @Override @SuppressWarnings("unchecked") public T resolveProperty(String name, T defaultValue) { return resolveProperty(name, defaultValue, (Class) defaultValue.getClass()); } private T resolveProperty(final String name, Object defaultValue, final Class type) { // Check request properties property Object result = delegate.getProperty(name); if (result == null) { // Check runtime configuration next result = configuration.getProperty(name); if (result == null) { result = defaultValue; } } return (result == null) ? null : PropertiesHelper.convertValue(result, type); } }; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy