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/23 12:11:47 UTC

svn commit: r1038054 - /directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ppolicy/PasswordPolicyResponseControl.java

Author: elecharny
Date: Tue Nov 23 11:11:47 2010
New Revision: 1038054

URL: http://svn.apache.org/viewvc?rev=1038054&view=rev
Log:
Also fixed the encoder

Modified:
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ppolicy/PasswordPolicyResponseControl.java

Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ppolicy/PasswordPolicyResponseControl.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ppolicy/PasswordPolicyResponseControl.java?rev=1038054&r1=1038053&r2=1038054&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ppolicy/PasswordPolicyResponseControl.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ppolicy/PasswordPolicyResponseControl.java Tue Nov 23 11:11:47 2010
@@ -64,14 +64,21 @@ public class PasswordPolicyResponseContr
     @Override
     public int computeLength()
     {
-        if ( ( timeBeforeExpiration >= 0 ) && ( graceAuthNsRemaining >= 0 ) )
+        if ( timeBeforeExpiration >= 0 )
         {
             timeBeforeExpirationTagLength = TLV.getNbBytes( timeBeforeExpiration );
             warningLength = 1 + TLV.getNbBytes( timeBeforeExpirationTagLength ) + timeBeforeExpirationTagLength;
-
+        }
+        
+        
+        if ( graceAuthNsRemaining >= 0 )
+        {
             graceAuthNsRemainingTagLength = TLV.getNbBytes( graceAuthNsRemaining );
-            warningLength += 1 + TLV.getNbBytes( graceAuthNsRemainingTagLength ) + graceAuthNsRemainingTagLength;
-            
+            warningLength = 1 + TLV.getNbBytes( graceAuthNsRemainingTagLength ) + graceAuthNsRemainingTagLength;
+        }
+
+        if ( warningLength != 0 )
+        {
             ppolicySeqLength = 1 + TLV.getNbBytes( warningLength ) + warningLength;
         }
 
@@ -106,9 +113,7 @@ public class PasswordPolicyResponseContr
 
         if ( ( timeBeforeExpiration < 0 ) && ( graceAuthNsRemaining < 0 ) && ( ppolicyError == null ) )
         {
-            // Encode the empty Sequence tag
-            buffer.put( UniversalTag.SEQUENCE.getValue() );
-            buffer.put( (byte)0 );
+            return buffer;
         }
         else
         {
@@ -116,19 +121,24 @@ public class PasswordPolicyResponseContr
             buffer.put( UniversalTag.SEQUENCE.getValue() );
             buffer.put( TLV.getBytes( ppolicySeqLength ) );
 
-            if ( ( timeBeforeExpiration >= 0 ) && ( graceAuthNsRemaining >= 0 ) )
+            if ( warningLength > 0 )
             {
                 // Encode the Warning tag
                 buffer.put( (byte)PasswordPolicyResponseControlTags.PPOLICY_WARNING_TAG.getValue() );
                 buffer.put( TLV.getBytes( warningLength ) );
-                
-                buffer.put( ( byte ) PasswordPolicyResponseControlTags.TIME_BEFORE_EXPIRATION_TAG.getValue() );
-                buffer.put( TLV.getBytes( timeBeforeExpirationTagLength ) );
-                buffer.put( Value.getBytes( timeBeforeExpiration ) );
-    
-                buffer.put( ( byte ) PasswordPolicyResponseControlTags.GRACE_AUTHNS_REMAINING_TAG.getValue() );
-                buffer.put( TLV.getBytes( graceAuthNsRemainingTagLength ) );
-                buffer.put( Value.getBytes( graceAuthNsRemaining ) );
+
+                if ( timeBeforeExpiration >= 0 )
+                {
+                    buffer.put( ( byte ) PasswordPolicyResponseControlTags.TIME_BEFORE_EXPIRATION_TAG.getValue() );
+                    buffer.put( TLV.getBytes( timeBeforeExpirationTagLength ) );
+                    buffer.put( Value.getBytes( timeBeforeExpiration ) );
+                }
+                else if ( graceAuthNsRemaining >= 0 )
+                {
+                    buffer.put( ( byte ) PasswordPolicyResponseControlTags.GRACE_AUTHNS_REMAINING_TAG.getValue() );
+                    buffer.put( TLV.getBytes( graceAuthNsRemainingTagLength ) );
+                    buffer.put( Value.getBytes( graceAuthNsRemaining ) );
+                }
             }
     
             if ( ppolicyError != null )
@@ -191,8 +201,7 @@ public class PasswordPolicyResponseContr
         {
             sb.append( "   timeBeforeExpiration          : '" ).append( timeBeforeExpiration ).append( '\n' );
         }
-        
-        if ( graceAuthNsRemaining >= 0 )
+        else if ( graceAuthNsRemaining >= 0 )
         {
             sb.append( "   graceAuthNsRemaining          : '" ).append( graceAuthNsRemaining ).append( '\n' );
         }