* The set of ManagedBean instances for the beans this registry\r
* knows about, keyed by name.\r
*/\r
- private HashMap descriptors = new HashMap();\r
+ private HashMap<String, ManagedBean> descriptors = new HashMap<String, ManagedBean>();\r
\r
/** List of managed byeans, keyed by class name\r
*/\r
- private HashMap descriptorsByClass = new HashMap();\r
+ private HashMap<String, ManagedBean> descriptorsByClass = new HashMap<String, ManagedBean>();\r
\r
// map to avoid duplicated searching or loading descriptors \r
- private HashMap searchedPaths=new HashMap();\r
+ private Hashtable<String, URL> searchedPaths=new Hashtable<String, URL>();\r
\r
private Object key;\r
private Object guard;\r
* @since 1.1\r
*/ \r
public void stop() {\r
- descriptorsByClass = new HashMap();\r
- descriptors = new HashMap();\r
- searchedPaths=new HashMap();\r
+ descriptorsByClass = new HashMap<String, ManagedBean>();\r
+ descriptors = new HashMap<String, ManagedBean>();\r
+ searchedPaths=new Hashtable<String, URL>();\r
}\r
\r
/** \r
*/\r
public void addManagedBean(ManagedBean bean) {\r
// XXX Use group + name\r
- descriptors.put(bean.getName(), bean);\r
- if( bean.getType() != null ) {\r
- descriptorsByClass.put( bean.getType(), bean );\r
+ synchronized(descriptors) {\r
+ descriptors.put(bean.getName(), bean);\r
+ if( bean.getType() != null ) {\r
+ descriptorsByClass.put( bean.getType(), bean );\r
+ }\r
}\r
}\r
\r
*/\r
public ManagedBean findManagedBean(String name) {\r
// XXX Group ?? Use Group + Type\r
- ManagedBean mb=((ManagedBean) descriptors.get(name));\r
- if( mb==null )\r
- mb=(ManagedBean)descriptorsByClass.get(name);\r
- return mb;\r
+ synchronized(descriptors) {\r
+ ManagedBean mb= descriptors.get(name);\r
+ if( mb==null )\r
+ mb=descriptorsByClass.get(name);\r
+ return mb;\r
+ }\r
}\r
\r
/**\r
* @since 1.0\r
*/\r
public String[] findManagedBeans() {\r
- return ((String[]) descriptors.keySet().toArray(new String[0]));\r
+ synchronized(descriptors) {\r
+ return ((String[]) descriptors.keySet().toArray(new String[0]));\r
+ }\r
}\r
\r
\r
public String[] findManagedBeans(String group) {\r
\r
ArrayList results = new ArrayList();\r
- Iterator items = descriptors.values().iterator();\r
- while (items.hasNext()) {\r
- ManagedBean item = (ManagedBean) items.next();\r
- if ((group == null) && (item.getGroup() == null)) {\r
- results.add(item.getName());\r
- } else if (group.equals(item.getGroup())) {\r
- results.add(item.getName());\r
+ synchronized(descriptors) {\r
+ Iterator<ManagedBean> items = descriptors.values().iterator();\r
+ while (items.hasNext()) {\r
+ ManagedBean item = items.next();\r
+ if ((group == null) && (item.getGroup() == null)) {\r
+ results.add(item.getName());\r
+ } else if (group.equals(item.getGroup())) {\r
+ results.add(item.getName());\r
+ }\r
}\r
}\r
String values[] = new String[results.size()];\r
*/\r
public void removeManagedBean(ManagedBean bean) {\r
// TODO: change this to use group/name\r
- descriptors.remove(bean.getName());\r
- descriptorsByClass.remove( bean.getType());\r
+ synchronized(descriptors) {\r
+ descriptors.remove(bean.getName());\r
+ descriptorsByClass.remove( bean.getType());\r
+ }\r
}\r
\r
// -------------------- Deprecated 1.0 methods --------------------\r
*\r
* @param packageName\r
*/\r
- public void loadDescriptors( String packageName, ClassLoader classLoader ) {\r
+ public synchronized void loadDescriptors( String packageName, ClassLoader classLoader ) {\r
String res=packageName.replace( '.', '/');\r
\r
if( log.isTraceEnabled() ) {\r