[jboss-cvs] JBossAS SVN: r94421 - projects/jboss-osgi/projects/runtime/microcontainer/trunk/src/main/java/org/jboss/osgi/framework/plugins/internal.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Oct 6 12:13:43 EDT 2009
Author: thomas.diesler at jboss.com
Date: 2009-10-06 12:13:42 -0400 (Tue, 06 Oct 2009)
New Revision: 94421
Modified:
projects/jboss-osgi/projects/runtime/microcontainer/trunk/src/main/java/org/jboss/osgi/framework/plugins/internal/FrameworkEventsPluginImpl.java
Log:
Add option for synchronous event delivery
Modified: projects/jboss-osgi/projects/runtime/microcontainer/trunk/src/main/java/org/jboss/osgi/framework/plugins/internal/FrameworkEventsPluginImpl.java
===================================================================
--- projects/jboss-osgi/projects/runtime/microcontainer/trunk/src/main/java/org/jboss/osgi/framework/plugins/internal/FrameworkEventsPluginImpl.java 2009-10-06 15:39:12 UTC (rev 94420)
+++ projects/jboss-osgi/projects/runtime/microcontainer/trunk/src/main/java/org/jboss/osgi/framework/plugins/internal/FrameworkEventsPluginImpl.java 2009-10-06 16:13:42 UTC (rev 94421)
@@ -65,6 +65,9 @@
/** The executor service */
private ExecutorService executorService;
+
+ /** True for synchronous event delivery */
+ private boolean synchronous;
/** The bundle listeners */
private final Map<Bundle, List<BundleListener>> bundleListeners = new ConcurrentHashMap<Bundle, List<BundleListener>>();
@@ -82,6 +85,11 @@
this.executorService = Executors.newCachedThreadPool();
}
+ public void setSynchronous(boolean synchronous)
+ {
+ this.synchronous = synchronous;
+ }
+
public void addBundleListener(Bundle bundle, BundleListener listener)
{
if (listener == null)
@@ -298,7 +306,7 @@
};
// Fire the event in a runnable
- executorService.execute(runnable);
+ fireEvent(runnable, synchronous);
}
public void fireFrameworkEvent(final Bundle bundle, final int type, final Throwable throwable)
@@ -358,7 +366,7 @@
};
// Fire the event in a runnable
- executorService.execute(runnable);
+ fireEvent(runnable, synchronous);
}
public void fireServiceEvent(Bundle bundle, int type, final OSGiServiceState service)
@@ -415,7 +423,7 @@
};
// Fire the event in a runnable
- executorService.execute(runnable);
+ fireEvent(runnable, synchronous);
}
private Bundle assertBundle(Bundle bundle)
@@ -430,6 +438,18 @@
return bundle;
}
+ private void fireEvent(Runnable runnable, boolean synchronous)
+ {
+ if (synchronous)
+ {
+ runnable.run();
+ }
+ else
+ {
+ executorService.execute(runnable);
+ }
+ }
+
/**
* Filter and AccessControl for service events
*/
More information about the jboss-cvs-commits
mailing list