package org.archstudio.xarchadt;
import java.util.Map;
import java.util.concurrent.atomic.AtomicLong;
import com.google.common.collect.MapMaker;
import com.google.common.primitives.Longs;
public final class ObjRef implements java.io.Serializable {
private static Map<Long, ObjRef> objRefs = new MapMaker().softValues().makeMap();
public static ObjRef lookupObjRef(long uid) {
return objRefs.get(uid);
}
private static final long serialVersionUID = -1027266603679479510L;
private static final AtomicLong atomicLong = new AtomicLong(1000);
private final long uid;
public ObjRef() {
this.uid = atomicLong.getAndIncrement();
objRefs.put(uid, this);
}
public long getUID() {
return uid;
}
@Override
public int hashCode() {
return Longs.hashCode(uid);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
ObjRef other = (ObjRef) obj;
if (uid != other.uid) {
return false;
}
return true;
}
@Override
public String toString() {
return "ObjRef[" + uid + "]";
}
}