/*
 * Copyright 2002-2016 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
 *
 *      https://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.parsing;

import org.springframework.core.io.Resource;
import org.springframework.lang.Nullable;

Simple strategy allowing tools to control how source metadata is attached to the bean definition metadata.

Configuration parsers may provide the ability to attach source metadata during the parse phase. They will offer this metadata in a generic format which can be further modified by a SourceExtractor before being attached to the bean definition metadata.

Author:Rob Harrop, Juergen Hoeller
See Also:
Since:2.0
/** * Simple strategy allowing tools to control how source metadata is attached * to the bean definition metadata. * * <p>Configuration parsers <strong>may</strong> provide the ability to attach * source metadata during the parse phase. They will offer this metadata in a * generic format which can be further modified by a {@link SourceExtractor} * before being attached to the bean definition metadata. * * @author Rob Harrop * @author Juergen Hoeller * @since 2.0 * @see org.springframework.beans.BeanMetadataElement#getSource() * @see org.springframework.beans.factory.config.BeanDefinition */
@FunctionalInterface public interface SourceExtractor {
Extract the source metadata from the candidate object supplied by the configuration parser.
Params:
  • sourceCandidate – the original source metadata (never null)
  • definingResource – the resource that defines the given source object (may be null)
Returns:the source metadata object to store (may be null)
/** * Extract the source metadata from the candidate object supplied * by the configuration parser. * @param sourceCandidate the original source metadata (never {@code null}) * @param definingResource the resource that defines the given source object * (may be {@code null}) * @return the source metadata object to store (may be {@code null}) */
@Nullable Object extractSource(Object sourceCandidate, @Nullable Resource definingResource); }