package gw.contact uses gw.api.domain.archiving.MergeableReferenceable uses gw.api.database.Query uses gw.api.database.Relop uses java.lang.IllegalStateException class AddressMergeableReferenceableImpl implements MergeableReferenceable { var _address : Address construct(address : Address) { _address = address } override function findMergeReplacement() : KeyableBean { var query = Query.make(AddressReplacement) query.compare(AddressReplacement#MergedPublicID, Relop.Equals, _address.PublicID) var replacement = query.select().AtMostOneRow // now inspect bundle and overlay var beansInBundle = _address.Bundle.getBeansByRootType(AddressReplacement).whereTypeIs(AddressReplacement).where(\ acrRep -> acrRep.MergedPublicID == _address.PublicID) if (beansInBundle.Count > 0) { if (beansInBundle.Count == 1) { replacement = beansInBundle.single() } else { throw new IllegalStateException("More than one bean in bundle with MergedPublicID: ${_address.PublicID}") } } return replacement != null ? replacement.ReplacementAddress : _address } }