blob: 9f0549d051c4254dc7ca4211f8ee9129fe1f04d0 [file] [log] [blame]
/******************************************************************************
* 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;
}