4 changed files with 91 additions and 74 deletions
@ -0,0 +1,65 @@
@@ -0,0 +1,65 @@
|
||||
/* |
||||
* 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 |
||||
* |
||||
* 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.context.annotation; |
||||
|
||||
import org.springframework.beans.factory.Aware; |
||||
import org.springframework.beans.factory.BeanClassLoaderAware; |
||||
import org.springframework.beans.factory.BeanFactory; |
||||
import org.springframework.beans.factory.BeanFactoryAware; |
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory; |
||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry; |
||||
import org.springframework.context.EnvironmentAware; |
||||
import org.springframework.context.ResourceLoaderAware; |
||||
import org.springframework.core.env.Environment; |
||||
import org.springframework.core.io.ResourceLoader; |
||||
|
||||
/** |
||||
* Common delegate code for the handling of parser strategies, e.g. |
||||
* {@code TypeFilter}, {@code ImportSelector}, {@code ImportBeanDefinitionRegistrar} |
||||
* |
||||
* @author Juergen Hoeller |
||||
* @since 4.3.3 |
||||
*/ |
||||
abstract class ParserStrategyUtils { |
||||
|
||||
/** |
||||
* Invoke {@link BeanClassLoaderAware}, {@link BeanFactoryAware}, |
||||
* {@link EnvironmentAware}, and {@link ResourceLoaderAware} contracts |
||||
* if implemented by the given object. |
||||
*/ |
||||
public static void invokeAwareMethods(Object parserStrategyBean, Environment environment, |
||||
ResourceLoader resourceLoader, BeanDefinitionRegistry registry) { |
||||
|
||||
if (parserStrategyBean instanceof Aware) { |
||||
if (parserStrategyBean instanceof BeanClassLoaderAware) { |
||||
ClassLoader classLoader = (registry instanceof ConfigurableBeanFactory ? |
||||
((ConfigurableBeanFactory) registry).getBeanClassLoader() : resourceLoader.getClassLoader()); |
||||
((BeanClassLoaderAware) parserStrategyBean).setBeanClassLoader(classLoader); |
||||
} |
||||
if (parserStrategyBean instanceof BeanFactoryAware && registry instanceof BeanFactory) { |
||||
((BeanFactoryAware) parserStrategyBean).setBeanFactory((BeanFactory) registry); |
||||
} |
||||
if (parserStrategyBean instanceof EnvironmentAware) { |
||||
((EnvironmentAware) parserStrategyBean).setEnvironment(environment); |
||||
} |
||||
if (parserStrategyBean instanceof ResourceLoaderAware) { |
||||
((ResourceLoaderAware) parserStrategyBean).setResourceLoader(resourceLoader); |
||||
} |
||||
} |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue