Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.fasterxml.storemate.shared;
  
Simple value type used for basic "IP:PORT" style Strings extracted from configuration file.
  
 public final class IpAndPort implements Comparable<IpAndPort>
 {
     public final static String DEFAULT_PROTOCOL = "http";
     
     protected final String _protocol;
     
     protected final String _ipName;
 
     protected final int _port;
 
     protected final int _hashCode;
     
     // lazily resolved actual address
     protected volatile InetAddress _ipAddress;
 
     // lazily constructed end point 
     protected volatile String _endpoint;
     
     // note: could add @JsonCreator, but not required:
     public IpAndPort(final String origStr)
     {
         String str = (origStr == null) ? "" : origStr;
         int ix;
 
         // First: do we have a protocol?
         if ((ix = str.indexOf("://")) < 0) {
              = ;
         } else {
              = str.substring(0, ix);
             str = str.substring(ix+3);
         }
 
         // Let's allow trailing slash as well
         if (str.endsWith("/")) {
             str = str.substring(0, str.length()-1);
         }
         
         if ((ix = str.indexOf(':')) < 0) {
             throw new IllegalArgumentException("Can not decode IP address and port number from String '"
                     +origStr+"'");
         }
         String portStr = str.substring(ix+1).trim();
         try {
              = Integer.parseInt(portStr);
         } catch (IllegalArgumentException e) {
             throw new IllegalArgumentException("Invalid port number '"+portStr+"' (String '"+origStr+"'); not a valid int");
         }
         if ( < 0 ||  >= 0x10000) {
             throw new IllegalArgumentException("Invalid port number ("++"): (String '"+origStr+"') must be [0, 65535]");
         }
         // can assume, for now, that IP part is ok, as long as it's not empty
          = str.substring(0, ix).trim();
         if (.isEmpty()) {
             throw new IllegalArgumentException("Missing IP name (String '"+origStr+"')");
         }
          = .hashCode() ^ ;
     }
 
     @Deprecated
     public IpAndPort(String ipNameint port)
     {
         this(ipNameport);
     }
     
     public IpAndPort(String protocolString ipNameint port)
     {
          = protocol;
          = ipName;
          = port;
          = .hashCode() ^ .hashCode() ^ ;
     }
     
     public IpAndPort withPort(int port)
     {
         if ( == port) {
             return this;
         }
         return new IpAndPort(port);
     }
     
     @Override
     public boolean equals(Object o)
     {
         if (o == thisreturn true;
         if (o == nullreturn false;
         if (o.getClass() != getClass()) return false;
         IpAndPort other = (IpAndPorto;
         return (other._port == )
                 && .equals(other._ipName)
                 && .equals(other._protocol)
                ;
    }
    
    @Override
    public int hashCode() { return ; }
    @Override
    public String toString() {
        return getEndpoint();
    }
    public String getProcol() { return ; }
    public int getPort() { return ; }

    
Simple accessor for checking whether this endpoint refers to local host using either "localhost" or "127.0.0.1" references; note, though, that it does not check to see if it might be referring to local instance via real IP number.
    public boolean isLocalReference() {
        return "localhost".equals() || "127.0.0.1".equals();
    }
    
    
Accessor for getting URL end point like "http://somehost.com:8080/". Note that no address resolution is performed; this to allow dynamic resolution depending on DNS-caching settings.
    public String getEndpoint()
    {
        String str = ;
        if (str == null) {
            str =  + "://"++":"++"/";
             = str;
        }
        return str;
    }
    public String getEndpoint(String path)
    {
        String base = getEndpoint();
        StringBuilder sb = new StringBuilder(base.length() + path.length());
        sb.append(base);
        sb.append(path);
        return sb.toString();
    }
    public String getHostName() {
        return ;
    }
    
    public InetAddress getIP() throws UnknownHostException
    {
        InetAddress addr = ;
        if (addr == null) {
             = addr = InetAddress.getByName();
        }
        return addr;
    }
    @Override
    public int compareTo(IpAndPort other) {
        // Simple lexicographic (~= alphabetic) ordering:
        return getEndpoint().compareTo(other.getEndpoint());
    }
New to GrepCode? Check out our FAQ X