You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2022/11/11 15:23:38 UTC
[brooklyn-server] 01/03: allow name to be supplied for policies, enrichers, etc
This is an automated email from the ASF dual-hosted git repository.
heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
commit 51b28628bc9b0bf64751d87c1bcc7849b655cf9f
Author: Alex Heneveld <al...@cloudsoft.io>
AuthorDate: Fri Nov 11 11:00:51 2022 +0000
allow name to be supplied for policies, enrichers, etc
---
.../brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java
index f1023bf0fa..57106d6987 100644
--- a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java
+++ b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java
@@ -26,6 +26,7 @@ import javax.annotation.Nullable;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Function;
+import org.apache.brooklyn.api.internal.AbstractBrooklynObjectSpec;
import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext;
import org.apache.brooklyn.api.objs.Configurable;
import org.apache.brooklyn.camp.brooklyn.BrooklynCampReservedKeys;
@@ -36,6 +37,7 @@ import org.apache.brooklyn.util.core.config.ConfigBag;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.guava.Maybe;
import org.apache.brooklyn.util.javalang.Reflections;
+import org.apache.brooklyn.util.text.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -135,6 +137,17 @@ public abstract class BrooklynYamlTypeInstantiator {
* <li> a no-arg constructor, only if the inferred map is empty
**/
public <T> T newInstance(@Nullable Class<T> supertype) {
+ T result = newInstanceWithConfig(supertype);
+ if (result instanceof AbstractBrooklynObjectSpec) {
+ Object name = data.getStringKey("name");
+ if (name!=null && Strings.isNonBlank(name.toString())) {
+ ((AbstractBrooklynObjectSpec) result).displayName(name.toString());
+ }
+ }
+ return result;
+ }
+
+ protected <T> T newInstanceWithConfig(@Nullable Class<T> supertype) {
Class<? extends T> type = getType(supertype);
Map<String, ?> cfg = getConfigMap();
Maybe<? extends T> result = Reflections.invokeConstructorFromArgs(type, cfg);