View Javadoc

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  }