Return-Path: X-Original-To: apmail-karaf-commits-archive@minotaur.apache.org Delivered-To: apmail-karaf-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 A5C3A101CA for ; Thu, 12 Feb 2015 17:22:25 +0000 (UTC) Received: (qmail 80497 invoked by uid 500); 12 Feb 2015 17:22:25 -0000 Delivered-To: apmail-karaf-commits-archive@karaf.apache.org Received: (qmail 80422 invoked by uid 500); 12 Feb 2015 17:22:25 -0000 Mailing-List: contact commits-help@karaf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@karaf.apache.org Delivered-To: mailing list commits@karaf.apache.org Received: (qmail 80405 invoked by uid 99); 12 Feb 2015 17:22:25 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Feb 2015 17:22:25 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 70D9DE03EB; Thu, 12 Feb 2015 17:22:25 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: gnodet@apache.org To: commits@karaf.apache.org Date: Thu, 12 Feb 2015 17:22:26 -0000 Message-Id: <186eddfd80c2458aa69898b983d2bc9e@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [2/2] karaf git commit: [KARAF-3524] Features on conditionals are not installed [KARAF-3524] Features on conditionals are not installed Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/00743ee7 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/00743ee7 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/00743ee7 Branch: refs/heads/master Commit: 00743ee769b6b70e655834d16e236c0a818cceaf Parents: 8685407 Author: Guillaume Nodet Authored: Thu Feb 12 18:22:11 2015 +0100 Committer: Guillaume Nodet Committed: Thu Feb 12 18:22:11 2015 +0100 ---------------------------------------------------------------------- .../features/internal/region/Subsystem.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/00743ee7/features/core/src/main/java/org/apache/karaf/features/internal/region/Subsystem.java ---------------------------------------------------------------------- diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/region/Subsystem.java b/features/core/src/main/java/org/apache/karaf/features/internal/region/Subsystem.java index a958e8a..575bac7 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/region/Subsystem.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/region/Subsystem.java @@ -258,8 +258,12 @@ public class Subsystem extends ResourceImpl { @SuppressWarnings("InfiniteLoopStatement") public void build(Collection features) throws Exception { + doBuild(features, true); + } + + private void doBuild(Collection features, boolean mandatory) throws Exception { for (Subsystem child : children) { - child.build(features); + child.doBuild(features, true); } if (feature != null) { for (Dependency dep : feature.getDependencies()) { @@ -267,7 +271,18 @@ public class Subsystem extends ResourceImpl { while (!ss.isAcceptDependencies()) { ss = ss.getParent(); } - ss.requireFeature(dep.getName(), dep.getVersion(), !dep.isDependency()); + ss.requireFeature(dep.getName(), dep.getVersion(), mandatory && !dep.isDependency()); + } + for (Conditional cond : feature.getConditional()) { + Feature fcond = cond.asFeature(feature.getName(), feature.getVersion()); + String ssName = this.name + "#" + (fcond.hasVersion() ? fcond.getName() + "-" + fcond.getVersion() : fcond.getName()); + Subsystem fs = getChild(ssName); + if (fs == null) { + fs = new Subsystem(ssName, fcond, this); + fs.doBuild(features, false); + installable.add(fs); + children.add(fs); + } } } List processed = new ArrayList<>();