InetAddressParser.java

package com.ziesemer.utils.classParser;

import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author Mark A. Ziesemer
 * 	<a href="http://www.ziesemer.com">&lt;www.ziesemer.com&gt;</a>
 */
public class InetAddressParser implements IClassParser{
	
	protected final Pattern inetSocketAddressPat = Pattern.compile("^(.*?):(\\d+)");

	@Override
	public Object convert(final Class<?> c, final String str) throws Exception{
		if(InetAddress.class.isAssignableFrom(c)){
			return InetAddress.getByName(str);
		}else if(InetSocketAddress.class.isAssignableFrom(c)){
			final Matcher m = inetSocketAddressPat.matcher(str);
			if(m.matches()){
				final String host = m.group(1);
				final int port = Integer.parseInt(m.group(2));
				return new InetSocketAddress(host, port);
			}
			throw new ClassParseException("Unrecognized", c, str);
		}
		return NO_RESULT;
	}
}