/****************************************************************************** | |
* Copyright (c) 2006, 2010 VMware Inc. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v1.0 | |
* and Apache License v2.0 which accompanies this distribution. | |
* The Eclipse Public License is available at | |
* http://www.eclipse.org/legal/epl-v10.html and the Apache License v2.0 | |
* is available at http://www.opensource.org/licenses/apache2.0.php. | |
* You may elect to redistribute this code under either of these licenses. | |
* | |
* Contributors: | |
* VMware Inc. | |
*****************************************************************************/ | |
package org.eclipse.gemini.blueprint.extender; | |
import org.osgi.framework.BundleContext; | |
import org.osgi.framework.BundleException; | |
import org.osgi.framework.InvalidSyntaxException; | |
import org.springframework.beans.BeansException; | |
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; | |
/** | |
* Extender hook that allows custom modification of an application context's | |
* bean definitions. New beans can be created, removed or existing definitions | |
* modified. | |
* | |
* <p/> Similar in functionality with Spring's BeanFactoryPostProcessor, this | |
* interface also considers the BundleContext in which the beanFactory runs. | |
* | |
* <p/>Just like the BeanFactoryPostProcessor, the post processing happens | |
* during the creation of the bean factory but before any beans (including | |
* declared BeanFactoryPostProcessors) are initialized. | |
* | |
* @see org.springframework.beans.factory.config.BeanFactoryPostProcessor | |
* @see BundleContext | |
* | |
* @author Costin Leau | |
*/ | |
public interface OsgiBeanFactoryPostProcessor { | |
/** | |
* | |
* Modifies the application context's internal bean factory after its | |
* standard initialization. All bean definitions will have been loaded, but | |
* no beans will have been instantiated yet. This allows for overriding or | |
* adding properties even to eager-initializing beans. | |
* | |
* @param bundleContext bundle | |
* @param beanFactory the bean factory used by the application context | |
* @throws BeansException in case of factory errors | |
* @throws InvalidSyntaxException in case of OSGi filters errors | |
* @throws BundleException in case of OSGi bundle errors | |
*/ | |
void postProcessBeanFactory(BundleContext bundleContext, ConfigurableListableBeanFactory beanFactory) | |
throws BeansException, InvalidSyntaxException, BundleException; | |
} |