def identity
: ReplicaIdentity
}
}
final lazy
val identity
= NamedIdentity
( name
)
case ( that
: NamedReplica
# NamedIdentity
) => // we have to use 'NamedReplica#' (type projection), otherwise the `other` would have path dependent type and would not match with just 'NamedIdentity' that.isInstanceOf [ NamedIdentity] && name == that.name
}
}
}
}
}
}
}
assert( o2.getId != o.getId )
assert( o2.getId != o3.getId )
assert( o2.getId == o4.getId )
assert( o2.getId == o2.getId )
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewogIAogIHRyYWl0IFJlcGxpY2EgewogICAgZGVmIGlkZW50aXR5OiBSZXBsaWNhSWRlbnRpdHkKICAgIAogICAgYWJzdHJhY3QgdHJhaXQgUmVwbGljYUlkZW50aXR5CiAgfQogIAogIHRyYWl0IExvY2FsUmVwbGljYSBleHRlbmRzIFJlcGxpY2EgewogICAgZmluYWwgdmFsIGlkZW50aXR5ID0gTG9jYWxJZGVudGl0eQogICAgCiAgICBvYmplY3QgTG9jYWxJZGVudGl0eSBleHRlbmRzIFJlcGxpY2FJZGVudGl0eQogIH0KICAKICAKICB0cmFpdCBOYW1lZFJlcGxpY2EgZXh0ZW5kcyBSZXBsaWNhIHsKICAgIHZhbCBuYW1lOiBTdHJpbmcKICAgIGZpbmFsIGxhenkgdmFsIGlkZW50aXR5ID0gTmFtZWRJZGVudGl0eShuYW1lKQogICAgCiAgICBjYXNlIGNsYXNzIE5hbWVkSWRlbnRpdHkgKG5hbWU6IFN0cmluZykgZXh0ZW5kcyBSZXBsaWNhSWRlbnRpdHkgewogICAgICBvdmVycmlkZSBkZWYgZXF1YWxzKG90aGVyOiBBbnkpOiBCb29sZWFuID0gb3RoZXIgbWF0Y2ggewogICAgICAgICAgY2FzZSAodGhhdDogTmFtZWRSZXBsaWNhI05hbWVkSWRlbnRpdHkpID0+IC8vIHdlIGhhdmUgdG8gdXNlICdOYW1lZFJlcGxpY2EjJyAodHlwZSBwcm9qZWN0aW9uKSwgb3RoZXJ3aXNlIHRoZSBgb3RoZXJgIHdvdWxkIGhhdmUgcGF0aCBkZXBlbmRlbnQgdHlwZSBhbmQgd291bGQgbm90IG1hdGNoIHdpdGgganVzdCAnTmFtZWRJZGVudGl0eScKICAgICAgICAgICB0aGF0LmlzSW5zdGFuY2VPZltOYW1lZElkZW50aXR5XSAmJiBuYW1lID09IHRoYXQubmFtZQogICAgICAgICAgCiAgICAgICAgICBjYXNlIF8gPT4KICAgICAgICAgICBmYWxzZQogICAgICB9CiAgICB9CiAgfQogIAogIGNsYXNzIENSRFQgewogICAgdGhpczogUmVwbGljYSA9PgogICAgCiAgICBkZWYgZ2V0SWQgPSBpZGVudGl0eQogIH0KCiAgdmFsIG8gPSBuZXcgQ1JEVCgpIHdpdGggTG9jYWxSZXBsaWNhIAogIAogIHZhbCBvMiA9IG5ldyBDUkRUKCkgd2l0aCBOYW1lZFJlcGxpY2EgewogICAgdmFsIG5hbWUgPSAiMiIKICB9CiAgCiAgdmFsIG8zID0gbmV3IENSRFQoKSB3aXRoIE5hbWVkUmVwbGljYSB7CiAgICB2YWwgbmFtZSA9ICIzIgogIH0KICAKICB2YWwgbzQgPSBuZXcgQ1JEVCgpIHdpdGggTmFtZWRSZXBsaWNhIHsKICAgIHZhbCBuYW1lID0gIjIiCiAgfQogIAogIGFzc2VydChvMi5nZXRJZCAhPSBvLmdldElkKQogIGFzc2VydChvMi5nZXRJZCAhPSBvMy5nZXRJZCkKICBhc3NlcnQobzIuZ2V0SWQgPT0gbzQuZ2V0SWQpCiAgYXNzZXJ0KG8yLmdldElkID09IG8yLmdldElkKQp9