Author: davsclaus Date: Fri Feb 8 11:57:12 2013 New Revision: 1443965 URL: http://svn.apache.org/r1443965 Log: CAMEL-6053: Allow to load .cfg config admin properties file from camel-test-blueprint.
Added: camel/branches/camel-2.10.x/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadConfigurationFileTest.java - copied unchanged from r1443964, camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadConfigurationFileTest.java camel/branches/camel-2.10.x/components/camel-test-blueprint/src/test/resources/etc/ - copied from r1443964, camel/trunk/components/camel-test-blueprint/src/test/resources/etc/ camel/branches/camel-2.10.x/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-loadfile.xml - copied unchanged from r1443964, camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-loadfile.xml Modified: camel/branches/camel-2.10.x/ (props changed) camel/branches/camel-2.10.x/components/camel-test-blueprint/pom.xml camel/branches/camel-2.10.x/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java camel/branches/camel-2.10.x/parent/pom.xml Propchange: camel/branches/camel-2.10.x/ ------------------------------------------------------------------------------ Merged /camel/trunk:r1443964 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/pom.xml URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-test-blueprint/pom.xml?rev=1443965&r1=1443964&r2=1443965&view=diff ============================================================================== --- camel/branches/camel-2.10.x/components/camel-test-blueprint/pom.xml (original) +++ camel/branches/camel-2.10.x/components/camel-test-blueprint/pom.xml Fri Feb 8 11:57:12 2013 @@ -121,6 +121,27 @@ </exclusion> </exclusions> </dependency> + <dependency> + <groupId>org.apache.felix</groupId> + <artifactId>org.apache.felix.fileinstall</artifactId> + <version>${felix-fileinstall-version}</version> + <!-- exclude the following dependency which otherwise would pop up a lot of compilation + errors both by this and the camel-maven-plugin modules under eclipse. --> + <exclusions> + <exclusion> + <groupId>org.apache.felix</groupId> + <artifactId>org.osgi.foundation</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache.felix</groupId> + <artifactId>org.osgi.core</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache.felix</groupId> + <artifactId>org.osgi.compendium</artifactId> + </exclusion> + </exclusions> + </dependency> <!-- optional dependencies for running tests --> <dependency> 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=1443965&r1=1443964&r2=1443965&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 11:57:12 2013 @@ -16,9 +16,12 @@ */ package org.apache.camel.test.blueprint; +import java.io.File; import java.util.Dictionary; +import java.util.Map; import java.util.Properties; +import org.apache.aries.blueprint.compendium.cm.CmPropertyPlaceholder; import org.apache.camel.CamelContext; import org.apache.camel.component.properties.PropertiesComponent; import org.apache.camel.model.ModelCamelContext; @@ -50,7 +53,31 @@ public abstract class CamelBlueprintTest bundleContext.registerService(PropertiesComponent.OVERRIDE_PROPERTIES, extra, null); } - // allow end users to override config admin service with extra properties + // load configuration file + String[] file = loadConfigAdminConfigurationFile(); + if (file != null && file.length != 2) { + throw new IllegalArgumentException("The returned String[] from loadConfigAdminConfigurationFile must be of length 2, was " + file.length); + } + if (file != null && file[0] != null) { + Dictionary props = new Properties(); + + File load = new File(file[0]); + log.debug("Loading properties from OSGi config admin file: {}", load); + org.apache.felix.utils.properties.Properties cfg = new org.apache.felix.utils.properties.Properties(load); + for (Map.Entry entry : cfg.entrySet()) { + props.put(entry.getKey(), entry.getValue()); + } + + ConfigurationAdmin configAdmin = getOsgiService(ConfigurationAdmin.class); + if (configAdmin != null) { + // ensure we update + Configuration config = configAdmin.getConfiguration(file[1]); + log.info("Updating ConfigAdmin {} by overriding properties {}", config, props); + config.update(props); + } + } + + // allow end user to override properties Dictionary props = new Properties(); String pid = useOverridePropertiesWithConfigAdmin(props); if (pid != null) { @@ -76,7 +103,17 @@ public abstract class CamelBlueprintTest * @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) { + protected String useOverridePropertiesWithConfigAdmin(Dictionary props) throws Exception { + return null; + } + + /** + * Override this method and provide the name of the .cfg configuration file to use for + * Blueprint ConfigAdmin service. + * + * @return the name of the path for the .cfg file to load, and the persistence-id of the property placeholder. + */ + protected String[] loadConfigAdminConfigurationFile() { return null; } Modified: camel/branches/camel-2.10.x/parent/pom.xml URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/parent/pom.xml?rev=1443965&r1=1443964&r2=1443965&view=diff ============================================================================== --- camel/branches/camel-2.10.x/parent/pom.xml (original) +++ camel/branches/camel-2.10.x/parent/pom.xml Fri Feb 8 11:57:12 2013 @@ -79,6 +79,7 @@ <easymock-version>3.0</easymock-version> <ehcache-bundle-version>2.5.2_1</ehcache-bundle-version> <exec-maven-plugin-version>1.2.1</exec-maven-plugin-version> + <felix-fileinstall-version>3.2.6</felix-fileinstall-version> <flatpack-version>3.2.0_2</flatpack-version> <fop-version>1.0</fop-version> <ftpserver-version>1.0.6</ftpserver-version>