Author: davsclaus Date: Fri Feb 8 10:59:49 2013 New Revision: 1443932 URL: http://svn.apache.org/r1443932 Log: CAMEL-6053: Allow to override blueprint config admin placeholders from unit test.
Added: camel/branches/camel-2.10.x/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminOverridePropertiesOutsideCamelContextTest.java - copied unchanged from r1443931, camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminOverridePropertiesOutsideCamelContextTest.java camel/branches/camel-2.10.x/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/MyCoolBean.java - copied unchanged from r1443931, camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/MyCoolBean.java camel/branches/camel-2.10.x/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-outside.xml - copied unchanged from r1443931, camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-outside.xml Modified: camel/branches/camel-2.10.x/ (props changed) camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java Propchange: camel/branches/camel-2.10.x/ ------------------------------------------------------------------------------ Merged /camel/trunk:r1443931 Propchange: camel/branches/camel-2.10.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java?rev=1443932&r1=1443931&r2=1443932&view=diff ============================================================================== --- camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java (original) +++ camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java Fri Feb 8 10:59:49 2013 @@ -16,6 +16,7 @@ */ package org.apache.camel.test.blueprint; +import java.util.Dictionary; import java.util.Properties; import org.apache.camel.CamelContext; @@ -26,6 +27,8 @@ import org.junit.After; import org.junit.Before; import org.osgi.framework.BundleContext; import org.osgi.service.blueprint.container.BlueprintContainer; +import org.osgi.service.cm.Configuration; +import org.osgi.service.cm.ConfigurationAdmin; /** * Base class for OSGi Blueprint unit tests with Camel. @@ -47,6 +50,19 @@ public abstract class CamelBlueprintTest bundleContext.registerService(PropertiesComponent.OVERRIDE_PROPERTIES, extra, null); } + // allow end users to override config admin service with extra properties + Dictionary props = new Properties(); + String pid = useOverridePropertiesWithConfigAdmin(props); + if (pid != null) { + ConfigurationAdmin configAdmin = getOsgiService(ConfigurationAdmin.class); + Configuration config = configAdmin.getConfiguration(pid); + if (config == null) { + throw new IllegalArgumentException("Cannot find configuration with pid " + pid + " in OSGi ConfigurationAdmin service."); + } + log.info("Updating ConfigAdmin {} by overriding properties {}", config, props); + config.update(props); + } + super.setUp(); // must wait for blueprint container to be published then the namespace parser is complete and we are ready for testing @@ -54,6 +70,16 @@ public abstract class CamelBlueprintTest getOsgiService(BlueprintContainer.class, "(osgi.blueprint.container.symbolicname=" + symbolicName + ")"); } + /** + * Override this method to override config admin properties. + * + * @param props properties where you add the properties to override + * @return the PID of the OSGi {@link ConfigurationAdmin} which are defined in the Blueprint XML file. + */ + protected String useOverridePropertiesWithConfigAdmin(Dictionary props) { + return null; + } + @After @Override public void tearDown() throws Exception {