001/*
002 * Copyright 2011 Atteo.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
005 * in compliance with the License. You may obtain a copy of the License at
006 *
007 * http://www.apache.org/licenses/LICENSE-2.0
008 *
009 * Unless required by applicable law or agreed to in writing, software distributed under the License
010 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
011 * or implied. See the License for the specific language governing permissions and limitations under
012 * the License.
013 */
014package org.atteo.evo.filtering;
015
016/**
017 * Resolves property name to its value possibly resolving recursively any placeholders.
018 */
019public interface PropertyResolver {
020    /**
021     * Get value for the given property.
022     * @param name name of the property to resolve
023     * @param resolver property resolver for recursive resolution
024     * @return value associated for the property or null if the property cannot be resolved by this resolver
025     * @throws PropertyNotFoundException when we are sure the property cannot be resolved by any other resolver
026     */
027    String resolveProperty(String name, PropertyResolver resolver) throws PropertyNotFoundException;
028}