View Javadoc
1   package org.argeo.cms.ui.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  
11  /** {@link ResourceLoader} implementation wrapping an {@link Bundle}. */
12  public class BundleResourceLoader implements ResourceLoader {
13  	private final Bundle bundle;
14  
15  	public BundleResourceLoader(Bundle bundle) {
16  		this.bundle = bundle;
17  	}
18  
19  	@Override
20  	public InputStream getResourceAsStream(String resourceName) throws IOException {
21  		URL res = bundle.getEntry(resourceName);
22  		if (res == null) {
23  			res = bundle.getResource(resourceName);
24  			if (res == null)
25  				throw new CmsException("Resource " + resourceName + " not found in bundle " + bundle.getSymbolicName());
26  		}
27  		return res.openStream();
28  	}
29  
30  	public Bundle getBundle() {
31  		return bundle;
32  	}
33  
34  }