From 24904f74a6de008a5669b73297f691ec7d868fe5 Mon Sep 17 00:00:00 2001 From: Svetoslav Neykov Date: Tue, 7 Jun 2016 13:15:54 +0300 Subject: [PATCH] Let downstream projects pass custom brooklyn properties to Brooklyn --- .../launcher/common/BasicLauncher.java | 4 +++ .../brooklyn/launcher/BrooklynLauncher.java | 34 +++++++++++++++---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java b/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java index 43b0321bcd..b550a5bae6 100644 --- a/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java +++ b/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java @@ -760,6 +760,10 @@ private T self() { public void setBrooklynPropertiesBuilder(BrooklynProperties.Factory.Builder brooklynPropertiesBuilder) { this.brooklynPropertiesBuilder = brooklynPropertiesBuilder; } + + public BrooklynProperties.Factory.Builder getBrooklynPropertiesBuilder() { + return brooklynPropertiesBuilder; + } public BrooklynProperties getBrooklynProperties() { return brooklynProperties; diff --git a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java index e6e8eeb00b..1b8e193b08 100644 --- a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java +++ b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java @@ -61,6 +61,7 @@ import com.google.common.base.Function; import com.google.common.base.Stopwatch; +import com.google.common.base.Supplier; import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; @@ -105,6 +106,7 @@ public static BrooklynLauncher newInstance() { private String globalBrooklynPropertiesFile = Os.mergePaths(Os.home(), ".brooklyn", "brooklyn.properties"); private String localBrooklynPropertiesFile; + private Supplier> brooklynPropertiesSupplier; public BrooklynServerDetails getServerDetails() { if (!isStarted()) throw new IllegalStateException("Cannot retrieve server details until started"); @@ -234,12 +236,7 @@ public BrooklynLauncher shutdownHandler(ShutdownHandler shutdownHandler) { @Override protected void initManagementContext() { - setBrooklynPropertiesBuilder( - new BrooklynPropertiesFactoryHelper( - globalBrooklynPropertiesFile, - localBrooklynPropertiesFile, - getBrooklynProperties()) - .createPropertiesBuilder()); + initBrooklynPropertiesBuilder(); super.initManagementContext(); @@ -248,6 +245,22 @@ protected void initManagementContext() { } } + protected void initBrooklynPropertiesBuilder() { + if (getBrooklynPropertiesBuilder() == null) { + setBrooklynPropertiesBuilder( + new BrooklynPropertiesFactoryHelper( + globalBrooklynPropertiesFile, + localBrooklynPropertiesFile, + getBrooklynProperties(), + getBrooklynPropertiesSupplier()) + .createPropertiesBuilder()); + } + } + + private Supplier> getBrooklynPropertiesSupplier() { + return brooklynPropertiesSupplier; + } + @Override protected void startingUp() { super.startingUp(); @@ -417,4 +430,13 @@ public BrooklynLauncher localBrooklynPropertiesFile(String file) { return this; } + /** + * Poperties returned by the supplier have less precedence (get overwritten) by global & local properties + */ + public BrooklynLauncher brooklynPropertiesSupplier(Supplier> brooklynPropertiesSupplier) { + this.brooklynPropertiesSupplier = brooklynPropertiesSupplier; + return this; + } + + }