1 18 19 package com.martiansoftware.nailgun; 20 21 26 27 public class NailStats implements Cloneable { 28 29 private Class nailclass; 30 private long runCounter; 31 private long refCounter; 32 private Object lock; 33 34 38 NailStats(Class nailclass) { 39 this.nailclass = nailclass; 40 runCounter = 0; 41 refCounter = 0; 42 lock = new Object (); 43 } 44 45 48 void nailStarted() { 49 synchronized(lock) { 50 ++runCounter; 51 ++refCounter; 52 } 53 } 54 55 58 void nailFinished() { 59 synchronized(lock) { 60 --refCounter; 61 } 62 } 63 64 70 public long getRunCount() { 71 return (runCounter); 72 } 73 74 78 public long getRefCount() { 79 return (refCounter); 80 } 81 82 86 public Class getNailClass() { 87 return (nailclass); 88 } 89 90 93 public int hashCode() { 94 return (nailclass.hashCode()); 95 } 96 97 104 public boolean equals(Object o) { 105 NailStats other = (NailStats) o; 106 return (nailclass.equals(other.nailclass)); 107 } 108 109 113 public Object clone() { 114 Object result = null; 115 try { 116 result = super.clone(); 117 } catch (CloneNotSupportedException toDiscard) {} 118 return (result); 119 } 120 121 127 public String toString() { 128 return (nailclass.getName() + ": " + getRunCount() + "/" + getRefCount()); 129 } 130 } 131 | Popular Tags |