Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 22899 invoked from network); 25 Nov 2010 21:40:39 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 25 Nov 2010 21:40:39 -0000 Received: (qmail 41591 invoked by uid 500); 25 Nov 2010 21:40:39 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 41551 invoked by uid 500); 25 Nov 2010 21:40:39 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 41544 invoked by uid 99); 25 Nov 2010 21:40:39 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 25 Nov 2010 21:40:39 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 25 Nov 2010 21:40:38 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 9C8D72388994; Thu, 25 Nov 2010 21:39:06 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Thu, 25 Nov 2010 21:39:06 -0000 To: commits@directory.apache.org From: kayyagari@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101125213906.9C8D72388994@eris.apache.org> 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 encKrbCredPartFieldNameMap = getFieldMap( expected ); + + List presentFieldList = new ArrayList(); + + 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