[Jboss-cvs] JBossAS SVN: r55526 - projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Aug 11 11:16:28 EDT 2006
Author: adrian at jboss.org
Date: 2006-08-11 11:16:26 -0400 (Fri, 11 Aug 2006)
New Revision: 55526
Modified:
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java
Log:
[JBAS-1841] - Make the controller lock more fine grained
such the lock is not held during context callouts.
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java 2006-08-11 15:16:04 UTC (rev 55525)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java 2006-08-11 15:16:26 UTC (rev 55526)
@@ -21,7 +21,6 @@
*/
package org.jboss.kernel.plugins.dependency;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -89,7 +88,7 @@
return null;
}
- public synchronized ControllerContext getContext(Object name, ControllerState state)
+ public ControllerContext getContext(Object name, ControllerState state)
{
ControllerContext context = super.getContext(name, state);
if (context != null)
@@ -108,58 +107,72 @@
return null;
}
- public synchronized void addSupplies(KernelControllerContext context)
+ public void addSupplies(KernelControllerContext context)
{
BeanMetaData metaData = context.getBeanMetaData();
- Set supplies = metaData.getSupplies();
+ Set<SupplyMetaData> supplies = metaData.getSupplies();
if (supplies != null)
{
boolean trace = log.isTraceEnabled();
if (supplies.isEmpty() == false)
{
- for (Iterator i = supplies.iterator(); i.hasNext();)
+ lockWrite();
+ try
{
- SupplyMetaData supplied = (SupplyMetaData) i.next();
- Object supply = supplied.getSupply();
- List<KernelControllerContext> list = suppliers.get(supply);
- if (list == null)
+ for (SupplyMetaData supplied : supplies)
{
- list = CollectionsFactory.createCopyOnWriteList();
- suppliers.put(supply, list);
+ Object supply = supplied.getSupply();
+ List<KernelControllerContext> list = suppliers.get(supply);
+ if (list == null)
+ {
+ list = CollectionsFactory.createCopyOnWriteList();
+ suppliers.put(supply, list);
+ }
+ list.add(context);
+ if (trace)
+ log.trace("Suppliers of " + supply + ": " + list);
}
- list.add(context);
- if (trace)
- log.trace("Suppliers of " + supply + ": " + list);
}
+ finally
+ {
+ unlockWrite();
+ }
}
}
}
- public synchronized void removeSupplies(KernelControllerContext context)
+ public void removeSupplies(KernelControllerContext context)
{
BeanMetaData metaData = context.getBeanMetaData();
- Set supplies = metaData.getSupplies();
+ Set<SupplyMetaData> supplies = metaData.getSupplies();
if (supplies != null)
{
boolean trace = log.isTraceEnabled();
if (supplies.isEmpty() == false)
{
- for (Iterator i = supplies.iterator(); i.hasNext();)
+ lockWrite();
+ try
{
- SupplyMetaData supplied = (SupplyMetaData) i.next();
- Object supply = supplied.getSupply();
- List<KernelControllerContext> list = suppliers.get(supply);
- if (list != null)
+ for (SupplyMetaData supplied : supplies)
{
- list.remove(context);
- if (list.isEmpty())
- suppliers.remove(supply);
- if (trace)
- log.trace("Suppliers of " + supply + ": " + list);
+ Object supply = supplied.getSupply();
+ List<KernelControllerContext> list = suppliers.get(supply);
+ if (list != null)
+ {
+ list.remove(context);
+ if (list.isEmpty())
+ suppliers.remove(supply);
+ if (trace)
+ log.trace("Suppliers of " + supply + ": " + list);
+ }
}
}
+ finally
+ {
+ unlockWrite();
+ }
}
}
}
More information about the jboss-cvs-commits
mailing list