From d28ceea9dd8b82f6808cf93d088f5e43423949a1 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sun, 25 Oct 2015 16:37:17 +0000 Subject: [PATCH] OSGi Boot: remove deprecated methods and adapt to Java 7 git-svn-id: https://svn.argeo.org/commons/trunk@8525 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../argeo/osgi/boot/OsgiBootRuntimeTest.java | 29 +- .../argeo/osgi/boot/DistributionBundle.java | 4 +- .../src/org/argeo/osgi/boot/Launcher.java | 9 +- .../src/org/argeo/osgi/boot/OsgiBoot.java | 409 +++++++++--------- .../org/argeo/osgi/boot/OsgiBootUtils.java | 5 +- 5 files changed, 226 insertions(+), 230 deletions(-) diff --git a/org.argeo.osgi.boot/ext/test/org/argeo/osgi/boot/OsgiBootRuntimeTest.java b/org.argeo.osgi.boot/ext/test/org/argeo/osgi/boot/OsgiBootRuntimeTest.java index 7596c56a3..a165c4ee5 100644 --- a/org.argeo.osgi.boot/ext/test/org/argeo/osgi/boot/OsgiBootRuntimeTest.java +++ b/org.argeo.osgi.boot/ext/test/org/argeo/osgi/boot/OsgiBootRuntimeTest.java @@ -15,8 +15,10 @@ */ package org.argeo.osgi.boot; +import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.ServiceLoader; import java.util.TreeMap; import junit.framework.TestCase; @@ -24,9 +26,10 @@ import junit.framework.TestCase; import org.eclipse.core.runtime.adaptor.EclipseStarter; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; +import org.osgi.framework.launch.Framework; +import org.osgi.framework.launch.FrameworkFactory; /** Starts an Equinox runtime and provision it with OSGi boot. */ -@SuppressWarnings({ "unchecked", "rawtypes", "deprecation", "restriction" }) public class OsgiBootRuntimeTest extends TestCase { protected OsgiBoot osgiBoot = null; private boolean osgiRuntimeAlreadyRunning = false; @@ -39,25 +42,26 @@ public class OsgiBootRuntimeTest extends TestCase { } osgiBoot.installUrls(osgiBoot.getBundlesUrls(OsgiBoot.DEFAULT_BASE_URL, OsgiBootNoRuntimeTest.BUNDLES)); - Map map = new TreeMap(osgiBoot.getBundlesBySymbolicName()); - for (Iterator keys = map.keySet().iterator(); keys.hasNext();) { - Object key = keys.next(); - Bundle bundle = (Bundle) map.get(key); + Map map = new TreeMap( + osgiBoot.getBundlesBySymbolicName()); + for (Iterator keys = map.keySet().iterator(); keys.hasNext();) { + String key = keys.next(); + Bundle bundle = map.get(key); System.out.println(key + " : " + bundle.getLocation()); } assertEquals(4, map.size()); - Iterator keys = map.keySet().iterator(); + Iterator keys = map.keySet().iterator(); assertEquals("org.argeo.osgi.boot.test.bundle1", keys.next()); assertEquals("org.argeo.osgi.boot.test.bundle2", keys.next()); assertEquals("org.argeo.osgi.boot.test.bundle3", keys.next()); assertEquals("org.eclipse.osgi", keys.next()); - osgiBoot.startBundles("org.argeo.osgi.boot.test.bundle2"); + // osgiBoot.startBundles("org.argeo.osgi.boot.test.bundle2"); long begin = System.currentTimeMillis(); while (System.currentTimeMillis() - begin < 10000) { - Map mapBundles = osgiBoot.getBundlesBySymbolicName(); - Bundle bundle = (Bundle) mapBundles - .get("org.argeo.osgi.boot.test.bundle2"); + Map mapBundles = osgiBoot + .getBundlesBySymbolicName(); + Bundle bundle = mapBundles.get("org.argeo.osgi.boot.test.bundle2"); if (bundle.getState() == Bundle.ACTIVE) { System.out.println("Bundle " + bundle + " started."); return; @@ -69,6 +73,11 @@ public class OsgiBootRuntimeTest extends TestCase { protected BundleContext startRuntime() throws Exception { String[] args = { "-console", "-clean" }; BundleContext bundleContext = EclipseStarter.startup(args, null); + +// ServiceLoader ff = ServiceLoader.load(FrameworkFactory.class); +// Map config = new HashMap(); +// Framework fwk = ff.iterator().next().newFramework(config); +// fwk.start(); return bundleContext; } diff --git a/org.argeo.osgi.boot/src/org/argeo/osgi/boot/DistributionBundle.java b/org.argeo.osgi.boot/src/org/argeo/osgi/boot/DistributionBundle.java index 340472558..b9749033c 100644 --- a/org.argeo.osgi.boot/src/org/argeo/osgi/boot/DistributionBundle.java +++ b/org.argeo.osgi.boot/src/org/argeo/osgi/boot/DistributionBundle.java @@ -156,10 +156,10 @@ public class DistributionBundle { } /** - * List full URLs of the bunmdles, based on base URL, usable directly for + * List full URLs of the bundles, based on base URL, usable directly for * download. */ - public List/* */listUrls() { + public List listUrls() { if (baseUrl == null) throw new OsgiBootException("Base URL is not set"); diff --git a/org.argeo.osgi.boot/src/org/argeo/osgi/boot/Launcher.java b/org.argeo.osgi.boot/src/org/argeo/osgi/boot/Launcher.java index ccba757d0..b13e066b8 100644 --- a/org.argeo.osgi.boot/src/org/argeo/osgi/boot/Launcher.java +++ b/org.argeo.osgi.boot/src/org/argeo/osgi/boot/Launcher.java @@ -18,14 +18,13 @@ package org.argeo.osgi.boot; import java.io.FileInputStream; import java.io.IOException; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.List; -import java.util.Vector; import org.eclipse.core.runtime.adaptor.EclipseStarter; import org.osgi.framework.BundleContext; /** Command line interface. */ -@SuppressWarnings({ "rawtypes", "unchecked", "restriction" }) public class Launcher { public static void main(String[] args) { @@ -80,8 +79,8 @@ public class Launcher { try { // Launch main method using reflection - Class clss = Class.forName(className); - Class[] mainArgsClasses = new Class[] { uiArgs.getClass() }; + Class clss = Class.forName(className); + Class[] mainArgsClasses = new Class[] { uiArgs.getClass() }; Object[] mainArgs = { uiArgs }; Method mainMethod = clss.getMethod("main", mainArgsClasses); mainMethod.invoke(null, mainArgs); @@ -97,7 +96,7 @@ public class Launcher { */ private static String[] readArgumentsFromLine(String lineOrig) { String line = lineOrig.trim();// remove trailing spaces - List args = new Vector(); + List args = new ArrayList(); StringBuffer curr = new StringBuffer(""); boolean inQuote = false; char[] arr = line.toCharArray(); diff --git a/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java b/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java index a072e69ce..aa120b1f2 100644 --- a/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java +++ b/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java @@ -15,11 +15,8 @@ */ package org.argeo.osgi.boot; -import java.io.BufferedReader; import java.io.File; import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -38,42 +35,39 @@ import org.argeo.osgi.boot.internal.springutil.SystemPropertyUtils; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.BundleException; -import org.osgi.framework.Constants; import org.osgi.framework.ServiceReference; import org.osgi.service.packageadmin.ExportedPackage; import org.osgi.service.packageadmin.PackageAdmin; /** * Basic provisioning of an OSGi runtime via file path patterns and system - * properties. Java 1.4 compatible.
- * The approach is to generate list of URLs based on various methods, configured - * via system properties. + * properties. The approach is to generate list of URLs based on various + * methods, configured via properties. */ -@SuppressWarnings({ "rawtypes", "unchecked", "deprecation" }) public class OsgiBoot { - public final static String SYMBOLIC_NAME_OSGI_BOOT = "org.argeo.osgi.boot"; - public final static String SYMBOLIC_NAME_EQUINOX = "org.eclipse.osgi"; - public final static String PROP_OSGI_STARTLEVEL = "osgi.startLevel"; public final static String PROP_OSGI_BUNDLES_DEFAULTSTARTLEVEL = "osgi.bundles.defaultStartLevel"; public final static String PROP_ARGEO_OSGI_DATA_DIR = "argeo.osgi.data.dir"; public final static String PROP_ARGEO_OSGI_START = "argeo.osgi.start"; public final static String PROP_ARGEO_OSGI_BUNDLES = "argeo.osgi.bundles"; - public final static String PROP_ARGEO_OSGI_LOCATIONS = "argeo.osgi.locations"; + // public final static String PROP_ARGEO_OSGI_LOCATIONS = + // "argeo.osgi.locations"; public final static String PROP_ARGEO_OSGI_BASE_URL = "argeo.osgi.baseUrl"; - /** @deprecated */ - public final static String PROP_ARGEO_OSGI_MODULES_URL = "argeo.osgi.modulesUrl"; + // public final static String PROP_ARGEO_OSGI_MODULES_URL = + // "argeo.osgi.modulesUrl"; public final static String PROP_ARGEO_OSGI_DISTRIBUTION_URL = "argeo.osgi.distributionUrl"; // booleans public final static String PROP_ARGEO_OSGI_BOOT_DEBUG = "argeo.osgi.boot.debug"; public final static String PROP_ARGEO_OSGI_BOOT_EXCLUDE_SVN = "argeo.osgi.boot.excludeSvn"; - public final static String PROP_ARGEO_OSGI_BOOT_INSTALL_IN_LEXICOGRAPHIC_ORDER = "argeo.osgi.boot.installInLexicographicOrder"; + // public final static String + // PROP_ARGEO_OSGI_BOOT_INSTALL_IN_LEXICOGRAPHIC_ORDER = + // "argeo.osgi.boot.installInLexicographicOrder"; public final static String PROP_ARGEO_OSGI_BOOT_DEFAULT_TIMEOUT = "argeo.osgi.boot.defaultTimeout"; - public final static String PROP_ARGEO_OSGI_BOOT_MODULES_URL_SEPARATOR = "argeo.osgi.boot.modulesUrlSeparator"; +// public final static String PROP_ARGEO_OSGI_BOOT_MODULES_URL_SEPARATOR = "argeo.osgi.boot.modulesUrlSeparator"; public final static String PROP_ARGEO_OSGI_BOOT_SYSTEM_PROPERTIES_FILE = "argeo.osgi.boot.systemPropertiesFile"; public final static String PROP_ARGEO_OSGI_BOOT_APPCLASS = "argeo.osgi.boot.appclass"; public final static String PROP_ARGEO_OSGI_BOOT_APPARGS = "argeo.osgi.boot.appargs"; @@ -82,9 +76,14 @@ public class OsgiBoot { public final static String EXCLUDES_SVN_PATTERN = "**/.svn/**"; // OSGi system properties + public final static String PROP_OSGI_STARTLEVEL = "osgi.startLevel"; public final static String INSTANCE_AREA_PROP = "osgi.instance.area"; public final static String INSTANCE_AREA_DEFAULT_PROP = "osgi.instance.area.default"; + // Symbolic names + public final static String SYMBOLIC_NAME_OSGI_BOOT = "org.argeo.osgi.boot"; + public final static String SYMBOLIC_NAME_EQUINOX = "org.eclipse.osgi"; + private boolean debug = Boolean.valueOf( System.getProperty(PROP_ARGEO_OSGI_BOOT_DEBUG, "false")) .booleanValue(); @@ -93,23 +92,11 @@ public class OsgiBoot { System.getProperty(PROP_ARGEO_OSGI_BOOT_EXCLUDE_SVN, "false")) .booleanValue(); - /** - * The {@link #installUrls(List)} methods won't follow the list order but - * order the urls according to the alphabetical order of the file names - * (last part of the URL). The goal is to stay closer from Eclipse PDE way - * of installing target platform bundles. - */ - private boolean installInLexicographicOrder = Boolean - .valueOf( - System.getProperty( - PROP_ARGEO_OSGI_BOOT_INSTALL_IN_LEXICOGRAPHIC_ORDER, - "true")).booleanValue();; - /** Default is 10s (set in constructor) */ private long defaultTimeout; /** Default is ',' (set in constructor) */ - private String modulesUrlSeparator = ","; +// private String modulesUrlSeparator = ","; private final BundleContext bundleContext; @@ -121,8 +108,8 @@ public class OsgiBoot { this.bundleContext = bundleContext; defaultTimeout = Long.parseLong(OsgiBootUtils.getProperty( PROP_ARGEO_OSGI_BOOT_DEFAULT_TIMEOUT, "10000")); - modulesUrlSeparator = OsgiBootUtils.getProperty( - PROP_ARGEO_OSGI_BOOT_MODULES_URL_SEPARATOR, ","); +// modulesUrlSeparator = OsgiBootUtils.getProperty( +// PROP_ARGEO_OSGI_BOOT_MODULES_URL_SEPARATOR, ","); initSystemProperties(); } @@ -163,8 +150,8 @@ public class OsgiBoot { + System.getProperty(PROP_ARGEO_OSGI_DATA_DIR) + " (set as system property " + PROP_ARGEO_OSGI_DATA_DIR + ")"); installUrls(getBundlesUrls()); - installUrls(getLocationsUrls()); - installUrls(getModulesUrls()); + // installUrls(getLocationsUrls()); + // installUrls(getModulesUrls()); installUrls(getDistributionUrls()); checkUnresolved(); startBundles(); @@ -175,15 +162,15 @@ public class OsgiBoot { // display packages exported twice if (debug) { - Map /* > */duplicatePackages = findPackagesExportedTwice(); + Map> duplicatePackages = findPackagesExportedTwice(); if (duplicatePackages.size() > 0) { OsgiBootUtils.info("Packages exported twice:"); - Iterator it = duplicatePackages.keySet().iterator(); + Iterator it = duplicatePackages.keySet().iterator(); while (it.hasNext()) { - String pkgName = it.next().toString(); + String pkgName = it.next(); OsgiBootUtils.info(pkgName); - Set bdles = (Set) duplicatePackages.get(pkgName); - Iterator bdlesIt = bdles.iterator(); + Set bdles = duplicatePackages.get(pkgName); + Iterator bdlesIt = bdles.iterator(); while (bdlesIt.hasNext()) OsgiBootUtils.info(" " + bdlesIt.next()); } @@ -198,48 +185,48 @@ public class OsgiBoot { */ /** Install a single url. Convenience method. */ public Bundle installUrl(String url) { - List urls = new ArrayList(); + List urls = new ArrayList(); urls.add(url); installUrls(urls); return (Bundle) getBundlesByLocation().get(url); } /** Install the bundles at this URL list. */ - public void installUrls(List urls) { - Map installedBundles = getBundlesByLocation(); - - if (installInLexicographicOrder) { - SortedMap map = new TreeMap(); - // reorder - for (int i = 0; i < urls.size(); i++) { - String url = (String) urls.get(i); - int index = url.lastIndexOf('/'); - String fileName; - if (index >= 0) - fileName = url.substring(index + 1); - else - fileName = url; - map.put(fileName, url); - } - - // install - Iterator keys = map.keySet().iterator(); - while (keys.hasNext()) { - Object key = keys.next(); - String url = map.get(key).toString(); - installUrl(url, installedBundles); - } - } else { - for (int i = 0; i < urls.size(); i++) { - String url = (String) urls.get(i); - installUrl(url, installedBundles); - } + public void installUrls(List urls) { + Map installedBundles = getBundlesByLocation(); + + // if (installInLexicographicOrder) { + // SortedMap map = new TreeMap(); + // // reorder + // for (int i = 0; i < urls.size(); i++) { + // String url = (String) urls.get(i); + // int index = url.lastIndexOf('/'); + // String fileName; + // if (index >= 0) + // fileName = url.substring(index + 1); + // else + // fileName = url; + // map.put(fileName, url); + // } + // + // // install + // Iterator keys = map.keySet().iterator(); + // while (keys.hasNext()) { + // Object key = keys.next(); + // String url = map.get(key).toString(); + // installUrl(url, installedBundles); + // } + // } else { + for (int i = 0; i < urls.size(); i++) { + String url = (String) urls.get(i); + installUrl(url, installedBundles); } + // } } /** Actually install the provided URL */ - protected void installUrl(String url, Map installedBundles) { + protected void installUrl(String url, Map installedBundles) { try { if (installedBundles.containsKey(url)) { Bundle bundle = (Bundle) installedBundles.get(url); @@ -279,14 +266,14 @@ public class OsgiBoot { Integer activeStartLevel = new Integer(OsgiBootUtils.getProperty( PROP_OSGI_STARTLEVEL, "6")); - SortedMap/* > */startLevels = new TreeMap(); + SortedMap> startLevels = new TreeMap>(); computeStartLevels(startLevels, System.getProperties(), defaultStartLevel); - Iterator/* */levels = startLevels.keySet().iterator(); + Iterator levels = startLevels.keySet().iterator(); while (levels.hasNext()) { Integer level = (Integer) levels.next(); - boolean allStarted = startBundles((List) startLevels.get(level)); + boolean allStarted = startBundles(startLevels.get(level)); if (!allStarted) OsgiBootUtils .warn("Not all bundles started for level " + level); @@ -297,7 +284,7 @@ public class OsgiBoot { } public static void computeStartLevels( - SortedMap/* > */startLevels, + SortedMap> startLevels, Properties properties, Integer defaultStartLevel) { // default (and previously, only behaviour) @@ -305,10 +292,10 @@ public class OsgiBoot { properties.getProperty(PROP_ARGEO_OSGI_START, "")); // list argeo.osgi.start.* system properties - Iterator/* */keys = properties.keySet().iterator(); + Iterator keys = properties.keySet().iterator(); final String prefix = PROP_ARGEO_OSGI_START + "."; while (keys.hasNext()) { - String key = (String) keys.next(); + String key = keys.next().toString(); if (key.startsWith(prefix)) { Integer startLevel; String suffix = key.substring(prefix.length()); @@ -332,17 +319,17 @@ public class OsgiBoot { /** Append a comma-separated list of bundles to the start levels. */ private static void appendToStartLevels( - SortedMap/* > */startLevels, - Integer startLevel, String str) { + SortedMap> startLevels, Integer startLevel, + String str) { if (str == null || str.trim().equals("")) return; if (!startLevels.containsKey(startLevel)) - startLevels.put(startLevel, new ArrayList()); + startLevels.put(startLevel, new ArrayList()); String[] bundleNames = str.split(","); for (int i = 0; i < bundleNames.length; i++) { if (bundleNames[i] != null && !bundleNames[i].trim().equals("")) - ((List) startLevels.get(startLevel)).add(bundleNames[i]); + (startLevels.get(startLevel)).add(bundleNames[i]); } } @@ -351,32 +338,32 @@ public class OsgiBoot { * * @deprecated */ - public void startBundles(String bundlesToStartStr) { - if (bundlesToStartStr == null) - return; - - 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(String bundlesToStartStr) { + // if (bundlesToStartStr == null) + // return; + // + // StringTokenizer st = new StringTokenizer(bundlesToStartStr, ","); + // List bundlesToStart = new ArrayList(); + // while (st.hasMoreTokens()) { + // String name = st.nextToken().trim(); + // bundlesToStart.add(name); + // } + // startBundles(bundlesToStart); + // } /** * Start the provided list of bundles * * @return whether all bundlesa are now in active state */ - public boolean startBundles(List bundlesToStart) { + public boolean startBundles(List bundlesToStart) { if (bundlesToStart.size() == 0) return true; // used to monitor ACTIVE states - List/* */startedBundles = new ArrayList(); + List startedBundles = new ArrayList(); // used to log the bundles not found - List/* */notFoundBundles = new ArrayList(bundlesToStart); + List notFoundBundles = new ArrayList(bundlesToStart); Bundle[] bundles = bundleContext.getBundles(); long startBegin = System.currentTimeMillis(); @@ -416,10 +403,10 @@ public class OsgiBoot { // monitors that all bundles are started long beginMonitor = System.currentTimeMillis(); boolean allStarted = !(startedBundles.size() > 0); - List/* */notStarted = new ArrayList(); + List notStarted = new ArrayList(); while (!allStarted && (System.currentTimeMillis() - beginMonitor) < defaultTimeout) { - notStarted = new ArrayList(); + notStarted = new ArrayList(); allStarted = true; for (int i = 0; i < startedBundles.size(); i++) { Bundle bundle = (Bundle) startedBundles.get(i); @@ -449,16 +436,17 @@ public class OsgiBoot { * DIAGNOSTICS */ /** Check unresolved bundles */ + @SuppressWarnings("deprecation") protected void checkUnresolved() { // Refresh - ServiceReference packageAdminRef = bundleContext - .getServiceReference(PackageAdmin.class.getName()); + ServiceReference packageAdminRef = bundleContext + .getServiceReference(PackageAdmin.class); PackageAdmin packageAdmin = (PackageAdmin) bundleContext .getService(packageAdminRef); packageAdmin.resolveBundles(null); Bundle[] bundles = bundleContext.getBundles(); - List /* Bundle */unresolvedBundles = new ArrayList(); + List unresolvedBundles = new ArrayList(); for (int i = 0; i < bundles.length; i++) { int bundleState = bundles[i].getState(); if (!(bundleState == Bundle.ACTIVE @@ -472,15 +460,16 @@ public class OsgiBoot { } /** List packages exported twice. */ - public Map findPackagesExportedTwice() { - ServiceReference paSr = bundleContext - .getServiceReference(PackageAdmin.class.getName()); + @SuppressWarnings("deprecation") + public Map> findPackagesExportedTwice() { + ServiceReference paSr = bundleContext + .getServiceReference(PackageAdmin.class); PackageAdmin packageAdmin = (PackageAdmin) bundleContext .getService(paSr); // find packages exported twice Bundle[] bundles = bundleContext.getBundles(); - Map /* > */exportedPackages = new TreeMap(); + Map> exportedPackages = new TreeMap>(); for (int i = 0; i < bundles.length; i++) { Bundle bundle = bundles[i]; ExportedPackage[] pkgs = packageAdmin.getExportedPackages(bundle); @@ -488,17 +477,17 @@ public class OsgiBoot { for (int j = 0; j < pkgs.length; j++) { String pkgName = pkgs[j].getName(); if (!exportedPackages.containsKey(pkgName)) { - exportedPackages.put(pkgName, new TreeSet()); + exportedPackages.put(pkgName, new TreeSet()); } - ((Set) exportedPackages.get(pkgName)).add(bundle + (exportedPackages.get(pkgName)).add(bundle .getSymbolicName() + "_" + bundle.getVersion()); } } - Map /* > */duplicatePackages = new TreeMap(); - Iterator it = exportedPackages.keySet().iterator(); + Map> duplicatePackages = new TreeMap>(); + Iterator it = exportedPackages.keySet().iterator(); while (it.hasNext()) { String pkgName = it.next().toString(); - Set bdles = (Set) exportedPackages.get(pkgName); + Set bdles = exportedPackages.get(pkgName); if (bdles.size() > 1) duplicatePackages.put(pkgName, bdles); } @@ -538,27 +527,27 @@ public class OsgiBoot { * EXPLICIT LOCATIONS INSTALLATION */ /** Gets the list of resolved explicit URL locations. */ - public List getLocationsUrls() { - String baseUrl = OsgiBootUtils.getProperty(PROP_ARGEO_OSGI_BASE_URL, - DEFAULT_BASE_URL); - String bundleLocations = OsgiBootUtils - .getProperty(PROP_ARGEO_OSGI_LOCATIONS); - return getLocationsUrls(baseUrl, bundleLocations); - } + // public List getLocationsUrls() { + // String baseUrl = OsgiBootUtils.getProperty(PROP_ARGEO_OSGI_BASE_URL, + // DEFAULT_BASE_URL); + // String bundleLocations = OsgiBootUtils + // .getProperty(PROP_ARGEO_OSGI_LOCATIONS); + // return getLocationsUrls(baseUrl, bundleLocations); + // } /** * Gets a list of URLs based on explicit locations, resolving placeholder * ${...} containing system properties, e.g. ${user.home}. */ - public List getLocationsUrls(String baseUrl, String bundleLocations) { - List urls = new ArrayList(); + public List getLocationsUrls(String baseUrl, String bundleLocations) { + List urls = new ArrayList(); if (bundleLocations == null) return urls; bundleLocations = SystemPropertyUtils .resolvePlaceholders(bundleLocations); - if (debug) - debug(PROP_ARGEO_OSGI_LOCATIONS + "=" + bundleLocations); + // if (debug) + // debug(PROP_ARGEO_OSGI_LOCATIONS + "=" + bundleLocations); StringTokenizer st = new StringTokenizer(bundleLocations, File.pathSeparator); @@ -579,7 +568,7 @@ public class OsgiBoot { * without a new line causes a '.' to be appended with unexpected side * effects. */ - public List getBundlesUrls() { + public List getBundlesUrls() { String bundlePatterns = OsgiBootUtils .getProperty(PROP_ARGEO_OSGI_BUNDLES); return getBundlesUrls(bundlePatterns); @@ -589,15 +578,15 @@ public class OsgiBoot { * Compute alist of URLs to install based on the provided patterns, with * default base url */ - public List getBundlesUrls(String bundlePatterns) { + public List getBundlesUrls(String bundlePatterns) { String baseUrl = OsgiBootUtils.getProperty(PROP_ARGEO_OSGI_BASE_URL, DEFAULT_BASE_URL); return getBundlesUrls(baseUrl, bundlePatterns); } /** Implements the path matching logic */ - List getBundlesUrls(String baseUrl, String bundlePatterns) { - List urls = new ArrayList(); + List getBundlesUrls(String baseUrl, String bundlePatterns) { + List urls = new ArrayList(); if (bundlePatterns == null) return urls; @@ -608,13 +597,13 @@ public class OsgiBoot { + " (excludeSvn=" + excludeSvn + ")"); StringTokenizer st = new StringTokenizer(bundlePatterns, ","); - List bundlesSets = new ArrayList(); + List bundlesSets = new ArrayList(); while (st.hasMoreTokens()) { bundlesSets.add(new BundlesSet(st.nextToken())); } // find included - List included = new ArrayList(); + List included = new ArrayList(); PathMatcher matcher = new AntPathMatcher(); for (int i = 0; i < bundlesSets.size(); i++) { BundlesSet bundlesSet = (BundlesSet) bundlesSets.get(i); @@ -625,7 +614,7 @@ public class OsgiBoot { } // find excluded - List excluded = new ArrayList(); + List excluded = new ArrayList(); for (int i = 0; i < bundlesSets.size(); i++) { BundlesSet bundlesSet = (BundlesSet) bundlesSets.get(i); for (int j = 0; j < bundlesSet.getExcludes().size(); j++) { @@ -647,8 +636,8 @@ public class OsgiBoot { /* * DISTRIBUTION JAR INSTALLATION */ - public List getDistributionUrls() { - List urls = new ArrayList(); + public List getDistributionUrls() { + List urls = new ArrayList(); String distributionUrl = OsgiBootUtils .getProperty(PROP_ARGEO_OSGI_DISTRIBUTION_URL); if (distributionUrl == null) @@ -684,74 +673,74 @@ public class OsgiBoot { * * @deprecated */ - public List getModulesUrls() { - List urls = new ArrayList(); - String modulesUrlStr = OsgiBootUtils - .getProperty(PROP_ARGEO_OSGI_MODULES_URL); - if (modulesUrlStr == null) - return urls; - - String baseUrl = OsgiBootUtils.getProperty(PROP_ARGEO_OSGI_BASE_URL); - - Map installedBundles = getBundlesBySymbolicName(); - - BufferedReader reader = null; - try { - URL modulesUrl = new URL(modulesUrlStr); - reader = new BufferedReader(new InputStreamReader( - modulesUrl.openStream())); - String line = null; - while ((line = reader.readLine()) != null) { - StringTokenizer st = new StringTokenizer(line, - modulesUrlSeparator); - String moduleName = st.nextToken(); - String moduleVersion = st.nextToken(); - String url = st.nextToken(); - if (baseUrl != null) - url = baseUrl + url; - - if (installedBundles.containsKey(moduleName)) { - Bundle bundle = (Bundle) installedBundles.get(moduleName); - String bundleVersion = bundle.getHeaders() - .get(Constants.BUNDLE_VERSION).toString(); - int comp = OsgiBootUtils.compareVersions(bundleVersion, - moduleVersion); - if (comp > 0) { - OsgiBootUtils.warn("Installed version " + bundleVersion - + " of bundle " + moduleName - + " is newer than provided version " - + moduleVersion); - } else if (comp < 0) { - urls.add(url); - OsgiBootUtils.info("Updated bundle " + moduleName - + " with version " + moduleVersion - + " (old version was " + bundleVersion + ")"); - } else { - // do nothing - } - } else { - urls.add(url); - } - } - } catch (Exception e1) { - throw new RuntimeException("Cannot read url " + modulesUrlStr, e1); - } finally { - if (reader != null) - try { - reader.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return urls; - } + // public List getModulesUrls() { + // List urls = new ArrayList(); + // String modulesUrlStr = OsgiBootUtils + // .getProperty(PROP_ARGEO_OSGI_MODULES_URL); + // if (modulesUrlStr == null) + // return urls; + // + // String baseUrl = OsgiBootUtils.getProperty(PROP_ARGEO_OSGI_BASE_URL); + // + // Map installedBundles = getBundlesBySymbolicName(); + // + // BufferedReader reader = null; + // try { + // URL modulesUrl = new URL(modulesUrlStr); + // reader = new BufferedReader(new InputStreamReader( + // modulesUrl.openStream())); + // String line = null; + // while ((line = reader.readLine()) != null) { + // StringTokenizer st = new StringTokenizer(line, + // modulesUrlSeparator); + // String moduleName = st.nextToken(); + // String moduleVersion = st.nextToken(); + // String url = st.nextToken(); + // if (baseUrl != null) + // url = baseUrl + url; + // + // if (installedBundles.containsKey(moduleName)) { + // Bundle bundle = (Bundle) installedBundles.get(moduleName); + // String bundleVersion = bundle.getHeaders() + // .get(Constants.BUNDLE_VERSION).toString(); + // int comp = OsgiBootUtils.compareVersions(bundleVersion, + // moduleVersion); + // if (comp > 0) { + // OsgiBootUtils.warn("Installed version " + bundleVersion + // + " of bundle " + moduleName + // + " is newer than provided version " + // + moduleVersion); + // } else if (comp < 0) { + // urls.add(url); + // OsgiBootUtils.info("Updated bundle " + moduleName + // + " with version " + moduleVersion + // + " (old version was " + bundleVersion + ")"); + // } else { + // // do nothing + // } + // } else { + // urls.add(url); + // } + // } + // } catch (Exception e1) { + // throw new RuntimeException("Cannot read url " + modulesUrlStr, e1); + // } finally { + // if (reader != null) + // try { + // reader.close(); + // } catch (IOException e) { + // e.printStackTrace(); + // } + // } + // return urls; + // } /* * HIGH LEVEL UTILITIES */ /** Actually performs the matching logic. */ - protected void match(PathMatcher matcher, List matched, String base, - String currentPath, String pattern) { + protected void match(PathMatcher matcher, List matched, + String base, String currentPath, String pattern) { if (currentPath == null) { // Init File baseDir = new File(base.replace('/', File.separatorChar)); @@ -826,8 +815,8 @@ public class OsgiBoot { * The bundles already installed. Key is location (String) , value is a * {@link Bundle} */ - public Map getBundlesByLocation() { - Map installedBundles = new HashMap(); + public Map getBundlesByLocation() { + Map installedBundles = new HashMap(); Bundle[] bundles = bundleContext.getBundles(); for (int i = 0; i < bundles.length; i++) { installedBundles.put(bundles[i].getLocation(), bundles[i]); @@ -839,8 +828,8 @@ public class OsgiBoot { * The bundles already installed. Key is symbolic name (String) , value is a * {@link Bundle} */ - public Map getBundlesBySymbolicName() { - Map namedBundles = new HashMap(); + public Map getBundlesBySymbolicName() { + Map namedBundles = new HashMap(); Bundle[] bundles = bundleContext.getBundles(); for (int i = 0; i < bundles.length; i++) { namedBundles.put(bundles[i].getSymbolicName(), bundles[i]); @@ -899,22 +888,22 @@ public class OsgiBoot { return bundleContext; } - public void setInstallInLexicographicOrder( - boolean installInAlphabeticalOrder) { - this.installInLexicographicOrder = installInAlphabeticalOrder; - } - - public boolean isInstallInLexicographicOrder() { - return installInLexicographicOrder; - } + // public void setInstallInLexicographicOrder( + // boolean installInAlphabeticalOrder) { + // this.installInLexicographicOrder = installInAlphabeticalOrder; + // } + // + // public boolean isInstallInLexicographicOrder() { + // return installInLexicographicOrder; + // } public void setDefaultTimeout(long defaultTimeout) { this.defaultTimeout = defaultTimeout; } - public void setModulesUrlSeparator(String modulesUrlSeparator) { - this.modulesUrlSeparator = modulesUrlSeparator; - } +// public void setModulesUrlSeparator(String modulesUrlSeparator) { +// this.modulesUrlSeparator = modulesUrlSeparator; +// } public boolean isExcludeSvn() { return excludeSvn; @@ -932,8 +921,8 @@ public class OsgiBoot { protected class BundlesSet { private String baseUrl = "reference:file";// not used yet private final String dir; - private List includes = new ArrayList(); - private List excludes = new ArrayList(); + private List includes = new ArrayList(); + private List excludes = new ArrayList(); public BundlesSet(String def) { StringTokenizer st = new StringTokenizer(def, ";"); @@ -979,11 +968,11 @@ public class OsgiBoot { return dir; } - public List getIncludes() { + public List getIncludes() { return includes; } - public List getExcludes() { + public List getExcludes() { return excludes; } diff --git a/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBootUtils.java b/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBootUtils.java index 8c63344e5..f1105d3bc 100644 --- a/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBootUtils.java +++ b/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBootUtils.java @@ -25,7 +25,6 @@ import java.util.StringTokenizer; import org.osgi.framework.Bundle; /** Utilities, mostly related to logging. */ -@SuppressWarnings({ "rawtypes", "unchecked" }) public class OsgiBootUtils { /** ISO8601 (as per log4j) and difference to UTC */ private static DateFormat dateFormat = new SimpleDateFormat( @@ -93,11 +92,11 @@ public class OsgiBootUtils { */ public static int compareVersions(String currentVersion, String testedVersion) { - List cToks = new ArrayList(); + List cToks = new ArrayList(); StringTokenizer cSt = new StringTokenizer(currentVersion, "."); while (cSt.hasMoreTokens()) cToks.add(cSt.nextToken()); - List tToks = new ArrayList(); + List tToks = new ArrayList(); StringTokenizer tSt = new StringTokenizer(currentVersion, "."); while (tSt.hasMoreTokens()) tToks.add(tSt.nextToken()); -- 2.30.2