You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2004/08/23 01:32:27 UTC

svn commit: rev 36710 - in incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src: java/org/apache/snickers/ldap/encoder java/org/apache/snickers/ldap/encoder/bind test/org/apache/snickers/ldap/encoder/bind

Author: akarasulu
Date: Sun Aug 22 16:32:27 2004
New Revision: 36710

Modified:
   incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/LdapResultEncoder.java
   incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/ReferralEncoder.java
   incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/bind/BindResponseEncoder.java
   incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/test/org/apache/snickers/ldap/encoder/bind/BindResponseEncoderTest.java
Log:
Commit changes ...

 o correctly assemble tuple nodes in ReferralEncoder 
 o correctly assemble tuple nodes in LdapResultEncoder
 o implemented BindResponseEncoder
 o wrote test case using Snacc4J on BindResponseEncoder
 
 Need to clean up test case and generalize for easy round trip PDU generation
 and testing.  It might also be a good idea to start assembling the PDU 
 various comparison tests into a JUnit addon for reuse in testing.  This 
 I'll add to the JIRA.
 


Modified: incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/LdapResultEncoder.java
==============================================================================
--- incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/LdapResultEncoder.java	(original)
+++ incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/LdapResultEncoder.java	Sun Aug 22 16:32:27 2004
@@ -45,27 +45,39 @@
      */
     public void encode( DefaultMutableTupleNode top, LdapResult result )
     {
-        top.addLast( ( DefaultMutableTupleNode ) EncoderUtils.encode(
-                UniversalTag.ENUMERATED, result.getResultCode().getValue() ) );
-        top.addLast( ( DefaultMutableTupleNode ) EncoderUtils.encode(
-                result.getMatchedDn() ) );
+        DefaultMutableTupleNode child = ( DefaultMutableTupleNode )
+                EncoderUtils.encode( UniversalTag.ENUMERATED,
+                        result.getResultCode().getValue() );
+        top.addLast( child );
+        child.setParent( top );
+
+        child = ( DefaultMutableTupleNode ) EncoderUtils.encode(
+                result.getMatchedDn() );
+        top.addLast( child );
+        child.setParent( top );
 
         if ( result.getErrorMessage() != null )
         {
-            top.addLast( ( DefaultMutableTupleNode ) EncoderUtils.encode(
-                    result.getErrorMessage() ) );
+            child = ( DefaultMutableTupleNode ) EncoderUtils.encode(
+                    result.getErrorMessage() );
+            top.addLast( child );
+            child.setParent( top );
         }
         else
         {
-            top.addLast( ( DefaultMutableTupleNode )
-                    EncoderUtils.encode( "" ) );
+            child = ( DefaultMutableTupleNode ) EncoderUtils.encode( "" );
+            top.addLast( child );
+            child.setParent( top );
         }
 
         if ( result.getReferral() != null &&
                 result.getReferral().getLdapUrls().size() > 0 )
         {
-            top.addLast( ( DefaultMutableTupleNode )
-                    ReferralEncoder.INSTANCE.encode( result.getReferral() ) );
+
+            child = ( DefaultMutableTupleNode )
+                    ReferralEncoder.INSTANCE.encode( result.getReferral() );
+            top.addLast( child );
+            child.setParent( top );
         }
     }
 }

Modified: incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/ReferralEncoder.java
==============================================================================
--- incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/ReferralEncoder.java	(original)
+++ incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/ReferralEncoder.java	Sun Aug 22 16:32:27 2004
@@ -59,8 +59,10 @@
         Iterator list = ref.getLdapUrls().iterator();
         while( list.hasNext() )
         {
-            refs.addLast( ( DefaultMutableTupleNode ) EncoderUtils.encode(
-                ( String ) list.next() ) );
+            DefaultMutableTupleNode child = ( DefaultMutableTupleNode )
+                    EncoderUtils.encode( ( String ) list.next() );
+            refs.addLast( child );
+            child.setParent( refs );
         }
 
         return refs;

Modified: incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/bind/BindResponseEncoder.java
==============================================================================
--- incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/bind/BindResponseEncoder.java	(original)
+++ incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/bind/BindResponseEncoder.java	Sun Aug 22 16:32:27 2004
@@ -61,8 +61,10 @@
         top.getTuple().setLength( Length.INDEFINATE );
 
         // Create and add the message id to response PDU
-        top.addLast( ( DefaultMutableTupleNode ) EncoderUtils.encode(
-                response.getMessageId() ) );
+        DefaultMutableTupleNode child = ( DefaultMutableTupleNode )
+                EncoderUtils.encode( response.getMessageId() );
+        top.addLast( child );
+        child.setParent( top );
 
         // Create the bind response sequence of TLV tuple
         DefaultMutableTupleNode bindresp =
@@ -79,6 +81,8 @@
             throw new NotImplementedException( "SASL binds not implemented" ) ;
         }
 
+        top.addLast( bindresp );
+        bindresp.setParent( top );
         return top;
     }
 }

Modified: incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/test/org/apache/snickers/ldap/encoder/bind/BindResponseEncoderTest.java
==============================================================================
--- incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/test/org/apache/snickers/ldap/encoder/bind/BindResponseEncoderTest.java	(original)
+++ incubator/directory/snickers/branches/encoder-redesign/ldap-ber-provider/src/test/org/apache/snickers/ldap/encoder/bind/BindResponseEncoderTest.java	Sun Aug 22 16:32:27 2004
@@ -17,11 +17,18 @@
 package org.apache.snickers.ldap.encoder.bind;
 
 import junit.framework.TestCase;
-import org.apache.ldap.common.message.BindResponseImpl;
-import org.apache.ldap.common.message.LdapResultImpl;
-import org.apache.ldap.common.message.ResultCodeEnum;
+import org.apache.ldap.common.message.*;
+import org.apache.ldap.common.message.spi.Provider;
 import org.apache.snickers.ber.TupleNode;
 import org.apache.snickers.ber.DeterminateLengthVisitor;
+import org.apache.snickers.ber.TupleEncodingVisitor;
+import org.apache.commons.codec.stateful.CallbackHistory;
+import org.apache.commons.codec.stateful.EncoderCallback;
+import org.apache.commons.codec.stateful.StatefulEncoder;
+
+import java.nio.ByteBuffer;
+import java.util.Properties;
+import java.io.ByteArrayInputStream;
 
 
 /**
@@ -31,7 +38,21 @@
  *         Project</a> $Rev$
  */
 public class BindResponseEncoderTest extends TestCase
+        implements EncoderCallback
 {
+    ByteBuffer accumulator = ByteBuffer.wrap( new byte[128] );
+
+
+    /**
+     * Callback to deliver a fully encoded object.
+     *
+     * @param encoder the stateful encoder driving the callback
+     * @param encoded the object that was encoded
+     */
+    public void encodeOccurred( StatefulEncoder encoder, Object encoded )
+    {
+        accumulator.put( ( ByteBuffer ) encoded );
+    }
 
 
     public void testEncode()
@@ -44,5 +65,19 @@
         TupleNode node = BindResponseEncoder.INSTANCE.encode( response );
         DeterminateLengthVisitor visitor = new DeterminateLengthVisitor();
         node.accept( visitor );
+
+        TupleEncodingVisitor encoder = new TupleEncodingVisitor();
+        encoder.setCallback( this );
+        node.accept( encoder );
+
+        Properties env = new Properties();
+        env.setProperty( Provider.BERLIB_PROVIDER,
+                "org.apache.ldap.common.berlib.snacc.SnaccProvider" );
+        MessageDecoder decoder = new MessageDecoder( env );
+
+        ByteArrayInputStream in = new ByteArrayInputStream( accumulator.array(),
+                0, accumulator.position() );
+        Message msg = decoder.decode( null, in );
+        BindResponse decodedResponse = ( BindResponse ) msg;
     }
 }