guava/src/com/google/common/net/HostSpecifier.java
public static HostSpecifier fromValid(String specifier) {
    // Verify that no port was specified, and strip optional brackets from
    // IPv6 literals.
    final HostAndPort parsedHost = HostAndPort.fromString(specifier);
    Preconditions.checkArgument(!parsedHost.hasPort());
    final String host = parsedHost.getHost();

    // Try to interpret the specifier as an IP address. Note we build
    // the address rather than using the .is* methods because we want to
    // use InetAddresses.toUriString to convert the result to a string in
    // canonical form.
    InetAddress addr = null;
    try {
      addr = InetAddresses.forString(host);
    } catch (IllegalArgumentException e) {
      // It is not an IPv4 or IPv6 literal
    }

    if (addr != null) {
      return new HostSpecifier(InetAddresses.toUriString(addr));
    }

    // It is not any kind of IP address; must be a domain name or invalid.

    // TODO(user): different versions of this for different factories?
    final InternetDomainName domain = InternetDomainName.from(host);

    if (domain.hasPublicSuffix()) {
      return new HostSpecifier(domain.toString());
    }

    throw new IllegalArgumentException(
        "Domain name does not have a recognized public suffix: " + host);
  }
public static HostSpecifier fromValid(String specifier) {
    // Verify that no port was specified, and strip optional brackets from
    // IPv6 literals.
    final HostAndPort parsedHost = HostAndPort.fromString(specifier);
    Preconditions.checkArgument(!parsedHost.hasPort());
    final String host = parsedHost.getHost();

    // Try to interpret the specifier as an IP address. Note we build
    // the address rather than using the .is* methods because we want to
    // use InetAddresses.toUriString to convert the result to a string in
    // canonical form.
    InetAddress addr = null;
    try {
      addr = InetAddresses.forString(host);
    } catch (IllegalArgumentException e) {
      // It is not an IPv4 or IPv6 literal
    }

    if (addr != null) {
      return new HostSpecifier(InetAddresses.toUriString(addr));
    }

    // It is not any kind of IP address; must be a domain name or invalid.

    // TODO(user): different versions of this for different factories?
    final InternetDomainName domain = InternetDomainName.from(host);

    if (domain.hasPublicSuffix()) {
      return new HostSpecifier(domain.toString());
    }

    throw new IllegalArgumentException(
        "Domain name does not have a recognized public suffix: " + host);
  }
public static HostSpecifier fromValid ( String specifier ) { // Verify that no port was specified, and strip optional brackets from // IPv6 literals. final HostAndPort parsedHost = HostAndPort . fromString ( specifier ) ; Preconditions . checkArgument ( ! parsedHost . hasPort ( ) ) ; final String host = parsedHost . getHost ( ) ; // Try to interpret the specifier as an IP address. Note we build // the address rather than using the .is* methods because we want to // use InetAddresses.toUriString to convert the result to a string in // canonical form. InetAddress addr = null ; try { addr = InetAddresses . forString ( host ) ; } catch ( IllegalArgumentException e ) { // It is not an IPv4 or IPv6 literal } if ( addr != null ) { return new HostSpecifier ( InetAddresses . toUriString ( addr ) ) ; } // It is not any kind of IP address; must be a domain name or invalid. // TODO(user): different versions of this for different factories? final InternetDomainName domain = InternetDomainName . from ( host ) ; if ( domain . hasPublicSuffix ( ) ) { return new HostSpecifier ( domain . toString ( ) ) ; } throw new IllegalArgumentException ( "Domain name does not have a recognized public suffix: " + host ) ; }
Returns a {@code HostSpecifier} built from the provided {@code specifier}, which is already
known to be valid. If the {@code specifier} might be invalid, use {@link #from(String)}
instead.

<p>The specifier must be in one of these formats:

<ul>
<li>A domain name, like {@code google.com}
<li>A IPv4 address string, like {@code 127.0.0.1}
<li>An IPv6 address string with or without brackets, like {@code [2001:db8::1]} or {@code
2001:db8::1}
</ul>

@throws IllegalArgumentException if the specifier is not valid.
Returns a { @code HostSpecifier } built from the provided { @code specifier } which is already known to be valid . If the { @code specifier } might be invalid use { @link #from ( String ) } instead .