[vmkit-commits] [vmkit] r180522 - Updated patch for Knopflerfish 3.5.0. Incinerator now can reset stale references to bundles after they have been uninstalled.
Peter Senna Tschudin
peter.senna at gmail.com
Thu Apr 25 10:21:14 PDT 2013
Author: peter.senna
Date: Thu Apr 25 12:19:41 2013
New Revision: 180522
URL: http://llvm.org/viewvc/llvm-project?rev=180522&view=rev
Log:
Updated patch for Knopflerfish 3.5.0. Incinerator now can reset stale references to bundles after they have been uninstalled.
(cherry picked from commit 7dc462c0426a3cf94cbb023726d55fb3db198367)
Modified:
vmkit/trunk/incinerator/osgi/src/j3/J3Mgr.java
vmkit/trunk/incinerator/osgi/src/j3mgr/J3MgrImpl.java
vmkit/trunk/incinerator/tests/debug.txt
Modified: vmkit/trunk/incinerator/osgi/src/j3/J3Mgr.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/incinerator/osgi/src/j3/J3Mgr.java?rev=180522&r1=180521&r2=180522&view=diff
==============================================================================
--- vmkit/trunk/incinerator/osgi/src/j3/J3Mgr.java (original)
+++ vmkit/trunk/incinerator/osgi/src/j3/J3Mgr.java Thu Apr 25 12:19:41 2013
@@ -1,16 +1,14 @@
package j3;
-import org.osgi.framework.Bundle;
-
public interface J3Mgr
{
- public void setBundleStaleReferenceCorrected(Bundle bundle, boolean corrected) throws Exception;
- public boolean isBundleStaleReferenceCorrected(Bundle bundle) throws Exception;
+ public void setBundleStaleReferenceCorrected(long bundleID, boolean corrected) throws Exception;
+ public boolean isBundleStaleReferenceCorrected(long bundleID) throws Exception;
// THE FOLLOWING METHODS ARE DEBUGGING HELPERS
// THEY SHOULD BE REMOVED IN PRODUCTION
public void dumpClassLoaderBundles();
- public void setBundleStaleReferenceCorrected(String bundleName, String corrected) throws Exception;
- public void isBundleStaleReferenceCorrected(String bundleName) throws Exception;
+ public void setBundleStaleReferenceCorrected(String bundleNameOrID, String corrected) throws Exception;
+ public void isBundleStaleReferenceCorrected(String bundleNameOrID) throws Exception;
}
Modified: vmkit/trunk/incinerator/osgi/src/j3mgr/J3MgrImpl.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/incinerator/osgi/src/j3mgr/J3MgrImpl.java?rev=180522&r1=180521&r2=180522&view=diff
==============================================================================
--- vmkit/trunk/incinerator/osgi/src/j3mgr/J3MgrImpl.java (original)
+++ vmkit/trunk/incinerator/osgi/src/j3mgr/J3MgrImpl.java Thu Apr 25 12:19:41 2013
@@ -27,14 +27,19 @@ public class J3MgrImpl
context = null;
}
- public void setBundleStaleReferenceCorrected(Bundle bundle, boolean corrected) throws Exception
+ public void setBundleStaleReferenceCorrected(long bundleID, boolean corrected) throws Exception
{
- j3.vm.OSGi.setBundleStaleReferenceCorrected(bundle.getBundleId(), corrected);
+ j3.vm.OSGi.setBundleStaleReferenceCorrected(bundleID, corrected);
+
+ if (corrected && (context.getBundle(bundleID) == null)) {
+ j3.vm.OSGi.notifyBundleUninstalled(bundleID);
+ refreshFramework();
+ }
}
- public boolean isBundleStaleReferenceCorrected(Bundle bundle) throws Exception
+ public boolean isBundleStaleReferenceCorrected(long bundleID) throws Exception
{
- return j3.vm.OSGi.isBundleStaleReferenceCorrected(bundle.getBundleId());
+ return j3.vm.OSGi.isBundleStaleReferenceCorrected(bundleID);
}
public void bundleChanged(BundleEvent event)
@@ -56,25 +61,38 @@ public class J3MgrImpl
// THE FOLLOWING METHODS ARE DEBUGGING HELPERS
// THEY SHOULD BE REMOVED IN PRODUCTION
- public void setBundleStaleReferenceCorrected(String bundleName, String corrected) throws Exception
+ public void setBundleStaleReferenceCorrected(String bundleNameOrID, String corrected) throws Exception
{
- setBundleStaleReferenceCorrected(getBundle(bundleName), corrected.equals("yes"));
+ long bundleID = getBundleID(bundleNameOrID);
+ setBundleStaleReferenceCorrected(bundleID, corrected.equals("yes"));
}
- public void isBundleStaleReferenceCorrected(String bundleName) throws Exception
+ public void isBundleStaleReferenceCorrected(String bundleNameOrID) throws Exception
{
- boolean value = isBundleStaleReferenceCorrected(getBundle(bundleName));
- System.out.println("isBundleStaleReferenceCorrected(" + bundleName + ") = " + (value ? "yes" : "no"));
+ long bundleID = getBundleID(bundleNameOrID);
+ boolean value = isBundleStaleReferenceCorrected(bundleID);
+ System.out.println("isBundleStaleReferenceCorrected(bundleID=" + bundleID + ") = " + (value ? "yes" : "no"));
}
- Bundle getBundle(String symbolicName)
+ long getBundleID(String symbolicNameOrID)
{
+ try {
+ long bundleID = Long.parseLong(symbolicNameOrID);
+
+ if (context.getBundle(bundleID) == null)
+ System.out.println("WARNING: bundleID=" + bundleID + " is invalid.");
+
+ return (bundleID < 0) ? -1 : bundleID;
+ } catch (NumberFormatException e) {
+ // This is not a bundle ID, it must be a symbolic name
+ }
+
Bundle[] bundles = context.getBundles();
for (int i=0; i < bundles.length; ++i) {
- if (symbolicName.equals(bundles[i].getSymbolicName()))
- return bundles[i];
+ if (symbolicNameOrID.equals(bundles[i].getSymbolicName()))
+ return bundles[i].getBundleId();
}
- return null;
+ return -1;
}
public void dumpClassLoaderBundles()
Modified: vmkit/trunk/incinerator/tests/debug.txt
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/incinerator/tests/debug.txt?rev=180522&r1=180521&r2=180522&view=diff
==============================================================================
--- vmkit/trunk/incinerator/tests/debug.txt (original)
+++ vmkit/trunk/incinerator/tests/debug.txt Thu Apr 25 12:19:41 2013
@@ -9,3 +9,8 @@ stop 14
start 12 13 14
stop 12
+
+framework call j3.J3Mgr isBundleStaleReferenceCorrected 39
+framework call j3.J3Mgr setBundleStaleReferenceCorrected 15 yes
+
+framework call j3.J3Mgr dumpClassLoaderBundles
More information about the vmkit-commits
mailing list