You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by er...@apache.org on 2005/01/21 23:19:29 UTC

svn commit: r125971 - incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard

Author: erodriguez
Date: Fri Jan 21 14:19:28 2005
New Revision: 125971

URL: http://svn.apache.org/viewcvs?view=rev&rev=125971
Log:
Basic implementations of the standard DNS record types.
Added:
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/CanonicalNameRecord.java
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/HostInformationRecord.java
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/MailExchangeRecord.java
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/MailInformationRecord.java
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/NameServerRecord.java
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/PointerRecord.java
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/StartOfAuthorityRecord.java
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/TextRecord.java

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/CanonicalNameRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/CanonicalNameRecord.java?view=auto&rev=125971
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/CanonicalNameRecord.java	Fri Jan 21 14:19:28 2005
@@ -0,0 +1,67 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.standard;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+import org.apache.dns.records.ResourceRecord;
+
+/**
+ * 3.3.1. CNAME RDATA format
+ * 
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     /                     CNAME                     /
+ *     /                                               /
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ * 
+ * where:
+ * 
+ * CNAME           A <domain-name> which specifies the canonical or primary
+ *                 name for the owner.  The owner name is an alias.
+ * 
+ * CNAME RRs cause no additional section processing, but name servers may
+ * choose to restart the query at the canonical name in certain cases.  See
+ * the description of name server logic in [RFC-1034] for details.
+ */
+public class CanonicalNameRecord extends InternetResource
+{
+	/**
+	 * Basic ResourceRecord constructor.
+	 */
+	public CanonicalNameRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.CNAME, timeToLive, resourceData );
+	}
+	
+    /**
+     * Static factory method, type-conversion operator.
+     */
+	public static ResourceRecord valueOf( String domainName, int timeToLive, String canonicalName )
+	{
+		return new CanonicalNameRecord( domainName, timeToLive, domainNameToByteArray( canonicalName ) );
+	}
+	
+	/**
+	 * Lazy accessor.
+	 */
+	public String getCanonicalName()
+	{
+		return byteArrayToDomainName( resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/HostInformationRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/HostInformationRecord.java?view=auto&rev=125971
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/HostInformationRecord.java	Fri Jan 21 14:19:28 2005
@@ -0,0 +1,52 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.standard;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 3.3.2. HINFO RDATA format
+ * 
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     /                      CPU                      /
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     /                       OS                      /
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ * 
+ * where:
+ * 
+ * CPU             A <character-string> which specifies the CPU type.
+ * 
+ * OS              A <character-string> which specifies the operating
+ *                 system type.
+ * 
+ * Standard values for CPU and OS can be found in [RFC-1010].
+ * 
+ * HINFO records are used to acquire general information about a host.  The
+ * main use is for protocols such as FTP that can use special procedures
+ * when talking between machines or operating systems of the same type.
+ */
+public class HostInformationRecord extends InternetResource
+{
+	public HostInformationRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.HINFO, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/MailExchangeRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/MailExchangeRecord.java?view=auto&rev=125971
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/MailExchangeRecord.java	Fri Jan 21 14:19:28 2005
@@ -0,0 +1,100 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.standard;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+import org.apache.dns.records.ResourceRecord;
+
+/**
+ * 3.3.9. MX RDATA format
+ * 
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     |                  PREFERENCE                   |
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     /                   EXCHANGE                    /
+ *     /                                               /
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ * 
+ * where:
+ * 
+ * PREFERENCE      A 16 bit integer which specifies the preference given to
+ *                 this RR among others at the same owner.  Lower values
+ *                 are preferred.
+ * 
+ * EXCHANGE        A <domain-name> which specifies a host willing to act as
+ *                 a mail exchange for the owner name.
+ * 
+ * MX records cause type A additional section processing for the host
+ * specified by EXCHANGE.  The use of MX RRs is explained in detail in
+ * [RFC-974].
+ */
+public class MailExchangeRecord extends InternetResource
+{
+	/**
+	 * Basic ResourceRecord constructor.
+	 */
+	public MailExchangeRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.MX, timeToLive, resourceData );
+	}
+	
+	/**
+	 * Static factory method, type-conversion operator.
+	 */
+	public static ResourceRecord valueOf( String domainName, int timeToLive, int preference, String exchange )
+	{
+		byte[] exchangeBytes = exchange.getBytes();
+		
+		byte[] resourceData = new byte[ 2 + exchangeBytes.length ];
+		
+		resourceData[0] = (byte)( preference & 0x000000FF );
+		resourceData[1] = (byte)( preference & 0x0000FF00 );
+		
+		for ( int ii = 0; ii < exchangeBytes.length; ii++ )
+		{
+			resourceData[ ii + 2 ] = exchangeBytes[ ii ];
+		}
+		
+		return new MailExchangeRecord( domainName, timeToLive, resourceData );
+	}
+	
+	/**
+	 * Lazy accessor for the MX preference.
+	 */
+	public int getPreference()
+	{
+		return ( resourceData[1] * 256 ) + ( resourceData[0] * 1 );
+	}
+	
+	/**
+	 * Lazy accessor for the MX domain name.
+	 */
+	public String getMailExchange()
+	{
+		byte[] exchange = new byte[ resourceData.length - 2 ];
+		
+		for ( int ii = 0; ii < resourceData.length - 2; ii++ )
+		{
+			exchange[ ii ] = resourceData[ ii + 2 ];
+		}
+		
+		return new String( exchange );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/MailInformationRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/MailInformationRecord.java?view=auto&rev=125971
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/MailInformationRecord.java	Fri Jan 21 14:19:28 2005
@@ -0,0 +1,60 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.standard;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 3.3.7. MINFO RDATA format (EXPERIMENTAL)
+ * 
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     /                    RMAILBX                    /
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     /                    EMAILBX                    /
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ * 
+ * where:
+ * 
+ * RMAILBX         A <domain-name> which specifies a mailbox which is
+ *                 responsible for the mailing list or mailbox.  If this
+ *                 domain name names the root, the owner of the MINFO RR is
+ *                 responsible for itself.  Note that many existing mailing
+ *                 lists use a mailbox X-request for the RMAILBX field of
+ *                 mailing list X, e.g., Msgroup-request for Msgroup.  This
+ *                 field provides a more general mechanism.
+ * 
+ * EMAILBX         A <domain-name> which specifies a mailbox which is to
+ *                 receive error messages related to the mailing list or
+ *                 mailbox specified by the owner of the MINFO RR (similar
+ *                 to the ERRORS-TO: field which has been proposed).  If
+ *                 this domain name names the root, errors should be
+ *                 returned to the sender of the message.
+ * 
+ * MINFO records cause no additional section processing.  Although these
+ * records can be associated with a simple mailbox, they are usually used
+ * with a mailing list.
+ */
+public class MailInformationRecord extends InternetResource
+{
+	public MailInformationRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.MINFO, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/NameServerRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/NameServerRecord.java?view=auto&rev=125971
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/NameServerRecord.java	Fri Jan 21 14:19:28 2005
@@ -0,0 +1,74 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.standard;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+import org.apache.dns.records.ResourceRecord;
+
+/**
+ * 3.3.11. NS RDATA format
+ * 
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     /                   NSDNAME                     /
+ *     /                                               /
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ * 
+ * where:
+ * 
+ * NSDNAME         A <domain-name> which specifies a host which should be
+ *                 authoritative for the specified class and domain.
+ * 
+ * NS records cause both the usual additional section processing to locate
+ * a type A record, and, when used in a referral, a special search of the
+ * zone in which they reside for glue information.
+ * 
+ * The NS RR states that the named host should be expected to have a zone
+ * starting at owner name of the specified class.  Note that the class may
+ * not indicate the protocol family which should be used to communicate
+ * with the host, although it is typically a strong hint.  For example,
+ * hosts which are name servers for either Internet (IN) or Hesiod (HS)
+ * class information are normally queried using IN class protocols.
+ */
+public class NameServerRecord extends InternetResource
+{
+	/**
+	 * Basic ResourceRecord constructor.
+	 */
+	public NameServerRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.NS, timeToLive, resourceData );
+	}
+	
+    /**
+     * Static factory method, type-conversion operator.
+     */
+	public static ResourceRecord valueOf( String domainName, int timeToLive, String nameServer )
+	{
+		return new NameServerRecord( domainName, timeToLive, domainNameToByteArray( nameServer ) );
+	}
+	
+	/**
+	 * Lazy accessor.
+	 */
+	public String getNameServer()
+	{
+		return byteArrayToDomainName( resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/PointerRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/PointerRecord.java?view=auto&rev=125971
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/PointerRecord.java	Fri Jan 21 14:19:28 2005
@@ -0,0 +1,68 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.standard;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+import org.apache.dns.records.ResourceRecord;
+
+/**
+ * 3.3.12. PTR RDATA format
+ * 
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     /                   PTRDNAME                    /
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ * 
+ * where:
+ * 
+ * PTRDNAME        A <domain-name> which points to some location in the
+ *                 domain name space.
+ * 
+ * PTR records cause no additional section processing.  These RRs are used
+ * in special domains to point to some other location in the domain space.
+ * These records are simple data, and don't imply any special processing
+ * similar to that performed by CNAME, which identifies aliases.  See the
+ * description of the IN-ADDR.ARPA domain for an example.
+ */
+public class PointerRecord extends InternetResource
+{
+	/**
+	 * Basic ResourceRecord constructor.
+	 */
+	public PointerRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.PTR, timeToLive, resourceData );
+	}
+	
+    /**
+     * Static factory method, type-conversion operator.
+     */
+	public static ResourceRecord valueOf( String domainName, int timeToLive, String pointer )
+	{
+		return new PointerRecord( domainName, timeToLive, domainNameToByteArray( pointer ) );
+	}
+	
+	/**
+	 * Lazy accessor.
+	 */
+	public String getPointer()
+	{
+		return byteArrayToDomainName( resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/StartOfAuthorityRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/StartOfAuthorityRecord.java?view=auto&rev=125971
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/StartOfAuthorityRecord.java	Fri Jan 21 14:19:28 2005
@@ -0,0 +1,96 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.standard;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 3.3.13. SOA RDATA format
+ * 
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     /                     MNAME                     /
+ *     /                                               /
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     /                     RNAME                     /
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     |                    SERIAL                     |
+ *     |                                               |
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     |                    REFRESH                    |
+ *     |                                               |
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     |                     RETRY                     |
+ *     |                                               |
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     |                    EXPIRE                     |
+ *     |                                               |
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     |                    MINIMUM                    |
+ *     |                                               |
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ * 
+ * where:
+ * 
+ * MNAME           The <domain-name> of the name server that was the
+ *                 original or primary source of data for this zone.
+ * 
+ * RNAME           A <domain-name> which specifies the mailbox of the
+ *                 person responsible for this zone.
+ * 
+ * SERIAL          The unsigned 32 bit version number of the original copy
+ *                 of the zone.  Zone transfers preserve this value.  This
+ *                 value wraps and should be compared using sequence space
+ *                 arithmetic.
+ * 
+ * REFRESH         A 32 bit time interval before the zone should be
+ *                 refreshed.
+ * 
+ * RETRY           A 32 bit time interval that should elapse before a
+ *                 failed refresh should be retried.
+ * 
+ * EXPIRE          A 32 bit time value that specifies the upper limit on
+ *                 the time interval that can elapse before the zone is no
+ *                 longer authoritative.
+ * 
+ * MINIMUM         The unsigned 32 bit minimum TTL field that should be
+ *                 exported with any RR from this zone.
+ * 
+ * SOA records cause no additional section processing.
+ * 
+ * All times are in units of seconds.
+ * 
+ * Most of these fields are pertinent only for name server maintenance
+ * operations.  However, MINIMUM is used in all query operations that
+ * retrieve RRs from a zone.  Whenever a RR is sent in a response to a
+ * query, the TTL field is set to the maximum of the TTL field from the RR
+ * and the MINIMUM field in the appropriate SOA.  Thus MINIMUM is a lower
+ * bound on the TTL field for all RRs in a zone.  Note that this use of
+ * MINIMUM should occur when the RRs are copied into the response and not
+ * when the zone is loaded from a master file or via a zone transfer.  The
+ * reason for this provison is to allow future dynamic update facilities to
+ * change the SOA RR with known semantics.
+ */
+public class StartOfAuthorityRecord extends InternetResource
+{
+	public StartOfAuthorityRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.SOA, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/TextRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/TextRecord.java?view=auto&rev=125971
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/standard/TextRecord.java	Fri Jan 21 14:19:28 2005
@@ -0,0 +1,64 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.standard;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+import org.apache.dns.records.ResourceRecord;
+
+/**
+ * 3.3.14. TXT RDATA format
+ * 
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     /                   TXT-DATA                    /
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ * 
+ * where:
+ * 
+ * TXT-DATA        One or more <character-string>s.
+ * 
+ * TXT RRs are used to hold descriptive text.  The semantics of the text
+ * depends on the domain where it is found.
+ */
+public class TextRecord extends InternetResource
+{
+	/**
+	 * Basic ResourceRecord constructor.
+	 */
+	public TextRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.TXT, timeToLive, resourceData );
+	}
+	
+	/**
+	 * Static factory method, type-conversion operator.
+	 */
+	public static ResourceRecord valueOf( String domainName, int timeToLive, String text )
+	{
+		return new TextRecord( domainName, timeToLive, text.getBytes() );
+	}
+	
+	/**
+	 * Lazy accessor.
+	 */
+	public String getText()
+	{
+		return new String( resourceData );
+	}
+}
+