package org.limewire.friend.api.feature;
import java.net.URI;
import org.limewire.util.Objects;
import org.limewire.util.StringUtils;
/**
* Represents a custom capability that a FriendPresence supports. A Feature is
* used to layer custom communication on top of existing social networks, (i.e., jabber)
* They may represent custom data that enables two friends to make a p2p connection,
* or an action, such as recommending a file to them.
*/
public class Feature<T> {
private final T feature;
private final URI id;
public Feature(URI id) {
this.feature = null;
this.id = id;
}
public Feature(T feature, URI id) {
this.feature = Objects.nonNull(feature, "feature");
this.id = id;
}
public T getFeature() {
return feature;
}
public URI getID() {
return id;
}
@Override
public String toString() {
return StringUtils.toString(this, id, feature);
}
}