View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership. The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License. You may obtain a copy of the License at
9    * 
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   * 
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.apache.river.discovery;
20  
21  import java.util.Arrays;
22  import net.jini.core.lookup.ServiceRegistrar;
23  
24  /**
25   * Class representing the values obtained as the result of unicast discovery.
26   *
27   * @author Sun Microsystems, Inc.
28   * @since 2.0
29   */
30  public class UnicastResponse {
31  
32      /** The lookup service host. */
33      private final String host;
34      /** The lookup service listen port. */
35      private final int port;
36      /** The lookup service member groups. */
37      private final String[] groups;
38      /** The lookup service proxy. */
39      private final ServiceRegistrar registrar;
40  
41      /**
42       * Creates new <code>UnicastResponse</code> instance containing the given
43       * values.  The <code>groups</code> array is copied; a <code>null</code>
44       * value is considered equivalent to an empty array.
45       *
46       * @param host the lookup service host
47       * @param port the lookup service listen port
48       * @param groups the lookup service member groups
49       * @param registrar the lookup service proxy
50       * @throws NullPointerException if <code>host</code> or
51       * <code>registrar</code> is <code>null</code>, or if <code>groups</code>
52       * contains <code>null</code>
53       * @throws IllegalArgumentException if <code>port</code> is out of range
54       */
55      public UnicastResponse(String host,
56  			   int port,
57  			   String[] groups,
58  			   ServiceRegistrar registrar)
59      {
60  	groups = (groups != null) ? (String[]) groups.clone() : new String[0];
61  	if (host == null ||
62  	    registrar == null ||
63  	    Arrays.asList(groups).contains(null))
64  	{
65  	    throw new NullPointerException();
66  	}
67  	if (port < 0 || port > 0xFFFF) {
68  	    throw new IllegalArgumentException("port out of range: " + port);
69  	}
70  	this.host = host;
71  	this.port = port;
72  	this.groups = groups;
73  	this.registrar = registrar;
74      }
75  
76      /**
77       * Returns the lookup service host name.
78       *
79       * @return the lookup service host name
80       */
81      public String getHost() {
82  	return host;
83      }
84  
85      /**
86       * Returns the lookup service listen port.
87       *
88       * @return the lookup service listen port
89       */
90      public int getPort() {
91  	return port;
92      }
93  
94      /**
95       * Returns the member groups of the lookup service.
96       *
97       * @return the member groups of the lookup service
98       */
99      public String[] getGroups() {
100 	return (String[]) groups.clone();
101     }
102 
103     /**
104      * Returns the lookup service proxy.
105      *
106      * @return the lookup service proxy
107      */
108     public ServiceRegistrar getRegistrar() {
109 	return registrar;
110     }
111 
112     /**
113      * Returns a string representation of this response.
114      *
115      * @return a string representation of this response
116      */
117     public String toString() {
118 	StringBuilder sb = new StringBuilder(256);
119 	sb.append("UnicastResponse[")
120 	    .append(host)
121 	    .append(":")
122 	    .append(port)
123 	    .append(", ")
124 	    .append(Arrays.asList(groups))
125 	    .append(", ")
126 	    .append(registrar)
127 	    .append("]");
128 	return sb.toString();
129     }
130 }