[jboss-cvs] JBossAS SVN: r96889 - in projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency: spi/tracker and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Nov 24 14:54:45 EST 2009
Author: alesj
Date: 2009-11-24 14:54:45 -0500 (Tue, 24 Nov 2009)
New Revision: 96889
Modified:
projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/tracker/AbstractContextTracker.java
projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/tracker/TrackerConstants.java
projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/tracker/ContextTracker.java
Log:
Add counting lookup.
Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/tracker/AbstractContextTracker.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/tracker/AbstractContextTracker.java 2009-11-24 19:10:16 UTC (rev 96888)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/tracker/AbstractContextTracker.java 2009-11-24 19:54:45 UTC (rev 96889)
@@ -23,7 +23,6 @@
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -37,13 +36,37 @@
*/
public class AbstractContextTracker extends AbstractLockHolder implements ContextTracker
{
- /** The dummy */
- private static final Object DUMMY = new Object();
-
/** The mapping */
private Map<ControllerContext, Map<Object, Integer>> map = new HashMap<ControllerContext, Map<Object, Integer>>();
/**
+ * Count.
+ *
+ * @param target the target/user
+ * @param used the used
+ * @return tracking count
+ */
+ private int count(Object target, ControllerContext used)
+ {
+ lockRead();
+ try
+ {
+ Map<Object, Integer> counter = map.get(used);
+ if (counter != null)
+ {
+ Integer count = counter.get(target);
+ if (count != null)
+ return count;
+ }
+ return 0;
+ }
+ finally
+ {
+ unlockRead();
+ }
+ }
+
+ /**
* Add mapping.
*
* @param target the target/user
@@ -106,6 +129,16 @@
}
}
+ public int getInUseCount(ControllerContext target, ControllerContext used)
+ {
+ return count(target, used);
+ }
+
+ public int getTrackerCount(ContextTracker tracker, ControllerContext used)
+ {
+ return count(tracker, used);
+ }
+
public void addInUseContext(ControllerContext target, ControllerContext used)
{
add(target, used);
@@ -118,7 +151,7 @@
public void addUsing(ControllerContext used)
{
- add(DUMMY, used);
+ addTrackedBy(this, used);
}
public void removeInUseContext(ControllerContext target, ControllerContext used)
@@ -133,7 +166,7 @@
public void removeUsing(ControllerContext used)
{
- remove(DUMMY, used);
+ removeTrackedBy(this, used);
}
public boolean isContextInUse(ControllerContext used)
@@ -155,17 +188,7 @@
try
{
Map<Object, Integer> counter = map.get(used);
- if (counter != null)
- {
- Set<Object> contexts = counter.keySet();
- Set<Object> copy = new HashSet<Object>(contexts);
- copy.remove(DUMMY);
- return copy;
- }
- else
- {
- return Collections.emptySet();
- }
+ return (counter != null) ? Collections.unmodifiableSet(counter.keySet()) : Collections.emptySet();
}
finally
{
Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/tracker/TrackerConstants.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/tracker/TrackerConstants.java 2009-11-24 19:10:16 UTC (rev 96888)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/tracker/TrackerConstants.java 2009-11-24 19:54:45 UTC (rev 96889)
@@ -37,6 +37,16 @@
/** Dummy anchor tracker */
public static final ContextTracker FLAG = new ContextTracker()
{
+ public int getInUseCount(ControllerContext target, ControllerContext used)
+ {
+ return -1;
+ }
+
+ public int getTrackerCount(ContextTracker tracker, ControllerContext used)
+ {
+ return -1;
+ }
+
public void addInUseContext(ControllerContext target, ControllerContext used)
{
}
Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/tracker/ContextTracker.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/tracker/ContextTracker.java 2009-11-24 19:10:16 UTC (rev 96888)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/tracker/ContextTracker.java 2009-11-24 19:54:45 UTC (rev 96889)
@@ -34,6 +34,24 @@
public interface ContextTracker
{
/**
+ * Count how many times "used" is used by context.
+ *
+ * @param target the target context
+ * @param used the used context
+ * @return tracking count
+ */
+ int getInUseCount(ControllerContext target, ControllerContext used);
+
+ /**
+ * Count how many times "used" is tracked by tracker.
+ *
+ * @param tracker the tracker
+ * @param used the used context
+ * @return tracking count
+ */
+ int getTrackerCount(ContextTracker tracker, ControllerContext used);
+
+ /**
* Target context is using my "used" context.
*
* @param target the target context
More information about the jboss-cvs-commits
mailing list