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