You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2010/11/12 00:14:58 UTC

svn commit: r1034194 - in /directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos: ./ codec/kdcReqBody/ codec/kdcReqBody/actions/ components/

Author: elecharny
Date: Thu Nov 11 23:14:57 2010
New Revision: 1034194

URL: http://svn.apache.org/viewvc?rev=1034194&view=rev
Log:
Some more states handled for the KDC-REQ-BODY

Added:
    directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreFrom.java
    directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreRTime.java
    directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreSName.java
    directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreTill.java
Modified:
    directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/KerberosTime.java
    directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/KdcReqBodyGrammar.java
    directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/KdcReqBodyStatesEnum.java
    directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreCName.java
    directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreKdcOptions.java
    directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/components/KdcReqBody.java

Modified: directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/KerberosTime.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/KerberosTime.java?rev=1034194&r1=1034193&r2=1034194&view=diff
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/KerberosTime.java (original)
+++ directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/KerberosTime.java Thu Nov 11 23:14:57 2010
@@ -67,12 +67,24 @@ public class KerberosTime
         sdf.setTimeZone( UTC );
     }
 
+    
     /**
      * Creates a new instance of a KerberosTime object
      */
     public KerberosTime()
     {
     }
+
+    
+    /**
+     * Creates a new instance of a KerberosTime object
+     * 
+     * @param date the KerberosTime to store
+     */
+    public KerberosTime( String date )
+    {
+        setDate( date );
+    }
     
     
     /**

Modified: directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/KdcReqBodyGrammar.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/KdcReqBodyGrammar.java?rev=1034194&r1=1034193&r2=1034194&view=diff
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/KdcReqBodyGrammar.java (original)
+++ directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/KdcReqBodyGrammar.java Thu Nov 11 23:14:57 2010
@@ -28,8 +28,11 @@ import org.apache.directory.shared.kerbe
 import org.apache.directory.shared.kerberos.codec.actions.CheckNotNullLength;
 import org.apache.directory.shared.kerberos.codec.kdcReqBody.actions.KdcReqBodyInit;
 import org.apache.directory.shared.kerberos.codec.kdcReqBody.actions.StoreCName;
+import org.apache.directory.shared.kerberos.codec.kdcReqBody.actions.StoreFrom;
 import org.apache.directory.shared.kerberos.codec.kdcReqBody.actions.StoreKdcOptions;
 import org.apache.directory.shared.kerberos.codec.kdcReqBody.actions.StoreRealm;
+import org.apache.directory.shared.kerberos.codec.kdcReqBody.actions.StoreSName;
+import org.apache.directory.shared.kerberos.codec.kdcReqBody.actions.StoreTill;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -61,7 +64,7 @@ public final class KdcReqBodyGrammar ext
         setName( KdcReqBodyGrammar.class.getName() );
 
         // Create the transitions table
-        super.transitions = new GrammarTransition[KdcReqBodyStatesEnum.LAST_KRB_REQ_BODY_STATE.ordinal()][256];
+        super.transitions = new GrammarTransition[KdcReqBodyStatesEnum.LAST_KDC_REQ_BODY_STATE.ordinal()][256];
 
         // ============================================================================================
         // KdcReqBody 
@@ -71,7 +74,7 @@ public final class KdcReqBodyGrammar ext
         // --------------------------------------------------------------------------------------------
         // KDC-REQ-BODY    ::= SEQUENCE {
         super.transitions[KdcReqBodyStatesEnum.START_STATE.ordinal()][UniversalTag.SEQUENCE.getValue()] = new GrammarTransition(
-            KdcReqBodyStatesEnum.START_STATE, KdcReqBodyStatesEnum.KRB_REQ_BODY_KDC_OPTIONS_TAG_STATE, UniversalTag.SEQUENCE.getValue(),
+            KdcReqBodyStatesEnum.START_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_KDC_OPTIONS_TAG_STATE, UniversalTag.SEQUENCE.getValue(),
             new KdcReqBodyInit() );
         
         // --------------------------------------------------------------------------------------------
@@ -79,8 +82,8 @@ public final class KdcReqBodyGrammar ext
         // --------------------------------------------------------------------------------------------
         // KDC-REQ-BODY    ::= SEQUENCE {
         //         kdc-options             [0]
-        super.transitions[KdcReqBodyStatesEnum.KRB_REQ_BODY_KDC_OPTIONS_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_KDC_OPTIONS_TAG] = new GrammarTransition(
-            KdcReqBodyStatesEnum.KRB_REQ_BODY_KDC_OPTIONS_TAG_STATE, KdcReqBodyStatesEnum.KRB_REQ_BODY_KDC_OPTIONS_STATE, KerberosConstants.KDC_REQ_BODY_KDC_OPTIONS_TAG,
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_KDC_OPTIONS_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_KDC_OPTIONS_TAG] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_KDC_OPTIONS_TAG_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_KDC_OPTIONS_STATE, KerberosConstants.KDC_REQ_BODY_KDC_OPTIONS_TAG,
             new CheckNotNullLength() );
         
         // --------------------------------------------------------------------------------------------
@@ -88,8 +91,8 @@ public final class KdcReqBodyGrammar ext
         // --------------------------------------------------------------------------------------------
         // KDC-REQ-BODY    ::= SEQUENCE {
         //         kdc-options             [0] KDCOptions
-        super.transitions[KdcReqBodyStatesEnum.KRB_REQ_BODY_KDC_OPTIONS_STATE.ordinal()][UniversalTag.BIT_STRING.getValue()] = new GrammarTransition(
-            KdcReqBodyStatesEnum.KRB_REQ_BODY_KDC_OPTIONS_STATE, KdcReqBodyStatesEnum.KRB_REQ_BODY_CNAME_TAG_STATE, UniversalTag.BIT_STRING.getValue(),
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_KDC_OPTIONS_STATE.ordinal()][UniversalTag.BIT_STRING.getValue()] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_KDC_OPTIONS_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_CNAME_TAG_STATE, UniversalTag.BIT_STRING.getValue(),
             new StoreKdcOptions() );
         
         // --------------------------------------------------------------------------------------------
@@ -98,8 +101,8 @@ public final class KdcReqBodyGrammar ext
         // KDC-REQ-BODY    ::= SEQUENCE {
         //         ...
         //         cname                   [1]
-        super.transitions[KdcReqBodyStatesEnum.KRB_REQ_BODY_CNAME_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_CNAME_TAG] = new GrammarTransition(
-            KdcReqBodyStatesEnum.KRB_REQ_BODY_CNAME_TAG_STATE, KdcReqBodyStatesEnum.KRB_REQ_BODY_REALM_TAG_STATE, KerberosConstants.KDC_REQ_BODY_CNAME_TAG,
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_CNAME_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_CNAME_TAG] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_CNAME_TAG_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_REALM_TAG_STATE, KerberosConstants.KDC_REQ_BODY_CNAME_TAG,
             new StoreCName() );
         
         // --------------------------------------------------------------------------------------------
@@ -108,8 +111,8 @@ public final class KdcReqBodyGrammar ext
         // KDC-REQ-BODY    ::= SEQUENCE {
         //         ...
         //         realm                   [2]
-        super.transitions[KdcReqBodyStatesEnum.KRB_REQ_BODY_CNAME_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_REALM_TAG] = new GrammarTransition(
-            KdcReqBodyStatesEnum.KRB_REQ_BODY_CNAME_TAG_STATE, KdcReqBodyStatesEnum.KRB_REQ_BODY_REALM_TAG_STATE, KerberosConstants.KDC_REQ_BODY_REALM_TAG,
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_CNAME_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_REALM_TAG] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_CNAME_TAG_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_REALM_TAG_STATE, KerberosConstants.KDC_REQ_BODY_REALM_TAG,
             new CheckNotNullLength() );
         
         // --------------------------------------------------------------------------------------------
@@ -118,8 +121,8 @@ public final class KdcReqBodyGrammar ext
         // KDC-REQ-BODY    ::= SEQUENCE {
         //         ...
         //         realm                   [2]
-        super.transitions[KdcReqBodyStatesEnum.KRB_REQ_BODY_REALM_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_REALM_TAG] = new GrammarTransition(
-            KdcReqBodyStatesEnum.KRB_REQ_BODY_REALM_TAG_STATE, KdcReqBodyStatesEnum.KRB_REQ_BODY_REALM_STATE, KerberosConstants.KDC_REQ_BODY_REALM_TAG,
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_REALM_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_REALM_TAG] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_REALM_TAG_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_REALM_STATE, KerberosConstants.KDC_REQ_BODY_REALM_TAG,
             new CheckNotNullLength() );
         
         // --------------------------------------------------------------------------------------------
@@ -128,10 +131,100 @@ public final class KdcReqBodyGrammar ext
         // KDC-REQ-BODY    ::= SEQUENCE {
         //         ...
         //         realm                   [2] Realm
-        super.transitions[KdcReqBodyStatesEnum.KRB_REQ_BODY_REALM_STATE.ordinal()][UniversalTag.GENERAL_STRING.getValue()] = new GrammarTransition(
-            KdcReqBodyStatesEnum.KRB_REQ_BODY_REALM_STATE, KdcReqBodyStatesEnum.KRB_REQ_BODY_SNAME_TAG_STATE, UniversalTag.GENERAL_STRING.getValue(),
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_REALM_STATE.ordinal()][UniversalTag.GENERAL_STRING.getValue()] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_REALM_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_SNAME_TAG_STATE, UniversalTag.GENERAL_STRING.getValue(),
             new StoreRealm() );
-    }
+        
+        // --------------------------------------------------------------------------------------------
+        // Transition from realm value to sname tag
+        // --------------------------------------------------------------------------------------------
+        // KDC-REQ-BODY    ::= SEQUENCE {
+        //         ...
+        //         sname                   [3]
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_SNAME_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_SNAME_TAG] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_SNAME_TAG_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_FROM_TAG_STATE, KerberosConstants.KDC_REQ_BODY_SNAME_TAG,
+            new StoreSName() );
+
+        // --------------------------------------------------------------------------------------------
+        // Transition from sname tag to from tag
+        // --------------------------------------------------------------------------------------------
+        // KDC-REQ-BODY    ::= SEQUENCE {
+        //         ...
+        //         from                    [4]
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_FROM_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_FROM_TAG] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_FROM_TAG_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_FROM_STATE, KerberosConstants.KDC_REQ_BODY_FROM_TAG,
+            new CheckNotNullLength() );
+        
+        // --------------------------------------------------------------------------------------------
+        // Transition from sname tag to till tag (from is empty)
+        // --------------------------------------------------------------------------------------------
+        // KDC-REQ-BODY    ::= SEQUENCE {
+        //         ...
+        //         till                    [5]
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_FROM_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_TILL_TAG] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_FROM_TAG_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_TILL_STATE, KerberosConstants.KDC_REQ_BODY_TILL_TAG,
+            new CheckNotNullLength() );
+        
+        // --------------------------------------------------------------------------------------------
+        // Transition from realm value to from tag (sname is empty)
+        // --------------------------------------------------------------------------------------------
+        // KDC-REQ-BODY    ::= SEQUENCE {
+        //         ...
+        //         from                    [4]
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_SNAME_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_FROM_TAG] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_SNAME_TAG_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_FROM_STATE, KerberosConstants.KDC_REQ_BODY_FROM_TAG,
+            new CheckNotNullLength() );
+
+        // --------------------------------------------------------------------------------------------
+        // Transition from from tag to from value
+        // --------------------------------------------------------------------------------------------
+        // KDC-REQ-BODY    ::= SEQUENCE {
+        //         ...
+        //         from                    [4] KerberosTime
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_FROM_STATE.ordinal()][UniversalTag.GENERALIZED_TIME.getValue()] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_FROM_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_TILL_TAG_STATE, UniversalTag.GENERALIZED_TIME.getValue(),
+            new StoreFrom() );
+
+        // --------------------------------------------------------------------------------------------
+        // Transition from realm value to till tag (sname and from are empty)
+        // --------------------------------------------------------------------------------------------
+        // KDC-REQ-BODY    ::= SEQUENCE {
+        //         ...
+        //         till                    [4]
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_SNAME_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_TILL_TAG] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_SNAME_TAG_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_TILL_STATE, KerberosConstants.KDC_REQ_BODY_TILL_TAG,
+            new CheckNotNullLength() );
+
+        // --------------------------------------------------------------------------------------------
+        // Transition from till tag to till value
+        // --------------------------------------------------------------------------------------------
+        // KDC-REQ-BODY    ::= SEQUENCE {
+        //         ...
+        //         till                    [5]
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_TILL_TAG_STATE.ordinal()][KerberosConstants.KDC_REQ_BODY_TILL_TAG] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_TILL_TAG_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_TILL_STATE, KerberosConstants.KDC_REQ_BODY_TILL_TAG,
+            new CheckNotNullLength() );
+
+        // --------------------------------------------------------------------------------------------
+        // Transition from till tag to till value
+        // --------------------------------------------------------------------------------------------
+        // KDC-REQ-BODY    ::= SEQUENCE {
+        //         ...
+        //         till                    [5] KerberosTime
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_TILL_TAG_STATE.ordinal()][UniversalTag.GENERALIZED_TIME.getValue()] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_TILL_TAG_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_TILL_STATE, UniversalTag.GENERALIZED_TIME.getValue(),
+            new StoreTill() );
+
+        // --------------------------------------------------------------------------------------------
+        // Transition from till tag to till value
+        // --------------------------------------------------------------------------------------------
+        // KDC-REQ-BODY    ::= SEQUENCE {
+        //         ...
+        //         till                    [5] KerberosTime
+        super.transitions[KdcReqBodyStatesEnum.KDC_REQ_BODY_TILL_STATE.ordinal()][UniversalTag.GENERALIZED_TIME.getValue()] = new GrammarTransition(
+            KdcReqBodyStatesEnum.KDC_REQ_BODY_TILL_STATE, KdcReqBodyStatesEnum.KDC_REQ_BODY_RTIME_STATE, UniversalTag.GENERALIZED_TIME.getValue(),
+            new StoreTill() );
+}
 
 
     // ~ Methods

Modified: directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/KdcReqBodyStatesEnum.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/KdcReqBodyStatesEnum.java?rev=1034194&r1=1034193&r2=1034194&view=diff
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/KdcReqBodyStatesEnum.java (original)
+++ directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/KdcReqBodyStatesEnum.java Thu Nov 11 23:14:57 2010
@@ -37,47 +37,47 @@ public enum KdcReqBodyStatesEnum impleme
     START_STATE,                            // 0
     
     // ----- KDC-REQ-BODY message --------------------------------------
-    KRB_REQ_BODY_SEQ_STATE,                     // 1
+    KDC_REQ_BODY_SEQ_STATE,                     // 1
     
-    KRB_REQ_BODY_KDC_OPTIONS_TAG_STATE,         // 2
-    KRB_REQ_BODY_KDC_OPTIONS_STATE,             // 3
+    KDC_REQ_BODY_KDC_OPTIONS_TAG_STATE,         // 2
+    KDC_REQ_BODY_KDC_OPTIONS_STATE,             // 3
     
-    KRB_REQ_BODY_CNAME_TAG_STATE,               // 4
-    KRB_REQ_BODY_CNAME_STATE,                   // 5
+    KDC_REQ_BODY_CNAME_TAG_STATE,               // 4
+    KDC_REQ_BODY_CNAME_STATE,                   // 5
 
-    KRB_REQ_BODY_REALM_TAG_STATE,               // 6
-    KRB_REQ_BODY_REALM_STATE,                   // 7
+    KDC_REQ_BODY_REALM_TAG_STATE,               // 6
+    KDC_REQ_BODY_REALM_STATE,                   // 7
 
-    KRB_REQ_BODY_SNAME_TAG_STATE,               // 8
-    KRB_REQ_BODY_SNAME_STATE,                   // 9
+    KDC_REQ_BODY_SNAME_TAG_STATE,               // 8
+    KDC_REQ_BODY_SNAME_STATE,                   // 9
 
-    KRB_REQ_BODY_FROM_TAG_STATE,                // 10
-    KRB_REQ_BODY_FROM_STATE,                    // 11
+    KDC_REQ_BODY_FROM_TAG_STATE,                // 10
+    KDC_REQ_BODY_FROM_STATE,                    // 11
 
-    KRB_REQ_BODY_TILL_TAG_STATE,                // 12
-    KRB_REQ_BODY_TILL_STATE,                    // 13
+    KDC_REQ_BODY_TILL_TAG_STATE,                // 12
+    KDC_REQ_BODY_TILL_STATE,                    // 13
     
-    KRB_REQ_BODY_RTIME_TAG_STATE,               // 14
-    KRB_REQ_BODY_RTIME_STATE,                   // 15
+    KDC_REQ_BODY_RTIME_TAG_STATE,               // 14
+    KDC_REQ_BODY_RTIME_STATE,                   // 15
 
-    KRB_REQ_BODY_NONCE_TAG_STATE,               // 16
-    KRB_REQ_BODY_NONCE_STATE,                   // 17
+    KDC_REQ_BODY_NONCE_TAG_STATE,               // 16
+    KDC_REQ_BODY_NONCE_STATE,                   // 17
 
-    KRB_REQ_BODY_ETYPE_TAG_STATE,               // 18
-    KRB_REQ_BODY_ETYPE_SEQ_STATE,               // 19
-    KRB_REQ_BODY_ETYPE_STATE,                   // 20
+    KDC_REQ_BODY_ETYPE_TAG_STATE,               // 18
+    KDC_REQ_BODY_ETYPE_SEQ_STATE,               // 19
+    KDC_REQ_BODY_ETYPE_STATE,                   // 20
 
-    KRB_REQ_BODY_ADDRESSES_TAG_STATE,           // 21
-    KRB_REQ_BODY_ADDRESSES_STATE,               // 22
+    KDC_REQ_BODY_ADDRESSES_TAG_STATE,           // 21
+    KDC_REQ_BODY_ADDRESSES_STATE,               // 22
 
-    KRB_REQ_BODY_ENC_AUTH_DATA_TAG_STATE,       // 2
-    KRB_REQ_BODY_ENC_AUTH_DATA_STATE,           // 2
+    KDC_REQ_BODY_ENC_AUTH_DATA_TAG_STATE,       // 2
+    KDC_REQ_BODY_ENC_AUTH_DATA_STATE,           // 2
 
-    KRB_REQ_BODY_ADDITIONAL_TICKETS_TAG_STATE,  // 2
-    KRB_REQ_BODY_ADDITIONAL_TICKETS_STATE,      // 2
+    KDC_REQ_BODY_ADDITIONAL_TICKETS_TAG_STATE,  // 2
+    KDC_REQ_BODY_ADDITIONAL_TICKETS_STATE,      // 2
 
     // End
-    LAST_KRB_REQ_BODY_STATE;              // 8
+    LAST_KDC_REQ_BODY_STATE;              // 8
 
     
     /**
@@ -88,7 +88,7 @@ public enum KdcReqBodyStatesEnum impleme
      */
     public String getGrammarName( int grammar )
     {
-        return "KRB_REQ_BODY_GRAMMAR";
+        return "KDC_REQ_BODY_GRAMMAR";
     }
 
 
@@ -102,7 +102,7 @@ public enum KdcReqBodyStatesEnum impleme
     {
         if ( grammar instanceof KerberosMessageGrammar )
         {
-            return "KRB_REQ_BODY_GRAMMAR";
+            return "KDC_REQ_BODY_GRAMMAR";
         }
         else
         {
@@ -119,7 +119,7 @@ public enum KdcReqBodyStatesEnum impleme
      */
     public String getState( int state )
     {
-        return ( ( state == LAST_KRB_REQ_BODY_STATE.ordinal() ) ? "KRB_REQ_BODY_END_STATE" : name() );
+        return ( ( state == LAST_KDC_REQ_BODY_STATE.ordinal() ) ? "KDC_REQ_BODY_END_STATE" : name() );
     }
 
     
@@ -128,7 +128,7 @@ public enum KdcReqBodyStatesEnum impleme
      */
     public boolean isEndState()
     {
-        return this == LAST_KRB_REQ_BODY_STATE;
+        return this == LAST_KDC_REQ_BODY_STATE;
     }
     
     

Modified: directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreCName.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreCName.java?rev=1034194&r1=1034193&r2=1034194&view=diff
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreCName.java (original)
+++ directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreCName.java Thu Nov 11 23:14:57 2010
@@ -35,7 +35,7 @@ import org.slf4j.LoggerFactory;
 
 
 /**
- * The action used to store the KDCOptions
+ * The action used to store the CName
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
@@ -49,7 +49,7 @@ public class StoreCName extends GrammarA
 
 
     /**
-     * Instantiates a new StoreKdcOptions action.
+     * Instantiates a new StoreCName action.
      */
     public StoreCName()
     {
@@ -80,7 +80,7 @@ public class StoreCName extends GrammarA
         
         PrincipalNameContainer principalNameContainer = new PrincipalNameContainer();
 
-        // Decode the Ticket PDU
+        // Decode the PrincipalName PDU
         try
         {
             principalNameDecoder.decode( container.getStream(), principalNameContainer );

Added: directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreFrom.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreFrom.java?rev=1034194&view=auto
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreFrom.java (added)
+++ directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreFrom.java Thu Nov 11 23:14:57 2010
@@ -0,0 +1,102 @@
+/*
+ *  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.shared.kerberos.codec.kdcReqBody.actions;
+
+
+import org.apache.directory.shared.asn1.ber.Asn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.ber.tlv.Value;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.kerberos.KerberosTime;
+import org.apache.directory.shared.kerberos.codec.kdcReqBody.KdcReqBodyContainer;
+import org.apache.directory.shared.kerberos.components.KdcReqBody;
+import org.apache.directory.shared.ldap.util.StringTools;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to store the from KerberosTime
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class StoreFrom extends GrammarAction
+{
+    /** The logger */
+    private static final Logger LOG = LoggerFactory.getLogger( StoreFrom.class );
+
+    /** Speedup for logs */
+    private static final boolean IS_DEBUG = LOG.isDebugEnabled();
+
+
+    /**
+     * Instantiates a new StoreFrom action.
+     */
+    public StoreFrom()
+    {
+        super( "Stores the From" );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void action( Asn1Container container ) throws DecoderException
+    {
+        KdcReqBodyContainer kdcReqBodyContainer = ( KdcReqBodyContainer ) container;
+
+        TLV tlv = kdcReqBodyContainer.getCurrentTLV();
+
+        // The Length should not be null and should be 15
+        if ( tlv.getLength() != 15 )
+        {
+            LOG.error( I18n.err( I18n.ERR_04066 ) );
+
+            // This will generate a PROTOCOL_ERROR
+            throw new DecoderException( I18n.err( I18n.ERR_04067 ) );
+        }
+        
+        KdcReqBody kdcReqBody = kdcReqBodyContainer.getKdcReqBody();
+        
+        // The value is the KerberosTime
+        Value value = tlv.getValue();
+        String date = StringTools.utf8ToString( value.getData() );
+        
+        try
+        {
+            KerberosTime from = new KerberosTime( date );
+            kdcReqBody.setFrom( from );
+            
+            if ( IS_DEBUG )
+            {
+                LOG.debug( "From : {}", from );
+            }
+        }
+        catch ( IllegalArgumentException iae )
+        {
+            LOG.error( I18n.err( I18n.ERR_04066 ) );
+
+            // This will generate a PROTOCOL_ERROR
+            throw new DecoderException( I18n.err( I18n.ERR_04067 ) );
+        }
+    }
+}

Modified: directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreKdcOptions.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreKdcOptions.java?rev=1034194&r1=1034193&r2=1034194&view=diff
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreKdcOptions.java (original)
+++ directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreKdcOptions.java Thu Nov 11 23:14:57 2010
@@ -77,7 +77,6 @@ public class StoreKdcOptions extends Gra
         KdcOptions kdcOptions = new KdcOptions( tlv.getValue().getData() );
         
         kdcReqBody.setKdcOptions( kdcOptions );
-        System.out.println( kdcOptions );
         
         if ( IS_DEBUG )
         {

Added: directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreRTime.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreRTime.java?rev=1034194&view=auto
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreRTime.java (added)
+++ directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreRTime.java Thu Nov 11 23:14:57 2010
@@ -0,0 +1,102 @@
+/*
+ *  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.shared.kerberos.codec.kdcReqBody.actions;
+
+
+import org.apache.directory.shared.asn1.ber.Asn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.ber.tlv.Value;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.kerberos.KerberosTime;
+import org.apache.directory.shared.kerberos.codec.kdcReqBody.KdcReqBodyContainer;
+import org.apache.directory.shared.kerberos.components.KdcReqBody;
+import org.apache.directory.shared.ldap.util.StringTools;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to store the rtime KerberosTime
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class StoreRTime extends GrammarAction
+{
+    /** The logger */
+    private static final Logger LOG = LoggerFactory.getLogger( StoreRTime.class );
+
+    /** Speedup for logs */
+    private static final boolean IS_DEBUG = LOG.isDebugEnabled();
+
+
+    /**
+     * Instantiates a new StoreRTime action.
+     */
+    public StoreRTime()
+    {
+        super( "Stores the RTime" );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void action( Asn1Container container ) throws DecoderException
+    {
+        KdcReqBodyContainer kdcReqBodyContainer = ( KdcReqBodyContainer ) container;
+
+        TLV tlv = kdcReqBodyContainer.getCurrentTLV();
+
+        // The Length should not be null and should be 15
+        if ( tlv.getLength() != 15 )
+        {
+            LOG.error( I18n.err( I18n.ERR_04066 ) );
+
+            // This will generate a PROTOCOL_ERROR
+            throw new DecoderException( I18n.err( I18n.ERR_04067 ) );
+        }
+        
+        KdcReqBody kdcReqBody = kdcReqBodyContainer.getKdcReqBody();
+        
+        // The value is the KerberosTime
+        Value value = tlv.getValue();
+        String date = StringTools.utf8ToString( value.getData() );
+        
+        try
+        {
+            KerberosTime rtime = new KerberosTime( date );
+            kdcReqBody.setRtime( rtime );
+            
+            if ( IS_DEBUG )
+            {
+                LOG.debug( "RTime : {}", rtime );
+            }
+        }
+        catch ( IllegalArgumentException iae )
+        {
+            LOG.error( I18n.err( I18n.ERR_04066 ) );
+
+            // This will generate a PROTOCOL_ERROR
+            throw new DecoderException( I18n.err( I18n.ERR_04067 ) );
+        }
+    }
+}

Added: directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreSName.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreSName.java?rev=1034194&view=auto
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreSName.java (added)
+++ directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreSName.java Thu Nov 11 23:14:57 2010
@@ -0,0 +1,106 @@
+/*
+ *  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.shared.kerberos.codec.kdcReqBody.actions;
+
+
+import org.apache.directory.shared.asn1.ber.Asn1Container;
+import org.apache.directory.shared.asn1.ber.Asn1Decoder;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.kerberos.codec.kdcReqBody.KdcReqBodyContainer;
+import org.apache.directory.shared.kerberos.codec.principalName.PrincipalNameContainer;
+import org.apache.directory.shared.kerberos.components.KdcReqBody;
+import org.apache.directory.shared.kerberos.components.PrincipalName;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to store the SName
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class StoreSName extends GrammarAction
+{
+    /** The logger */
+    private static final Logger LOG = LoggerFactory.getLogger( StoreSName.class );
+
+    /** Speedup for logs */
+    private static final boolean IS_DEBUG = LOG.isDebugEnabled();
+
+
+    /**
+     * Instantiates a new StoreSName action.
+     */
+    public StoreSName()
+    {
+        super( "Stores the SName" );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void action( Asn1Container container ) throws DecoderException
+    {
+        KdcReqBodyContainer kdcReqBodyContainer = ( KdcReqBodyContainer ) container;
+
+        TLV tlv = kdcReqBodyContainer.getCurrentTLV();
+
+        // The Length should not be null
+        if ( tlv.getLength() == 0 )
+        {
+            LOG.error( I18n.err( I18n.ERR_04066 ) );
+
+            // This will generate a PROTOCOL_ERROR
+            throw new DecoderException( I18n.err( I18n.ERR_04067 ) );
+        }
+        
+        // Now, let's decode the PrincipalName
+        Asn1Decoder principalNameDecoder = new Asn1Decoder();
+        
+        PrincipalNameContainer principalNameContainer = new PrincipalNameContainer();
+
+        // Decode the PrincipalName PDU
+        try
+        {
+            principalNameDecoder.decode( container.getStream(), principalNameContainer );
+        }
+        catch ( DecoderException de )
+        {
+            throw de;
+        }
+
+        // Store the Principal name in the container
+        PrincipalName principalName = principalNameContainer.getPrincipalName();
+        KdcReqBody kdcReqBody = kdcReqBodyContainer.getKdcReqBody();
+        kdcReqBody.setSName( principalName );
+        
+        // Update the parent
+        container.setParentTLV( tlv.getParent() );
+
+        if ( IS_DEBUG )
+        {
+            LOG.debug( "SName : {}", principalName );
+        }
+    }
+}

Added: directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreTill.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreTill.java?rev=1034194&view=auto
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreTill.java (added)
+++ directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/kdcReqBody/actions/StoreTill.java Thu Nov 11 23:14:57 2010
@@ -0,0 +1,102 @@
+/*
+ *  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.shared.kerberos.codec.kdcReqBody.actions;
+
+
+import org.apache.directory.shared.asn1.ber.Asn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.ber.tlv.Value;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.kerberos.KerberosTime;
+import org.apache.directory.shared.kerberos.codec.kdcReqBody.KdcReqBodyContainer;
+import org.apache.directory.shared.kerberos.components.KdcReqBody;
+import org.apache.directory.shared.ldap.util.StringTools;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to store the till KerberosTime
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class StoreTill extends GrammarAction
+{
+    /** The logger */
+    private static final Logger LOG = LoggerFactory.getLogger( StoreTill.class );
+
+    /** Speedup for logs */
+    private static final boolean IS_DEBUG = LOG.isDebugEnabled();
+
+
+    /**
+     * Instantiates a new StoreTill action.
+     */
+    public StoreTill()
+    {
+        super( "Stores the Till" );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void action( Asn1Container container ) throws DecoderException
+    {
+        KdcReqBodyContainer kdcReqBodyContainer = ( KdcReqBodyContainer ) container;
+
+        TLV tlv = kdcReqBodyContainer.getCurrentTLV();
+
+        // The Length should not be null and should be 15
+        if ( tlv.getLength() != 15 )
+        {
+            LOG.error( I18n.err( I18n.ERR_04066 ) );
+
+            // This will generate a PROTOCOL_ERROR
+            throw new DecoderException( I18n.err( I18n.ERR_04067 ) );
+        }
+        
+        KdcReqBody kdcReqBody = kdcReqBodyContainer.getKdcReqBody();
+        
+        // The value is the KerberosTime
+        Value value = tlv.getValue();
+        String date = StringTools.utf8ToString( value.getData() );
+        
+        try
+        {
+            KerberosTime till = new KerberosTime( date );
+            kdcReqBody.setTill( till );
+            
+            if ( IS_DEBUG )
+            {
+                LOG.debug( "Till : {}", till );
+            }
+        }
+        catch ( IllegalArgumentException iae )
+        {
+            LOG.error( I18n.err( I18n.ERR_04066 ) );
+
+            // This will generate a PROTOCOL_ERROR
+            throw new DecoderException( I18n.err( I18n.ERR_04067 ) );
+        }
+    }
+}

Modified: directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/components/KdcReqBody.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/components/KdcReqBody.java?rev=1034194&r1=1034193&r2=1034194&view=diff
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/components/KdcReqBody.java (original)
+++ directory/apacheds/trunk/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/components/KdcReqBody.java Thu Nov 11 23:14:57 2010
@@ -760,7 +760,7 @@ public class KdcReqBody
             sb.append( "cname : " ).append( cName ).append( '\n' );
         }
         
-        sb.append( "ream : " ).append( realm ).append( '\n' );
+        sb.append( "realm : " ).append( realm ).append( '\n' );
 
         if ( sName != null )
         {
@@ -775,7 +775,7 @@ public class KdcReqBody
         sb.append( "till : " ).append( till ).append( '\n' );
         
 
-        if ( from != null )
+        if ( rtime != null )
         {
             sb.append( "rtime : " ).append( rtime ).append( '\n' );
         }