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 022 package org.apache.hadoop.metrics.spi; 023 024 import java.net.InetSocketAddress; 025 import java.net.SocketAddress; 026 import java.util.ArrayList; 027 import java.util.List; 028 029 import org.apache.hadoop.classification.InterfaceAudience; 030 import org.apache.hadoop.classification.InterfaceStability; 031 032 /** 033 * Static utility methods 034 */ 035 @InterfaceAudience.Public 036 @InterfaceStability.Evolving 037 public class Util { 038 039 /** 040 * This class is not intended to be instantiated 041 */ 042 private Util() {} 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 * @return a list of InetSocketAddress objects. 050 */ 051 public static List<InetSocketAddress> parse(String specs, int defaultPort) { 052 List<InetSocketAddress> result = new ArrayList<InetSocketAddress>(1); 053 if (specs == null) { 054 result.add(new InetSocketAddress("localhost", defaultPort)); 055 } 056 else { 057 String[] specStrings = specs.split("[ ,]+"); 058 for (String specString : specStrings) { 059 int colon = specString.indexOf(':'); 060 if (colon < 0 || colon == specString.length() - 1) { 061 result.add(new InetSocketAddress(specString, defaultPort)); 062 } else { 063 String hostname = specString.substring(0, colon); 064 int port = Integer.parseInt(specString.substring(colon+1)); 065 result.add(new InetSocketAddress(hostname, port)); 066 } 067 } 068 } 069 return result; 070 } 071 072 }