You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by du...@apache.org on 2020/12/15 15:09:25 UTC

[brooklyn-server] branch master updated: use our routines for urls in PropertiesFileExternalConfigSupplier

This is an automated email from the ASF dual-hosted git repository.

duncangrant pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git


The following commit(s) were added to refs/heads/master by this push:
     new 2e00c97  use our routines for urls in PropertiesFileExternalConfigSupplier
     new a82172b  Merge pull request #1134 from ahgittin/props-external-config-tidy
2e00c97 is described below

commit 2e00c9756d46c2a71399658c35becbd7795a92ea
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Mon Dec 14 13:36:45 2020 +0000

    use our routines for urls in PropertiesFileExternalConfigSupplier
    
    for consistency ... java by default seems to fail on "file:///path/to/x" :(
---
 .../external/PropertiesFileExternalConfigSupplier.java     |  5 +++--
 .../core/config/external/UrlsExternalConfigSupplier.java   |  2 +-
 .../external/PropertiesFileExternalConfigSupplierTest.java | 14 ++++++++++++--
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/core/src/main/java/org/apache/brooklyn/core/config/external/PropertiesFileExternalConfigSupplier.java b/core/src/main/java/org/apache/brooklyn/core/config/external/PropertiesFileExternalConfigSupplier.java
index 233fa80..e9db17e 100644
--- a/core/src/main/java/org/apache/brooklyn/core/config/external/PropertiesFileExternalConfigSupplier.java
+++ b/core/src/main/java/org/apache/brooklyn/core/config/external/PropertiesFileExternalConfigSupplier.java
@@ -25,6 +25,7 @@ import java.util.Map;
 import java.util.Properties;
 
 import org.apache.brooklyn.api.mgmt.ManagementContext;
+import org.apache.brooklyn.util.core.ResourceUtils;
 import org.apache.brooklyn.util.stream.Streams;
 
 
@@ -33,7 +34,7 @@ import org.apache.brooklyn.util.stream.Streams;
  * under the <code>propertiesUrl</code> key:
  *
  * <pre>
- * brooklyn.external.foo = brooklyn.management.config.external.PropertiesFileExternalConfigSupplier
+ * brooklyn.external.foo = org.apache.brooklyn.core.config.external.PropertiesFileExternalConfigSupplier
  * brooklyn.external.foo.propertiesUrl = http://brooklyn.example.com/config/foo.properties
  * </pre>
  */
@@ -56,7 +57,7 @@ public class PropertiesFileExternalConfigSupplier extends AbstractExternalConfig
     private static Properties loadProperties(String propertiesUrl) throws IOException {
         InputStream is = null;
         try {
-            is = new URL(propertiesUrl).openStream();
+            is = ResourceUtils.create().getResourceFromUrl(propertiesUrl);
             Properties p = new Properties();
             p.load(is);
             return p;
diff --git a/core/src/main/java/org/apache/brooklyn/core/config/external/UrlsExternalConfigSupplier.java b/core/src/main/java/org/apache/brooklyn/core/config/external/UrlsExternalConfigSupplier.java
index 0fe1776..1dd4032 100644
--- a/core/src/main/java/org/apache/brooklyn/core/config/external/UrlsExternalConfigSupplier.java
+++ b/core/src/main/java/org/apache/brooklyn/core/config/external/UrlsExternalConfigSupplier.java
@@ -35,7 +35,7 @@ import com.google.common.collect.Maps;
  * 
  * Example configuration could be:
  * <pre>
- * brooklyn.external.foo = brooklyn.management.config.external.FilesExternalConfigSupplier
+ * brooklyn.external.foo = org.apache.brooklyn.core.config.external.UrlsExternalConfigSupplier
  * brooklyn.external.foo.authorized_keys = classpath://authorized_keys
  * brooklyn.external.foo.privateSshKey = /path/to/privateKey
  * brooklyn.external.foo.initScript = https://brooklyn.example.com/config/initScript.sh
diff --git a/core/src/test/java/org/apache/brooklyn/core/config/external/PropertiesFileExternalConfigSupplierTest.java b/core/src/test/java/org/apache/brooklyn/core/config/external/PropertiesFileExternalConfigSupplierTest.java
index 329ddcc..e5bfe30 100644
--- a/core/src/test/java/org/apache/brooklyn/core/config/external/PropertiesFileExternalConfigSupplierTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/config/external/PropertiesFileExternalConfigSupplierTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.brooklyn.core.config.external;
 
+import java.util.function.Function;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNull;
 
@@ -63,14 +64,23 @@ public class PropertiesFileExternalConfigSupplierTest {
     }
 
     @Test
-    public void testFromProperties() throws Exception {
+    public void testFromPropertiesJavaFileUrl() throws Exception {
+        doTestFromProperties(f -> f.toURI().toString());
+    }
+
+    @Test
+    public void testFromPropertiesTwoSlashAndPathUrl() throws Exception {
+        doTestFromProperties(f -> "file://"+f.getAbsolutePath());
+    }
+
+    public void doTestFromProperties(Function<File,String> url) throws Exception {
         String contents =
                 "mykey=myval"+"\n"+
                 "mykey2=myval2";
         Files.write(contents, propsFile, Charsets.UTF_8);
         BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
         props.put("brooklyn.external.foo", PropertiesFileExternalConfigSupplier.class.getName());
-        props.put("brooklyn.external.foo.propertiesUrl", propsFile.toURI().toString());
+        props.put("brooklyn.external.foo.propertiesUrl", url.apply(propsFile));
         
         mgmt = LocalManagementContextForTests.newInstance(props);