[jboss-cvs] JBossAS SVN: r69498 - in projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop: annotation and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jan 31 06:43:34 EST 2008


Author: kabir.khan at jboss.com
Date: 2008-01-31 06:43:34 -0500 (Thu, 31 Jan 2008)
New Revision: 69498

Modified:
   projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/Advisor.java
   projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/AspectManager.java
   projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/JoinPointInfo.java
   projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/annotation/AnnotationRepository.java
   projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/util/LoggingReentrantReadWriteLock.java
Log:


Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/Advisor.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/Advisor.java	2008-01-31 11:37:39 UTC (rev 69497)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/Advisor.java	2008-01-31 11:43:34 UTC (rev 69498)
@@ -124,7 +124,7 @@
    }
 
    /** Read/Write lock to be used when lazy creating the collections */
-   protected LoggingReentrantReadWriteLock lock = new LoggingReentrantReadWriteLock();
+   protected LoggingReentrantReadWriteLock<Advisor> lock = new LoggingReentrantReadWriteLock<Advisor>(this);
 
    protected Set<AdviceBinding> adviceBindings = new HashSet<AdviceBinding>();
    protected volatile ArrayList<InterfaceIntroduction> interfaceIntroductions = UnmodifiableEmptyCollections.EMPTY_ARRAYLIST;

Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/AspectManager.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/AspectManager.java	2008-01-31 11:37:39 UTC (rev 69497)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/AspectManager.java	2008-01-31 11:43:34 UTC (rev 69498)
@@ -108,7 +108,7 @@
    private static final Logger logger = AOPLogger.getLogger(AspectManager.class);
    
    /** Read/Write lock to be used when lazy creating the collections */
-   LoggingReentrantReadWriteLock lock = new LoggingReentrantReadWriteLock();
+   LoggingReentrantReadWriteLock<AspectManager> lock = new LoggingReentrantReadWriteLock<AspectManager>(this);
 
    /** Advisors registered with this manager/domain */
    protected final WeakHashMap advisors = new WeakHashMap();

Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/JoinPointInfo.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/JoinPointInfo.java	2008-01-31 11:37:39 UTC (rev 69497)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/JoinPointInfo.java	2008-01-31 11:43:34 UTC (rev 69498)
@@ -32,7 +32,7 @@
 
 public abstract class JoinPointInfo implements JoinPointBean
 {
-   private LoggingReentrantReadWriteLock interceptorChainLock = new LoggingReentrantReadWriteLock();
+   private LoggingReentrantReadWriteLock<JoinPointInfo> interceptorChainLock = new LoggingReentrantReadWriteLock<JoinPointInfo>(this);
    
    private Interceptor[] interceptors;
 

Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/annotation/AnnotationRepository.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/annotation/AnnotationRepository.java	2008-01-31 11:37:39 UTC (rev 69497)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/annotation/AnnotationRepository.java	2008-01-31 11:43:34 UTC (rev 69498)
@@ -48,7 +48,7 @@
    private static final String CLASS_ANNOTATION = "CLASS";
    
    /** Read/Write lock to be used when lazy creating the collections */
-   protected LoggingReentrantReadWriteLock lock = new LoggingReentrantReadWriteLock();
+   protected LoggingReentrantReadWriteLock<AnnotationRepository> lock = new LoggingReentrantReadWriteLock<AnnotationRepository>(this);
 
    volatile Map annotations = UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP;
    volatile Map classAnnotations = UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP;

Modified: projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/util/LoggingReentrantReadWriteLock.java
===================================================================
--- projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/util/LoggingReentrantReadWriteLock.java	2008-01-31 11:37:39 UTC (rev 69497)
+++ projects/aop/branches/deadlocks/aop/src/main/org/jboss/aop/util/LoggingReentrantReadWriteLock.java	2008-01-31 11:43:34 UTC (rev 69498)
@@ -21,6 +21,7 @@
 */ 
 package org.jboss.aop.util;
 
+import java.lang.ref.WeakReference;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 /**
@@ -28,11 +29,26 @@
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class LoggingReentrantReadWriteLock
+public class LoggingReentrantReadWriteLock<T>
 {
+   WeakReference<T>  target;
    ReentrantReadWriteLock delegate = new ReentrantReadWriteLock();
    volatile Thread readLockThread;
    
+   public LoggingReentrantReadWriteLock(T target)
+   {
+      this.target = new WeakReference<T>(target);
+   }
+   
+   private T getTarget()
+   {
+      if (target != null)
+      {
+         return target.get();
+      }
+      return null;
+   }
+   
    public void lockRead()
    {
       lockOrUnlockRead(true);
@@ -47,7 +63,7 @@
    {
       if (lock)
       {
-         System.out.println("+ Want Read Lock " + Thread.currentThread());
+         System.out.println("+ Want Read Lock " + Thread.currentThread() + " for " + getTarget());
          delegate.readLock().lock();
          readLockThread = Thread.currentThread();
          System.out.println("+ Read Locked " + Thread.currentThread());
@@ -75,7 +91,7 @@
       if (lock)
       {
          Thread t = readLockThread;
-         System.out.println("+ Want Write Lock " + Thread.currentThread());
+         System.out.println("+ Want Write Lock " + Thread.currentThread() + " for " + getTarget());
          if (t != null && t == Thread.currentThread())
          {
             throw new RuntimeException(Thread.currentThread() + " is already read locked!!!");




More information about the jboss-cvs-commits mailing list