/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.uberfire.preferences.shared; import java.util.Collection; import java.util.List; import java.util.Map; import org.jboss.errai.bus.server.annotations.Remote; import org.uberfire.preferences.shared.impl.PreferenceScopeResolutionStrategyInfo; import org.uberfire.preferences.shared.impl.PreferenceScopedValue; /** * Store API for preferences. All preference management should be made through this service. */ @Remote public interface PreferenceStore { /** * Provides a portable instance that has the scope resolution strategy order and the default scope * for preference persistence. * @return A portable scope information instance. */ PreferenceScopeResolutionStrategyInfo getDefaultScopeResolutionStrategyInfo(); /** * Provides a portable instance that resolves scopes in the default scope resolution strategy order. * @return A portable scope resolver instance. */ PreferenceScopeResolver getDefaultScopeResolver(); /** * Stores a preference inside a specific scope. * @param scope Scope in which the preference will be stored. Must not be null. * @param key The key of the preference, must not be null. * @param value The value of the preference, could be null. * @param <T> Type of the preference value. */ <T> void put(PreferenceScope scope, String key, T value); /** * Stores a preference inside the default scope (see {@link PreferenceScopeResolutionStrategyInfo#defaultScope() defaultScope}. * @param scopeResolutionStrategyInfo Scope resolution strategy that defines the default scope, in which the * preference will be stored. Must not be null. * @param key The key of the preference, must not be null. * @param value The value of the preference, could be null. * @param <T> Type of the preference value. */ <T> void put(PreferenceScopeResolutionStrategyInfo scopeResolutionStrategyInfo, String key, T value); /** * Stores a preference inside the default scope (see {@link PreferenceScopeResolutionStrategyInfo#defaultScope() defaultScope}. * @param key The key of the preference, must not be null. * @param value The value of the preference, could be null. * @param <T> Type of the preference value. */ <T> void put(String key, T value); /** * Stores several preferences inside a specific scope. * @param scope Scope in which the preference will be stored. Must not be null. * @param valueByKey Map that contains a preference value (can be null) for each preference key (must not be null). * @param <T> Type of the preference values. */ <T> void put(PreferenceScope scope, Map<String, T> valueByKey); /** * Stores several preferences inside the default scope (see {@link PreferenceScopeResolutionStrategyInfo#defaultScope() defaultScope}. * @param scopeResolutionStrategyInfo Scope resolution strategy that defines the default scope. Must not be null. * @param valueByKey Map that contains a preference value (can be null) for each preference key (must not be null). * @param <T> Type of the preference values. */ <T> void put(PreferenceScopeResolutionStrategyInfo scopeResolutionStrategyInfo, Map<String, T> valueByKey); /** * Stores several preferences inside the default scope (see {@link PreferenceScopeResolutionStrategyInfo#defaultScope() defaultScope}. * @param valueByKey Map that contains a preference value (can be null) for each preference key (must not be null). * @param <T> Type of the preference values. */ <T> void put(Map<String, T> valueByKey); /** * Stores a preference inside a specific scope, if it is not already defined in that scope. * @param scope Scope in which the preference will be stored. Must not be null. * @param key The key of the preference, must not be null. * @param value The value of the preference, could be null. * @param <T> Type of the preference value. */ <T> void putIfAbsent(PreferenceScope scope, String key, T value); /** * Stores a preference inside the default scope (see {@link PreferenceScopeResolutionStrategyInfo#defaultScope() defaultScope}, * if it is not already defined in that scope. * @param scopeResolutionStrategyInfo Scope resolution strategy that defines the default scope. * in which the preference will be stored. Must not be null. * @param key The key of the preference, must not be null. * @param value The value of the preference, could be null. * @param <T> Type of the preference value. */ <T> void putIfAbsent(PreferenceScopeResolutionStrategyInfo scopeResolutionStrategyInfo, String key, T value); /** * Stores a preference inside the default scope (see {@link PreferenceScopeResolutionStrategyInfo#defaultScope() defaultScope}, * if it is not already defined in that scope. * @param key The key of the preference, must not be null. * @param value The value of the preference, could be null. * @param <T> Type of the preference value. */ <T> void putIfAbsent(String key, T value); /** * Stores several preferences inside a specific scope, if they are not already defined in that scope. * @param scope Scope in which the preference will be stored. Must not be null. * @param valueByKey Map that contains a preference value (can be null) for each preference key (must not be null). * @param <T> Type of the preference values. */ <T> void putIfAbsent(PreferenceScope scope, Map<String, T> valueByKey); /** * Stores several preferences inside the default scope (see {@link PreferenceScopeResolutionStrategyInfo#defaultScope() defaultScope}, * if they are not already defined in that scope. * @param scopeResolutionStrategyInfo Scope resolution strategy that defines the default scope. Must not be null. * @param valueByKey Map that contains a preference value (can be null) for each preference key (must not be null). * @param <T> Type of the preference values. */ <T> void putIfAbsent(PreferenceScopeResolutionStrategyInfo scopeResolutionStrategyInfo, Map<String, T> valueByKey); /** * Stores several preferences inside the default scope (see {@link PreferenceScopeResolutionStrategyInfo#defaultScope() defaultScope}. * @param valueByKey Map that contains a preference value (can be null) for each preference key (must not be null). * @param <T> Type of the preference values. */ <T> void putIfAbsent(Map<String, T> valueByKey); /** * Retrieves a preference value from a specific scope. * @param scope Scope in which the preference value will be searched. Must not be null. * @param key Preference key to be searched, must not be null. * @param <T> Type of the preference value. * @return The preference value (or null, if it does not exist). */ <T> T get(PreferenceScope scope, String key); /** * Retrieves a preference value from a specific scope. * @param scope Scope in which the preference value will be searched. Must not be null. * @param key Preference key to be searched, must not be null. * @param defaultValue Value to be returned if the preference is not defined in that scope. * @param <T> Type of the preference value. * @return The preference value (or defaultValue, if it does not exist). */ <T> T get(PreferenceScope scope, String key, T defaultValue); /** * Retrieves a preference value from the first scope of the scopeResolutionStrategy order that * has the preference defined. * @param scopeResolutionStrategyInfo Scope resolution strategy that defines the order on which the * scopes will be searched. Must not be null. * @param key Preference key to be searched, must not be null. * @param <T> Type of the preference value. * @return The preference value (or null, if it does not exist). */ <T> T get(PreferenceScopeResolutionStrategyInfo scopeResolutionStrategyInfo, String key); /** * Retrieves a preference value from the first scope of the scopeResolutionStrategy order that * has the preference defined. * @param scopeResolutionStrategyInfo Scope resolution strategy that defines the order on which the * scopes will be searched. Must not be null. * @param key Preference key to be searched, must not be null. * @param defaultValue Value to be returned if the preference is not defined in any scope. * @param <T> Type of the preference value. * @return The preference value (or null, if it does not exist). */ <T> T get(PreferenceScopeResolutionStrategyInfo scopeResolutionStrategyInfo, String key, T defaultValue); /** * Retrieves a preference value from the first scope of the default scope resolution strategy order that * has the preference defined. * @param key Preference key to be searched, must not be null. * @param <T> Type of the preference value. * @return The preference value (or null, if it does not exist). */ <T> T get(String key); /** * Retrieves a preference value from the first scope of the default scope resolution strategy order that * has the preference defined. * @param key Preference key to be searched, must not be null. * @param defaultValue Value to be returned if the preference is not defined in any scope. * @param <T> Type of the preference value. * @return The preference value (or null, if it does not exist). */ <T> T get(String key, T defaultValue); /** * Retrieves a scoped preference value from the first scope of the scopeResolutionStrategy order that * has the preference defined. * @param scopeResolutionStrategyInfo Scope resolution strategy that defines the order on which the * scopes will be searched. Must not be null. * @param key Preference key to be searched, must not be null. * @param <T> Type of the preference value. * @return A preference scoped value, which contains the preference value and its scope (or null, * if the preference does not exist). */ <T> PreferenceScopedValue<T> getScoped(PreferenceScopeResolutionStrategyInfo scopeResolutionStrategyInfo, String key); /** * Retrieves a scoped preference value from the first scope of the scopeResolutionStrategy order that * has the preference defined. * @param scopeResolutionStrategyInfo Scope resolution strategy that defines the order on which the * scopes will be searched. Must not be null. * @param key Preference key to be searched, must not be null. * @param defaultValue Value to be returned if the preference is not defined in any scope. * @param <T> Type of the preference value. * @return A preference scoped value, which contains the preference value and its scope (or defaultValue, * if the preference does not exist in any scope). */ <T> PreferenceScopedValue<T> getScoped(PreferenceScopeResolutionStrategyInfo scopeResolutionStrategyInfo, String key, T defaultValue); /** * Retrieves a preference value from the first scope of the default scope resolution strategy order that * has the preference defined. * @param key Preference key to be searched, must not be null. * @param <T> Type of the preference value. * @return A preference scoped value, which contains the preference value and its scope (or null, * if the preference does not exist). */ <T> PreferenceScopedValue<T> getScoped(String key); /** * Retrieves a preference value from the first scope of the default scope resolution strategy order that * has the preference defined. * @param key Preference key to be searched, must not be null. * @param defaultValue Value to be returned if the preference is not defined in any scope. * @param <T> Type of the preference value. * @return A preference scoped value, which contains the preference value and its scope (or defaultValue, * if the preference does not exist in any scope). */ <T> PreferenceScopedValue<T> getScoped(String key, T defaultValue); /** * Retrieves several preferences, which keys were passed, from a specific scope. * @param scope Scope in which the preferences values will be searched. Must not be null. * @param keys Preference keys to search. If null, all keys in that scope will be searched. * @return A Map containing all passed preference keys and its values (or null, if a preference does not exist). */ Map<String, Object> search(PreferenceScope scope, Collection<String> keys); /** * Retrieves several preferences, which keys were passed. Each one from the first scope of the * scopeResolutionStrategy order that has the preference defined. * @param scopeResolutionStrategyInfo Scope resolution strategy that defines the order on which the * scopes will be searched. Must not be null. * @param keys Preference keys to search. If null, all keys in that scope resolution strategy will be searched. * @return A Map containing all passed preference keys and its values (or null, if a preference does not exist). */ Map<String, Object> search(PreferenceScopeResolutionStrategyInfo scopeResolutionStrategyInfo, Collection<String> keys); /** * Retrieves several preferences, which keys were passed. Each one from the first scope of the * default scope resolution strategy order that has the preference defined. * @param keys Preference keys to search. If null, all keys in the default scope resolution strategy type will be * searched. * @return A Map containing all passed preference keys and its values (or null, if a preference does not exist). */ Map<String, Object> search(Collection<String> keys); /** * Retrieves several scoped preferences, which keys were passed. Each one from the first scope of the * scopeResolutionStrategy order that has the preference defined. * @param scopeResolutionStrategyInfo Scope resolution strategy that defines the order on which the * scopes will be searched. Must not be null. * @param keys Preference keys to search. If null, all keys in that scope resolution strategy will be searched. * @return A Map containing all passed preference keys and its preference scoped value, which contains the * preference value and its scope (or null, if the preference does not exist in any scope). */ Map<String, PreferenceScopedValue<Object>> searchScoped(PreferenceScopeResolutionStrategyInfo scopeResolutionStrategyInfo, Collection<String> keys); /** * Retrieves several scoped preferences, which keys were passed. Each one from the first scope of the * default scope resolution strategy order that has the preference defined. * @param keys Preference keys to search. If null, all keys in the default scope resolution strategy will be searched. * @return A Map containing all passed preference keys and its preference scoped value, which contains the * preference value and its scope (or null, if the preference does not exist in any scope). */ Map<String, PreferenceScopedValue<Object>> searchScoped(Collection<String> keys); /** * Retrieves all defined preferences from a specific scope. * @param scope Scope in which the preferences values will be searched. Must not be null. * @return A Map containing all preference keys and its values. */ Map<String, Object> all(PreferenceScope scope); /** * Retrieves all defined preferences. Each one from the first scope of the scopeResolutionStrategy order * that has the preference defined. * @param scopeResolutionStrategyInfo Scope resolution strategy that defines the order on which the * scopes will be searched. Must not be null. * @return A Map containing all preference keys and its values. */ Map<String, Object> all(PreferenceScopeResolutionStrategyInfo scopeResolutionStrategyInfo); /** * Retrieves all defined preferences. Each one from the first scope of the default scope resolution strategy order * that has the preference defined. * @return A Map containing all preference keys and its values. */ Map<String, Object> all(); /** * Retrieves all defined preferences. Each one from the first scope of the scopeResolutionStrategy order * that has the preference defined. * @param scopeResolutionStrategyInfo Scope resolution strategy that defines the order on which the * scopes will be searched. Must not be null. * @return A Map containing all preferences keys and its preference scoped value, which contains the * preference value and its scope. */ Map<String, PreferenceScopedValue<Object>> allScoped(PreferenceScopeResolutionStrategyInfo scopeResolutionStrategyInfo); /** * Retrieves all defined preferences. Each one from the first scope of the default scope resolution strategy order * that has the preference defined. * @return A Map containing all preferences keys and its preference scoped value, which contains the * preference value and its scope. */ Map<String, PreferenceScopedValue<Object>> allScoped(); /** * Removes a preference from a specific scope. * @param scope Scope in which the preference will be removed. Must not be null. * @param key Key of the preference that should be removed. Must not be null. */ void remove(PreferenceScope scope, String key); /** * Removes a preference from a list of scopes. * @param scopes Scopes from which the preference will be removed. Must not be null. * @param key Key of the preference that will be removed. Must not be null. */ void remove(List<PreferenceScope> scopes, String key); }