[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