下面列出了org.osgi.framework.BundleEvent#UPDATED 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void bundleChanged(BundleEvent event) {
switch (event.getType()) {
case BundleEvent.INSTALLED: // Fall through
case BundleEvent.UPDATED:
computeBidFilter(bidFilters, event.getBundle());
break;
case BundleEvent.UNINSTALLED:
final Long key = new Long(event.getBundle().getBundleId());
synchronized (bidFilters) {
bidFilters.remove(key);
}
break;
default:
}
}
public Icon getBundleEventIcon(int type)
{
switch (type) {
case BundleEvent.INSTALLED:
return installIcon;
case BundleEvent.STARTED:
return startIcon;
case BundleEvent.STOPPED:
return stopIcon;
case BundleEvent.UNINSTALLED:
return uninstallIcon;
case BundleEvent.UPDATED:
return updateIcon;
default:
return null;
}
}
public synchronized void startBundle() throws BundleException {
if (this.state == BundleEvent.INSTALLED) {
throw new IllegalStateException("Cannot start uninstalled bundle "
+ toString());
} else if (this.state != BundleEvent.RESOLVED) {
if (this.state == BundleEvent.STARTED) {
resolveBundle(true);
}
this.state = BundleEvent.UPDATED;
try {
isValid = true;
this.state = BundleEvent.RESOLVED;
Framework.notifyBundleListeners(BundleEvent.STARTED, this);
if (Framework.DEBUG_BUNDLES && log.isInfoEnabled()) {
log.info("Framework: Bundle " + toString() + " started.");
}
} catch (Throwable th) {
Framework.clearBundleTrace(this);
this.state = BundleEvent.STOPPED;
String msg = "Error starting bundle " + toString();
log.error(msg,th);
}
}
}
/**
* The bundle event callback method inserts all bundle events into the
* log. Events are all assigned the log level info.
*
* @param be
* the bundle event that has occured.
*/
public void bundleChanged(BundleEvent be) {
String msg = null;
switch (be.getType()) {
case BundleEvent.INSTALLED:
msg = "BundleEvent INSTALLED";
break;
case BundleEvent.STARTED:
msg = "BundleEvent STARTED";
break;
case BundleEvent.STOPPED:
msg = "BundleEvent STOPPED";
break;
case BundleEvent.UNINSTALLED:
msg = "BundleEvent UNINSTALLED";
break;
case BundleEvent.UPDATED:
msg = "BundleEvent UPDATED";
break;
case BundleEvent.RESOLVED:
msg = "BundleEvent RESOLVED";
break;
case BundleEvent.UNRESOLVED:
msg = "BundleEvent UNRESOLVED";
break;
/* case BundleEvent.STARTING:
msg = "BundleEvent STARTING";
break;
case BundleEvent.STOPPING:
msg = "BundleEvent STOPPING";
break;
*/
}
lrsf.log(new LogEntryImpl(be.getBundle(), LogService.LOG_INFO, msg));
}
public static String bundleEventName(int type)
{
switch (type) {
case BundleEvent.INSTALLED:
return "installed";
case BundleEvent.STARTED:
return "started";
case BundleEvent.STOPPED:
return "stopped";
case BundleEvent.UNINSTALLED:
return "uninstalled";
case BundleEvent.UPDATED:
return "updated";
case BundleEvent.RESOLVED:
return "resolved";
case BundleEvent.UNRESOLVED:
return "unresolved";
case BundleEvent.STARTING:
return "starting";
case BundleEvent.STOPPING:
return "stopping";
case BundleEvent.LAZY_ACTIVATION:
return "lazyActivation";
default:
return "<" + type + ">";
}
}
public void bundleChanged(BundleEvent bundleEvent) {
switch (bundleEvent.getType()) {
case BundleEvent.INSTALLED:
case BundleEvent.UPDATED:
Message obtain = Message.obtain();
obtain.obj = bundleEvent.getBundle().getLocation();
this.mSecurityCheckHandler.sendMessage(obtain);
return;
default:
return;
}
}
/**
* A listener for events sent by bundles
* @param bundleEvent The event sent by the bundle
* @author Johnny Baveras
*/
public void bundleChanged(BundleEvent bundleEvent) {
String topic = null;
boolean knownMessageType = true;
switch (bundleEvent.getType()) {
case BundleEvent.INSTALLED:
topic = INSTALLED_TOPIC;
break;
case BundleEvent.STARTED:
topic = STARTED_TOPIC;
break;
case BundleEvent.STOPPED:
topic = STOPPED_TOPIC;
break;
case BundleEvent.UPDATED:
topic = UPDATED_TOPIC;
break;
case BundleEvent.UNINSTALLED:
topic = UNINSTALLED_TOPIC;
break;
case BundleEvent.RESOLVED:
topic = RESOLVED_TOPIC;
break;
case BundleEvent.UNRESOLVED:
topic = UNRESOLVED_TOPIC;
break;
default:
/* Setting the boolean to false if an unknown event arrives */
knownMessageType = false;
break;
}
/* Stores the properties of the event in the dictionary, if the event is known */
if (knownMessageType) {
if(!Activator.handlerTracker.anyHandlersMatching(topic)) {
return;
}
Map<String,Object> props = new HashMap<String,Object>();
Bundle bundle = bundleEvent.getBundle();
putProp(props, EventConstants.EVENT, bundleEvent);
putProp(props, "bundle.id", new Long(bundle.getBundleId()));
putProp(props, EventConstants.BUNDLE_SYMBOLICNAME, bundle.getSymbolicName());
putProp(props, "bundle", bundle);
/* Tries posting the event once the properties are set */
try {
Activator.eventAdmin.postEvent(new Event(topic, props));
} catch (Exception e) {
Activator.log.error("EXCEPTION in bundleChanged()", e);
}
} else {
/* Logs an error if the event, which arrived, were of an unknown type */
Activator.log.error("Recieved unknown bundle event message (type="
+bundleEvent.getType() +"), discarding");
}
// }
}
@Override
@SuppressLint({"NewApi"})
public void bundleChanged(BundleEvent bundleEvent) {
switch (bundleEvent.getType()) {
case BundleEvent.LOADED:
loaded(bundleEvent.getBundle());
break;
case BundleEvent.INSTALLED:
installed(bundleEvent.getBundle());
break;
case BundleEvent.STARTED:
if (isLewaOS()) {
if (Looper.myLooper() == null) {
Looper.prepare();
}
started(bundleEvent.getBundle());
} else if (Framework.isFrameworkStartupShutdown()) {
BundleStartTask bundleStartTask = new BundleStartTask();
if (VERSION.SDK_INT > 11) {
bundleStartTask.executeOnExecutor(
AsyncTask.THREAD_POOL_EXECUTOR,
bundleEvent.getBundle());
return;
}
bundleStartTask
.execute(bundleEvent.getBundle());
} else {
started(bundleEvent.getBundle());
}
break;
case BundleEvent.STOPPED:
stopped(bundleEvent.getBundle());
break;
case BundleEvent.UPDATED:
updated(bundleEvent.getBundle());
break;
case BundleEvent.UNINSTALLED:
{
uninstalled(bundleEvent.getBundle());
break;
}
default:
}
}
private static void launch() {
STORAGE_LOCATION = properties.getProperty(OpenAtlasInternalConstant.INSTALL_LOACTION, properties.getProperty("org.osgi.framework.dir", BASEDIR + File.separatorChar + "storage"))
+ File.separatorChar;
systemBundle = new SystemBundle();
systemBundle.state = BundleEvent.UPDATED;
}
/**
* A bundle tracked by the {@code BundleTracker} has been modified.
*
* <p>
* This method is called when a bundle being tracked by the {@code BundleTracker} has had its state modified.
*
* @param bundle The {@code Bundle} whose state has been modified.
* @param event The bundle event which caused this customizer method to be
* called or {@code null} if there is no bundle event associated with
* the call to this method.
* @param object The tracked object for the specified bundle.
*/
@Override
public void modifiedBundle(Bundle bundle, BundleEvent event, Bundle object) {
int type = event.getType();
if (type == BundleEvent.UPDATED || type == BundleEvent.RESOLVED) {
addEvent(bundle, event);
}
}
/**
* A bundle tracked by the {@code BundleTracker} has been modified.
*
* <p>
* This method is called when a bundle being tracked by the {@code BundleTracker} has had its state modified.
*
* @param bundle The {@code Bundle} whose state has been modified.
* @param event The bundle event which caused this customizer method to be
* called or {@code null} if there is no bundle event associated with
* the call to this method.
* @param object The tracked object for the specified bundle.
*/
@Override
public void modifiedBundle(Bundle bundle, BundleEvent event, Bundle object) {
int type = event.getType();
if (type == BundleEvent.UPDATED || type == BundleEvent.RESOLVED) {
addEvent(bundle, event);
}
}