blob: 11b01c6dbf1960988e564417a7b0560e9401ae34 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.aries.blueprint.compendium.cm;
import org.junit.After;
import org.junit.Before;
import org.ops4j.pax.swissbox.tinybundles.core.TinyBundle;
import org.osgi.framework.BundleContext;
import org.osgi.service.blueprint.container.BlueprintContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class BaseTest {
private BundleContext bundleContext;
protected transient Logger log = LoggerFactory.getLogger(getClass());
@Before
public void setUp() throws Exception {
String symbolicName = getClass().getSimpleName();
TinyBundle cmBundle = Helper.createTestBundle("blueprint-cm", "1.0.0.SNAPSHOT", "OSGI-INF/blueprint/blueprint-cm.xml");
TinyBundle testBundle = Helper.createTestBundle(symbolicName, "1.0.0.SNAPSHOT", getBlueprintDescriptor());
this.bundleContext = Helper.createBundleContext(getBundleFilter(), new TinyBundle[] { cmBundle, testBundle });
// must wait for blueprint container to be published then the namespace parser is complete and we are ready for testing
log.debug("Waiting for BlueprintContainer to be published with symbolicName: {}", symbolicName);
getOsgiService(BlueprintContainer.class, "(osgi.blueprint.container.symbolicname=" + symbolicName + ")");
}
@After
public void tearDown() throws Exception {
Helper.disposeBundleContext(bundleContext);
}
/**
* Return the system bundle context
* @return
*/
protected BundleContext getBundleContext() {
return bundleContext;
}
/**
* Gets the bundle descriptor from the classpath.
* <p/>
* Return the location(s) of the bundle descriptors from the classpath.
* Separate multiple locations by comma, or return a single location.
* <p/>
* For example override this method and return <tt>OSGI-INF/blueprint/camel-context.xml</tt>
*
* @return the location of the bundle descriptor file.
*/
protected String getBlueprintDescriptor() {
return null;
}
/**
* Gets filter expression of bundle descriptors.
* Modify this method if you wish to change default behavior.
*
* @return filter expression for OSGi bundles.
*/
protected String getBundleFilter() {
return Helper.BUNDLE_FILTER;
}
/**
* Gets test bundle version.
* Modify this method if you wish to change default behavior.
*
* @return test bundle version
*/
protected String getBundleVersion() {
return Helper.BUNDLE_VERSION;
}
protected <T> T getOsgiService(Class<T> type) {
return Helper.getOsgiService(bundleContext, type);
}
protected <T> T getOsgiService(Class<T> type, long timeout) {
return Helper.getOsgiService(bundleContext, type, timeout);
}
protected <T> T getOsgiService(Class<T> type, String filter) {
return Helper.getOsgiService(bundleContext, type, filter);
}
protected <T> T getOsgiService(Class<T> type, String filter, long timeout) {
return Helper.getOsgiService(bundleContext, type, filter, timeout);
}
}