]> git.argeo.org Git - lgpl/argeo-commons.git/blob - util/BundleResourceLoader.java
Prepare next development cycle
[lgpl/argeo-commons.git] / util / BundleResourceLoader.java
1 package org.argeo.cms.util;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.net.URL;
6
7 import org.argeo.cms.CmsException;
8 import org.eclipse.rap.rwt.service.ResourceLoader;
9 import org.osgi.framework.Bundle;
10 import org.osgi.framework.BundleContext;
11
12 /** {@link ResourceLoader} implementation wrapping an {@link Bundle}. */
13 public class BundleResourceLoader implements ResourceLoader {
14 private final BundleContext bundleContext;
15
16 public BundleResourceLoader(BundleContext bundleContext) {
17 this.bundleContext = bundleContext;
18 }
19
20 @Override
21 public InputStream getResourceAsStream(String resourceName)
22 throws IOException {
23 // TODO deal with other bundles
24 Bundle bundle = bundleContext.getBundle();
25 URL res = bundle.getResource(resourceName);
26 if (res == null)
27 throw new CmsException("Resource " + resourceName
28 + " not found in bundle " + bundle.getSymbolicName());
29 return bundleContext.getBundle().getResource(resourceName).openStream();
30 }
31
32 }