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 2007/01/29 08:46:01 UTC
svn commit: r500956 [2/3] - in /directory/apacheds/trunk/protocol-dns/src:
main/java/org/apache/directory/server/dns/
main/java/org/apache/directory/server/dns/io/decoder/
main/java/org/apache/directory/server/dns/io/encoder/
main/java/org/apache/direc...
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/RecordClass.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/RecordClass.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/RecordClass.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/RecordClass.java Sun Jan 28 23:45:59 2007
@@ -21,97 +21,49 @@
package org.apache.directory.server.dns.messages;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
+import org.apache.directory.server.dns.util.EnumConverter;
+import org.apache.directory.server.dns.util.ReverseEnumMap;
-public final class RecordClass implements Comparable
+public enum RecordClass implements EnumConverter<Short>
{
- /**
- * 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, "IN", "Internet" );
- public static final RecordClass CS = new RecordClass( 2, "CS", "CSNET class" );
- public static final RecordClass CH = new RecordClass( 3, "CH", "CHAOS class" );
- public static final RecordClass HS = new RecordClass( 4, "HS", "Hesiod [Dyer 87]" );
- public static final RecordClass NONE = new RecordClass( 254, "NONE",
- "Special value used in dynamic update messages" );
- public static final RecordClass ANY = new RecordClass( 255, "*", "Any class" );
-
- /**
- * These two lines are all that's necessary to export a List of VALUES.
- */
- private static final RecordClass[] values =
- { IN, CS, CH, HS, NONE, ANY };
-
- public static final List VALUES = Collections.unmodifiableList( Arrays.asList( values ) );
-
- private final String name;
- private final String code;
- private final int ordinal;
-
-
- /**
- * Private constructor prevents construction outside of this class.
- */
- private RecordClass(int ordinal, String code, String name)
- {
- this.ordinal = ordinal;
- this.code = code;
- this.name = name;
- }
+ /** Internet */
+ IN(1),
+ /** CSNET class */
+ CS(2),
- public String toString()
- {
- return name;
- }
+ /** CHAOS class */
+ CH(3),
+ /** Hesiod [Dyer 87] */
+ HS(4),
- public int compareTo( Object that )
- {
- return ordinal - ( ( RecordClass ) that ).ordinal;
- }
+ /** Special value used in dynamic update messages */
+ NONE(254),
+ /** Any class */
+ ANY(255);
- public static RecordClass getTypeByOrdinal( int type )
- {
- for ( int ii = 0; ii < values.length; ii++ )
- {
- if ( values[ii].ordinal == type )
- {
- return values[ii];
- }
- }
+ private static ReverseEnumMap<Short, RecordClass> map = new ReverseEnumMap<Short, RecordClass>( RecordClass.class );
- return IN;
- }
+ private final short value;
- public static RecordClass getTypeByName( String type )
+ private RecordClass( int value )
{
- for ( int ii = 0; ii < values.length; ii++ )
- {
- if ( values[ii].code.equalsIgnoreCase( type ) )
- {
- return values[ii];
- }
- }
-
- return IN;
+ this.value = ( byte ) value;
}
- public int getOrdinal()
+ public Short convert()
{
- return ordinal;
+ return this.value;
}
- public String getCode()
+ public static RecordClass convert( short value )
{
- return code;
+ return map.get( value );
}
}
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/RecordType.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/RecordType.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/RecordType.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/RecordType.java Sun Jan 28 23:45:59 2007
@@ -21,164 +21,206 @@
package org.apache.directory.server.dns.messages;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
+import org.apache.directory.server.dns.util.EnumConverter;
+import org.apache.directory.server.dns.util.ReverseEnumMap;
-public class RecordType implements Comparable
+public enum RecordType implements EnumConverter<Short>
{
- /**
- * 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", "Host address" );
- public static final RecordType NS = new RecordType( 2, "NS", "Authoritative 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 for an alias" );
- public static final RecordType SOA = new RecordType( 6, "SOA", "Start of a zone of authority" );
- public static final RecordType MB = new RecordType( 7, "MB", "Mailbox domain name" );
- public static final RecordType MG = new RecordType( 8, "MG", "Mail group member" );
- public static final RecordType MR = new RecordType( 9, "MR", "Mail rename domain name" );
- public static final RecordType NULL = new RecordType( 10, "NULL", "Null resource record" );
- public static final RecordType WKS = new RecordType( 11, "WKS", "Well known service description" );
- public static final RecordType PTR = new RecordType( 12, "PTR", "Domain name pointer" );
- public static final RecordType HINFO = new RecordType( 13, "HINFO", "Host information" );
- public static final RecordType MINFO = new RecordType( 14, "MINFO", "Mailbox or mail list information" );
- public static final RecordType MX = new RecordType( 15, "MX", "Mail exchange" );
- 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", "Request for transfer of an entire zone" );
- public static final RecordType MAILB = new RecordType( 253, "MAILB", "Request for mailbox-related records" );
- public static final RecordType MAILA = new RecordType( 254, "MAILA", "Request for mail agent resource records" );
- public static final RecordType ANY = new RecordType( 255, "ANY", "Request for all records" );
-
- /**
- * 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 };
-
- public static final List VALUES = Collections.unmodifiableList( Arrays.asList( values ) );
-
- 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;
- }
+ /** Host address */
+ A(1),
+ /** Authoritative name server */
+ NS(2),
- public String toString()
- {
- return name;
- }
+ /** Mail destination */
+ MD(3),
+ /** Mail forwarder */
+ MF(4),
- public int compareTo( Object that )
- {
- return ordinal - ( ( RecordType ) that ).ordinal;
- }
+ /** Canonical name for an alias */
+ CNAME(5),
+ /** Start of a zone of authority */
+ SOA(6),
- public static RecordType getTypeByOrdinal( int type )
- {
- for ( int ii = 0; ii < values.length; ii++ )
- {
- if ( values[ii].ordinal == type )
- {
- return values[ii];
- }
- }
+ /** Mailbox domain name */
+ MB(7),
- return A;
- }
+ /** Mail group member */
+ MG(8),
+ /** Mail rename domain name */
+ MR(9),
- public static RecordType getTypeByName( String type )
- {
- for ( int ii = 0; ii < values.length; ii++ )
- {
- if ( values[ii].code.equalsIgnoreCase( type ) )
- {
- return values[ii];
- }
- }
+ /** Null resource record */
+ NULL(10),
+
+ /** Well know service description */
+ WKS(11),
+
+ /** Domain name pointer */
+ PTR(12),
+
+ /** Host information */
+ HINFO(13),
+
+ /** Mailbox or mail list information */
+ MINFO(14),
+
+ /** Mail exchange */
+ MX(15),
+
+ /** Text strings */
+ TXT(16),
+
+ /** Responsible person */
+ RP(17),
+
+ /** AFS cell database */
+ AFSDB(18),
+
+ /** X.25 calling address */
+ X25(19),
+
+ /** ISDN calling address */
+ ISDN(20),
+
+ /** Router */
+ RT(21),
+
+ /** NSAP address */
+ NSAP(22),
+
+ /** Reverse NSAP address (deprecated) */
+ NSAP_PTR(23),
+
+ /** Signature */
+ SIG(24),
+
+ /** Key */
+ KEY(25),
+
+ /** X.400 mail mapping */
+ PX(26),
+
+ /** Geographical position (withdrawn) */
+ GPOS(27),
+
+ /** IPv6 address */
+ AAAA(28),
+
+ /** Location */
+ LOC(29),
- return A;
+ /** Next valid name in zone */
+ NXT(30),
+
+ /** Endpoint identifier */
+ EID(31),
+
+ /** Nimrod locator */
+ NIMLOC(32),
+
+ /** Server selection */
+ SRV(33),
+
+ /** ATM address */
+ ATMA(34),
+
+ /** Naming authority pointer */
+ NAPTR(35),
+
+ /** Key exchange */
+ KX(36),
+
+ /** Certificate */
+ CERT(34),
+
+ /** IPv6 address (experimental) */
+ A6(38),
+
+ /** Non-terminal name redirection */
+ DNAME(39),
+
+ /** Options - contains EDNS metadata */
+ OPT(41),
+
+ /** Address Prefix List */
+ APL(42),
+
+ /** Delegation Signer */
+ DS(43),
+
+ /** SSH Key Fingerprint */
+ SSHFP(44),
+
+ /** Resource Record Signature */
+ RRSIG(46),
+
+ /** Next Secure Name */
+ NSEC(47),
+
+ /** DNSSEC Key */
+ DNSKEY(48),
+
+ /** Transaction key - used to compute a shared secret or exchange a key */
+ TKEY(249),
+
+ /** Transaction signature */
+ TSIG(250),
+
+ /** Incremental zone transfer */
+ IXFR(251),
+
+ /** Request for transfer of an entire zone */
+ AXFR(252),
+
+ /** Request for mailbox-related records */
+ MAILB(253),
+
+ /** Request for mail agent resource records */
+ MAILA(254),
+
+ /** Request for all records */
+ ANY(255);
+
+ private static ReverseEnumMap<Short, RecordType> map = new ReverseEnumMap<Short, RecordType>( RecordType.class );
+
+ private final short value;
+
+
+ private RecordType( int value )
+ {
+ this.value = ( short ) value;
}
- public int getOrdinal()
+ public Short convert()
{
- return ordinal;
+ return this.value;
}
- public String getCode()
+ public static RecordType convert( short value )
{
- return code;
+ return map.get( value );
}
public static boolean isResourceRecord( RecordType resourceType )
{
- int type = resourceType.getOrdinal();
-
- switch ( type )
+ switch ( resourceType )
{
- case 41:
- case 249:
- case 250:
- case 251:
- case 252:
- case 253:
- case 254:
- case 255:
+ case OPT:
+ case TKEY:
+ case TSIG:
+ case IXFR:
+ case AXFR:
+ case MAILB:
+ case MAILA:
+ case ANY:
return false;
default:
return true;
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ResourceRecordImpl.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ResourceRecordImpl.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ResourceRecordImpl.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ResourceRecordImpl.java Sun Jan 28 23:45:59 2007
@@ -159,7 +159,7 @@
ResourceRecordImpl that = ( ResourceRecordImpl ) o;
- return ( this.domainName.equals( that.domainName ) ) && ( this.recordType == that.recordType )
+ return ( this.domainName.equalsIgnoreCase( that.domainName ) ) && ( this.recordType == that.recordType )
&& ( this.recordClass == that.recordClass );
}
@@ -173,6 +173,6 @@
public String toString()
{
return getClass().getName() + " [ " + domainName + " ( " + recordType + " " + recordClass + " " + timeToLive
- + " " + attributes.size() + " ) ]";
+ + " " + attributes + " ) ]";
}
}
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ResourceRecordModifier.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ResourceRecordModifier.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ResourceRecordModifier.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ResourceRecordModifier.java Sun Jan 28 23:45:59 2007
@@ -35,10 +35,7 @@
private RecordType dnsType;
private RecordClass dnsClass;
private int dnsTtl;
-
- /**
- * TODO : Is this object really used? I don't think so...
- */
+
private Map<String, String> attributes = new HashMap<String, String>();
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ResponseCode.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ResponseCode.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ResponseCode.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ResponseCode.java Sun Jan 28 23:45:59 2007
@@ -21,85 +21,49 @@
package org.apache.directory.server.dns.messages;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
+import org.apache.directory.server.dns.util.EnumConverter;
+import org.apache.directory.server.dns.util.ReverseEnumMap;
-public final class ResponseCode implements Comparable
+public enum ResponseCode implements EnumConverter<Byte>
{
- /**
- * Enumeration elements are constructed once upon class loading.
- * Order of appearance here determines the order of compareTo.
- */
- public static final ResponseCode NO_ERROR = new ResponseCode( 0, "No error condition." );
- public static final ResponseCode FORMAT_ERROR = new ResponseCode( 1,
- "The name server was unable to interpret the query." );
- public static final ResponseCode SERVER_FAILURE = new ResponseCode( 2,
- "The name server was unable to process this query due to a problem with the name server." );
- public static final ResponseCode NAME_ERROR = new ResponseCode( 3,
- "The domain name referenced in the query does not exist." );
- public static final ResponseCode NOT_IMPLEMENTED = new ResponseCode( 4,
- "The name server does not support the requested kind of query." );
- public static final ResponseCode REFUSED = new ResponseCode( 5,
- "The name server refuses to perform the specified operation for policy reasons." );
-
- /**
- * These two lines are all that's necessary to export a List of VALUES.
- */
- private static final ResponseCode[] values =
- { NO_ERROR, FORMAT_ERROR, SERVER_FAILURE, NAME_ERROR, NOT_IMPLEMENTED, REFUSED };
-
- public static final List VALUES = Collections.unmodifiableList( Arrays.asList( values ) );
-
- private final String name;
- private final int ordinal;
-
-
- /**
- * Private constructor prevents construction outside of this class.
- */
- private ResponseCode(int ordinal, String name)
- {
- this.ordinal = ordinal;
- this.name = name;
- }
+ /** No error condition. */
+ NO_ERROR(0),
+ /** The name server was unable to interpret the query. */
+ FORMAT_ERROR(1),
- public String getMessage()
- {
- return name;
- }
+ /** The name server was unable to process this query due to a problem with the name server. */
+ SERVER_FAILURE(2),
+ /** The domain name referenced in the query does not exist. */
+ NAME_ERROR(3),
- public String toString()
- {
- return name;
- }
+ /** The name server does not support the requested kind of query. */
+ NOT_IMPLEMENTED(4),
+
+ /** The name server refuses to perform the specified operation for policy reasons. */
+ REFUSED(5);
+
+ private static ReverseEnumMap<Byte, ResponseCode> map = new ReverseEnumMap<Byte, ResponseCode>( ResponseCode.class );
+ private final byte value;
- public int compareTo( Object that )
+
+ private ResponseCode( int value )
{
- return ordinal - ( ( ResponseCode ) that ).ordinal;
+ this.value = ( byte ) value;
}
- public static ResponseCode getTypeByOrdinal( int type )
+ public Byte convert()
{
- for ( int ii = 0; ii < values.length; ii++ )
- {
- if ( values[ii].ordinal == type )
- {
- return values[ii];
- }
- }
-
- return NO_ERROR;
+ return this.value;
}
- public int getOrdinal()
+ public static ResponseCode convert( byte value )
{
- return ordinal;
+ return map.get( value );
}
}
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ServiceType.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ServiceType.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ServiceType.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/messages/ServiceType.java Sun Jan 28 23:45:59 2007
@@ -21,154 +21,271 @@
package org.apache.directory.server.dns.messages;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
+import org.apache.directory.server.dns.util.EnumConverter;
+import org.apache.directory.server.dns.util.ReverseEnumMap;
-public final class ServiceType implements Comparable
+public enum ServiceType implements EnumConverter<Byte>
{
- /**
- * Enumeration elements are constructed once upon class loading.
- * Order of appearance here determines the order of compareTo.
- */
- public static final ServiceType NULL = new ServiceType( 0, "Null" );
- public static final ServiceType RJE = new ServiceType( 5, "Remote job entry." );
- public static final ServiceType ECHO = new ServiceType( 7, "Echo" );
- public static final ServiceType DISCARD = new ServiceType( 9, "Discard" );
- public static final ServiceType USERS = new ServiceType( 11, "Active users." );
- public static final ServiceType DAYTIME = new ServiceType( 13, "Daytime" );
- public static final ServiceType QUOTE = new ServiceType( 17, "Quote of the day." );
- public static final ServiceType CHARGEN = new ServiceType( 19, "Character generator." );
- public static final ServiceType FTP_DATA = new ServiceType( 20, "File Transfer [Default Data]" );
- public static final ServiceType FTP = new ServiceType( 21, "File Transfer [Control]" );
- public static final ServiceType TELNET = new ServiceType( 23, "Telnet" );
- public static final ServiceType SMTP = new ServiceType( 25, "Simple Mail Transfer" );
- public static final ServiceType NSW_FE = new ServiceType( 27, "NSW User System FE" );
- public static final ServiceType MSG_ICP = new ServiceType( 29, "MSG ICP" );
- public static final ServiceType MSG_AUTH = new ServiceType( 31, "MSG Authentication" );
- public static final ServiceType DSP = new ServiceType( 33, "Display Support Protocol" );
- public static final ServiceType TIME = new ServiceType( 37, "Time" );
- public static final ServiceType RLP = new ServiceType( 39, "Resource Location Protocol" );
- public static final ServiceType GRAPHICS = new ServiceType( 41, "Graphics" );
- public static final ServiceType NAMESERVER = new ServiceType( 42, "Host Name Server" );
- public static final ServiceType NICKNAME = new ServiceType( 43, "Who Is" );
- public static final ServiceType MPM_FLAGS = new ServiceType( 44, "MPM FLAGS Protocol" );
- public static final ServiceType MPM = new ServiceType( 45, "Message Processing Module [recv]" );
- public static final ServiceType MPM_SND = new ServiceType( 46, "MPM [default send]" );
- public static final ServiceType NI_FTP = new ServiceType( 47, "NI FTP" );
- public static final ServiceType LOGIN = new ServiceType( 49, "Login Host Protocol" );
- public static final ServiceType LA_MAINT = new ServiceType( 51, "IMP Logical Address Maintenance" );
- public static final ServiceType DOMAIN = new ServiceType( 53, "Domain Name Server" );
- public static final ServiceType ISI_GL = new ServiceType( 55, "ISI Graphics Language" );
- public static final ServiceType NI_MAIL = new ServiceType( 61, "NI MAIL" );
- public static final ServiceType VIA_FTP = new ServiceType( 63, "VIA Systems - FTP" );
- public static final ServiceType TACACS_DS = new ServiceType( 65, "TACACS-Database Service" );
- public static final ServiceType BOOTPS = new ServiceType( 67, "Bootstrap Protocol Server" );
- public static final ServiceType BOOTPC = new ServiceType( 68, "Bootstrap Protocol Client" );
- public static final ServiceType TFTP = new ServiceType( 69, "Trivial File Transfer" );
- public static final ServiceType NETRJS_1 = new ServiceType( 71, "Remote Job Service" );
- public static final ServiceType NETRJS_2 = new ServiceType( 72, "Remote Job Service" );
- public static final ServiceType NETRJS_3 = new ServiceType( 73, "Remote Job Service" );
- public static final ServiceType NETRJS_4 = new ServiceType( 74, "Remote Job Service" );
- public static final ServiceType FINGER = new ServiceType( 79, "Finger" );
- public static final ServiceType HOSTS2_NS = new ServiceType( 81, "HOSTS2 Name Server" );
- public static final ServiceType SU_MIT_TG = new ServiceType( 89, "SU/MIT Telnet Gateway" );
- public static final ServiceType MIT_DOV = new ServiceType( 91, "MIT Dover Spooler" );
- public static final ServiceType DCP = new ServiceType( 93, "Device Control Protocol" );
- public static final ServiceType SUPDUP = new ServiceType( 95, "SUPDUP" );
- public static final ServiceType SWIFT_RVF = new ServiceType( 97, "Swift Remote Virtual File Protocol" );
- public static final ServiceType TACNEWS = new ServiceType( 98, "TAC News" );
- public static final ServiceType METAGRAM = new ServiceType( 99, "Metagram Relay" );
- public static final ServiceType HOSTNAME = new ServiceType( 101, "NIC Host Name Server" );
- public static final ServiceType ISO_TSAP = new ServiceType( 102, "ISO-TSAP" );
- public static final ServiceType X400 = new ServiceType( 103, "X400" );
- public static final ServiceType X400_SND = new ServiceType( 104, "X400-SND" );
- public static final ServiceType CSNET_NS = new ServiceType( 105, "Mailbox Name Nameserver" );
- public static final ServiceType RTELNET = new ServiceType( 107, "Remote Telnet Service" );
- public static final ServiceType POP_2 = new ServiceType( 109, "Post Office Protocol - Version 2" );
- public static final ServiceType SUNRPC = new ServiceType( 111, "SUN Remote Procedure Call" );
- public static final ServiceType AUTH = new ServiceType( 113, "Authentication Service" );
- public static final ServiceType SFTP = new ServiceType( 115, "Simple File Transfer Protocol" );
- public static final ServiceType UUCP_PATH = new ServiceType( 117, "UUCP Path Service" );
- public static final ServiceType NNTP = new ServiceType( 119, "Network News Transfer Protocol" );
- public static final ServiceType ERPC = new ServiceType( 121, "HYDRA Expedited Remote Procedure" );
- public static final ServiceType NTP = new ServiceType( 123, "Network Time Protocol" );
- public static final ServiceType LOCUS_MAP = new ServiceType( 125, "Locus PC-Interface Net Map Server" );
- public static final ServiceType LOCUS_CON = new ServiceType( 127, "Locus PC-Interface Conn Server" );
- public static final ServiceType PWDGEN = new ServiceType( 129, "Password Generator Protocol" );
- public static final ServiceType CISCO_FNA = new ServiceType( 130, "CISCO FNATIVE" );
- public static final ServiceType CISCO_TNA = new ServiceType( 131, "CISCO TNATIVE" );
- public static final ServiceType CISCO_SYS = new ServiceType( 132, "CISCO SYSMAINT" );
- public static final ServiceType STATSRV = new ServiceType( 133, "Statistics Service" );
- public static final ServiceType INGRES_NET = new ServiceType( 134, "INGRES-NET Service" );
- public static final ServiceType LOC_SRV = new ServiceType( 135, "Location Service" );
- public static final ServiceType PROFILE = new ServiceType( 136, "PROFILE Naming System" );
- public static final ServiceType NETBIOS_NS = new ServiceType( 137, "NETBIOS Name Service" );
- public static final ServiceType NETBIOS_DGM = new ServiceType( 138, "NETBIOS Datagram Service" );
- public static final ServiceType NETBIOS_SSN = new ServiceType( 139, "NETBIOS Session Service" );
- public static final ServiceType EMFIS_DATA = new ServiceType( 140, "EMFIS Data Service" );
- public static final ServiceType EMFIS_CNTL = new ServiceType( 141, "EMFIS Control Service" );
- public static final ServiceType BL_IDM = new ServiceType( 142, "Britton-Lee IDM" );
- public static final ServiceType SUR_MEAS = new ServiceType( 243, "Survey Measurement" );
- public static final ServiceType LINK = new ServiceType( 245, "LINK" );
-
- /**
- * These two lines are all that's necessary to export a List of VALUES.
- */
- private static final ServiceType[] values =
- { NULL, RJE, ECHO, DISCARD, USERS, DAYTIME, QUOTE, CHARGEN, FTP_DATA, FTP, TELNET, SMTP, NSW_FE, MSG_ICP,
- MSG_AUTH, DSP, TIME, RLP, GRAPHICS, NAMESERVER, NICKNAME, MPM_FLAGS, MPM, MPM_SND, NI_FTP, LOGIN, LA_MAINT,
- DOMAIN, ISI_GL, NI_MAIL, VIA_FTP, TACACS_DS, BOOTPS, BOOTPC, TFTP, NETRJS_1, NETRJS_2, NETRJS_3, NETRJS_4,
- FINGER, HOSTS2_NS, SU_MIT_TG, MIT_DOV, DCP, SUPDUP, SWIFT_RVF, TACNEWS, METAGRAM, HOSTNAME, ISO_TSAP, X400,
- X400_SND, CSNET_NS, RTELNET, POP_2, SUNRPC, AUTH, SFTP, UUCP_PATH, NNTP, ERPC, NTP, LOCUS_MAP, LOCUS_CON,
- PWDGEN, CISCO_FNA, CISCO_TNA, CISCO_SYS, STATSRV, INGRES_NET, LOC_SRV, PROFILE, NETBIOS_NS, NETBIOS_DGM,
- NETBIOS_SSN, EMFIS_DATA, EMFIS_CNTL, BL_IDM, SUR_MEAS, LINK };
-
- public static final List VALUES = Collections.unmodifiableList( Arrays.asList( values ) );
-
- private final String name;
- private final int ordinal;
-
-
- /**
- * Private constructor prevents construction outside of this class.
- */
- private ServiceType(int ordinal, String name)
- {
- this.ordinal = ordinal;
- this.name = name;
- }
+ /** Null */
+ NULL(0),
+ /** Remote job entry */
+ RJE(5),
- public String toString()
- {
- return name;
- }
+ /** Echo */
+ ECHO(7),
+
+ /** Discard */
+ DISCARD(9),
+
+ /** Active users */
+ USERS(11),
+
+ /** Daytime */
+ DAYTIME(13),
+
+ /** Quote of the day */
+ QUOTE(17),
+
+ /** Character generator */
+ CHARGEN(19),
+
+ /** File Transfer [Default Data] */
+ FTP_DATA(20),
+
+ /** File Transfer [Control] */
+ FTP(21),
+
+ /** Telnet */
+ TELNET(23),
+
+ /** Simple Mail Transfer */
+ SMTP(25),
+
+ /** NSW User System FE */
+ NSW_FE(27),
+
+ /** MSG ICP */
+ MSG_ICP(29),
+
+ /** MSG Authentication */
+ MSG_AUTH(31),
+
+ /** Display Support Protocol */
+ DSP(33),
+
+ /** Time */
+ TIME(37),
+
+ /** Resource Location Protocol */
+ RLP(39),
+
+ /** Graphics */
+ GRAPHICS(41),
+
+ /** Host Name Server */
+ NAMESERVER(42),
+
+ /** Who Is */
+ NICKNAME(43),
+
+ /** MPM FLAGS Protocol */
+ MPM_FLAGS(44),
+
+ /** Message Processing Module [recv] */
+ MPM(45),
+
+ /** MPM [default send] */
+ MPM_SND(46),
+
+ /** NI FTP */
+ NI_FTP(47),
+
+ /** Login Host Protocol */
+ LOGIN(49),
+
+ /** IMP Logical Address Maintenance */
+ LA_MAINT(51),
+
+ /** Domain Name Server */
+ DOMAIN(53),
+
+ /** ISI Graphics Language */
+ ISI_GL(55),
+
+ /** NI MAIL */
+ NI_MAIL(61),
+
+ /** VIA Systems - FTP */
+ VIA_FTP(63),
+
+ /** TACACS-Database Service */
+ TACACS_DS(65),
+
+ /** Bootstrap Protocol Server */
+ BOOTPS(67),
+
+ /** Bootstrap Protocol Client */
+ BOOTPC(68),
+
+ /** Trivial File Transfer */
+ TFTP(69),
+
+ /** Remote Job Service */
+ NETRJS_1(71),
+
+ /** Remote Job Service */
+ NETRJS_2(72),
+
+ /** Remote Job Service */
+ NETRJS_3(73),
+
+ /** Remote Job Service */
+ NETRJS_4(74),
+
+ /** Finger */
+ FINGER(79),
+
+ /** HOSTS2 Name Server */
+ HOSTS2_NS(81),
+ /** SU/MIT Telnet Gateway */
+ SU_MIT_TG(89),
- public int compareTo( Object that )
+ /** MIT Dover Spooler */
+ MIT_DOV(91),
+
+ /** Device Control Protocol */
+ DCP(93),
+
+ /** SUPDUP */
+ SUPDUP(95),
+
+ /** Swift Remote Virtual File Protocol */
+ SWIFT_RVF(97),
+
+ /** TAC News */
+ TACNEWS(98),
+
+ /** Metagram Relay */
+ METAGRAM(99),
+
+ /** NIC Host Name Server */
+ HOSTNAME(101),
+
+ /** ISO-TSAP */
+ ISO_TSAP(102),
+
+ /** X400 */
+ X400(103),
+
+ /** X400-SND */
+ X400_SND(104),
+
+ /** Mailbox Name Nameserver */
+ CSNET_NS(105),
+
+ /** Remote Telnet Service */
+ RTELNET(107),
+
+ /** Post Office Protocol - Version 2 */
+ POP_2(109),
+
+ /** SUN Remote Procedure Call */
+ SUNRPC(111),
+
+ /** Authentication Service */
+ AUTH(113),
+
+ /** Simple File Transfer Protocol */
+ SFTP(115),
+
+ /** UUCP Path Service */
+ UUCP_PATH(117),
+
+ /** Network News Transfer Protocol */
+ NNTP(119),
+
+ /** HYDRA Expedited Remote Procedure */
+ ERPC(121),
+
+ /** Network Time Protocol */
+ NTP(123),
+
+ /** Locus PC-Interface Net Map Server */
+ LOCUS_MAP(125),
+
+ /** Locus PC-Interface Conn Server */
+ LOCUS_CON(127),
+
+ /** Password Generator Protocol */
+ PWDGEN(129),
+
+ /** CISCO FNATIVE */
+ CISCO_FNA(130),
+
+ /** CISCO TNATIVE */
+ CISCO_TNA(131),
+
+ /** CISCO SYSMAINT */
+ CISCO_SYS(132),
+
+ /** Statistics Service */
+ STATSRV(133),
+
+ /** INGRES-NET Service */
+ INGRES_NET(134),
+
+ /** Location Service */
+ LOC_SRV(135),
+
+ /** PROFILE Naming System */
+ PROFILE(136),
+
+ /** NETBIOS Name Service */
+ NETBIOS_NS(137),
+
+ /** NETBIOS Datagram Service */
+ NETBIOS_DGM(138),
+
+ /** NETBIOS Session Service */
+ NETBIOS_SSN(139),
+
+ /** EMFIS Data Service */
+ EMFIS_DATA(140),
+
+ /** EMFIS Control Service */
+ EMFIS_CNTL(141),
+
+ /** Britton-Lee IDM */
+ BL_IDM(142),
+
+ /** Survey Measurement */
+ SUR_MEAS(243),
+
+ /** LINK */
+ LINK(245);
+
+ private static ReverseEnumMap<Byte, ServiceType> map = new ReverseEnumMap<Byte, ServiceType>( ServiceType.class );
+
+ private final byte value;
+
+
+ private ServiceType( int value )
{
- return ordinal - ( ( ServiceType ) that ).ordinal;
+ this.value = ( byte ) value;
}
- public static ServiceType getTypeByOrdinal( int type )
+ public Byte convert()
{
- for ( int ii = 0; ii < values.length; ii++ )
- {
- if ( values[ii].ordinal == type )
- {
- return values[ii];
- }
- }
-
- return NULL;
+ return this.value;
}
- public int getOrdinal()
+ public static ServiceType convert( byte value )
{
- return ordinal;
+ return map.get( value );
}
}
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsDecoder.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsDecoder.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsDecoder.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsDecoder.java Sun Jan 28 23:45:59 2007
@@ -22,242 +22,22 @@
import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.directory.server.dns.io.decoder.Decoder;
-import org.apache.directory.server.dns.messages.DnsMessage;
-import org.apache.directory.server.dns.messages.DnsMessageModifier;
-import org.apache.directory.server.dns.messages.MessageType;
-import org.apache.directory.server.dns.messages.OpCode;
-import org.apache.directory.server.dns.messages.QuestionRecord;
-import org.apache.directory.server.dns.messages.QuestionRecords;
-import org.apache.directory.server.dns.messages.RecordClass;
-import org.apache.directory.server.dns.messages.RecordType;
-import org.apache.directory.server.dns.messages.ResourceRecordImpl;
-import org.apache.directory.server.dns.messages.ResourceRecords;
-import org.apache.directory.server.dns.messages.ResponseCode;
+
+import org.apache.directory.server.dns.io.decoder.DnsMessageDecoder;
import org.apache.mina.common.ByteBuffer;
import org.apache.mina.common.IoSession;
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolDecoderOutput;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class DnsDecoder implements ProtocolDecoder
{
- /** the log for this class */
- private static final Logger log = LoggerFactory.getLogger( DnsDecoder.class );
-
- /**
- * A Hashed Adapter mapping record types to their encoders.
- */
- private static final Map DEFAULT_DECODERS;
-
- static
- {
- Map map = new HashMap();
-
- // map.put( RecordType.SOA, new StartOfAuthorityRecordEncoder() );
-
- DEFAULT_DECODERS = Collections.unmodifiableMap( map );
- }
-
-
- public void decode( IoSession session, ByteBuffer in, ProtocolDecoderOutput out )
- {
- out.write( decode( in ) );
- }
-
-
- DnsMessage decode( ByteBuffer in )
- {
- DnsMessageModifier modifier = new DnsMessageModifier();
-
- modifier.setTransactionId( in.getShort() );
-
- byte header = in.get();
- modifier.setMessageType( decodeMessageType( header ) );
- modifier.setOpCode( decodeOpCode( header ) );
- modifier.setAuthoritativeAnswer( decodeAuthoritativeAnswer( header ) );
- modifier.setTruncated( decodeTruncated( header ) );
- modifier.setRecursionDesired( decodeRecursionDesired( header ) );
-
- header = in.get();
- modifier.setRecursionAvailable( decodeRecursionAvailable( header ) );
- modifier.setResponseCode( decodeResponseCode( header ) );
-
- short questionCount = in.getShort();
- short answerCount = in.getShort();
- short authorityCount = in.getShort();
- short additionalCount = in.getShort();
-
- modifier.setQuestionRecords( decodeQuestions( questionCount, in ) );
- modifier.setAnswerRecords( decodeRecords( answerCount, in ) );
- modifier.setAuthorityRecords( decodeRecords( authorityCount, in ) );
- modifier.setAdditionalRecords( decodeRecords( additionalCount, in ) );
-
- return modifier.getDnsMessage();
- }
-
-
- private ResourceRecords decodeRecords( short recordCount, ByteBuffer byteBuffer )
- {
- ResourceRecords records = new ResourceRecords( recordCount );
-
- for ( int ii = 0; ii < recordCount; ii++ )
- {
- String domainName = decodeDomainName( byteBuffer );
-
- RecordType recordType = RecordType.getTypeByOrdinal( byteBuffer.getShort() );
- RecordClass recordClass = RecordClass.getTypeByOrdinal( byteBuffer.getShort() );
-
- int timeToLive = byteBuffer.getInt();
- short dataLength = byteBuffer.getShort();
-
- byte[] data = new byte[dataLength];
- byteBuffer.get( data );
-
- try
- {
- Map attributes = decode( recordType, data );
- records.add( new ResourceRecordImpl( domainName, recordType, recordClass, timeToLive, attributes ) );
- }
- catch ( IOException ioe )
- {
- log.error( ioe.getMessage(), ioe );
- }
- }
-
- return records;
- }
-
-
- private Map decode( RecordType type, byte[] resourceData ) throws IOException
- {
- Decoder decoder = ( Decoder ) DEFAULT_DECODERS.get( type );
-
- if ( decoder == null )
- {
- throw new IOException( "Decoder unavailable for " + type );
- }
-
- return decoder.decode( resourceData );
- }
-
-
- private QuestionRecords decodeQuestions( short questionCount, ByteBuffer byteBuffer )
- {
- QuestionRecords questions = new QuestionRecords( questionCount );
-
- for ( int ii = 0; ii < questionCount; ii++ )
- {
- String domainName = decodeDomainName( byteBuffer );
-
- RecordType recordType = RecordType.getTypeByOrdinal( byteBuffer.getShort() );
- RecordClass recordClass = RecordClass.getTypeByOrdinal( byteBuffer.getShort() );
-
- questions.add( new QuestionRecord( domainName, recordType, recordClass ) );
- }
-
- return questions;
- }
-
-
- private String decodeDomainName( ByteBuffer byteBuffer )
- {
- StringBuffer domainName = new StringBuffer();
- recurseDomainName( domainName, byteBuffer );
-
- return domainName.toString();
- }
-
-
- private void recurseDomainName( StringBuffer domainName, ByteBuffer byteBuffer )
- {
- byte currentByte = byteBuffer.get();
-
- boolean isCompressed = ( ( currentByte & ( byte ) 0xc0 ) == ( byte ) 0xc0 );
- boolean isLabelLength = ( ( currentByte != 0 ) && !isCompressed );
-
- if ( isCompressed )
- {
- int position = byteBuffer.get();
- int originalPosition = byteBuffer.position();
- byteBuffer.position( position );
-
- int labelLength = byteBuffer.get();
- getLabel( labelLength, byteBuffer, domainName );
- recurseDomainName( domainName, byteBuffer );
-
- byteBuffer.position( originalPosition );
- }
-
- if ( isLabelLength )
- {
- int labelLength = currentByte;
- getLabel( labelLength, byteBuffer, domainName );
- recurseDomainName( domainName, byteBuffer );
- }
- }
-
-
- private void getLabel( int labelLength, ByteBuffer byteBuffer, StringBuffer domainName )
- {
- for ( int jj = 0; jj < labelLength; jj++ )
- {
- char character = ( char ) byteBuffer.get();
- domainName.append( character );
- }
-
- if ( byteBuffer.get( byteBuffer.position() ) != 0 )
- {
- domainName.append( "." );
- }
- }
-
-
- private MessageType decodeMessageType( byte header )
- {
- return MessageType.getTypeByOrdinal( ( header & 0x80 ) >>> 7 );
- }
-
-
- private OpCode decodeOpCode( byte header )
- {
- return OpCode.getTypeByOrdinal( ( header & 0x78 ) >>> 3 );
- }
-
-
- private boolean decodeAuthoritativeAnswer( byte header )
- {
- return ( ( header & 0x04 ) >>> 2 ) == 1;
- }
-
-
- private boolean decodeTruncated( byte header )
- {
- return ( ( header & 0x02 ) >>> 1 ) == 1;
- }
-
-
- private boolean decodeRecursionDesired( byte header )
- {
- return ( ( header & 0x01 ) ) == 1;
- }
-
-
- private boolean decodeRecursionAvailable( byte header )
- {
- return ( ( header & 0x80 ) >>> 7 ) == 1;
- }
+ private DnsMessageDecoder decoder = new DnsMessageDecoder();
- private ResponseCode decodeResponseCode( byte header )
+ public void decode( IoSession session, ByteBuffer in, ProtocolDecoderOutput out ) throws IOException
{
- return ResponseCode.getTypeByOrdinal( header & 0x0F );
+ out.write( decoder.decode( in.buf() ) );
}
@@ -268,6 +48,5 @@
public void finishDecode( IoSession session, ProtocolDecoderOutput out ) throws Exception
{
- // TODO Auto-generated method stub
}
}
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsEncoder.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsEncoder.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsEncoder.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsEncoder.java Sun Jan 28 23:45:59 2007
@@ -21,213 +21,27 @@
package org.apache.directory.server.dns.protocol;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.directory.server.dns.io.encoder.AddressRecordEncoder;
-import org.apache.directory.server.dns.io.encoder.CanonicalNameRecordEncoder;
-import org.apache.directory.server.dns.io.encoder.MailExchangeRecordEncoder;
-import org.apache.directory.server.dns.io.encoder.NameServerRecordEncoder;
-import org.apache.directory.server.dns.io.encoder.PointerRecordEncoder;
-import org.apache.directory.server.dns.io.encoder.QuestionRecordEncoder;
-import org.apache.directory.server.dns.io.encoder.RecordEncoder;
-import org.apache.directory.server.dns.io.encoder.ServerSelectionRecordEncoder;
-import org.apache.directory.server.dns.io.encoder.StartOfAuthorityRecordEncoder;
-import org.apache.directory.server.dns.io.encoder.TextRecordEncoder;
+import org.apache.directory.server.dns.io.encoder.DnsMessageEncoder;
import org.apache.directory.server.dns.messages.DnsMessage;
-import org.apache.directory.server.dns.messages.MessageType;
-import org.apache.directory.server.dns.messages.OpCode;
-import org.apache.directory.server.dns.messages.QuestionRecord;
-import org.apache.directory.server.dns.messages.QuestionRecords;
-import org.apache.directory.server.dns.messages.RecordType;
-import org.apache.directory.server.dns.messages.ResourceRecord;
-import org.apache.directory.server.dns.messages.ResourceRecords;
-import org.apache.directory.server.dns.messages.ResponseCode;
import org.apache.mina.common.ByteBuffer;
import org.apache.mina.common.IoSession;
import org.apache.mina.filter.codec.ProtocolEncoder;
import org.apache.mina.filter.codec.ProtocolEncoderOutput;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class DnsEncoder implements ProtocolEncoder
{
- /** the log for this class */
- private static final Logger log = LoggerFactory.getLogger( DnsEncoder.class );
-
- /**
- * A Hashed Adapter mapping record types to their encoders.
- */
- private static final Map DEFAULT_ENCODERS;
-
- static
- {
- Map<RecordType, RecordEncoder> map = new HashMap<RecordType, RecordEncoder>();
-
- map.put( RecordType.SOA, new StartOfAuthorityRecordEncoder() );
- map.put( RecordType.A, new AddressRecordEncoder() );
- map.put( RecordType.NS, new NameServerRecordEncoder() );
- map.put( RecordType.CNAME, new CanonicalNameRecordEncoder() );
- map.put( RecordType.PTR, new PointerRecordEncoder() );
- map.put( RecordType.MX, new MailExchangeRecordEncoder() );
- map.put( RecordType.SRV, new ServerSelectionRecordEncoder() );
- map.put( RecordType.TXT, new TextRecordEncoder() );
-
- DEFAULT_ENCODERS = Collections.unmodifiableMap( map );
- }
+ private DnsMessageEncoder encoder = new DnsMessageEncoder();
public void encode( IoSession session, Object message, ProtocolEncoderOutput out )
{
ByteBuffer buf = ByteBuffer.allocate( 1024 );
- encode( buf, ( DnsMessage ) message );
+ encoder.encode( buf.buf(), ( DnsMessage ) message );
buf.flip();
out.write( buf );
- }
-
-
- public void encode( ByteBuffer byteBuffer, DnsMessage message )
- {
- byteBuffer.putShort( message.getTransactionId() );
-
- byte header = ( byte ) 0x00;
- header = encodeMessageType( message.getMessageType(), header );
- header = encodeOpCode( message.getOpCode(), header );
- header = encodeAuthoritativeAnswer( message.isAuthoritativeAnswer(), header );
- header = encodeTruncated( message.isTruncated(), header );
- header = encodeRecursionDesired( message.isRecursionDesired(), header );
- byteBuffer.put( header );
-
- header = ( byte ) 0x00;
- header = encodeRecursionAvailable( message.isRecursionAvailable(), header );
- header = encodeResponseCode( message.getResponseCode(), header );
- byteBuffer.put( header );
-
- byteBuffer.putShort( ( short ) message.getQuestionRecords().size() );
- byteBuffer.putShort( ( short ) message.getAnswerRecords().size() );
- byteBuffer.putShort( ( short ) message.getAuthorityRecords().size() );
- byteBuffer.putShort( ( short ) message.getAdditionalRecords().size() );
-
- encodeRecords( message.getQuestionRecords(), byteBuffer );
- encodeRecords( message.getAnswerRecords(), byteBuffer );
- encodeRecords( message.getAuthorityRecords(), byteBuffer );
- encodeRecords( message.getAdditionalRecords(), byteBuffer );
- }
-
-
- private void encodeRecords( QuestionRecords questions, ByteBuffer byteBuffer )
- {
- QuestionRecordEncoder encoder = new QuestionRecordEncoder();
-
- Iterator it = questions.iterator();
-
- while ( it.hasNext() )
- {
- QuestionRecord question = ( QuestionRecord ) it.next();
- encoder.encode( byteBuffer, question );
- }
- }
-
-
- private void encodeRecords( ResourceRecords records, ByteBuffer byteBuffer )
- {
- Iterator it = records.iterator();
-
- while ( it.hasNext() )
- {
- ResourceRecord record = ( ResourceRecord ) it.next();
-
- try
- {
- encode( byteBuffer, record );
- }
- catch ( IOException ioe )
- {
- log.error( ioe.getMessage(), ioe );
- }
- }
- }
-
-
- private void encode( ByteBuffer out, ResourceRecord record ) throws IOException
- {
- RecordType type = record.getRecordType();
-
- RecordEncoder encoder = ( RecordEncoder ) DEFAULT_ENCODERS.get( type );
-
- if ( encoder == null )
- {
- throw new IOException( "Encoder unavailable for " + type );
- }
-
- encoder.encode( out, record );
- }
-
-
- private byte encodeMessageType( MessageType messageType, byte header )
- {
- byte oneBit = ( byte ) ( messageType.getOrdinal() & 0x01 );
- return ( byte ) ( ( oneBit << 7 ) | header );
- }
-
-
- private byte encodeOpCode( OpCode opCode, byte header )
- {
- byte fourBits = ( byte ) ( opCode.getOrdinal() & 0x0F );
- return ( byte ) ( ( fourBits << 3 ) | header );
- }
-
-
- private byte encodeAuthoritativeAnswer( boolean authoritative, byte header )
- {
- if ( authoritative )
- {
- header = ( byte ) ( ( ( byte ) 0x01 << 2 ) | header );
- }
- return header;
- }
-
-
- private byte encodeTruncated( boolean truncated, byte header )
- {
- if ( truncated )
- {
- header = ( byte ) ( ( ( byte ) 0x01 << 1 ) | header );
- }
- return header;
- }
-
-
- private byte encodeRecursionDesired( boolean recursionDesired, byte header )
- {
- if ( recursionDesired )
- {
- header = ( byte ) ( ( ( byte ) 0x01 ) | header );
- }
- return header;
- }
-
-
- private byte encodeRecursionAvailable( boolean recursionAvailable, byte header )
- {
- if ( recursionAvailable )
- {
- header = ( byte ) ( ( ( byte ) 0x01 << 7 ) | header );
- }
- return header;
- }
-
-
- private byte encodeResponseCode( ResponseCode responseCode, byte header )
- {
- byte fourBits = ( byte ) ( responseCode.getOrdinal() & 0x0F );
- return ( byte ) ( fourBits | header );
}
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsProtocolHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsProtocolHandler.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsProtocolHandler.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsProtocolHandler.java Sun Jan 28 23:45:59 2007
@@ -21,13 +21,15 @@
package org.apache.directory.server.dns.protocol;
+import java.util.ArrayList;
+
import org.apache.directory.server.dns.DnsConfiguration;
import org.apache.directory.server.dns.DnsException;
import org.apache.directory.server.dns.messages.DnsMessage;
import org.apache.directory.server.dns.messages.DnsMessageModifier;
import org.apache.directory.server.dns.messages.MessageType;
import org.apache.directory.server.dns.messages.OpCode;
-import org.apache.directory.server.dns.messages.ResourceRecords;
+import org.apache.directory.server.dns.messages.ResourceRecord;
import org.apache.directory.server.dns.messages.ResponseCode;
import org.apache.directory.server.dns.service.DnsContext;
import org.apache.directory.server.dns.service.DomainNameServiceChain;
@@ -51,7 +53,7 @@
private String contextKey = "context";
- public DnsProtocolHandler(DnsConfiguration config, RecordStore store)
+ public DnsProtocolHandler( DnsConfiguration config, RecordStore store )
{
this.config = config;
this.store = store;
@@ -114,8 +116,8 @@
{
log.error( e.getMessage(), e );
- DnsMessage request = (DnsMessage) message;
- DnsException de = (DnsException) e;
+ DnsMessage request = ( DnsMessage ) message;
+ DnsException de = ( DnsException ) e;
DnsMessageModifier modifier = new DnsMessageModifier();
@@ -128,11 +130,11 @@
modifier.setRecursionAvailable( false );
modifier.setReserved( false );
modifier.setAcceptNonAuthenticatedData( false );
- modifier.setResponseCode( ResponseCode.getTypeByOrdinal( de.getResponseCode() ) );
+ modifier.setResponseCode( ResponseCode.convert( ( byte ) de.getResponseCode() ) );
modifier.setQuestionRecords( request.getQuestionRecords() );
- modifier.setAnswerRecords( new ResourceRecords() );
- modifier.setAuthorityRecords( new ResourceRecords() );
- modifier.setAdditionalRecords( new ResourceRecords() );
+ modifier.setAnswerRecords( new ArrayList<ResourceRecord>() );
+ modifier.setAuthorityRecords( new ArrayList<ResourceRecord>() );
+ modifier.setAdditionalRecords( new ArrayList<ResourceRecord>() );
session.write( modifier.getDnsMessage() );
}
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/BuildReply.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/BuildReply.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/BuildReply.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/BuildReply.java Sun Jan 28 23:45:59 2007
@@ -20,11 +20,14 @@
package org.apache.directory.server.dns.service;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.directory.server.dns.messages.DnsMessage;
import org.apache.directory.server.dns.messages.DnsMessageModifier;
import org.apache.directory.server.dns.messages.MessageType;
import org.apache.directory.server.dns.messages.OpCode;
-import org.apache.directory.server.dns.messages.ResourceRecords;
+import org.apache.directory.server.dns.messages.ResourceRecord;
import org.apache.directory.server.dns.messages.ResponseCode;
import org.apache.mina.common.IoSession;
import org.apache.mina.handler.chain.IoHandlerCommand;
@@ -34,11 +37,12 @@
{
private String contextKey = "context";
+
public void execute( NextCommand next, IoSession session, Object message ) throws Exception
{
- DnsContext dnsContext = (DnsContext) session.getAttribute( getContextKey() );
- ResourceRecords records = dnsContext.getResourceRecords();
- DnsMessage request = (DnsMessage) message;
+ DnsContext dnsContext = ( DnsContext ) session.getAttribute( getContextKey() );
+ List<ResourceRecord> records = dnsContext.getResourceRecords();
+ DnsMessage request = ( DnsMessage ) message;
DnsMessageModifier modifier = new DnsMessageModifier();
@@ -55,13 +59,14 @@
modifier.setQuestionRecords( request.getQuestionRecords() );
modifier.setAnswerRecords( records );
- modifier.setAuthorityRecords( new ResourceRecords() );
- modifier.setAdditionalRecords( new ResourceRecords() );
+ modifier.setAuthorityRecords( new ArrayList<ResourceRecord>() );
+ modifier.setAdditionalRecords( new ArrayList<ResourceRecord>() );
dnsContext.setReply( modifier.getDnsMessage() );
next.execute( session, message );
}
+
public String getContextKey()
{
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/DnsContext.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/DnsContext.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/DnsContext.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/DnsContext.java Sun Jan 28 23:45:59 2007
@@ -20,12 +20,13 @@
package org.apache.directory.server.dns.service;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import org.apache.directory.server.dns.DnsConfiguration;
import org.apache.directory.server.dns.messages.DnsMessage;
import org.apache.directory.server.dns.messages.ResourceRecord;
-import org.apache.directory.server.dns.messages.ResourceRecords;
import org.apache.directory.server.dns.store.RecordStore;
@@ -36,13 +37,13 @@
private DnsConfiguration config;
private RecordStore store;
private DnsMessage reply;
- private ResourceRecords records = new ResourceRecords();
+ private List<ResourceRecord> records = new ArrayList<ResourceRecord>();
/**
* @return Returns the recordEntry.
*/
- public ResourceRecords getResourceRecords()
+ public List<ResourceRecord> getResourceRecords()
{
return records;
}
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/GetResourceRecords.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/GetResourceRecords.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/GetResourceRecords.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/GetResourceRecords.java Sun Jan 28 23:45:59 2007
@@ -21,12 +21,12 @@
import java.util.Iterator;
+import java.util.List;
import java.util.Set;
import org.apache.directory.server.dns.DnsException;
import org.apache.directory.server.dns.messages.DnsMessage;
import org.apache.directory.server.dns.messages.QuestionRecord;
-import org.apache.directory.server.dns.messages.QuestionRecords;
import org.apache.directory.server.dns.messages.ResponseCode;
import org.apache.directory.server.dns.store.RecordStore;
import org.apache.directory.shared.ldap.exception.LdapNameNotFoundException;
@@ -43,13 +43,14 @@
private String contextKey = "context";
+
public void execute( NextCommand next, IoSession session, Object message ) throws Exception
{
- DnsContext dnsContext = (DnsContext) session.getAttribute( getContextKey() );
+ DnsContext dnsContext = ( DnsContext ) session.getAttribute( getContextKey() );
RecordStore store = dnsContext.getStore();
- DnsMessage request = (DnsMessage) message;
- QuestionRecords questions = request.getQuestionRecords();
+ DnsMessage request = ( DnsMessage ) message;
+ List<QuestionRecord> questions = request.getQuestionRecords();
Iterator it = questions.iterator();
@@ -92,6 +93,7 @@
return records;
}
+
public String getContextKey()
{
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/MonitorContext.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/MonitorContext.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/MonitorContext.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/MonitorContext.java Sun Jan 28 23:45:59 2007
@@ -20,7 +20,9 @@
package org.apache.directory.server.dns.service;
-import org.apache.directory.server.dns.messages.ResourceRecords;
+import java.util.List;
+
+import org.apache.directory.server.dns.messages.ResourceRecord;
import org.apache.directory.server.dns.store.RecordStore;
import org.apache.mina.common.IoSession;
import org.apache.mina.handler.chain.IoHandlerCommand;
@@ -35,15 +37,16 @@
private String contextKey = "context";
+
public void execute( NextCommand next, IoSession session, Object message ) throws Exception
{
if ( log.isDebugEnabled() )
{
try
{
- DnsContext dnsContext = (DnsContext) session.getAttribute( getContextKey() );
+ DnsContext dnsContext = ( DnsContext ) session.getAttribute( getContextKey() );
RecordStore store = dnsContext.getStore();
- ResourceRecords records = dnsContext.getResourceRecords();
+ List<ResourceRecord> records = dnsContext.getResourceRecords();
StringBuffer sb = new StringBuffer();
sb.append( "Monitoring context:" );
@@ -61,6 +64,7 @@
next.execute( session, message );
}
+
public String getContextKey()
{
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/MonitorMessage.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/MonitorMessage.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/MonitorMessage.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/service/MonitorMessage.java Sun Jan 28 23:45:59 2007
@@ -20,10 +20,12 @@
package org.apache.directory.server.dns.service;
+import java.util.List;
+
import org.apache.directory.server.dns.messages.DnsMessage;
import org.apache.directory.server.dns.messages.MessageType;
import org.apache.directory.server.dns.messages.OpCode;
-import org.apache.directory.server.dns.messages.QuestionRecords;
+import org.apache.directory.server.dns.messages.QuestionRecord;
import org.apache.directory.server.dns.messages.ResponseCode;
import org.apache.mina.handler.chain.IoHandlerCommand;
@@ -35,7 +37,7 @@
MessageType messageType = message.getMessageType();
OpCode opCode = message.getOpCode();
ResponseCode responseCode = message.getResponseCode();
- short transactionId = message.getTransactionId();
+ int transactionId = message.getTransactionId();
StringBuffer sb = new StringBuffer();
sb.append( "Monitoring " + direction + ":" );
@@ -51,7 +53,7 @@
sb.append( "\n\t" + "reserved " + message.isReserved() );
sb.append( "\n\t" + "acceptNonAuthenticatedData " + message.isAcceptNonAuthenticatedData() );
- QuestionRecords questions = message.getQuestionRecords();
+ List<QuestionRecord> questions = message.getQuestionRecords();
sb.append( "\n\t" + "questions: " + questions );
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/store/operations/GetFlatRecord.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/store/operations/GetFlatRecord.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/store/operations/GetFlatRecord.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/store/operations/GetFlatRecord.java Sun Jan 28 23:45:59 2007
@@ -56,7 +56,7 @@
/**
* Creates the action to be used against the embedded JNDI provider.
*/
- public GetFlatRecord(QuestionRecord question)
+ public GetFlatRecord( QuestionRecord question )
{
this.question = question;
}
@@ -76,8 +76,8 @@
Attributes matchAttrs = new AttributesImpl( true );
matchAttrs.put( new AttributeImpl( DnsAttribute.NAME, question.getDomainName() ) );
- matchAttrs.put( new AttributeImpl( DnsAttribute.TYPE, question.getRecordType().getCode() ) );
- matchAttrs.put( new AttributeImpl( DnsAttribute.CLASS, question.getRecordClass().getCode() ) );
+ matchAttrs.put( new AttributeImpl( DnsAttribute.TYPE, question.getRecordType().name() ) );
+ matchAttrs.put( new AttributeImpl( DnsAttribute.CLASS, question.getRecordClass().name() ) );
ResourceRecord record = null;
@@ -120,8 +120,8 @@
String dnsTtl = ( attr = attrs.get( DnsAttribute.TTL ) ) != null ? ( String ) attr.get() : null;
modifier.setDnsName( dnsName );
- modifier.setDnsType( RecordType.getTypeByName( dnsType ) );
- modifier.setDnsClass( RecordClass.getTypeByName( dnsClass ) );
+ modifier.setDnsType( RecordType.valueOf( dnsType ) );
+ modifier.setDnsClass( RecordClass.valueOf( dnsClass ) );
modifier.setDnsTtl( Integer.parseInt( dnsTtl ) );
NamingEnumeration ids = attrs.getIDs();
Modified: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/store/operations/GetRecords.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/store/operations/GetRecords.java?view=diff&rev=500956&r1=500955&r2=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/store/operations/GetRecords.java (original)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/store/operations/GetRecords.java Sun Jan 28 23:45:59 2007
@@ -64,7 +64,7 @@
/**
* Creates the action to be used against the embedded JNDI provider.
*/
- public GetRecords(QuestionRecord question)
+ public GetRecords( QuestionRecord question )
{
this.question = question;
}
@@ -184,7 +184,7 @@
if ( attr != null )
{
- modifier.setDnsType( RecordType.getTypeByName( ( String ) attr.get() ) );
+ modifier.setDnsType( RecordType.valueOf( ( String ) attr.get() ) );
}
else
{
@@ -193,7 +193,7 @@
// class defaults to SOA CLASS
String dnsClass = ( attr = attrs.get( DnsAttribute.CLASS ) ) != null ? ( String ) attr.get() : SOA_CLASS;
- modifier.setDnsClass( RecordClass.getTypeByName( dnsClass ) );
+ modifier.setDnsClass( RecordClass.valueOf( dnsClass ) );
// ttl defaults to SOA MINIMUM
String dnsTtl = ( attr = attrs.get( DnsAttribute.TTL ) ) != null ? ( String ) attr.get() : SOA_MINIMUM;
Added: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/ByteBufferUtil.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/ByteBufferUtil.java?view=auto&rev=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/ByteBufferUtil.java (added)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/ByteBufferUtil.java Sun Jan 28 23:45:59 2007
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.directory.server.dns.util;
+
+
+import java.nio.ByteBuffer;
+
+
+public class ByteBufferUtil
+{
+
+ private ByteBufferUtil()
+ {
+ }
+
+
+ public static short getUnsignedByte( ByteBuffer byteBuffer )
+ {
+ return ( ( short ) ( byteBuffer.get() & 0xff ) );
+ }
+
+
+ public static short getUnsignedByte( ByteBuffer byteBuffer, int position )
+ {
+ return ( ( short ) ( byteBuffer.get( position ) & ( short ) 0xff ) );
+ }
+
+
+ public static int getUnsignedShort( ByteBuffer byteBuffer )
+ {
+ return ( byteBuffer.getShort() & 0xffff );
+ }
+
+
+ public static int getUnsignedShort( ByteBuffer byteBuffer, int position )
+ {
+ return ( byteBuffer.getShort( position ) & 0xffff );
+ }
+
+
+ public static long getUnsignedInt( ByteBuffer byteBuffer )
+ {
+ return ( byteBuffer.getInt() & 0xffffffffL );
+ }
+
+
+ public static long getUnsignedInt( ByteBuffer byteBuffer, int position )
+ {
+ return ( byteBuffer.getInt( position ) & 0xffffffffL );
+ }
+
+
+ public static void putUnsignedByte( ByteBuffer byteBuffer, int value )
+ {
+ byteBuffer.put( ( byte ) ( value & 0xff ) );
+ }
+
+
+ public static void putUnsignedByte( ByteBuffer byteBuffer, int position, int value )
+ {
+ byteBuffer.put( position, ( byte ) ( value & 0xff ) );
+ }
+
+
+ public static void putUnsignedShort( ByteBuffer byteBuffer, int value )
+ {
+ byteBuffer.putShort( ( short ) ( value & 0xffff ) );
+ }
+
+
+ public static void putUnsignedShort( ByteBuffer byteBuffer, int position, int value )
+ {
+ byteBuffer.putShort( position, ( short ) ( value & 0xffff ) );
+ }
+
+
+ public static void putUnsignedInt( ByteBuffer byteBuffer, long value )
+ {
+ byteBuffer.putInt( ( int ) ( value & 0xffffffffL ) );
+ }
+
+
+ public static void putUnsignedInt( ByteBuffer byteBuffer, int position, long value )
+ {
+ byteBuffer.putInt( position, ( int ) ( value & 0xffffffffL ) );
+ }
+}
Propchange: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/ByteBufferUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/EnumConverter.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/EnumConverter.java?view=auto&rev=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/EnumConverter.java (added)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/EnumConverter.java Sun Jan 28 23:45:59 2007
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.directory.server.dns.util;
+
+
+public interface EnumConverter<K>
+{
+ K convert();
+}
Propchange: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/EnumConverter.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/ReverseEnumMap.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/ReverseEnumMap.java?view=auto&rev=500956
==============================================================================
--- directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/ReverseEnumMap.java (added)
+++ directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/ReverseEnumMap.java Sun Jan 28 23:45:59 2007
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.directory.server.dns.util;
+
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * A map to easily get the actual Enum instance from it's value as seen in the
+ * <a href="http://www.javaspecialists.co.za/archive/newsletter.do?issue=113">
+ * The JavaSpecialists newsletter</a>.
+ */
+public class ReverseEnumMap<K, E extends Enum<E> & EnumConverter<K>>
+{
+ private Map<K, E> reverseMap = new HashMap<K, E>();
+
+
+ public ReverseEnumMap( Class<E> enumType )
+ {
+ for ( E e : enumType.getEnumConstants() )
+ {
+ reverseMap.put( e.convert(), e );
+ }
+ }
+
+
+ public E get( K value )
+ {
+ E e = reverseMap.get( value );
+ if ( e == null )
+ {
+ throw new IllegalArgumentException( "Invalid enum value: " + value );
+ }
+ return e;
+ }
+}
Propchange: directory/apacheds/trunk/protocol-dns/src/main/java/org/apache/directory/server/dns/util/ReverseEnumMap.java
------------------------------------------------------------------------------
svn:eol-style = native