blob: 8f9b629cdb485b7c097ce81b3be8f8ea7675d4fd [file] [log] [blame]
// Copyright (c) 2004 Brian Wellington (bwelling@xbill.org)
package org.xbill.DNS;
import java.io.*;
/**
* ISDN - identifies the ISDN number and subaddress associated with a name.
*
* @author Brian Wellington
*/
public class ISDNRecord extends Record {
private static final long serialVersionUID = -8730801385178968798L;
private byte [] address;
private byte [] subAddress;
ISDNRecord() {}
Record
getObject() {
return new ISDNRecord();
}
/**
* Creates an ISDN Record from the given data
* @param address The ISDN number associated with the domain.
* @param subAddress The subaddress, if any.
* @throws IllegalArgumentException One of the strings is invalid.
*/
public
ISDNRecord(Name name, int dclass, long ttl, String address, String subAddress) {
super(name, Type.ISDN, dclass, ttl);
try {
this.address = byteArrayFromString(address);
if (subAddress != null)
this.subAddress = byteArrayFromString(subAddress);
}
catch (TextParseException e) {
throw new IllegalArgumentException(e.getMessage());
}
}
void
rrFromWire(DNSInput in) throws IOException {
address = in.readCountedString();
if (in.remaining() > 0)
subAddress = in.readCountedString();
}
void
rdataFromString(Tokenizer st, Name origin) throws IOException {
try {
address = byteArrayFromString(st.getString());
Tokenizer.Token t = st.get();
if (t.isString()) {
subAddress = byteArrayFromString(t.value);
} else {
st.unget();
}
}
catch (TextParseException e) {
throw st.exception(e.getMessage());
}
}
/**
* Returns the ISDN number associated with the domain.
*/
public String
getAddress() {
return byteArrayToString(address, false);
}
/**
* Returns the ISDN subaddress, or null if there is none.
*/
public String
getSubAddress() {
if (subAddress == null)
return null;
return byteArrayToString(subAddress, false);
}
void
rrToWire(DNSOutput out, Compression c, boolean canonical) {
out.writeCountedString(address);
if (subAddress != null)
out.writeCountedString(subAddress);
}
String
rrToString() {
StringBuffer sb = new StringBuffer();
sb.append(byteArrayToString(address, true));
if (subAddress != null) {
sb.append(" ");
sb.append(byteArrayToString(subAddress, true));
}
return sb.toString();
}
}