You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2015/11/27 09:43:41 UTC

karaf git commit: To fix KARAF-4082 added code to manage conditional statement in feature definition.

Repository: karaf
Updated Branches:
  refs/heads/master 4cc3268f8 -> db7791d17


To fix KARAF-4082 added code to manage conditional statement in feature definition.


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

Branch: refs/heads/master
Commit: db7791d176f32a34ef572fc0764d65c4441dfa09
Parents: 4cc3268
Author: ggerla <gi...@gmail.com>
Authored: Thu Nov 26 19:20:56 2015 +0100
Committer: ggerla <gi...@gmail.com>
Committed: Thu Nov 26 19:20:56 2015 +0100

----------------------------------------------------------------------
 .../tooling/features/AbstractFeatureMojo.java     | 15 +++++++++++++++
 .../tooling/features/AddToRepositoryMojo.java     | 18 ++++++++++++++++++
 2 files changed, 33 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/db7791d1/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AbstractFeatureMojo.java
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AbstractFeatureMojo.java b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AbstractFeatureMojo.java
index d80fd1d..93d823d 100644
--- a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AbstractFeatureMojo.java
+++ b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AbstractFeatureMojo.java
@@ -27,6 +27,8 @@ import java.util.Set;
 
 import org.apache.felix.utils.version.VersionRange;
 import org.apache.felix.utils.version.VersionTable;
+import org.apache.karaf.features.BundleInfo;
+import org.apache.karaf.features.Conditional;
 import org.apache.karaf.features.internal.model.Bundle;
 import org.apache.karaf.features.internal.model.ConfigFile;
 import org.apache.karaf.features.internal.model.Dependency;
@@ -70,6 +72,12 @@ public abstract class AbstractFeatureMojo extends MojoSupport {
     protected boolean skipNonMavenProtocols = true;
 
     /**
+     * Ignore the dependency flag on the bundles in the features XML
+     */
+    @Parameter(defaultValue = "false")
+    protected boolean ignoreDependencyFlag;
+    
+    /**
      * The start level exported when no explicit start level is set for a bundle
      */
     @Parameter
@@ -241,6 +249,13 @@ public abstract class AbstractFeatureMojo extends MojoSupport {
                     for (Bundle bundle : feature.getBundle()) {
                         resolveArtifact(bundle.getLocation());
                     }
+                    for (Conditional conditional : feature.getConditional()) {
+                        for (BundleInfo bundle : conditional.getBundles()) {
+                            if (ignoreDependencyFlag || (!ignoreDependencyFlag && !bundle.isDependency())) {
+                                resolveArtifact(bundle.getLocation());
+                            }
+                        }
+                    }
                     for (ConfigFile configfile : feature.getConfigfile()) {
                         resolveArtifact(configfile.getLocation());
                     }

http://git-wip-us.apache.org/repos/asf/karaf/blob/db7791d1/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AddToRepositoryMojo.java
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AddToRepositoryMojo.java b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AddToRepositoryMojo.java
index cf59ce0..cee39bb 100644
--- a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AddToRepositoryMojo.java
+++ b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AddToRepositoryMojo.java
@@ -21,6 +21,8 @@ import java.io.File;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.karaf.features.BundleInfo;
+import org.apache.karaf.features.Conditional;
 import org.apache.karaf.features.internal.model.Bundle;
 import org.apache.karaf.features.internal.model.ConfigFile;
 import org.apache.karaf.features.internal.model.Feature;
@@ -61,6 +63,9 @@ public class AddToRepositoryMojo extends AbstractFeatureMojo {
 
         for (Feature feature : featuresSet) {
             copyBundlesToDestRepository(feature.getBundle());
+            for(Conditional conditional : feature.getConditional()) {
+                copyBundlesConditionalToDestRepository(conditional.getBundles());
+            }
             copyConfigFilesToDestRepository(feature.getConfigfile());
         }
         
@@ -68,6 +73,19 @@ public class AddToRepositoryMojo extends AbstractFeatureMojo {
         
     }
 
+    private void copyBundlesConditionalToDestRepository(List<? extends BundleInfo> artifactRefsConditional) throws MojoExecutionException {
+        for (BundleInfo artifactRef : artifactRefsConditional) {
+            if (ignoreDependencyFlag || (!ignoreDependencyFlag && !artifactRef.isDependency())) {
+                Artifact artifact = resourceToArtifact(artifactRef.getLocation(), skipNonMavenProtocols);
+                // Avoid getting NPE on artifact.getFile in some cases 
+                resolveArtifact(artifact, remoteRepos);
+                if (artifact != null) {
+                    copy(artifact, repository);
+                }
+            }
+        }
+    }
+    
     private void copyBundlesToDestRepository(List<? extends Bundle> artifactRefs) throws MojoExecutionException {
         for (Bundle artifactRef : artifactRefs) {
             Artifact artifact = resourceToArtifact(artifactRef.getLocation(), skipNonMavenProtocols);