You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2015/04/14 18:28:29 UTC

karaf git commit: [KARAF-3666] Simplify Conditional#asFeature to have no arguments

Repository: karaf
Updated Branches:
  refs/heads/master 0397cac32 -> eb4970d02


[KARAF-3666] Simplify Conditional#asFeature to have no arguments


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/eb4970d0
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/eb4970d0
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/eb4970d0

Branch: refs/heads/master
Commit: eb4970d0267e0000a2c47f3f7e833e3ec8be00a4
Parents: 0397cac
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Tue Apr 14 18:16:16 2015 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Tue Apr 14 18:28:04 2015 +0200

----------------------------------------------------------------------
 .../features/command/InfoFeatureCommand.java     |  2 +-
 .../org/apache/karaf/features/Conditional.java   |  2 +-
 .../features/internal/model/Conditional.java     | 19 ++++++++++++++++++-
 .../karaf/features/internal/model/Feature.java   |  7 +++++++
 .../karaf/features/internal/model/Features.java  |  7 +++++++
 .../karaf/features/internal/model/JaxbUtil.java  | 13 ++++++-------
 .../features/internal/region/Subsystem.java      |  2 +-
 .../internal/resolver/FeatureResource.java       |  2 +-
 .../features/internal/service/Deployer.java      |  2 +-
 9 files changed, 43 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/eb4970d0/features/command/src/main/java/org/apache/karaf/features/command/InfoFeatureCommand.java
----------------------------------------------------------------------
diff --git a/features/command/src/main/java/org/apache/karaf/features/command/InfoFeatureCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/InfoFeatureCommand.java
index 32d4ed4..c309571 100644
--- a/features/command/src/main/java/org/apache/karaf/features/command/InfoFeatureCommand.java
+++ b/features/command/src/main/java/org/apache/karaf/features/command/InfoFeatureCommand.java
@@ -268,7 +268,7 @@ public class InfoFeatureCommand extends FeaturesCommandSupport {
             System.out.println("Feature contains followed conditionals:");
             for (Conditional featureConditional : conditionals) {
                 String conditionDescription = getConditionDescription(featureConditional);
-                Feature wrappedConditional = featureConditional.asFeature(feature.getName(), feature.getVersion());
+                Feature wrappedConditional = featureConditional.asFeature();
                 if (config) {
                     displayConfigInformation(wrappedConditional, String.format(CONDITIONAL_CONTENT, conditionDescription));
                     displayConfigFileInformation(wrappedConditional, String.format(CONDITIONAL_CONTENT, conditionDescription));

http://git-wip-us.apache.org/repos/asf/karaf/blob/eb4970d0/features/core/src/main/java/org/apache/karaf/features/Conditional.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/Conditional.java b/features/core/src/main/java/org/apache/karaf/features/Conditional.java
index 7cfb36f..adcf812 100644
--- a/features/core/src/main/java/org/apache/karaf/features/Conditional.java
+++ b/features/core/src/main/java/org/apache/karaf/features/Conditional.java
@@ -32,5 +32,5 @@ public interface Conditional {
 
     List<ConfigFileInfo> getConfigurationFiles();
 
-    Feature asFeature(String name, String version);
+    Feature asFeature();
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/eb4970d0/features/core/src/main/java/org/apache/karaf/features/internal/model/Conditional.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/model/Conditional.java b/features/core/src/main/java/org/apache/karaf/features/internal/model/Conditional.java
index ae309e5..a2fea40 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/model/Conditional.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/model/Conditional.java
@@ -22,6 +22,7 @@ import java.util.List;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.karaf.features.Feature;
@@ -39,6 +40,17 @@ public class Conditional extends Content implements org.apache.karaf.features.Co
     @XmlElement(name = "condition")
     protected List<String> condition;
 
+    @XmlTransient
+    protected Feature owner;
+
+    public Feature getOwner() {
+        return owner;
+    }
+
+    public void setOwner(Feature owner) {
+        this.owner = owner;
+    }
+
     public List<String> getCondition() {
         if (condition == null) {
             this.condition = new ArrayList<>();
@@ -47,7 +59,12 @@ public class Conditional extends Content implements org.apache.karaf.features.Co
     }
 
     @Override
-    public Feature asFeature(String name, String version) {
+    public Feature asFeature() {
+        if (owner == null) {
+            throw new IllegalStateException("No owner set for conditional");
+        }
+        String name = owner.getName();
+        String version = owner.getVersion();
         String conditionName = name + "-condition-" + getConditionId().replaceAll("[^A-Za-z0-9 ]", "_");
         org.apache.karaf.features.internal.model.Feature f = new org.apache.karaf.features.internal.model.Feature(conditionName, version);
         f.getBundle().addAll(getBundle());

http://git-wip-us.apache.org/repos/asf/karaf/blob/eb4970d0/features/core/src/main/java/org/apache/karaf/features/internal/model/Feature.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/model/Feature.java b/features/core/src/main/java/org/apache/karaf/features/internal/model/Feature.java
index 64ad376..90c9530 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/model/Feature.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/model/Feature.java
@@ -379,4 +379,11 @@ public class Feature extends Content implements org.apache.karaf.features.Featur
         return this.library;
     }
 
+    public void postUnmarshall() {
+        if (conditional != null) {
+            for (Conditional c : conditional) {
+                c.setOwner(this);
+            }
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/eb4970d0/features/core/src/main/java/org/apache/karaf/features/internal/model/Features.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/model/Features.java b/features/core/src/main/java/org/apache/karaf/features/internal/model/Features.java
index ff2e3dc..66d8d2f 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/model/Features.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/model/Features.java
@@ -136,4 +136,11 @@ public class Features {
         this.name = value;
     }
 
+    public void postUnmarshall() {
+        if (feature != null) {
+            for (Feature f : feature) {
+                f.postUnmarshall();
+            }
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/eb4970d0/features/core/src/main/java/org/apache/karaf/features/internal/model/JaxbUtil.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/model/JaxbUtil.java b/features/core/src/main/java/org/apache/karaf/features/internal/model/JaxbUtil.java
index e5ca6c0..a42c734 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/model/JaxbUtil.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/model/JaxbUtil.java
@@ -92,19 +92,18 @@ public final class JaxbUtil {
      * @return a Features read from the input stream
      */
     public static Features unmarshal(String uri, boolean validate) {
-        if (validate) {
-            return unmarshalValidate(uri, null);
-        } else {
-            return unmarshalNoValidate(uri, null);
-        }
+        return unmarshal(uri, null, validate);
     }
 
     public static Features unmarshal(String uri, InputStream stream, boolean validate) {
+        Features features;
         if (validate) {
-            return unmarshalValidate(uri, stream);
+            features = unmarshalValidate(uri, stream);
         } else {
-            return unmarshalNoValidate(uri, stream);
+            features = unmarshalNoValidate(uri, stream);
         }
+        features.postUnmarshall();
+        return features;
     }
 
     private static Features unmarshalValidate(String uri, InputStream stream) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/eb4970d0/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 18a8f14..71a22d3 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
@@ -275,7 +275,7 @@ public class Subsystem extends ResourceImpl {
                 ss.requireFeature(dep.getName(), dep.getVersion(), mandatory && !dep.isDependency());
             }
             for (Conditional cond : feature.getConditional()) {
-                Feature fcond = cond.asFeature(feature.getName(), feature.getVersion());
+                Feature fcond = cond.asFeature();
                 String ssName = this.name + "#" + (fcond.hasVersion() ? fcond.getName() + "-" + fcond.getVersion() : fcond.getName());
                 Subsystem fs = getChild(ssName);
                 if (fs == null) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/eb4970d0/features/core/src/main/java/org/apache/karaf/features/internal/resolver/FeatureResource.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/resolver/FeatureResource.java b/features/core/src/main/java/org/apache/karaf/features/internal/resolver/FeatureResource.java
index d7c7cf8..6e1a164 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/resolver/FeatureResource.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/resolver/FeatureResource.java
@@ -46,7 +46,7 @@ public final class FeatureResource extends ResourceImpl {
     }
 
     public static FeatureResource build(Feature feature, Conditional conditional, String featureRange, Map<String, ? extends Resource> locToRes) throws BundleException {
-        Feature fcond = conditional.asFeature(feature.getName(), feature.getVersion());
+        Feature fcond = conditional.asFeature();
         FeatureResource resource = build(fcond, featureRange, locToRes);
         for (String cond : conditional.getCondition()) {
             if (cond.startsWith("req:")) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/eb4970d0/features/core/src/main/java/org/apache/karaf/features/internal/service/Deployer.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/Deployer.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/Deployer.java
index e759e56..37c276c 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/service/Deployer.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/Deployer.java
@@ -767,7 +767,7 @@ public class Deployer {
                     callback.installFeature(feature);
                 }
                 for (Conditional cond : feature.getConditional()) {
-                    Feature condFeature = cond.asFeature(feature.getName(), feature.getVersion());
+                    Feature condFeature = cond.asFeature();
                     if (featureIds.contains(condFeature.getId())) {
                         callback.installFeature(condFeature);
                     }