]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/build/OsgiRuntimeModularDistribution.java
Improve log
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.osgi / src / main / java / org / argeo / slc / osgi / build / OsgiRuntimeModularDistribution.java
1 package org.argeo.slc.osgi.build;
2
3 import java.net.URL;
4 import java.util.SortedMap;
5
6 import org.apache.commons.logging.Log;
7 import org.apache.commons.logging.LogFactory;
8 import org.argeo.slc.build.Distribution;
9 import org.argeo.slc.build.NameVersion;
10 import org.argeo.slc.core.build.VersionedResourceDistribution;
11 import org.argeo.slc.osgi.OsgiBundle;
12 import org.osgi.framework.Bundle;
13 import org.springframework.context.ResourceLoaderAware;
14 import org.springframework.core.io.Resource;
15 import org.springframework.core.io.ResourceLoader;
16
17 public class OsgiRuntimeModularDistribution extends
18 AbstractOsgiModularDistribution implements ResourceLoaderAware {
19 private final static Log log = LogFactory
20 .getLog(OsgiRuntimeModularDistribution.class);
21
22 private ResourceLoader resourceLoader;
23
24 protected void fillDistributions(
25 SortedMap<NameVersion, Distribution> distributions)
26 throws Exception {
27
28 for (Bundle bundle : getBundleContext().getBundles()) {
29 OsgiBundle osgiBundle = new OsgiBundle(bundle);
30
31 String location = bundle.getLocation();
32 if (location.startsWith("reference:file:"))
33 location = location.substring("reference:".length());
34 try {
35 URL url = new URL(location);
36 Resource res = resourceLoader.getResource(url.toString());
37 distributions.put(osgiBundle,
38 new VersionedResourceDistribution(osgiBundle, res));
39 } catch (Exception e) {
40 log.warn("Cannot interpret location " + location
41 + " of bundle " + bundle + ": " + e);
42 }
43 }
44 }
45
46 public void setResourceLoader(ResourceLoader resourceLoader) {
47 this.resourceLoader = resourceLoader;
48 }
49 }