package org.bbs.felix.util;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import android.text.TextUtils;
public class OsgiUtil {
static Map<Integer, String> sStateMap = new HashMap<Integer, String>();
static {
sStateMap.put(org.osgi.framework.Bundle.ACTIVE, "ACTIVE");
sStateMap.put(org.osgi.framework.Bundle.INSTALLED, "INSTALLED");
sStateMap.put(org.osgi.framework.Bundle.RESOLVED, "RESOLVED");
sStateMap.put(org.osgi.framework.Bundle.STARTING, "STARTING");
sStateMap.put(org.osgi.framework.Bundle.STOPPING, "STOPPING");
sStateMap.put(org.osgi.framework.Bundle.UNINSTALLED, "UNINSTALLED");
}
public static String bundleState2Str(int state){
String str = state + " [unknown state]";
if (sStateMap.containsKey(state)){
str = sStateMap.get(state);
}
return str;
}
public static String getName(org.osgi.framework.Bundle b) {
String name = "";
name = b.getSymbolicName();
if (TextUtils.isEmpty(name)) {
name = b.getLocation();
}
return name;
}
public static String[] HEADER_ALL = new String[]{};
public static String[] HEADER_OSGI = new String[]{
org.osgi.framework.Constants.BUNDLE_SYMBOLICNAME,
org.osgi.framework.Constants.BUNDLE_VERSION,
org.osgi.framework.Constants.IMPORT_PACKAGE,
org.osgi.framework.Constants.EXPORT_PACKAGE,
};
public static String getHeader(org.osgi.framework.Bundle b, String[] headers) {
String header = "";
for (String h : headers) {
Dictionary<String, String> d = b.getHeaders(h);
Enumeration<String> keys = d.keys();
while (keys.hasMoreElements()) {
String key = keys.nextElement();
if (key.equals(h)) {
header += h + ":\n " + d.get(key) + "\n";
break;
}
}
}
if (null == header || header.length() == 0) {
header = toString(b.getHeaders());
}
return header;
}
public static String toString(Dictionary<String, String> d) {
String str = "";
Enumeration<String> e = d.keys();
while (e != null && e.hasMoreElements()) {
String key = e.nextElement();
str += key + ": " + d.get(key) + "\n";
}
return str;
}
}