Repository: karaf
Updated Branches:
  refs/heads/master 89481c296 -> bbe54b867


[KARAF-3085] Refactoring of the FeatureFinder to leverage Pax URL and use 
regular mvn URLs


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

Branch: refs/heads/master
Commit: bbe54b867d93171d2e350bee3dfaea00af8fd4d2
Parents: 89481c2
Author: Jean-Baptiste Onofré <[email protected]>
Authored: Tue Jul 22 11:30:10 2014 +0200
Committer: Jean-Baptiste Onofré <[email protected]>
Committed: Tue Jul 22 11:30:10 2014 +0200

----------------------------------------------------------------------
 .../etc/org.apache.karaf.features.repos.cfg     | 26 ++++++++++----------
 .../karaf/features/command/RepoAddCommand.java  |  3 +--
 .../internal/service/FeatureFinder.java         | 25 +++++++++++++++----
 3 files changed, 34 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/bbe54b86/assemblies/features/framework/src/main/resources/resources/etc/org.apache.karaf.features.repos.cfg
----------------------------------------------------------------------
diff --git 
a/assemblies/features/framework/src/main/resources/resources/etc/org.apache.karaf.features.repos.cfg
 
b/assemblies/features/framework/src/main/resources/resources/etc/org.apache.karaf.features.repos.cfg
index 97ef776..8b94ce2 100644
--- 
a/assemblies/features/framework/src/main/resources/resources/etc/org.apache.karaf.features.repos.cfg
+++ 
b/assemblies/features/framework/src/main/resources/resources/etc/org.apache.karaf.features.repos.cfg
@@ -21,16 +21,16 @@
 # This file describes the features repository URL
 # It could be directly installed using feature:repo-add command
 #
-
-enterprise   = 
mvn:org.apache.karaf.features/enterprise/$\\\{version}/xml/features
-cellar       = 
mvn:org.apache.karaf.cellar/apache-karaf-cellar/$\\\{version}/xml/features
-camel        = 
mvn:org.apache.camel.karaf/apache-camel/$\\\{version}/xml/features
-camel-extras = 
mvn:org.apache-extras.camel-extra.karaf/camel-extra/$\\\{version}/xml/features
-cxf          = mvn:org.apache.cxf.karaf/apache-cxf/$\\\{version}/xml/features
-cxf-dosgi    = mvn:org.apache.cxf.dosgi/cxf-dosgi/$\\\{version}/xml/features
-activemq     = 
mvn:org.apache.activemq/activemq-karaf/$\\\{version}/xml/features
-jclouds      = mvn:org.jclouds.karaf/jclouds-karaf/$\\\{version}/xml/features
-openejb      = 
mvn:org.apache.openejb/openejb-feature/$\\\{version}/xml/features
-wicket       = mvn:org.ops4j.pax.wicket/features/$\\\{version}/xml/features
-hawtio       = mvn:io.hawt/hawtio-karaf/$\\\{version}/xml/features
-ecf          = 
http://download.eclipse.org/rt/ecf/latest/site.p2/karaf-features.xml
+enterprise=mvn:org.apache.karaf.features/enterprise/LATEST/xml/features
+cellar=mvn:org.apache.karaf.cellar/apache-karaf-cellar/LATEST/xml/features
+cave=mvn:org.apache.karaf.cave/apache-karaf-cave/LATEST/xml/features
+camel=mvn:org.apache.camel.karaf/apache-camel/LATEST/xml/features
+camel-extras=mvn:org.apache-extras.camel-extra.karaf/camel-extra/LATEST/xml/features
+cxf=mvn:org.apache.cxf.karaf/apache-cxf/LATEST/xml/features
+cxf-dosgi=mvn:org.apache.cxf.dosgi/cxf-dosgi/LATEST/xml/features
+activemq=mvn:org.apache.activemq/activemq-karaf/LATEST/xml/features
+jclouds=mvn:org.jclouds.karaf/jclouds-karaf/LATEST/xml/features
+openejb=mvn:org.apache.openejb/openejb-feature/LATEST/xml/features
+wicket=mvn:org.ops4j.pax.wicket/features/LATEST/xml/features
+hawtio=mvn:io.hawt/hawtio-karaf/LATEST/xml/features
+ecf=http://download.eclipse.org/rt/ecf/latest/site.p2/karaf-features.xml

http://git-wip-us.apache.org/repos/asf/karaf/blob/bbe54b86/features/command/src/main/java/org/apache/karaf/features/command/RepoAddCommand.java
----------------------------------------------------------------------
diff --git 
a/features/command/src/main/java/org/apache/karaf/features/command/RepoAddCommand.java
 
b/features/command/src/main/java/org/apache/karaf/features/command/RepoAddCommand.java
index 16faf42..4771053 100644
--- 
a/features/command/src/main/java/org/apache/karaf/features/command/RepoAddCommand.java
+++ 
b/features/command/src/main/java/org/apache/karaf/features/command/RepoAddCommand.java
@@ -42,8 +42,7 @@ public class RepoAddCommand extends FeaturesCommandSupport {
 
     @Override
     protected void doExecute(FeaturesService featuresService) throws Exception 
{
-        String effectiveVersion = (version == null) ? "LATEST" : version;
-        URI uri = featuresService.getRepositoryUriFor(nameOrUrl, 
effectiveVersion);
+        URI uri = featuresService.getRepositoryUriFor(nameOrUrl, version);
         if (uri == null) {
             uri = new URI(nameOrUrl);
         }

http://git-wip-us.apache.org/repos/asf/karaf/blob/bbe54b86/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureFinder.java
----------------------------------------------------------------------
diff --git 
a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureFinder.java
 
b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureFinder.java
index 8348ac0..2ee08e7 100644
--- 
a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureFinder.java
+++ 
b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureFinder.java
@@ -46,11 +46,11 @@ public class FeatureFinder implements ManagedService {
         if (url == null) {
             return null;
         }
-        Map<String, String> map = new HashMap<>();
-        map.put("url", url);
-        map.put("version", version);
-        InterpolationHelper.performSubstitution(map);
-        return URI.create(map.get("url"));
+        if (version != null) {
+            // replace the version in the URL with the provided one
+            url = FeatureFinder.replaceVersion(url, version);
+        }
+        return URI.create(url);
     }
 
     @SuppressWarnings("rawtypes")
@@ -69,4 +69,19 @@ public class FeatureFinder implements ManagedService {
         }
     }
 
+    private static String replaceVersion(String url, String version) {
+        if (url.startsWith("mvn:")) {
+            // mvn:groupId/artifactId/version...
+            int index = url.indexOf('/');
+            index = url.indexOf('/', index + 1);
+
+            String first = url.substring(0, index);
+            index = url.indexOf('/', index + 1);
+            String second = url.substring(index + 1);
+
+            return first + "/" + version + "/" + second;
+        }
+        return url;
+    }
+
 }

Reply via email to