blob: 2bc4e578c64df3e47e3d4becabdf87fe3ec1da16 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2006, 2010 VMware Inc., Oracle 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.
* Oracle Inc.
*****************************************************************************/
package org.eclipse.gemini.blueprint.extender;
import java.util.Collection;
import org.eclipse.gemini.blueprint.service.importer.OsgiServiceDependency;
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;
/**
* Interface to be implemented by beans wishing to provide OSGi service
* dependencies required by the
* {@link org.springframework.context.ApplicationContext}. By default, the
* extender will postpone the context initialization until the dependencies (to
* OSGi services) are all satisfied at the same time.
*
* @see org.springframework.context.ApplicationContext
* @see org.springframework.beans.factory.config.BeanFactoryPostProcessor *
*
* @author Andy Piper
* @author Costin Leau
*/
public interface OsgiServiceDependencyFactory {
/**
* Returns the OSGi service dependencies applying for the given bean factory
* running inside the given bundle context. The returned collection should
* contain only {@link OsgiServiceDependency} objects.
*
* @param bundleContext bundle
* @param beanFactory the bean factory used by the application context
* @return collection of service dependencies
* @throws BeansException in case of factory errors
* @throws InvalidSyntaxException in case of OSGi filters errors
* @throws BundleException in case of OSGi bundle errors
*/
Collection<OsgiServiceDependency> getServiceDependencies(BundleContext bundleContext,
ConfigurableListableBeanFactory beanFactory) throws BeansException, InvalidSyntaxException, BundleException;
}