| // Copyright (c) 2004 Brian Wellington (bwelling@xbill.org) |
| |
| package org.xbill.DNS; |
| |
| import java.io.*; |
| |
| /** |
| * X25 - identifies the PSDN (Public Switched Data Network) address in the |
| * X.121 numbering plan associated with a name. |
| * |
| * @author Brian Wellington |
| */ |
| |
| public class X25Record extends Record { |
| |
| private static final long serialVersionUID = 4267576252335579764L; |
| |
| private byte [] address; |
| |
| X25Record() {} |
| |
| Record |
| getObject() { |
| return new X25Record(); |
| } |
| |
| private static final byte [] |
| checkAndConvertAddress(String address) { |
| int length = address.length(); |
| byte [] out = new byte [length]; |
| for (int i = 0; i < length; i++) { |
| char c = address.charAt(i); |
| if (!Character.isDigit(c)) |
| return null; |
| out[i] = (byte) c; |
| } |
| return out; |
| } |
| |
| /** |
| * Creates an X25 Record from the given data |
| * @param address The X.25 PSDN address. |
| * @throws IllegalArgumentException The address is not a valid PSDN address. |
| */ |
| public |
| X25Record(Name name, int dclass, long ttl, String address) { |
| super(name, Type.X25, dclass, ttl); |
| this.address = checkAndConvertAddress(address); |
| if (this.address == null) { |
| throw new IllegalArgumentException("invalid PSDN address " + |
| address); |
| } |
| } |
| |
| void |
| rrFromWire(DNSInput in) throws IOException { |
| address = in.readCountedString(); |
| } |
| |
| void |
| rdataFromString(Tokenizer st, Name origin) throws IOException { |
| String addr = st.getString(); |
| this.address = checkAndConvertAddress(addr); |
| if (this.address == null) |
| throw st.exception("invalid PSDN address " + addr); |
| } |
| |
| /** |
| * Returns the X.25 PSDN address. |
| */ |
| public String |
| getAddress() { |
| return byteArrayToString(address, false); |
| } |
| |
| void |
| rrToWire(DNSOutput out, Compression c, boolean canonical) { |
| out.writeCountedString(address); |
| } |
| |
| String |
| rrToString() { |
| return byteArrayToString(address, true); |
| } |
| |
| } |