Home | History | Annotate | Download | only in DNS
      1 // Copyright (c) 2004 Brian Wellington (bwelling (at) xbill.org)
      2 
      3 package org.xbill.DNS;
      4 
      5 import java.io.*;
      6 
      7 /**
      8  * X25 - identifies the PSDN (Public Switched Data Network) address in the
      9  * X.121 numbering plan associated with a name.
     10  *
     11  * @author Brian Wellington
     12  */
     13 
     14 public class X25Record extends Record {
     15 
     16 private static final long serialVersionUID = 4267576252335579764L;
     17 
     18 private byte [] address;
     19 
     20 X25Record() {}
     21 
     22 Record
     23 getObject() {
     24 	return new X25Record();
     25 }
     26 
     27 private static final byte []
     28 checkAndConvertAddress(String address) {
     29 	int length = address.length();
     30 	byte [] out = new byte [length];
     31 	for (int i = 0; i < length; i++) {
     32 		char c = address.charAt(i);
     33 		if (!Character.isDigit(c))
     34 			return null;
     35 		out[i] = (byte) c;
     36 	}
     37 	return out;
     38 }
     39 
     40 /**
     41  * Creates an X25 Record from the given data
     42  * @param address The X.25 PSDN address.
     43  * @throws IllegalArgumentException The address is not a valid PSDN address.
     44  */
     45 public
     46 X25Record(Name name, int dclass, long ttl, String address) {
     47 	super(name, Type.X25, dclass, ttl);
     48 	this.address = checkAndConvertAddress(address);
     49 	if (this.address == null) {
     50 		throw new IllegalArgumentException("invalid PSDN address " +
     51 						   address);
     52 	}
     53 }
     54 
     55 void
     56 rrFromWire(DNSInput in) throws IOException {
     57 	address = in.readCountedString();
     58 }
     59 
     60 void
     61 rdataFromString(Tokenizer st, Name origin) throws IOException {
     62 	String addr = st.getString();
     63 	this.address = checkAndConvertAddress(addr);
     64 	if (this.address == null)
     65 		throw st.exception("invalid PSDN address " + addr);
     66 }
     67 
     68 /**
     69  * Returns the X.25 PSDN address.
     70  */
     71 public String
     72 getAddress() {
     73 	return byteArrayToString(address, false);
     74 }
     75 
     76 void
     77 rrToWire(DNSOutput out, Compression c, boolean canonical) {
     78 	out.writeCountedString(address);
     79 }
     80 
     81 String
     82 rrToString() {
     83 	return byteArrayToString(address, true);
     84 }
     85 
     86 }
     87