LocalHostStartupAddressChecker.java

package com.ziesemer.utils.web.addressFilter.conditions;

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Set;

/**
 * @author Mark A. Ziesemer
 * 	<a href="http://www.ziesemer.com.">&lt;www.ziesemer.com&gt;</a>
 */
public class LocalHostStartupAddressChecker implements IAddressChecker{
	
	protected final Set<InetAddress> localAddresses;
	
	public LocalHostStartupAddressChecker() throws Exception{
		localAddresses = new HashSet<InetAddress>();
		for(final Enumeration<NetworkInterface> nie = NetworkInterface.getNetworkInterfaces(); nie.hasMoreElements();){
			final NetworkInterface ni = nie.nextElement();
			for(final Enumeration<InetAddress> iae = ni.getInetAddresses(); iae.hasMoreElements();){
				localAddresses.add(iae.nextElement());
			}
		}
	}
	
	public boolean matches(final InetAddress ip, final String hostName) throws Exception{
		return localAddresses.contains(ip);
	}
	
	/**
	 * <p>
	 * 	Returns a read-only view of the addresses checked against, primarily for unit testing.
	 * </p>
	 */
	public Set<InetAddress> getLocalAddresses(){
		return Collections.unmodifiableSet(localAddresses);
	}
	
}