|
Spring Framework example source code file (PreferencesPlaceholderConfigurer.java)
The Spring Framework PreferencesPlaceholderConfigurer.java source code/* * Copyright 2002-2007 the original author or authors. * * 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.springframework.beans.factory.config; import java.util.Properties; import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; import org.springframework.beans.factory.BeanDefinitionStoreException; import org.springframework.beans.factory.InitializingBean; /** * Subclass of PropertyPlaceholderConfigurer that supports JDK 1.4's * Preferences API (<code>java.util.prefs). * * <p>Tries to resolve placeholders as keys first in the user preferences, * then in the system preferences, then in this configurer's properties. * Thus, behaves like PropertyPlaceholderConfigurer if no corresponding * preferences defined. * * <p>Supports custom paths for the system and user preferences trees. Also * supports custom paths specified in placeholders ("myPath/myPlaceholderKey"). * Uses the respective root node if not specified. * * @author Juergen Hoeller * @since 16.02.2004 * @see #setSystemTreePath * @see #setUserTreePath * @see java.util.prefs.Preferences */ public class PreferencesPlaceholderConfigurer extends PropertyPlaceholderConfigurer implements InitializingBean { private String systemTreePath; private String userTreePath; private Preferences systemPrefs; private Preferences userPrefs; /** * Set the path in the system preferences tree to use for resolving * placeholders. Default is the root node. */ public void setSystemTreePath(String systemTreePath) { this.systemTreePath = systemTreePath; } /** * Set the path in the system preferences tree to use for resolving * placeholders. Default is the root node. */ public void setUserTreePath(String userTreePath) { this.userTreePath = userTreePath; } /** * This implementation eagerly fetches the Preferences instances * for the required system and user tree nodes. */ public void afterPropertiesSet() { this.systemPrefs = (this.systemTreePath != null) ? Preferences.systemRoot().node(this.systemTreePath) : Preferences.systemRoot(); this.userPrefs = (this.userTreePath != null) ? Preferences.userRoot().node(this.userTreePath) : Preferences.userRoot(); } /** * This implementation tries to resolve placeholders as keys first * in the user preferences, then in the system preferences, then in * the passed-in properties. */ protected String resolvePlaceholder(String placeholder, Properties props) { String path = null; String key = placeholder; int endOfPath = placeholder.lastIndexOf('/'); if (endOfPath != -1) { path = placeholder.substring(0, endOfPath); key = placeholder.substring(endOfPath + 1); } String value = resolvePlaceholder(path, key, this.userPrefs); if (value == null) { value = resolvePlaceholder(path, key, this.systemPrefs); if (value == null) { value = props.getProperty(placeholder); } } return value; } /** * Resolve the given path and key against the given Preferences. * @param path the preferences path (placeholder part before '/') * @param key the preferences key (placeholder part after '/') * @param preferences the Preferences to resolve against * @return the value for the placeholder, or <code>null if none found */ protected String resolvePlaceholder(String path, String key, Preferences preferences) { if (path != null) { // Do not create the node if it does not exist... try { if (preferences.nodeExists(path)) { return preferences.node(path).get(key, null); } else { return null; } } catch (BackingStoreException ex) { throw new BeanDefinitionStoreException("Cannot access specified node path [" + path + "]", ex); } } else { return preferences.get(key, null); } } } Other Spring Framework examples (source code examples)Here is a short list of links related to this Spring Framework PreferencesPlaceholderConfigurer.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.