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

org.glassfish.jersey.internal.PropertiesResolver Maven / Gradle / Ivy

There is a newer version: 4.0.0-M1
Show newest version
/*
 * Copyright (c) 2020 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 javax.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 runtime configuration first Object result = configuration.getProperty(name); if (result != null) { defaultValue = result; } // Check request properties next result = delegate.getProperty(name); if (result == null) { result = defaultValue; } return (result == null) ? null : PropertiesHelper.convertValue(result, type); } }; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy