You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ps...@apache.org on 2011/05/13 16:24:50 UTC

svn commit: r1102755 - /commons/sandbox/performance/trunk/src/java/org/apache/commons/performance/pool/Waiter.java

Author: psteitz
Date: Fri May 13 14:24:50 2011
New Revision: 1102755

URL: http://svn.apache.org/viewvc?rev=1102755&view=rev
Log:
Implemented equals, hashCode and toString.

Modified:
    commons/sandbox/performance/trunk/src/java/org/apache/commons/performance/pool/Waiter.java

Modified: commons/sandbox/performance/trunk/src/java/org/apache/commons/performance/pool/Waiter.java
URL: http://svn.apache.org/viewvc/commons/sandbox/performance/trunk/src/java/org/apache/commons/performance/pool/Waiter.java?rev=1102755&r1=1102754&r2=1102755&view=diff
==============================================================================
--- commons/sandbox/performance/trunk/src/java/org/apache/commons/performance/pool/Waiter.java (original)
+++ commons/sandbox/performance/trunk/src/java/org/apache/commons/performance/pool/Waiter.java Fri May 13 14:24:50 2011
@@ -17,6 +17,8 @@
 
 package org.apache.commons.performance.pool;
 
+import java.util.concurrent.atomic.AtomicLong;
+
 /**
  * <p>Object created by {@link WaiterFactory}. Maintains active / valid state,
  * last passivated and idle times.  Waits with configurable latency when 
@@ -31,11 +33,18 @@ public class Waiter {
     private long lastPassivated = 0;
     private long lastIdleTimeMs = 0;
     
+    /** Next available ID */
+    private static AtomicLong nextId = new AtomicLong(0);
+    
+    /** Unique ID */
+    private final long id;
+    
     public Waiter(boolean active, boolean valid, long latency) {
         this.active = active;
         this.valid = valid;
         this.latency = latency;
         this.lastPassivated = System.currentTimeMillis();
+        this.id = nextId.getAndIncrement();
     }
 
     /**
@@ -129,4 +138,36 @@ public class Waiter {
         return lastIdleTimeMs;
     }
     
+    public boolean equals(Object obj) {
+        if (null == obj || !(obj instanceof Waiter)) {
+            return false;
+        }
+        if (obj == this) {
+            return true;
+        }
+        return ((Waiter) obj).id == this.id;
+    }
+    
+    public int hashCode() {
+        return Long.valueOf(id).hashCode();
+    }
+    
+    public String toString() {
+        StringBuffer buff = new StringBuffer("Waiter\n");
+        buff.append("ID: ");
+        buff.append(id);
+        buff.append("  Active: ");
+        buff.append(active);
+        buff.append("  Valid: ");
+        buff.append(valid);
+        buff.append(" Latency: ");
+        buff.append(latency);
+        buff.append("  Last Passivated: ");
+        buff.append(lastPassivated);
+        buff.append("  Last Idle Time: ");
+        buff.append(lastIdleTimeMs);
+        buff.append("\n");
+        return buff.toString();
+    }
+    
 }