package com.hwlcn.ldap.ldap.sdk; import java.io.Serializable; import java.util.StringTokenizer; import com.hwlcn.ldap.util.Debug; import com.hwlcn.core.annotation.NotMutable; import com.hwlcn.ldap.util.StaticUtils; import com.hwlcn.core.annotation.ThreadSafety; import com.hwlcn.ldap.util.ThreadSafetyLevel; import static com.hwlcn.ldap.ldap.sdk.LDAPMessages.*; @NotMutable() @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE) final class SRVRecord implements Serializable { private static final long serialVersionUID = -5505867807717870889L; private final int port; private final long priority; private final long weight; private final String address; private final String recordString; SRVRecord(final String recordString) throws LDAPException { this.recordString = recordString; try { final StringTokenizer tokenizer = new StringTokenizer(recordString, " "); priority = Long.parseLong(tokenizer.nextToken()); weight = Long.parseLong(tokenizer.nextToken()); port = Integer.parseInt(tokenizer.nextToken()); final String addrString = tokenizer.nextToken(); if (addrString.endsWith(".")) { address = addrString.substring(0, addrString.length() - 1); } else { address = addrString; } } catch (final Exception e) { Debug.debugException(e); throw new LDAPException(ResultCode.LOCAL_ERROR, ERR_SRV_RECORD_MALFORMED_STRING.get(recordString, StaticUtils.getExceptionMessage(e)), e); } } public String getAddress() { return address; } public int getPort() { return port; } public long getPriority() { return priority; } public long getWeight() { return weight; } @Override() public String toString() { return recordString; } }