Return-Path: X-Original-To: apmail-brooklyn-commits-archive@minotaur.apache.org Delivered-To: apmail-brooklyn-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5DE87172C9 for ; Mon, 27 Oct 2014 14:57:46 +0000 (UTC) Received: (qmail 47826 invoked by uid 500); 27 Oct 2014 14:57:44 -0000 Delivered-To: apmail-brooklyn-commits-archive@brooklyn.apache.org Received: (qmail 47800 invoked by uid 500); 27 Oct 2014 14:57:44 -0000 Mailing-List: contact commits-help@brooklyn.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@brooklyn.incubator.apache.org Delivered-To: mailing list commits@brooklyn.incubator.apache.org Received: (qmail 47783 invoked by uid 99); 27 Oct 2014 14:57:44 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 27 Oct 2014 14:57:44 +0000 X-ASF-Spam-Status: No, hits=-2000.6 required=5.0 tests=ALL_TRUSTED,RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Mon, 27 Oct 2014 14:57:42 +0000 Received: (qmail 44698 invoked by uid 99); 27 Oct 2014 14:56:07 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 27 Oct 2014 14:56:07 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 08521909D04; Mon, 27 Oct 2014 14:56:06 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: heneveld@apache.org To: commits@brooklyn.incubator.apache.org Date: Mon, 27 Oct 2014 14:56:06 -0000 Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: [1/8] git commit: add support for extracting flags from $brooklyn:entitySpec declarations and translating them as config X-Virus-Checked: Checked by ClamAV on apache.org Repository: incubator-brooklyn Updated Branches: refs/heads/master cf5a4fac3 -> 36b81821e add support for extracting flags from $brooklyn:entitySpec declarations and translating them as config Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/d76fa191 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/d76fa191 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/d76fa191 Branch: refs/heads/master Commit: d76fa191a60479c4cae15604371ae653ecca0be3 Parents: f4d24b0 Author: Alex Heneveld Authored: Mon Oct 27 00:17:15 2014 -0700 Committer: Alex Heneveld Committed: Mon Oct 27 07:51:41 2014 -0700 ---------------------------------------------------------------------- .../BrooklynComponentTemplateResolver.java | 15 ++++++++++++++- .../spi/dsl/methods/BrooklynDslCommon.java | 3 +++ .../brooklyn/camp/brooklyn/EntitiesYamlTest.java | 19 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d76fa191/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java b/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java index 98149fd..9dbae24 100644 --- a/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java +++ b/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java @@ -264,6 +264,7 @@ public class BrooklynComponentTemplateResolver { } //called from BrooklynAssemblyTemplateInstantiator as well + @SuppressWarnings("unchecked") protected void populateSpec(EntitySpec spec) { String name, templateId=null, planId=null; if (template.isPresent()) { @@ -335,10 +336,22 @@ public class BrooklynComponentTemplateResolver { return entity; } - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "rawtypes" }) private void configureEntityConfig(EntitySpec spec) { ConfigBag bag = ConfigBag.newInstance((Map) attrs.getStringKey("brooklyn.config")); + // first take *recognised* flags and config keys from the top-level, and put them in the bag (of brooklyn.config) + // (for component templates this will have been done already by BrooklynEntityMatcher, but for specs it is needed here) + ConfigBag bagFlags = ConfigBag.newInstanceCopying(attrs); + List topLevelApparentConfig = FlagUtils.findAllFlagsAndConfigKeys(null, spec.getType(), bagFlags); + for (FlagConfigKeyAndValueRecord r: topLevelApparentConfig) { + if (r.getConfigKeyMaybeValue().isPresent()) + bag.putIfAbsent((ConfigKey)r.getConfigKey(), r.getConfigKeyMaybeValue().get()); + if (r.getFlagMaybeValue().isPresent()) + bag.putAsStringKeyIfAbsent(r.getFlagName(), r.getFlagMaybeValue().get()); + } + + // now set configuration for all the items in the bag List records = FlagUtils.findAllFlagsAndConfigKeys(null, spec.getType(), bag); Set keyNamesUsed = new LinkedHashSet(); for (FlagConfigKeyAndValueRecord r: records) { http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d76fa191/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java b/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java index a7fb606..b93463a 100644 --- a/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java +++ b/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java @@ -131,6 +131,7 @@ public class BrooklynDslCommon { * to the {@link Map} or a {@link BrooklynDslDeferredSupplier} if the arguments are not * yet fully resolved. */ + @SuppressWarnings("unchecked") public static Object object(Map arguments) { ConfigBag config = ConfigBag.newInstance(arguments); String typeName = BrooklynYamlTypeInstantiator.InstantiatorFromKey.extractTypeName("object", config).orNull(); @@ -202,6 +203,7 @@ public class BrooklynDslCommon { } /** @deprecated since 0.7.0; use {@link DslFormatString} */ + @SuppressWarnings("serial") @Deprecated protected static class FormatString extends DslFormatString { public FormatString(String pattern, Object[] args) { @@ -223,6 +225,7 @@ public class BrooklynDslCommon { this.config = MutableMap.copyOf(config); } + @SuppressWarnings("unchecked") @Override public Task newTask() { List> tasks = Lists.newLinkedList(); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d76fa191/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/EntitiesYamlTest.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/EntitiesYamlTest.java b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/EntitiesYamlTest.java index 20334fa..8defc5f 100644 --- a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/EntitiesYamlTest.java +++ b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/EntitiesYamlTest.java @@ -605,6 +605,25 @@ public class EntitiesYamlTest extends AbstractYamlTest { } @Test + public void testEntitySpecFlags() throws Exception { + String yaml = + "services:\n"+ + "- serviceType: brooklyn.test.entity.TestEntity\n"+ + " confName: inParent\n"+ + " brooklyn.config:\n"+ + " test.childSpec:\n"+ + " $brooklyn:entitySpec:\n"+ + " type: brooklyn.test.entity.TestEntity\n"+ + " confName: inchildspec\n"; + + Application app = (Application) createStartWaitAndLogApplication(new StringReader(yaml)); + TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren()); + + TestEntity child = (TestEntity) entity.createAndManageChildFromConfig(); + assertEquals(child.getConfig(TestEntity.CONF_NAME), "inchildspec"); + } + + @Test public void testEntitySpecWithChildren() throws Exception { String yaml = "services:\n"+