package com.verisign.iot.discovery.domain; import com.verisign.iot.discovery.commons.Constants; import com.verisign.iot.discovery.utils.ValidatorUtil; /** * Created by tjmurphy on 6/4/15. */ public class TLSAPrefix { private int port; private String protocol; public TLSAPrefix() { setDefaultValues(); } public TLSAPrefix(String initString) { parseInitString(initString); } public void reinitialize() { reinitialize(null); } public void reinitialize(String initString) { parseInitString(initString); } public int getPort() { return port; } public String getProtocol() { return protocol; } private void parseInitString(String initString) { if (initString == null || initString.trim().isEmpty()) { setDefaultValues(); } else { initString = initString.trim(); int delimiterIndex = initString.indexOf(Constants.COLON_UNICODE_CHAR); if (delimiterIndex == -1) { protocol = Constants.TLSA_DEFAULT_PROTOCOL; if (ValidatorUtil.isValidPort(initString)) { port = Integer.parseInt(initString); } else { throw new IllegalArgumentException("invalid port value"); } } else if (delimiterIndex == 0) { port = Constants.TLSA_DEFAULT_PORT; protocol = initString.substring(1); } else { String portString = initString.substring(0, delimiterIndex); if (ValidatorUtil.isValidPort(portString)) { port = Integer.parseInt(portString); } else { throw new IllegalArgumentException("invalid port value"); } protocol = initString.substring(delimiterIndex + 1); protocol = protocol.length() > 0 ? protocol : Constants.TLSA_DEFAULT_PROTOCOL; } } } private void setDefaultValues() { port = Constants.TLSA_DEFAULT_PORT; protocol = Constants.TLSA_DEFAULT_PROTOCOL; } @Override public String toString() { return "_" + port + Constants.DNS_LABEL_DELIMITER + "_" + protocol; } }