package com.limegroup.gnutella; import java.net.URI; import java.util.Collection; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.limewire.core.api.friend.Friend; import org.limewire.core.api.friend.FriendPresence; import org.limewire.core.api.friend.feature.Feature; import org.limewire.core.api.friend.feature.FeatureEvent; import org.limewire.listener.EventListenerList; public class MockFriendPresence implements FriendPresence { private MockFriend friend; private Map<URI, Feature> features; private EventListenerList<FeatureEvent> featureListeners; public MockFriendPresence() { this(new MockFriend()); } public MockFriendPresence(MockFriend friend, Feature...features) { this.features = new ConcurrentHashMap<URI, Feature>(); this.featureListeners = new EventListenerList<FeatureEvent>(); this.friend = friend; for(Feature feature : features) { addFeature(feature); } } @Override public Friend getFriend() { return friend; } @Override public String getPresenceId() { return null; //To change body of implemented methods use File | Settings | File Templates. } @Override public Collection<Feature> getFeatures() { return features.values(); } @Override public Feature getFeature(URI id) { return features.get(id); } @Override public boolean hasFeatures(URI... id) { for(URI uri : id) { if(getFeature(uri) == null) { return false; } } return true; } @Override public void addFeature(Feature feature) { features.put(feature.getID(), feature); featureListeners.broadcast(new FeatureEvent(this, FeatureEvent.Type.ADDED, feature)); } @Override public void removeFeature(URI id) { Feature feature = features.remove(id); if(feature != null) { featureListeners.broadcast(new FeatureEvent(this, FeatureEvent.Type.REMOVED, feature)); } } }