001/* 002 * Util.java 003 * 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, software 015 * distributed under the License is distributed on an "AS IS" BASIS, 016 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 017 * See the License for the specific language governing permissions and 018 * limitations under the License. 019 */ 020 021 022package org.apache.hadoop.metrics2.util; 023 024import java.net.InetSocketAddress; 025import java.util.List; 026 027import com.google.common.collect.Lists; 028 029import org.apache.hadoop.classification.InterfaceAudience; 030import org.apache.hadoop.classification.InterfaceStability; 031import org.apache.hadoop.net.NetUtils; 032 033/** 034 * Helpers to handle server addresses 035 */ 036@InterfaceAudience.Public 037@InterfaceStability.Evolving 038public class Servers { 039 /** 040 * This class is not intended to be instantiated 041 */ 042 private Servers() {} 043 044 /** 045 * Parses a space and/or comma separated sequence of server specifications 046 * of the form <i>hostname</i> or <i>hostname:port</i>. If 047 * the specs string is null, defaults to localhost:defaultPort. 048 * 049 * @param specs server specs (see description) 050 * @param defaultPort the default port if not specified 051 * @return a list of InetSocketAddress objects. 052 */ 053 public static List<InetSocketAddress> parse(String specs, int defaultPort) { 054 List<InetSocketAddress> result = Lists.newArrayList(); 055 if (specs == null) { 056 result.add(new InetSocketAddress("localhost", defaultPort)); 057 } 058 else { 059 String[] specStrings = specs.split("[ ,]+"); 060 for (String specString : specStrings) { 061 result.add(NetUtils.createSocketAddr(specString, defaultPort)); 062 } 063 } 064 return result; 065 } 066}