package org.limewire.friend.impl.address; import org.limewire.friend.impl.address.FriendAddress; import org.limewire.io.Address; import org.limewire.net.address.FirewalledAddress; import org.limewire.util.Objects; import org.limewire.util.StringUtils; /** * A composite of {@link FriendAddress} and {@link FirewalledAddress} to * allow connect back requests to be sent over xmpp. */ public class FriendFirewalledAddress implements Address { private final FriendAddress friendAddress; private final FirewalledAddress resolvedAddress; /** * Constructs an {@link FriendFirewalledAddress}. * @param friendAddress cannot be null * @param resolvedAddress cannot be null */ public FriendFirewalledAddress(FriendAddress friendAddress, FirewalledAddress resolvedAddress) { this.friendAddress = Objects.nonNull(friendAddress, "xmppAddress"); this.resolvedAddress = Objects.nonNull(resolvedAddress, "resolvedAddress"); } @Override public String getAddressDescription() { return friendAddress.getAddressDescription(); } /** * @return the {@link FriendAddress} */ public FriendAddress getFriendAddress() { return friendAddress; } /** * @return the {@link FirewalledAddress} */ public FirewalledAddress getFirewalledAddress() { return resolvedAddress; } @Override public String toString() { return StringUtils.toString(this); } @Override public boolean equals(Object obj) { if (obj instanceof FriendFirewalledAddress) { FriendFirewalledAddress other = (FriendFirewalledAddress)obj; return this.friendAddress.equals(other.friendAddress) && this.resolvedAddress.equals(other.resolvedAddress); } return false; } @Override public int hashCode() { return friendAddress.hashCode() + 31 * resolvedAddress.hashCode(); } }