/****************************************************************************** * Copyright (c) 2006, 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 * 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. *****************************************************************************/ package org.eclipse.gemini.blueprint.context.support; import junit.framework.TestCase; import org.easymock.MockControl; import org.eclipse.gemini.blueprint.context.BundleContextAware; import org.eclipse.gemini.blueprint.context.support.BundleContextAwareProcessor; import org.osgi.framework.BundleContext; /** * * @author Adrian Colyer * @since 2.0 */ public abstract class BundleContextAwareProcessorTest extends TestCase{ private MockControl bundleContextControl; private MockControl bundleContextAwareControl; private BundleContext mockContext; private BundleContextAware mockAware; protected void setUp() throws Exception { this.bundleContextControl = MockControl.createControl(BundleContext.class); this.mockContext = (BundleContext) this.bundleContextControl.getMock(); // no tests should ever call the mockContext, we're really // using it just as a convenient implementation this.bundleContextControl.replay(); this.bundleContextAwareControl = MockControl.createControl(BundleContextAware.class); this.mockAware = (BundleContextAware) this.bundleContextAwareControl.getMock(); } protected void tearDown() throws Exception { this.bundleContextControl.verify(); } public void testBeforeInitializationNoBundleContext() { BundleContextAwareProcessor bcaProcessor = new BundleContextAwareProcessor(null); this.bundleContextAwareControl.replay(); try { //bcaProcessor.postProcessAfterInstantiation(this.mockAware, "aName"); fail("should throw an IllegalStateException when no BundleContext available"); } catch(IllegalStateException ex) { assertEquals("Cannot satisfy BundleContextAware for bean 'aName' without BundleContext", ex.getMessage()); } this.bundleContextAwareControl.verify(); } public void testBeforeInitializationNonImplementer() { BundleContextAwareProcessor bcaProcessor = new BundleContextAwareProcessor(this.mockContext); Object bean = new Object(); Object ret = bcaProcessor.postProcessBeforeInitialization(bean, "aName"); assertSame("should return same bean instance",bean,ret); } public void testBeforeInitializationBundleContextImplementer() { BundleContextAwareProcessor bcaProcessor = new BundleContextAwareProcessor(this.mockContext); this.mockAware.setBundleContext(this.mockContext); this.bundleContextAwareControl.replay(); //boolean ret = bcaProcessor.postProcessAfterInstantiation(this.mockAware, "aName"); this.bundleContextAwareControl.verify(); //assertTrue("should return true",ret); } public void testAfterInitialization() { Object bean = new Object(); BundleContextAwareProcessor bcaProcessor = new BundleContextAwareProcessor(this.mockContext); Object ret = bcaProcessor.postProcessAfterInitialization(bean, "aName"); assertSame("should return the same bean instance",bean,ret); } }