X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fuk%2Fac%2Fvamsas%2Fobjects%2Fcore%2FLink.java;fp=src%2Fuk%2Fac%2Fvamsas%2Fobjects%2Fcore%2FLink.java;h=17633cf9fbfb5151577f144461ed0a74d511b78d;hb=1890f014c0a312a7a2203c878e4802e3eb914e47;hp=aea537d6577e8dbd839fd7a69c0984202629aed8;hpb=de558440c776d39285b02d970a21df7002e85a3c;p=vamsas.git diff --git a/src/uk/ac/vamsas/objects/core/Link.java b/src/uk/ac/vamsas/objects/core/Link.java index aea537d..17633cf 100644 --- a/src/uk/ac/vamsas/objects/core/Link.java +++ b/src/uk/ac/vamsas/objects/core/Link.java @@ -70,19 +70,51 @@ implements java.io.Serializable if (obj instanceof Link) { Link temp = (Link)obj; + boolean thcycle; + boolean tmcycle; if (this._content != null) { if (temp._content == null) return false; - else if (!(this._content.equals(temp._content))) - return false; - } - else if (temp._content != null) + if (this._content != temp._content) { + thcycle=org.castor.util.CycleBreaker.startingToCycle(this._content); + tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._content); + if (thcycle!=tmcycle) { + if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._content); }; + if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._content); }; + return false; + } + if (!thcycle) { + if (!this._content.equals(temp._content)) { + org.castor.util.CycleBreaker.releaseCycleHandle(this._content); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._content); + return false; + } + org.castor.util.CycleBreaker.releaseCycleHandle(this._content); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._content); + } + } + } else if (temp._content != null) return false; if (this._href != null) { if (temp._href == null) return false; - else if (!(this._href.equals(temp._href))) - return false; - } - else if (temp._href != null) + if (this._href != temp._href) { + thcycle=org.castor.util.CycleBreaker.startingToCycle(this._href); + tmcycle=org.castor.util.CycleBreaker.startingToCycle(temp._href); + if (thcycle!=tmcycle) { + if (!thcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(this._href); }; + if (!tmcycle) { org.castor.util.CycleBreaker.releaseCycleHandle(temp._href); }; + return false; + } + if (!thcycle) { + if (!this._href.equals(temp._href)) { + org.castor.util.CycleBreaker.releaseCycleHandle(this._href); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._href); + return false; + } + org.castor.util.CycleBreaker.releaseCycleHandle(this._href); + org.castor.util.CycleBreaker.releaseCycleHandle(temp._href); + } + } + } else if (temp._href != null) return false; return true; } @@ -124,11 +156,15 @@ implements java.io.Serializable int result = super.hashCode(); long tmp; - if (_content != null) { + if (_content != null + && !org.castor.util.CycleBreaker.startingToCycle(_content)) { result = 37 * result + _content.hashCode(); + org.castor.util.CycleBreaker.releaseCycleHandle(_content); } - if (_href != null) { + if (_href != null + && !org.castor.util.CycleBreaker.startingToCycle(_href)) { result = 37 * result + _href.hashCode(); + org.castor.util.CycleBreaker.releaseCycleHandle(_href); } return result;