X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fuk%2Fac%2Fvamsas%2Fobjects%2Fcore%2FInstance.java;h=9ffd5960c1c92bd47d2ba8e3e72132bd6e92aaec;hb=1890f014c0a312a7a2203c878e4802e3eb914e47;hp=6cfeec070d432de314fe636575a1f4425e35cc4c;hpb=de558440c776d39285b02d970a21df7002e85a3c;p=vamsas.git diff --git a/src/uk/ac/vamsas/objects/core/Instance.java b/src/uk/ac/vamsas/objects/core/Instance.java index 6cfeec0..9ffd596 100644 --- a/src/uk/ac/vamsas/objects/core/Instance.java +++ b/src/uk/ac/vamsas/objects/core/Instance.java @@ -64,12 +64,29 @@ implements java.io.Serializable if (obj instanceof Instance) { Instance temp = (Instance)obj; + boolean thcycle; + boolean tmcycle; if (this._urn != null) { if (temp._urn == null) return false; - else if (!(this._urn.equals(temp._urn))) - return false; - } - else if (temp._urn != null) + if (this._urn != temp._urn) { + thcycle=org.castor.util.CycleBreaker.startingToCycle(this._urn); + tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._urn); + if (thcycle!=tmcycle) { + if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._urn); }; + if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._urn); }; + return false; + } + if (!thcycle) { + if (!this._urn.equals(temp._urn)) { + org.castor.util.CycleBreaker.releaseCycleHandle(this._urn); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._urn); + return false; + } + org.castor.util.CycleBreaker.releaseCycleHandle(this._urn); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._urn); + } + } + } else if (temp._urn != null) return false; return true; } @@ -99,8 +116,10 @@ implements java.io.Serializable int result = super.hashCode(); long tmp; - if (_urn != null) { + if (_urn != null + && !org.castor.util.CycleBreaker.startingToCycle(_urn)) { result = 37 * result + _urn.hashCode(); + org.castor.util.CycleBreaker.releaseCycleHandle(_urn); } return result;