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 {


Reply via email to