KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > application > PluginInfo


1 package org.objectweb.celtix.application;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.Collection JavaDoc;
5
6 import org.objectweb.celtix.plugins.PluginManager;
7
8 public class PluginInfo {
9
10     private final String JavaDoc className;
11     private final PluginManager loadingManager;
12     private final PluginStateMachine state;
13     private final Collection JavaDoc<PluginManager> referringManagers;
14     private Object JavaDoc plugin;
15     private PluginInfo requiredFor;
16     
17     PluginInfo(String JavaDoc cn, PluginManager o) {
18         className = cn;
19         loadingManager = o;
20         state = new PluginStateMachine();
21         referringManagers = new ArrayList JavaDoc<PluginManager>();
22     }
23     
24     String JavaDoc getClassName() {
25         return className;
26     }
27     
28     ClassLoader JavaDoc getClassLoader() {
29         return loadingManager.getPluginClassLoader();
30     }
31
32     PluginStateMachine getState() {
33         return state;
34     }
35
36     Object JavaDoc getPlugin() {
37         return plugin;
38     }
39     
40     void setPlugin(Object JavaDoc p) {
41         plugin = p;
42     }
43     
44     void setRequiredFor(PluginInfo r) {
45         requiredFor = r;
46     }
47     
48     boolean isCircularDependency() {
49         PluginInfo r = requiredFor;
50         while (null != r) {
51             if (getClassName().equals(requiredFor.getClassName())
52                 && getClassLoader() == requiredFor.getClassLoader()) {
53                 return true;
54             }
55             r = r.requiredFor;
56         }
57         
58         return false;
59     }
60     
61     boolean isRegistered() {
62         return referringManagers.size() > 0;
63     }
64     
65     boolean isRegisteredWith(PluginManager manager) {
66         for (PluginManager pm : referringManagers) {
67             if (manager == pm) {
68                 return true;
69             }
70         }
71         return false;
72     }
73     
74     void register(PluginManager manager) {
75         referringManagers.add(manager);
76     }
77     
78     void unregister(PluginManager manager) {
79         referringManagers.remove(manager);
80     }
81 }
82
Popular Tags