/** @return a new DnsDomainName object. */ public DnsDomainName build() { return new DnsDomainName(this); } }
/** * A static factory method. This method validates the arguments by {@link * ByteArrays#validateBounds(byte[], int, int)}, which may throw exceptions undocumented here. * * @param rawData rawData * @param offset offset * @param length length * @return a new DnsDomainName object. * @throws IllegalRawDataException if parsing the raw data fails. */ public static DnsDomainName newInstance(byte[] rawData, int offset, int length) throws IllegalRawDataException { ByteArrays.validateBounds(rawData, offset, length); return new DnsDomainName(rawData, offset, length); }
private String decompress(byte[] headerRawData, List<Short> pointers) throws IllegalRawDataException { if (pointer == null) { return name; } else { if (pointers.contains(pointer)) { StringBuilder sb = new StringBuilder(200); sb.append("Circular reference detected. data: ") .append(ByteArrays.toHexString(headerRawData, " ")) .append(", offset: ") .append(pointer) .append(", name: ") .append(name); throw new IllegalRawDataException(sb.toString()); } pointers.add(pointer); StringBuilder sb = new StringBuilder(); sb.append(name) .append(".") .append( new DnsDomainName(headerRawData, pointer, headerRawData.length - pointer) .decompress(headerRawData, pointers)); return sb.toString(); } }
/** @return a new DnsDomainName object. */ public DnsDomainName build() { return new DnsDomainName(this); } }
/** * A static factory method. This method validates the arguments by {@link * ByteArrays#validateBounds(byte[], int, int)}, which may throw exceptions undocumented here. * * @param rawData rawData * @param offset offset * @param length length * @return a new DnsDomainName object. * @throws IllegalRawDataException if parsing the raw data fails. */ public static DnsDomainName newInstance(byte[] rawData, int offset, int length) throws IllegalRawDataException { ByteArrays.validateBounds(rawData, offset, length); return new DnsDomainName(rawData, offset, length); }
private String decompress(byte[] headerRawData, List<Short> pointers) throws IllegalRawDataException { if (pointer == null) { return name; } else { if (pointers.contains(pointer)) { StringBuilder sb = new StringBuilder(200); sb.append("Circular reference detected. data: ") .append(ByteArrays.toHexString(headerRawData, " ")) .append(", offset: ") .append(pointer) .append(", name: ") .append(name); throw new IllegalRawDataException(sb.toString()); } pointers.add(pointer); StringBuilder sb = new StringBuilder(); sb.append(name) .append(".") .append( new DnsDomainName(headerRawData, pointer, headerRawData.length - pointer) .decompress(headerRawData, pointers)); return sb.toString(); } }