/* * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package com.sun.jmx.snmp.IPAcl; import java.net.InetAddress; import java.net.UnknownHostException; import java.io.Serializable; /** * Principal represents a host. * */ class PrincipalImpl implements java.security.Principal, Serializable { private static final long serialVersionUID = -7910027842878976761L; private InetAddress[] add = null; /** * Constructs a principal with the local host. */ public PrincipalImpl () throws UnknownHostException { add = new InetAddress[1]; add[0] = java.net.InetAddress.getLocalHost(); } /** * Construct a principal using the specified host. * <P> * The host can be either: * <UL> * <LI> a host name * <LI> an IP address * </UL> * * @param hostName the host used to make the principal. */ public PrincipalImpl(String hostName) throws UnknownHostException { if ((hostName.equals("localhost")) || (hostName.equals("127.0.0.1"))) { add = new InetAddress[1]; add[0] = java.net.InetAddress.getByName(hostName); } else add = java.net.InetAddress.getAllByName( hostName ); } /** * Constructs a principal using an Internet Protocol (IP) address. * * @param address the Internet Protocol (IP) address. */ public PrincipalImpl(InetAddress address) { add = new InetAddress[1]; add[0] = address; } /** * Returns the name of this principal. * * @return the name of this principal. */ public String getName() { return add[0].toString(); } /** * Compares this principal to the specified object. Returns true if the * object passed in matches the principal * represented by the implementation of this interface. * * @param a the principal to compare with. * @return true if the principal passed in is the same as that encapsulated by this principal, false otherwise. */ public boolean equals(Object a) { if (a instanceof PrincipalImpl){ for(int i = 0; i < add.length; i++) { if(add[i].equals (((PrincipalImpl) a).getAddress())) return true; } return false; } else { return false; } } /** * Returns a hashcode for this principal. * * @return a hashcode for this principal. */ public int hashCode(){ return add[0].hashCode(); } /** * Returns a string representation of this principal. In case of multiple address, the first one is returned. * * @return a string representation of this principal. */ public String toString() { return ("PrincipalImpl :"+add[0].toString()); } /** * Returns the Internet Protocol (IP) address for this principal. In case of multiple address, the first one is returned. * * @return the Internet Protocol (IP) address for this principal. */ public InetAddress getAddress(){ return add[0]; } /** * Returns the Internet Protocol (IP) address for this principal. In case of multiple address, the first one is returned. * * @return the array of Internet Protocol (IP) addresses for this principal. */ public InetAddress[] getAddresses(){ return add; } }