You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bi...@apache.org on 2006/05/25 06:07:26 UTC
svn commit: r409298 -
/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/modeler/Registry.java
Author: billbarker
Date: Wed May 24 21:07:25 2006
New Revision: 409298
URL: http://svn.apache.org/viewvc?rev=409298&view=rev
Log:
Port the fix for MODELER-3 from [modeler] (minus some of the fluff :).
It's mostly non-critical path stuff, so it shouldn't be that much of a performance hit.
Also throw in some Generics cleanups.
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/modeler/Registry.java
Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/modeler/Registry.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/modeler/Registry.java?rev=409298&r1=409297&r2=409298&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/modeler/Registry.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/modeler/Registry.java Wed May 24 21:07:25 2006
@@ -106,14 +106,14 @@
* The set of ManagedBean instances for the beans this registry
* knows about, keyed by name.
*/
- private HashMap descriptors = new HashMap();
+ private HashMap<String, ManagedBean> descriptors = new HashMap<String, ManagedBean>();
/** List of managed byeans, keyed by class name
*/
- private HashMap descriptorsByClass = new HashMap();
+ private HashMap<String, ManagedBean> descriptorsByClass = new HashMap<String, ManagedBean>();
// map to avoid duplicated searching or loading descriptors
- private HashMap searchedPaths=new HashMap();
+ private Hashtable<String, URL> searchedPaths=new Hashtable<String, URL>();
private Object key;
private Object guard;
@@ -218,9 +218,9 @@
* @since 1.1
*/
public void stop() {
- descriptorsByClass = new HashMap();
- descriptors = new HashMap();
- searchedPaths=new HashMap();
+ descriptorsByClass = new HashMap<String, ManagedBean>();
+ descriptors = new HashMap<String, ManagedBean>();
+ searchedPaths=new Hashtable<String, URL>();
}
/**
@@ -411,9 +411,11 @@
*/
public void addManagedBean(ManagedBean bean) {
// XXX Use group + name
- descriptors.put(bean.getName(), bean);
- if( bean.getType() != null ) {
- descriptorsByClass.put( bean.getType(), bean );
+ synchronized(descriptors) {
+ descriptors.put(bean.getName(), bean);
+ if( bean.getType() != null ) {
+ descriptorsByClass.put( bean.getType(), bean );
+ }
}
}
@@ -428,10 +430,12 @@
*/
public ManagedBean findManagedBean(String name) {
// XXX Group ?? Use Group + Type
- ManagedBean mb=((ManagedBean) descriptors.get(name));
- if( mb==null )
- mb=(ManagedBean)descriptorsByClass.get(name);
- return mb;
+ synchronized(descriptors) {
+ ManagedBean mb= descriptors.get(name);
+ if( mb==null )
+ mb=descriptorsByClass.get(name);
+ return mb;
+ }
}
/**
@@ -441,7 +445,9 @@
* @since 1.0
*/
public String[] findManagedBeans() {
- return ((String[]) descriptors.keySet().toArray(new String[0]));
+ synchronized(descriptors) {
+ return ((String[]) descriptors.keySet().toArray(new String[0]));
+ }
}
@@ -456,13 +462,15 @@
public String[] findManagedBeans(String group) {
ArrayList results = new ArrayList();
- Iterator items = descriptors.values().iterator();
- while (items.hasNext()) {
- ManagedBean item = (ManagedBean) items.next();
- if ((group == null) && (item.getGroup() == null)) {
- results.add(item.getName());
- } else if (group.equals(item.getGroup())) {
- results.add(item.getName());
+ synchronized(descriptors) {
+ Iterator<ManagedBean> items = descriptors.values().iterator();
+ while (items.hasNext()) {
+ ManagedBean item = items.next();
+ if ((group == null) && (item.getGroup() == null)) {
+ results.add(item.getName());
+ } else if (group.equals(item.getGroup())) {
+ results.add(item.getName());
+ }
}
}
String values[] = new String[results.size()];
@@ -479,8 +487,10 @@
*/
public void removeManagedBean(ManagedBean bean) {
// TODO: change this to use group/name
- descriptors.remove(bean.getName());
- descriptorsByClass.remove( bean.getType());
+ synchronized(descriptors) {
+ descriptors.remove(bean.getName());
+ descriptorsByClass.remove( bean.getType());
+ }
}
// -------------------- Deprecated 1.0 methods --------------------
@@ -840,7 +850,7 @@
*
* @param packageName
*/
- public void loadDescriptors( String packageName, ClassLoader classLoader ) {
+ public synchronized void loadDescriptors( String packageName, ClassLoader classLoader ) {
String res=packageName.replace( '.', '/');
if( log.isTraceEnabled() ) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org