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  * ISDN - identifies the ISDN number and subaddress associated with a name.
      9  *
     10  * @author Brian Wellington
     11  */
     12 
     13 public class ISDNRecord extends Record {
     14 
     15 private static final long serialVersionUID = -8730801385178968798L;
     16 
     17 private byte [] address;
     18 private byte [] subAddress;
     19 
     20 ISDNRecord() {}
     21 
     22 Record
     23 getObject() {
     24 	return new ISDNRecord();
     25 }
     26 
     27 /**
     28  * Creates an ISDN Record from the given data
     29  * @param address The ISDN number associated with the domain.
     30  * @param subAddress The subaddress, if any.
     31  * @throws IllegalArgumentException One of the strings is invalid.
     32  */
     33 public
     34 ISDNRecord(Name name, int dclass, long ttl, String address, String subAddress) {
     35 	super(name, Type.ISDN, dclass, ttl);
     36 	try {
     37 		this.address = byteArrayFromString(address);
     38 		if (subAddress != null)
     39 			this.subAddress = byteArrayFromString(subAddress);
     40 	}
     41 	catch (TextParseException e) {
     42 		throw new IllegalArgumentException(e.getMessage());
     43 	}
     44 }
     45 
     46 void
     47 rrFromWire(DNSInput in) throws IOException {
     48 	address = in.readCountedString();
     49 	if (in.remaining() > 0)
     50 		subAddress = in.readCountedString();
     51 }
     52 
     53 void
     54 rdataFromString(Tokenizer st, Name origin) throws IOException {
     55 	try {
     56 		address = byteArrayFromString(st.getString());
     57 		Tokenizer.Token t = st.get();
     58 		if (t.isString()) {
     59 			subAddress = byteArrayFromString(t.value);
     60 		} else {
     61 			st.unget();
     62 		}
     63 	}
     64 	catch (TextParseException e) {
     65 		throw st.exception(e.getMessage());
     66 	}
     67 }
     68 
     69 /**
     70  * Returns the ISDN number associated with the domain.
     71  */
     72 public String
     73 getAddress() {
     74 	return byteArrayToString(address, false);
     75 }
     76 
     77 /**
     78  * Returns the ISDN subaddress, or null if there is none.
     79  */
     80 public String
     81 getSubAddress() {
     82 	if (subAddress == null)
     83 		return null;
     84 	return byteArrayToString(subAddress, false);
     85 }
     86 
     87 void
     88 rrToWire(DNSOutput out, Compression c, boolean canonical) {
     89 	out.writeCountedString(address);
     90 	if (subAddress != null)
     91 		out.writeCountedString(subAddress);
     92 }
     93 
     94 String
     95 rrToString() {
     96 	StringBuffer sb = new StringBuffer();
     97 	sb.append(byteArrayToString(address, true));
     98 	if (subAddress != null) {
     99 		sb.append(" ");
    100 		sb.append(byteArrayToString(subAddress, true));
    101 	}
    102 	return sb.toString();
    103 }
    104 
    105 }
    106