You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ja...@apache.org on 2014/03/06 04:52:44 UTC

git commit: KARAF-2808 - Child containers should be able to have additional libs on the classpath

Repository: karaf
Updated Branches:
  refs/heads/karaf-2.x 2eb81bb4d -> 8aab16946


KARAF-2808 - Child containers should be able to have additional libs on the classpath


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

Branch: refs/heads/karaf-2.x
Commit: 8aab169462373172951065cb8b30d6723653b54d
Parents: 2eb81bb
Author: Jonathan Anstey <ja...@gmail.com>
Authored: Thu Mar 6 00:21:00 2014 -0330
Committer: Jonathan Anstey <ja...@gmail.com>
Committed: Thu Mar 6 00:21:00 2014 -0330

----------------------------------------------------------------------
 .../karaf/admin/internal/AdminServiceImpl.java  | 43 +++++++++++++-------
 1 file changed, 29 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/8aab1694/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
----------------------------------------------------------------------
diff --git a/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java b/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
index 6612a2b..845f699 100644
--- a/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
+++ b/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
@@ -394,21 +394,18 @@ public class AdminServiceImpl implements AdminService {
                     opts = DEFAULT_JAVA_OPTS;
                 }
                 String karafOpts = System.getProperty("karaf.opts", "");
-
-                File libDir = new File(System.getProperty("karaf.home"), "lib");
-                File[] jars = libDir.listFiles(new FilenameFilter() {
-                    public boolean accept(File dir, String name) {
-                        return name.endsWith(".jar");
-                    }
-                });
-                StringBuilder classpath = new StringBuilder();
-                for (File jar : jars) {
-                    if (classpath.length() > 0) {
-                        classpath.append(System.getProperty("path.separator"));
-                    }
-                    classpath.append(jar.getCanonicalPath());
-                }
                 String location = instance.loc;
+                
+                File libDir = new File(System.getProperty("karaf.home"), "lib");
+                File childLibDir = new File(location, "lib");
+                
+                StringBuilder classpath = classpathFromLibDir(libDir);
+                StringBuilder childClasspath = classpathFromLibDir(childLibDir);
+                if (childClasspath.length() > 0 && !libDir.equals(childLibDir)) {
+                    classpath.append(System.getProperty("path.separator"));
+                    classpath.append(childClasspath);
+                }                                
+
                 String command = "\""
                         + new File(System.getProperty("java.home"), ScriptUtils.isWindows() ? "bin\\java.exe" : "bin/java").getCanonicalPath()
                         + "\" " + opts
@@ -432,6 +429,24 @@ public class AdminServiceImpl implements AdminService {
                 instance.pid = process.getPid();
                 return null;
             }
+
+            private StringBuilder classpathFromLibDir(File libDir) throws IOException {
+                File[] jars = libDir.listFiles(new FilenameFilter() {
+                    public boolean accept(File dir, String name) {
+                        return name.endsWith(".jar");
+                    }
+                });
+                StringBuilder classpath = new StringBuilder();
+                if (jars != null) {
+                    for (File jar : jars) {
+                        if (classpath.length() > 0) {
+                            classpath.append(System.getProperty("path.separator"));
+                        }
+                        classpath.append(jar.getCanonicalPath());
+                    }
+                }
+                return classpath;
+            }
         });
     }