You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2010/11/25 22:39:06 UTC
svn commit: r1039194 - in /directory/apacheds/trunk/kerberos-codec/src:
main/java/org/apache/directory/shared/kerberos/codec/encKrbCredPart/EncKrbCredPartGrammar.java
test/java/org/apache/directory/shared/kerberos/codec/EncKrbCredPartDecoderTest.java
Author: kayyagari
Date: Thu Nov 25 21:39:06 2010
New Revision: 1039194
URL: http://svn.apache.org/viewvc?rev=1039194&view=rev
Log:
o added optional transitions
o added another test case
Modified:
directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/encKrbCredPart/EncKrbCredPartGrammar.java
directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/EncKrbCredPartDecoderTest.java
Modified: directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/encKrbCredPart/EncKrbCredPartGrammar.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/encKrbCredPart/EncKrbCredPartGrammar.java?rev=1039194&r1=1039193&r2=1039194&view=diff
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/encKrbCredPart/EncKrbCredPartGrammar.java (original)
+++ directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/encKrbCredPart/EncKrbCredPartGrammar.java Thu Nov 25 21:39:06 2010
@@ -120,6 +120,47 @@ public final class EncKrbCredPartGrammar
super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG] = new GrammarTransition(
EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG_STATE, EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG_STATE, KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG,
new StoreRecipientAddress());
+
+ // ---------------------------------- OPTIONAL transitions -----------------------------------------------
+ super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_TIMESTAMP_TAG] = new GrammarTransition(
+ EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE, EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_TAG_STATE, KerberosConstants.ENC_KRB_CRED_PART_TIMESTAMP_TAG,
+ new CheckNotNullLength());
+
+ super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_USEC_TAG] = new GrammarTransition(
+ EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE, EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_TAG_STATE, KerberosConstants.ENC_KRB_CRED_PART_USEC_TAG,
+ new CheckNotNullLength());
+
+ super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG] = new GrammarTransition(
+ EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE, EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG_STATE, KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG,
+ new StoreSenderAddress());
+
+ super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG] = new GrammarTransition(
+ EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE, EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG_STATE, KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG,
+ new StoreRecipientAddress());
+
+ super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_USEC_TAG] = new GrammarTransition(
+ EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE, EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_TAG_STATE, KerberosConstants.ENC_KRB_CRED_PART_USEC_TAG,
+ new CheckNotNullLength());
+
+ super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG] = new GrammarTransition(
+ EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE, EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG_STATE, KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG,
+ new StoreSenderAddress());
+
+ super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG] = new GrammarTransition(
+ EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE, EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG_STATE, KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG,
+ new StoreRecipientAddress());
+
+ super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG] = new GrammarTransition(
+ EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_STATE, EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG_STATE, KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG,
+ new StoreSenderAddress());
+
+ super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG] = new GrammarTransition(
+ EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_STATE, EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG_STATE, KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG,
+ new StoreRecipientAddress());
+
+ super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG] = new GrammarTransition(
+ EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_STATE, EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG_STATE, KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG,
+ new StoreRecipientAddress());
}
Modified: directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/EncKrbCredPartDecoderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/EncKrbCredPartDecoderTest.java?rev=1039194&r1=1039193&r2=1039194&view=diff
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/EncKrbCredPartDecoderTest.java (original)
+++ directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/EncKrbCredPartDecoderTest.java Thu Nov 25 21:39:06 2010
@@ -119,7 +119,7 @@ public class EncKrbCredPartDecoderTest
public void testEncKrbCredPart() throws Exception
{
int size = optionalFieldValueList.size();
- for ( int i = 0; i < 1; i++ ) // FIXME i < 1 should be changed to i < size after adding optional transitions
+ for ( int i = 0; i < size; i++ )
{
EncKrbCredPart expected = new EncKrbCredPart();
expected.setTicketInfo( ticketInfo );
@@ -166,6 +166,52 @@ public class EncKrbCredPartDecoderTest
}
}
+
+ @Test
+ public void testKrbCredInfoWithEachOptElement() throws Exception
+ {
+ // algorithm:
+ // start from the first mandatory element and add ONLY one OPTIONAL element and then test decoding
+
+ int size = optionalFieldValueList.size();
+ for ( int i = size - 1; i >= 0; i-- )
+ {
+ EncKrbCredPart expected = new EncKrbCredPart();
+ expected.setTicketInfo( ticketInfo );
+ Map<String, Field> encKrbCredPartFieldNameMap = getFieldMap( expected );
+
+ List<FieldValueHolder> presentFieldList = new ArrayList<FieldValueHolder>();
+
+ FieldValueHolder fieldValHolder = optionalFieldValueList.get( i );
+ presentFieldList.add( fieldValHolder );
+
+ Field f = encKrbCredPartFieldNameMap.get( fieldValHolder.fieldName.toLowerCase() );
+ f.set( expected, fieldValHolder.value );
+
+ ByteBuffer stream = ByteBuffer.allocate( expected.computeLength() );
+ expected.encode( stream );
+ stream.flip();
+
+ Asn1Decoder decoder = new Asn1Decoder();
+ EncKrbCredPartContainer container = new EncKrbCredPartContainer();
+ container.setStream( stream );
+
+ try
+ {
+ decoder.decode( stream, container );
+ }
+ catch ( DecoderException e )
+ {
+ // NOTE: keep this sysout for easy debugging (no need to setup a logger)
+ System.out.println( "failed sequence:\n" + expected );
+ throw e;
+ }
+
+ EncKrbCredPart actual = container.getEncKrbCredPart();
+ assertValues( presentFieldList, actual );
+ }
+ }
+
/**
* compare the values that are inserted into the EncKrbCredPart objects before encoding to
* those that are obtained from decoded EncKrbCredPart