All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
aQute.launcher.minifw.MiniFramework Maven / Gradle / Ivy
package aQute.launcher.minifw;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.cert.X509Certificate;
import java.util.Collection;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
import org.osgi.framework.BundleListener;
import org.osgi.framework.Filter;
import org.osgi.framework.FrameworkEvent;
import org.osgi.framework.FrameworkListener;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceListener;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceRegistration;
import org.osgi.framework.Version;
import org.osgi.framework.launch.Framework;
public class MiniFramework implements Framework, Bundle, BundleContext {
ClassLoader loader;
Properties properties;
Map bundles = new HashMap<>();
int ID = 0;
int state = Bundle.INSTALLED;
ClassLoader last;
public MiniFramework(Map properties) {
this.properties = new Properties(System.getProperties());
this.properties.putAll(properties);
bundles.put(Long.valueOf(0), this);
last = loader = getClass().getClassLoader();
}
@Override
public void init() throws BundleException {
state = Bundle.ACTIVE;
}
@Override
public FrameworkEvent waitForStop(long timeout) throws InterruptedException {
long deadline = System.currentTimeMillis() + timeout;
while (state != Bundle.UNINSTALLED) {
if (timeout != 0) {
long wait = deadline - System.currentTimeMillis();
if (wait <= 0)
return new FrameworkEvent(FrameworkEvent.WAIT_TIMEDOUT, this, null);
}
Thread.sleep(100);
}
return new FrameworkEvent(FrameworkEvent.STOPPED, this, null);
}
@Override
public BundleContext getBundleContext() {
return this;
}
@Override
public long getBundleId() {
return 0;
}
@Override
public URL getEntry(String path) {
if (path.startsWith("/"))
path = path.substring(1);
return loader.getResource(path);
}
@Override
public Enumeration getEntryPaths(String path) {
throw new UnsupportedOperationException();
}
@Override
public Dictionary getHeaders() {
return new Hashtable<>();
}
@Override
public Dictionary getHeaders(String locale) {
throw new UnsupportedOperationException();
}
@Override
public long getLastModified() {
return 0;
}
@Override
public String getLocation() {
return "System Bundle";
}
@Override
public URL getResource(String name) {
return loader.getResource(name);
}
@Override
public Enumeration getResources(String name) throws IOException {
return loader.getResources(name);
}
@Override
public int getState() {
return Bundle.ACTIVE;
}
@Override
public String getSymbolicName() {
return "system.bundle";
}
@Override
public Version getVersion() {
return new Version("1.0");
}
@Override
public boolean hasPermission(Object permission) {
return true;
}
@Override
public Class> loadClass(String name) throws ClassNotFoundException {
return loader.loadClass(name);
}
@Override
public void start() {}
@Override
public void start(int options) {}
@Override
public synchronized void stop() {
state = Bundle.UNINSTALLED;
notifyAll();
}
@Override
public void stop(int options) throws BundleException {}
@Override
public Bundle getBundle() {
return this;
}
@Override
public Bundle getBundle(long id) {
Long l = Long.valueOf(id);
Bundle b = bundles.get(l);
return b;
}
@Override
public Bundle[] getBundles() {
return bundles.values()
.toArray(new Bundle[0]);
}
@Override
public File getDataFile(String filename) {
return null;
}
@Override
public String getProperty(String key) {
return properties.getProperty(key);
}
@Override
public Bundle installBundle(String location) throws BundleException {
try {
if (location.startsWith("reference:"))
location = new File(new URL(location.substring("reference:".length())).toURI()).getPath();
else if (location.startsWith("file:"))
location = new File(location.substring("file:".length())).getPath();
while (location.startsWith("//"))
location = location.substring(1);
Context c = new Context(this, last, ++ID, location);
bundles.put(Long.valueOf(c.id), c);
last = c;
return c;
} catch (Exception e) {
throw new BundleException("Failed to install", e);
}
}
@Override
public Bundle installBundle(String location, InputStream in) throws BundleException {
Context c;
try {
in.close();
try {
@SuppressWarnings("unused")
URL url = new URL(location);
} catch (MalformedURLException e) {
throw new BundleException(
"For the mini framework, the location must be a proper URL even though this is not required by the specification "
+ location,
e);
}
c = new Context(this, last, ++ID, location);
bundles.put(Long.valueOf(c.id), c);
last = c;
return c;
} catch (Exception e) {
throw new BundleException("Can't install " + location, e);
}
}
@Override
public Enumeration findEntries(String path, String filePattern, boolean recurse) {
throw new UnsupportedOperationException();
}
@Override
public ServiceReference[] getRegisteredServices() {
throw new UnsupportedOperationException();
}
@Override
public ServiceReference[] getServicesInUse() {
throw new UnsupportedOperationException();
}
@Override
public Map> getSignerCertificates(int signersType) {
throw new UnsupportedOperationException();
}
@Override
public void uninstall() throws BundleException {
throw new UnsupportedOperationException();
}
@Override
public void update() throws BundleException {
throw new UnsupportedOperationException();
}
@Override
public void update(InputStream in) throws BundleException {
throw new UnsupportedOperationException();
}
@Override
public void addBundleListener(BundleListener listener) {
// no services so cannot do any harm
}
@Override
public void addFrameworkListener(FrameworkListener listener) {
// no services so cannot do any harm
}
@Override
public void addServiceListener(ServiceListener listener) {
// no services so cannot do any harm
}
@Override
public void addServiceListener(ServiceListener listener, String filter) {
// no services so cannot do any harm
}
@Override
public Filter createFilter(String filter) throws InvalidSyntaxException {
return FrameworkUtil.createFilter(filter);
}
@Override
public ServiceReference[] getAllServiceReferences(String clazz, String filter) throws InvalidSyntaxException {
throw new UnsupportedOperationException();
}
@Override
public ServiceReference getServiceReference(String clazz) {
return null;
}
@Override
public ServiceReference[] getServiceReferences(String clazz, String filter) throws InvalidSyntaxException {
return null;
}
@Override
public void removeBundleListener(BundleListener listener) {
// ok
}
@Override
public void removeFrameworkListener(FrameworkListener listener) {
// ok
}
@Override
public void removeServiceListener(ServiceListener listener) {
// ok
}
@Override
public String toString() {
return "Mini framework";
}
class Loader extends ClassLoader {
@Override
public Class> findClass(String name) throws ClassNotFoundException {
for (Bundle b : bundles.values()) {
try {
return b.loadClass(name);
} catch (ClassNotFoundException e) {
// Ignore, try next
}
}
throw new ClassNotFoundException(name);
}
}
public int compareTo(Bundle var0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public ServiceRegistration registerService(String[] clazzes, Object service, Dictionary properties) {
return null;
}
@Override
public ServiceRegistration registerService(String clazz, Object service, Dictionary properties) {
return null;
}
public ServiceRegistration registerService(Class clazz, S service, Dictionary properties) {
return null;
}
public ServiceReference getServiceReference(Class clazz) {
return null;
}
public Collection getServiceReferences(Class clazz, String filter)
throws InvalidSyntaxException {
return null;
}
@Override
public Object getService(ServiceReference reference) {
return null;
}
@Override
public boolean ungetService(ServiceReference reference) {
return false;
}
public Bundle getBundle(String location) {
return null;
}
public A adapt(Class type) {
return null;
}
}