[KARAF-3404] Change profilesDirectory to profilesUri and make sure we can 
support wrapper file system such as zip or custom ones.


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

Branch: refs/heads/master
Commit: 4694e73c3259d5e0eb881bff58561de0ae9ae826
Parents: e5ea0d7
Author: Guillaume Nodet <gno...@gmail.com>
Authored: Fri Jan 9 11:08:18 2015 +0100
Committer: Guillaume Nodet <gno...@gmail.com>
Committed: Mon Jan 12 09:33:45 2015 +0100

----------------------------------------------------------------------
 demos/profiles/dynamic/pom.xml                  |  6 +++---
 demos/profiles/static/pom.xml                   |  6 +++---
 .../org/apache/karaf/profile/impl/Profiles.java |  6 +++++-
 .../karaf/tooling/features/InstallKarsMojo.java | 21 ++++++++++++++++----
 4 files changed, 28 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/4694e73c/demos/profiles/dynamic/pom.xml
----------------------------------------------------------------------
diff --git a/demos/profiles/dynamic/pom.xml b/demos/profiles/dynamic/pom.xml
index b3a1cd1..87990c7 100644
--- a/demos/profiles/dynamic/pom.xml
+++ b/demos/profiles/dynamic/pom.xml
@@ -111,9 +111,9 @@
                         
org.apache.karaf.demo.profiles:org.apache.karaf.demo.profiles.registry
                     </profilesArtifact>
                     -->
-                    <profilesDirectory>
-                        ${basedir}/../registry/src/main/resources
-                    </profilesDirectory>
+                    <profilesUri>
+                        file://${basedir}/../registry/src/main/resources
+                    </profilesUri>
                     <bootFeatures>
                         <feature>deployer</feature>
                     </bootFeatures>

http://git-wip-us.apache.org/repos/asf/karaf/blob/4694e73c/demos/profiles/static/pom.xml
----------------------------------------------------------------------
diff --git a/demos/profiles/static/pom.xml b/demos/profiles/static/pom.xml
index 098359a..c758eb2 100644
--- a/demos/profiles/static/pom.xml
+++ b/demos/profiles/static/pom.xml
@@ -126,9 +126,9 @@
                         
org.apache.karaf.demo.profiles:org.apache.karaf.demo.profiles.registry
                     </profilesArtifact>
                     -->
-                    <profilesDirectory>
-                        ${basedir}/../registry/src/main/resources
-                    </profilesDirectory>
+                    <profilesUri>
+                        file://${basedir}/../registry/src/main/resources
+                    </profilesUri>
                     <startupRepositories>
                         
<repository>${project.build.outputDirectory}/features.xml</repository>
                     </startupRepositories>

http://git-wip-us.apache.org/repos/asf/karaf/blob/4694e73c/profile/src/main/java/org/apache/karaf/profile/impl/Profiles.java
----------------------------------------------------------------------
diff --git a/profile/src/main/java/org/apache/karaf/profile/impl/Profiles.java 
b/profile/src/main/java/org/apache/karaf/profile/impl/Profiles.java
index 7f8d483..32232da 100644
--- a/profile/src/main/java/org/apache/karaf/profile/impl/Profiles.java
+++ b/profile/src/main/java/org/apache/karaf/profile/impl/Profiles.java
@@ -53,8 +53,12 @@ public final class Profiles {
                 @Override
                 public FileVisitResult preVisitDirectory(Path dir, 
BasicFileAttributes attrs) throws IOException {
                     Path fileName = dir.getFileName();
-                    if (fileName != null && 
fileName.toString().endsWith(PROFILE_FOLDER_SUFFIX)) {
+                    if (fileName != null && 
(fileName.toString().endsWith(PROFILE_FOLDER_SUFFIX)
+                            || 
fileName.toString().endsWith(PROFILE_FOLDER_SUFFIX + "/"))) {
                         String profileId = root.relativize(dir).toString();
+                        if (profileId.endsWith("/")) {
+                            profileId = profileId.substring(0, 
profileId.length() - 1);
+                        }
                         profileId = 
profileId.replaceAll(root.getFileSystem().getSeparator(), "-");
                         profileId = profileId.substring(0, profileId.length() 
- PROFILE_FOLDER_SUFFIX.length());
                         builder = ProfileBuilder.Factory.create(profileId);

http://git-wip-us.apache.org/repos/asf/karaf/blob/4694e73c/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java
----------------------------------------------------------------------
diff --git 
a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java
 
b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java
index 363539d..332ff2a 100644
--- 
a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java
+++ 
b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java
@@ -23,8 +23,12 @@ import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.net.URI;
 import java.net.URL;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystemNotFoundException;
+import java.nio.file.FileSystems;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.nio.file.StandardCopyOption;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -138,7 +142,7 @@ public class InstallKarsMojo extends MojoSupport {
     private List<String> installedBundles;
     
     @Parameter
-    private File profilesDirectory;
+    private String profilesUri;
 
     @Parameter
     private List<String> bootProfiles;
@@ -220,7 +224,7 @@ public class InstallKarsMojo extends MojoSupport {
         installedProfiles = nonNullList(installedProfiles);
 
         if (!startupProfiles.isEmpty() || !bootProfiles.isEmpty() || 
!installedProfiles.isEmpty()) {
-            if (profilesDirectory == null) {
+            if (profilesUri == null) {
                 throw new IllegalArgumentException("profilesDirectory must be 
specified");
             }
         }
@@ -296,8 +300,17 @@ public class InstallKarsMojo extends MojoSupport {
 
         // Load profiles
         Map<String, Profile> allProfiles;
-        if (profilesDirectory != null) {
-            allProfiles = Profiles.loadProfiles(profilesDirectory.toPath());
+        if (profilesUri != null) {
+            URI profileURI = URI.create(profilesUri);
+            Path profilePath;
+            try {
+                profilePath = Paths.get(profileURI);
+            } catch (FileSystemNotFoundException e) {
+                // file system does not exist, try to create it
+                FileSystem fs = FileSystems.newFileSystem(profileURI, new 
HashMap<String, Object>(), InstallKarsMojo.class.getClassLoader());
+                profilePath = fs.provider().getPath(profileURI);
+            }
+            allProfiles = Profiles.loadProfiles(profilePath);
         } else {
             allProfiles = new HashMap<>();
         }

Reply via email to