X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.osgiboot%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fosgiboot%2FOsgiBoot.java;h=73b817ab2f3014e581152db1d56782e054ca7e00;hb=747ed8fc0f215e55f8aa7921f6fc7c46edd53237;hp=fdcb77df07abfb513572dce2165b32e55886414c;hpb=7274972217cf5bb6772e8833c5723a5f9544ddb5;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.osgiboot/src/main/java/org/argeo/slc/osgiboot/OsgiBoot.java b/runtime/org.argeo.slc.osgiboot/src/main/java/org/argeo/slc/osgiboot/OsgiBoot.java index fdcb77df0..73b817ab2 100644 --- a/runtime/org.argeo.slc.osgiboot/src/main/java/org/argeo/slc/osgiboot/OsgiBoot.java +++ b/runtime/org.argeo.slc.osgiboot/src/main/java/org/argeo/slc/osgiboot/OsgiBoot.java @@ -23,10 +23,13 @@ public class OsgiBoot { public final static String PROP_SLC_OSGIBOOT_DEBUG = "slc.osgiboot.debug"; public final static String DEFAULT_BASE_URL = "reference:file:"; + public final static String EXCLUDES_SVN_PATTERN = "**/.svn/**"; private Boolean debug = Boolean.parseBoolean(System.getProperty( PROP_SLC_OSGIBOOT_DEBUG, "false")); + private boolean excludeSvn = true; + private final BundleContext bundleContext; public OsgiBoot(BundleContext bundleContext) { @@ -62,14 +65,26 @@ public class OsgiBoot { startBundles(bundlesToStart); } - public void startBundles(String bundlesToStart) throws Exception { - if (bundlesToStart == null) + public void startBundles(String bundlesToStartStr) throws Exception { + if (bundlesToStartStr == null) return; - StringTokenizer st = new StringTokenizer(bundlesToStart, ","); - Map bundles = getBundles(); + StringTokenizer st = new StringTokenizer(bundlesToStartStr, ","); + List bundlesToStart = new ArrayList(); while (st.hasMoreTokens()) { String name = st.nextToken().trim(); + bundlesToStart.add(name); + } + startBundles(bundlesToStart); + } + + public void startBundles(List bundlesToStart) throws Exception { + if (bundlesToStart.size() == 0) + return; + + Map bundles = getBundles(); + for (int i = 0; i < bundlesToStart.size(); i++) { + String name = bundlesToStart.get(i).toString(); Bundle bundle = bundles.get(name); if (bundle != null) try { @@ -115,6 +130,8 @@ public class OsgiBoot { return urls; bundleLocations = SystemPropertyUtils .resolvePlaceholders(bundleLocations); + if (debug) + debug(PROP_SLC_OSGI_LOCATIONS + "=" + bundleLocations); StringTokenizer st = new StringTokenizer(bundleLocations, File.pathSeparator); @@ -136,8 +153,11 @@ public class OsgiBoot { List bundlesSets = new ArrayList(); if (bundlePatterns == null) return urls; - // TODO: resolve placeholders - info(PROP_SLC_OSGI_BUNDLES + "=" + bundlePatterns); + bundlePatterns = SystemPropertyUtils + .resolvePlaceholders(bundlePatterns); + if (debug) + debug(PROP_SLC_OSGI_BUNDLES + "=" + bundlePatterns + + " (excludeSvn=" + excludeSvn + ")"); StringTokenizer st = new StringTokenizer(bundlePatterns, ","); while (st.hasMoreTokens()) { @@ -213,7 +233,7 @@ public class OsgiBoot { } } } else { - warn("Not a directory: " + newFullPath); + //warn("Not a directory: " + newFullPath); } } } @@ -266,7 +286,16 @@ public class OsgiBoot { return bundleContext; } - private class BundlesSet { + /** Whether to exclude Subversion directories (true by default) */ + public boolean isExcludeSvn() { + return excludeSvn; + } + + public void setExcludeSvn(boolean excludeSvn) { + this.excludeSvn = excludeSvn; + } + + protected class BundlesSet { private String baseUrl = "reference:file";// not used yet private final String dir; private List includes = new ArrayList(); @@ -302,6 +331,10 @@ public class OsgiBoot { System.err.println("Unkown bundles pattern type " + type); } } + + if (excludeSvn && !excludes.contains(EXCLUDES_SVN_PATTERN)) { + excludes.add(EXCLUDES_SVN_PATTERN); + } } public String getDir() {