/****************************************************************************** * 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; }