home *** CD-ROM | disk | FTP | other *** search
- package netscape.plugin.composer;
-
- import java.util.Vector;
-
- class PluginKiller implements Runnable {
- private Vector list = new Vector();
-
- PluginKiller() {
- SecurityManager.enablePrivilege("SuperUser");
- Thread var1 = new Thread(this, "Composer Plug-in Killer");
- var1.start();
- }
-
- synchronized void kill(ThreadGroup var1) {
- this.list.addElement(var1);
- this.notifyAll();
- }
-
- synchronized ThreadGroup getPluginThreadGroup() {
- while(this.list.isEmpty()) {
- try {
- this.wait();
- } catch (InterruptedException var3) {
- }
- }
-
- int var1 = this.list.size() - 1;
- ThreadGroup var2 = (ThreadGroup)this.list.elementAt(var1);
- this.list.removeElementAt(var1);
- return var2;
- }
-
- public void run() {
- while(true) {
- try {
- ThreadGroup var1 = this.getPluginThreadGroup();
- synchronized(var1){}
-
- try {
- try {
- var1.wait(300L);
- } catch (InterruptedException var31) {
- }
-
- if (var1.activeCount() > 0) {
- try {
- SecurityManager.enablePrivilege("SuperUser");
- var1.stop();
- var1.wait(5000L);
- } catch (InterruptedException var29) {
- } finally {
- SecurityManager.revertPrivilege();
- }
- }
-
- try {
- SecurityManager.enablePrivilege("SuperUser");
- var1.destroy();
- } catch (Exception var27) {
- } finally {
- SecurityManager.revertPrivilege();
- }
- } catch (Throwable var32) {
- throw var32;
- }
- } catch (Exception var33) {
- System.out.println("Exception occurred while deleting Composer Plug-in thread group: ");
- ((Throwable)var33).printStackTrace();
- }
- }
- }
-
- public String toString() {
- return new String("Plugin thread killer! Composer plugins to be disposed of: " + this.list);
- }
- }
-