Author: erodriguez
Date: Mon Jan 10 23:16:41 2005
New Revision: 124895

URL: http://svn.apache.org/viewcvs?view=rev&rev=124895
Log:
DNS record type and record class typesafe enumerators.
Added:
   
incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/RecordClass.java
   
incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/RecordType.java
   (contents, props changed)

Added: 
incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/RecordClass.java
Url: 
http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/RecordClass.java?view=auto&rev=124895
==============================================================================
--- (empty file)
+++ 
incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/RecordClass.java
 Mon Jan 10 23:16:41 2005
@@ -0,0 +1,83 @@
+/*
+ *   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;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+
+public final class RecordClass implements Comparable
+{
+       /**
+        * Enumeration elements are constructed once upon class loading.
+        * Order of appearance here determines the order of compareTo.
+        */
+       public static final RecordClass IN     = new RecordClass( 1,   
"Internet" );
+       public static final RecordClass CS     = new RecordClass( 2,   "CSNET 
class" );
+       public static final RecordClass CH     = new RecordClass( 3,   "Chaos 
network (MIT)" );
+       public static final RecordClass CHAOS  = new RecordClass( 3,   "Chaos 
network (MIT, alternate name)" );
+       public static final RecordClass HS     = new RecordClass( 4,   "Hesiod 
name server (MIT)" );
+       public static final RecordClass HESIOD = new RecordClass( 4,   "Hesiod 
name server (MIT, alternate name)" );
+       public static final RecordClass NONE   = new RecordClass( 254, "Special 
value used in dynamic update messages" );
+       public static final RecordClass ANY    = new RecordClass( 255, "Any 
class" );
+       
+       public String toString()
+    {
+               return name;
+       }
+
+       public int compareTo( Object that )
+    {
+               return ordinal - ( (RecordClass) that ).ordinal;
+       }
+
+       public static RecordClass getTypeByOrdinal( int type )
+    {
+               for ( int i = 0; i < values.length; i++ )
+                       if ( values[ i ].ordinal == type )
+                               return values[ i ];
+               return IN;
+       }
+       
+       public int getOrdinal()
+    {
+               return ordinal;
+       }
+
+       /// PRIVATE /////
+       private final String name;
+       private final int    ordinal;
+
+       /**
+        * Private constructor prevents construction outside of this class.
+        */
+       private RecordClass( int ordinal, String name )
+    {
+        this.ordinal = ordinal;
+               this.name    = name;
+       }
+
+       /**
+        * These two lines are all that's necessary to export a List of VALUES.
+        */
+       private static final RecordClass[] values = { IN, CH, CHAOS, HS, 
HESIOD, NONE, ANY };
+       // VALUES needs to be located here, otherwise illegal forward reference
+       public static final List VALUES = Collections.unmodifiableList( 
Arrays.asList( values ) );
+}
+

Added: 
incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/RecordType.java
Url: 
http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/RecordType.java?view=auto&rev=124895
==============================================================================
--- (empty file)
+++ 
incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/RecordType.java
  Mon Jan 10 23:16:41 2005
@@ -0,0 +1,161 @@
+/*
+ *   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;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+public class RecordType implements Comparable
+{
+       /**
+        * Enumeration elements are constructed once upon class loading.
+        * Order of appearance here determines the order of compareTo.
+        */
+       public static final RecordType A        = new RecordType( 1,  "A",      
"Address" );
+       public static final RecordType NS       = new RecordType( 2,  "NS",     
"Name server" );
+       public static final RecordType MD       = new RecordType( 3,  "MD",     
"Mail destination" );
+       public static final RecordType MF       = new RecordType( 4,  "MF",     
"Mail forwarder" );
+       public static final RecordType CNAME    = new RecordType( 5,  "CNAME",  
"Canonical name" );
+       public static final RecordType SOA      = new RecordType( 6,  "SOA",    
"Start of authority" );
+       public static final RecordType MB       = new RecordType( 7,  "MB",     
"Mailbox" );
+       public static final RecordType MG       = new RecordType( 8,  "MG",     
"Mail group member" );
+       public static final RecordType MR       = new RecordType( 9,  "MR",     
"Mail rename" );
+       public static final RecordType NULL     = new RecordType( 10, "NULL",   
"Null" );
+       public static final RecordType WKS      = new RecordType( 11, "WKS",    
"Well known services" );
+       public static final RecordType PTR      = new RecordType( 12, "PTR",    
"Pointer" );
+       public static final RecordType HINFO    = new RecordType( 13, "HINFO",  
"Host information" );
+       public static final RecordType MINFO    = new RecordType( 14, "MINFO",  
"Mailbox information" );
+       public static final RecordType MX       = new RecordType( 15, "MX",     
"Mail routing information" );
+       public static final RecordType TXT      = new RecordType( 16, "TXT",    
"Text strings" );
+       public static final RecordType RP       = new RecordType( 17, "RP",     
"Responsible person" );
+       public static final RecordType AFSDB    = new RecordType( 18, "AFSDB",  
"AFS cell database" );
+       public static final RecordType X25      = new RecordType( 19, "X25",    
"X.25 calling address" );
+       public static final RecordType ISDN     = new RecordType( 20, "ISDN",   
"ISDN calling address" );
+       public static final RecordType RT       = new RecordType( 21, "RT",     
"Router" );
+       public static final RecordType NSAP     = new RecordType( 22, "NSAP",   
"NSAP address" );
+       public static final RecordType NSAP_PTR = new RecordType( 23, 
"NSAP_PTR", "Reverse NSAP address (deprecated)" );
+       public static final RecordType SIG      = new RecordType( 24, "SIG",    
"Signature" );
+       public static final RecordType KEY      = new RecordType( 25, "KEY",    
"Key" );
+       public static final RecordType PX       = new RecordType( 26, "PX",     
"X.400 mail mapping" );
+       public static final RecordType GPOS     = new RecordType( 27, "GPOS",   
"Geographical position (withdrawn)" );
+       public static final RecordType AAAA     = new RecordType( 28, "AAAA",   
"IPv6 address" );
+       public static final RecordType LOC      = new RecordType( 29, "LOC",    
"Location" );
+       public static final RecordType NXT      = new RecordType( 30, "NXT",    
"Next valid name in zone" );
+       public static final RecordType EID      = new RecordType( 31, "EID",    
"Endpoint identifier" );
+       public static final RecordType NIMLOC   = new RecordType( 32, "NIMLOC", 
"Nimrod locator" );
+       public static final RecordType SRV      = new RecordType( 33, "SRV",    
"Server selection" );
+       public static final RecordType ATMA     = new RecordType( 34, "ATMA",   
"ATM address" );
+       public static final RecordType NAPTR    = new RecordType( 35, "NAPTR",  
"Naming authority pointer" );
+       public static final RecordType KX       = new RecordType( 36, "KX",     
"Key exchange" );
+       public static final RecordType CERT     = new RecordType( 34, "CERT",   
"Certificate" );
+       public static final RecordType A6       = new RecordType( 38, "A6",     
"IPv6 address (experimental)" );
+       public static final RecordType DNAME    = new RecordType( 39, "DNAME",  
"Non-terminal name redirection" );
+       public static final RecordType OPT      = new RecordType( 41, "OPT",    
"Options - contains EDNS metadata" );
+       public static final RecordType APL      = new RecordType( 42, "APL",    
"Address Prefix List" );
+       public static final RecordType DS       = new RecordType( 43, "DS",     
"Delegation Signer" );
+       public static final RecordType SSHFP    = new RecordType( 44, "SSHFP",  
"SSH Key Fingerprint" );
+       public static final RecordType RRSIG    = new RecordType( 46, "RRSIG",  
"Resource Record Signature" );
+       public static final RecordType NSEC     = new RecordType( 47, "NSEC",   
"Next Secure Name" );
+       public static final RecordType DNSKEY   = new RecordType( 48, "DNSKEY", 
"DNSSEC Key" );
+       public static final RecordType TKEY     = new RecordType( 249, "TKEY",  
"Transaction key - used to compute a shared secret or exchange a key" );
+       public static final RecordType TSIG     = new RecordType( 250, "TSIG",  
"Transaction signature" );
+       public static final RecordType IXFR     = new RecordType( 251, "IXFR",  
"Incremental zone transfer" );
+       public static final RecordType AXFR     = new RecordType( 252, "AXFR",  
"Zone transfer" );
+       public static final RecordType MAILB    = new RecordType( 253, "MAILB", 
"Transfer mailbox records" );
+       public static final RecordType MAILA    = new RecordType( 254, "MAILA", 
"Transfer mail agent records" );
+       public static final RecordType ANY      = new RecordType( 255, "ANY",   
"Matches any type" );
+       
+       public String toString()
+    {
+               return name;
+       }
+
+       public int compareTo( Object that )
+    {
+               return ordinal - ( (RecordType) that ).ordinal;
+       }
+
+       public static RecordType getTypeByOrdinal( int type )
+    {
+               for ( int ii = 0; ii < values.length; ii++ )
+                       if ( values[ ii ].ordinal == type )
+                               return values[ ii ];
+               return A;
+       }
+       
+       public static RecordType getTypeByName( String type )
+    {
+               for ( int ii = 0; ii < values.length; ii++ )
+                       if ( values[ ii ].code.equalsIgnoreCase( type ) )
+                               return values[ ii ];
+               return A;
+       }
+       
+       public int getOrdinal()
+    {
+               return ordinal;
+       }
+       
+       public static boolean isResourceRecord( RecordType resourceType )
+       {
+               int type = resourceType.getOrdinal();
+               
+               switch ( type )
+               {
+                       case 41:
+                       case 249:
+                       case 250:
+                       case 251:
+                       case 252:
+                       case 253:
+                       case 254:
+                       case 255:
+                               return false;
+                       default:
+                               return true;
+               }
+       }
+
+       /// PRIVATE /////
+       private final String name;
+       private final String code;
+       private final int    ordinal;
+
+       /**
+        * Private constructor prevents construction outside of this class.
+        */
+       private RecordType( int ordinal, String code, String name )
+    {
+        this.ordinal = ordinal;
+        this.code    = code;
+               this.name    = name;
+       }
+
+       /**
+        * These two lines are all that's necessary to export a List of VALUES.
+        */
+       private static final RecordType[] values = { A, NS, MD, MF, CNAME, SOA, 
MB,
+                       MG, MR, NULL, WKS, PTR, HINFO, MINFO, MX, TXT, RP, 
AFSDB, X25, ISDN,
+                       RT, NSAP, NSAP_PTR, SIG, KEY, PX, GPOS, AAAA, LOC, NXT, 
EID, NIMLOC,
+                       SRV, ATMA, NAPTR, KX, CERT, A6, DNAME, OPT, APL, DS, 
SSHFP, RRSIG,
+                       NSEC, DNSKEY, TKEY, TSIG, IXFR, AXFR, MAILB, MAILA, ANY 
};
+       // VALUES needs to be located here, otherwise illegal forward reference
+       public static final List VALUES = Collections.unmodifiableList( 
Arrays.asList( values ) );
+}
+

Reply via email to