⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.java

📁 OSGI这是一个中间件,与UPNP齐名,是用于移植到嵌入式平台之上
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	      // found an exporter to target - add it to closure	      closure.add(allBundles[i]);	      // Then, get closure from the exporter, if not already	      // handled. Add that closure set to the target closure.	      if(!handled.contains(allBundles[i])) {		handled.add(allBundles[i]);		// call recursivley with exporter as target		Set trans = 		  getPackageClosure(pkgAdmin, allBundles, allBundles[i], handled); 		closure.addAll(trans);	      }	    }	  }	}      }      return closure;    }    /**     * Get transitive closure of bundles a target bundle depends     * on via services.     *     * @param target target bundle to get closure for     * @param handles set of already handled bundles. Should be null or     *                empty set on top level call.     * @return        Set of <tt>Bundle</tt>     */    static public Set getServiceClosure(Bundle       target,					Set          handled) {            if(handled == null) {	handled = new HashSet();      }            Set closure = new TreeSet(Util.bundleIdComparator);      ServiceReference[] srl = target.getServicesInUse();      for(int i = 0; srl != null && i < srl.length; i++) {	Bundle b = srl[i].getBundle();	closure.add(b);	if(!handled.contains(b)) {	  handled.add(b);	  	  Set trans = getServiceClosure(b, handled);	  closure.addAll(trans);	}      }            return closure;    }  static String[] STD_PROPS = {    "org.knopflerfish.verbosity=0",    "org.knopflerfish.gosg.jars",    "org.knopflerfish.framework.debug.packages=false",    "org.knopflerfish.framework.debug.errors=false",    "org.knopflerfish.framework.debug.classloader=false",    "org.knopflerfish.framework.debug.startlevel=false",    "org.knopflerfish.framework.debug.ldap=false",    "org.osgi.framework.system.packages=",    "org.knopflerfish.http.dnslookup=false",    "org.knopflerfish.startlevel.use=true",    "org.knopflerfish.log.out=false",    "org.knopflerfish.log.level=info",  };    public static StringBuffer getXARGS(Bundle target,				      Set pkgClosure,				      Set serviceClosure) {        StringBuffer sb = new StringBuffer();        String jarBase = System.getProperty("org.knopflerfish.gosg.jars", "");        Set all = new TreeSet(Util.bundleIdComparator);    all.addAll(pkgClosure);    all.addAll(serviceClosure);    all.remove(Activator.getTargetBC().getBundle(0));    if(target != null) {      all.add(target);    }    for(int i = 0; i < STD_PROPS.length; i++) {      String[] w = Text.splitwords(STD_PROPS[i], "=", '\"');      String def = null;      if(w.length == 2) {	def = w[1];      }      String val = System.getProperty(w[0]);      if(null != val && !val.equals(def)) {	sb.append("-D" + w[0] + "=" + val);	sb.append("\n");      }    }    StartLevel sl = (StartLevel)Activator.desktop.slTracker.getService();    int levelMax = -1;    int n = 0;    int lastLevel = -1;    for(Iterator it = all.iterator(); it.hasNext(); ) {      Bundle b = (Bundle)it.next();      int level = -1;      try {	level = sl.getBundleStartLevel(b);      } catch (Exception ignored) {      }      levelMax = Math.max(level, levelMax);      if(level != -1 && level != lastLevel) {	sb.append("-initlevel " + level + "\n");	lastLevel = level;      }      sb.append("-install " + 		Text.replace(b.getLocation(), jarBase, "") + 		"\n");            n++;    }        sb.append("-launch\n");        n = 0;    for(Iterator it = all.iterator(); it.hasNext(); ) {      Bundle b = (Bundle)it.next();      n++;      if(b.getState() == Bundle.ACTIVE) {	sb.append("-start " + n + "\n");      }    }    if(levelMax != -1) {      sb.append("-startlevel " + levelMax);    }    return sb;  }  public static final String[] FWPROPS = new String[] {    Constants.FRAMEWORK_VENDOR,    Constants.FRAMEWORK_VERSION,    Constants.FRAMEWORK_LANGUAGE,    Constants.FRAMEWORK_OS_NAME ,    Constants.FRAMEWORK_OS_VERSION,    Constants.FRAMEWORK_PROCESSOR,    Constants.FRAMEWORK_EXECUTIONENVIRONMENT,        };    static public String getSystemInfo() {    StringBuffer sb = new StringBuffer();    try {      Map props = new TreeMap(Activator.getSystemProperties());            sb.append("<table>\n");            sb.append(" <tr><td colspan=2 bgcolor=\"#eeeeee\">");      sb.append(fontify("Framework properties", -1));            String spid = (String)props.get("org.osgi.provisioning.spid");      if(spid != null && !"".equals(spid)) {	sb.append(fontify(" (" + spid + ")", -1));      }            sb.append("</td>\n");      sb.append(" </tr>\n");                  for(int i = 0; i < FWPROPS.length; i++) {	sb.append(" <tr>\n");	sb.append("  <td valign=\"top\">");	sb.append(fontify(FWPROPS[i]));	sb.append("</td>\n");	sb.append("  <td valign=\"top\">");	sb.append(fontify(Activator.getTargetBC().getProperty(FWPROPS[i])));	sb.append("</td>\n");	sb.append(" </tr>\n");      }            sb.append("<tr><td colspan=2 bgcolor=\"#eeeeee\">");      sb.append(fontify("System properties", -1));      sb.append("</td>\n");      sb.append("</tr>\n");                  for(Iterator it = props.keySet().iterator(); it.hasNext();) {	String key = (String)it.next();	String val = (String)props.get(key);	sb.append(" <tr>\n");	sb.append("  <td valign=\"top\">");	sb.append(fontify(key));	sb.append("</td>\n");	sb.append("  <td valign=\"top\">");	sb.append(fontify(val));	sb.append("</td>\n");	sb.append("</tr>\n");      }    } catch (Exception e) {      sb.append("<tr><td colspan=2>" + 		fontify("Failed to get system props: " + e) + 		"</td></tr>");          }    sb.append("</table>");    return sb.toString();  }    static public String fontify(Object o) {    return fontify(o, -2);  }  public static String fontify(Object o, int size) {    return "<font size=\"" + size + "\" face=\"Verdana, Arial, Helvetica, sans-serif\">" + o + "</font>";  }  static public void printObject(PrintWriter out, Object val) throws IOException {    if(val == null) {      out.println("null");    } else if(val.getClass().isArray()) {      printArray(out, (Object[])val);    } else if(val instanceof Vector) {      printVector(out, (Vector)val);    } else if(val instanceof Map) {      printMap(out, (Map)val);    } else if(val instanceof Set) {      printSet(out, (Set)val);    } else if(val instanceof Dictionary) {      printDictionary(out, (Dictionary)val);    } else {      out.print(Util.fontify(val));      //      out.print(" (" + val.getClass().getName() + ")");    }  }    static public void printDictionary(PrintWriter out, Dictionary d) throws IOException {        out.println("<table border=0>");    for(Enumeration e = d.keys(); e.hasMoreElements();) {      Object key = e.nextElement();      Object val = d.get(key);      out.println("<tr>");            out.println("<td valign=top>");      printObject(out, key);      out.println("</td>");            out.println("<td valign=top>");      printObject(out, val);      out.println("</td>");            out.println("</tr>");    }    out.println("</table>");  }    static public void printMap(PrintWriter out, Map m) throws IOException {        out.println("<table border=0>");    for(Iterator it = m.keySet().iterator(); it.hasNext();) {      Object key = it.next();      Object val = m.get(key);            out.println("<tr>");            out.println("<td valign=top>");      printObject(out, key);      out.println("</td>");            out.println("<td valign=top>");      printObject(out, val);      out.println("</td>");            out.println("</tr>");    }    out.println("</table>");  }    static public void printArray(PrintWriter out, Object[] a) throws IOException {    for(int i = 0; i < a.length; i++) {      printObject(out, a[i]);      if(i < a.length - 1) {	out.println("<br>");      }    }  }    static public void printSet(PrintWriter out, Set a) throws IOException {    for(Iterator it = a.iterator(); it.hasNext();) {      printObject(out, it.next());      if(it.hasNext()) {	out.println("<br>");      }    }  }    static public void printVector(PrintWriter out, Vector a) throws IOException {    for(int i = 0; i < a.size(); i++) {      printObject(out, a.elementAt(i));      if(i < a.size() - 1) {	out.println("<br>");      }    }  }  static public void openExternalURL(URL url) throws IOException {    if(Util.isWindows()) {      // Yes, this only works on windows      String systemBrowser = "explorer.exe";      Runtime rt = Runtime.getRuntime();      Process proc = rt.exec(new String[] {	systemBrowser, 	"\"" + url.toString() + "\"",      });    } else {      throw new IOException("Only windows browsers are yet supported");    }  }    public static boolean isWindows() {    String os = System.getProperty("os.name");    if(os != null) {      return -1 != os.toLowerCase().indexOf("win");    }    return false;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -