1 /* 2 * #%L 3 * Bitrepository Protocol 4 * 5 * $Id$ 6 * $HeadURL$ 7 * %% 8 * Copyright (C) 2010 - 2011 The State and University Library, The Royal Library and The State Archives, Denmark 9 * %% 10 * This program is free software: you can redistribute it and/or modify 11 * it under the terms of the GNU Lesser General Public License as 12 * published by the Free Software Foundation, either version 2.1 of the 13 * License, or (at your option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Lesser Public License for more details. 19 * 20 * You should have received a copy of the GNU General Lesser Public 21 * License along with this program. If not, see 22 * <http://www.gnu.org/licenses/lgpl-2.1.html>. 23 * #L% 24 */ 25 package org.bitrepository.client.conversation.selector; 26 27 import java.util.HashSet; 28 import java.util.Set; 29 import org.bitrepository.bitrepositorymessages.MessageResponse; 30 import org.bitrepository.client.exceptions.UnexpectedResponseException; 31 32 /** Can be used to select a single component to run an operation on by handling the identify responses. <p> 33 * The algorithm for selecting the component is implemented in the concrete classes. 34 */ 35 public class ComponentSelector { 36 /** Used for tracking who has answered. */ 37 protected final Set<SelectedComponentInfo> selectedComponents = new HashSet<SelectedComponentInfo>(); 38 39 public void selectComponent(MessageResponse response) throws UnexpectedResponseException { 40 selectedComponents.add(new SelectedComponentInfo(response.getFrom(), response.getReplyTo())); 41 } 42 43 public Set<SelectedComponentInfo> getSelectedComponents() { 44 return selectedComponents; 45 } 46 }