You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2013/02/08 12:54:45 UTC
svn commit: r1443964 - in /camel/trunk: components/camel-test-blueprint/
components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/
components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/
components/camel-test...
Author: davsclaus
Date: Fri Feb 8 11:54:45 2013
New Revision: 1443964
URL: http://svn.apache.org/r1443964
Log:
CAMEL-6053: Allow to load .cfg config admin properties file from camel-test-blueprint.
Added:
camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadConfigurationFileTest.java
- copied, changed from r1443931, camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminOverridePropertiesOutsideCamelContextTest.java
camel/trunk/components/camel-test-blueprint/src/test/resources/etc/
camel/trunk/components/camel-test-blueprint/src/test/resources/etc/stuff.cfg
camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-loadfile.xml
- copied, changed from r1443931, camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-outside.xml
Modified:
camel/trunk/components/camel-test-blueprint/pom.xml
camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
camel/trunk/parent/pom.xml
Modified: camel/trunk/components/camel-test-blueprint/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-test-blueprint/pom.xml?rev=1443964&r1=1443963&r2=1443964&view=diff
==============================================================================
--- camel/trunk/components/camel-test-blueprint/pom.xml (original)
+++ camel/trunk/components/camel-test-blueprint/pom.xml Fri Feb 8 11:54:45 2013
@@ -119,6 +119,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/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java?rev=1443964&r1=1443963&r2=1443964&view=diff
==============================================================================
--- camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java (original)
+++ camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java Fri Feb 8 11:54:45 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;
}
Copied: camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadConfigurationFileTest.java (from r1443931, camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminOverridePropertiesOutsideCamelContextTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadConfigurationFileTest.java?p2=camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadConfigurationFileTest.java&p1=camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminOverridePropertiesOutsideCamelContextTest.java&r1=1443931&r2=1443964&rev=1443964&view=diff
==============================================================================
--- camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminOverridePropertiesOutsideCamelContextTest.java (original)
+++ camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadConfigurationFileTest.java Fri Feb 8 11:54:45 2013
@@ -16,28 +16,24 @@
*/
package org.apache.camel.test.blueprint;
-import java.util.Dictionary;
-
import org.junit.Test;
/**
*
*/
-public class ConfigAdminOverridePropertiesOutsideCamelContextTest extends CamelBlueprintTestSupport {
+public class ConfigAdminLoadConfigurationFileTest extends CamelBlueprintTestSupport {
@Override
protected String getBlueprintDescriptor() {
- return "org/apache/camel/test/blueprint/configadmin-outside.xml";
+ return "org/apache/camel/test/blueprint/configadmin-loadfile.xml";
}
// START SNIPPET: e1
@Override
- protected String useOverridePropertiesWithConfigAdmin(Dictionary props) {
- // add the properties we want to override
- props.put("greeting", "Bye");
-
- // return the PID of the config-admin we are using in the blueprint xml file
- return "my-placeholders";
+ protected String[] loadConfigAdminConfigurationFile() {
+ // String[0] = tell Camel the path of the .cfg file to use for OSGi ConfigAdmin in the blueprint XML file
+ // String[1] = tell Camel the persistence-id of the cm:property-placeholder in the blueprint XML file
+ return new String[]{"src/test/resources/etc/stuff.cfg", "stuff"};
}
// END SNIPPET: e1
Added: camel/trunk/components/camel-test-blueprint/src/test/resources/etc/stuff.cfg
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-test-blueprint/src/test/resources/etc/stuff.cfg?rev=1443964&view=auto
==============================================================================
--- camel/trunk/components/camel-test-blueprint/src/test/resources/etc/stuff.cfg (added)
+++ camel/trunk/components/camel-test-blueprint/src/test/resources/etc/stuff.cfg Fri Feb 8 11:54:45 2013
@@ -0,0 +1,18 @@
+## ------------------------------------------------------------------------
+## 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.
+## ------------------------------------------------------------------------
+
+greeting=Bye
\ No newline at end of file
Copied: camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-loadfile.xml (from r1443931, camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-outside.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-loadfile.xml?p2=camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-loadfile.xml&p1=camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-outside.xml&r1=1443931&r2=1443964&rev=1443964&view=diff
==============================================================================
--- camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-outside.xml (original)
+++ camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-loadfile.xml Fri Feb 8 11:54:45 2013
@@ -22,13 +22,8 @@
http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.0.0.xsd
http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
- <!-- blueprint property placeholders -->
- <cm:property-placeholder persistent-id="my-placeholders">
- <cm:default-properties>
- <cm:property name="greeting" value="Hello"/>
- <cm:property name="destination" value="mock:result"/>
- </cm:default-properties>
- </cm:property-placeholder>
+ <!-- blueprint property placeholders, that will use etc/stuff.cfg as the properties file -->
+ <cm:property-placeholder persistent-id="stuff"/>
<!-- a bean that uses a blueprint property placeholder -->
<bean id="myCoolBean" class="org.apache.camel.test.blueprint.MyCoolBean">
@@ -40,7 +35,7 @@
<route>
<from uri="direct:start"/>
<bean ref="myCoolBean" method="saySomething"/>
- <to uri="{{destination}}"/>
+ <to uri="mock:result"/>
</route>
</camelContext>
Modified: camel/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/parent/pom.xml?rev=1443964&r1=1443963&r2=1443964&view=diff
==============================================================================
--- camel/trunk/parent/pom.xml (original)
+++ camel/trunk/parent/pom.xml Fri Feb 8 11:54:45 2013
@@ -118,6 +118,7 @@
<ezmorph-bundle-version>1.0.6_1</ezmorph-bundle-version>
<fastinfoset-version>1.2.7_4</fastinfoset-version>
<felix-configadmin-version>1.4.0</felix-configadmin-version>
+ <felix-fileinstall-version>3.2.6</felix-fileinstall-version>
<felix-framework-version>3.2.2</felix-framework-version>
<findbugs-maven-plugin-version>2.5.2</findbugs-maven-plugin-version>
<flatpack-bundle-version>3.2.0_2</flatpack-bundle-version>