blob: af0e46f96bfd002adf540cbaf5576335820266fe [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 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
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMware Inc. - initial contribution
*******************************************************************************/
package org.eclipse.virgo.kernel.deployer.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.osgi.framework.BundleContext;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.springframework.context.ApplicationContext;
final class ApplicationContextUtils {
static void assertApplicationContextContainsExpectedBeanDefinitions(ApplicationContext applicationContext, String... beanNames) {
for (String beanName : beanNames) {
assertTrue("A definition for a bean named " + beanName + " was not found in the application context", applicationContext.containsBeanDefinition(beanName));
}
}
static ApplicationContext getApplicationContext(BundleContext bundleContext, String symbolicName) {
ServiceReference<?>[] serviceReferences = null;
try {
serviceReferences = bundleContext.getServiceReferences(ApplicationContext.class.getName(), "(Bundle-SymbolicName=" + symbolicName + ")");
} catch (InvalidSyntaxException e) {
fail(e.toString());
}
if (serviceReferences != null) {
assertEquals("Found " + serviceReferences.length + " matching service references when only 1 was expected", 1, serviceReferences.length);
return (ApplicationContext) bundleContext.getService(serviceReferences[0]);
}
return null;
}
static void awaitApplicationContext(BundleContext bundleContext, String symbolicName, long timeout) {
long endTime = System.currentTimeMillis() + (timeout * 1000);
ApplicationContext applicationContext = null;
while (applicationContext == null && System.currentTimeMillis() < endTime) {
applicationContext = getApplicationContext(bundleContext, symbolicName);
}
if (applicationContext == null) {
fail("ApplicationContext for bundle with symbolic name '" + symbolicName + "' was not published within " + timeout + " seconds.");
}
}
}