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/11/14 11:22:32 UTC

svn commit: rev 65592 - in incubator/directory: eve/trunk/jndi-provider/src/java/org/apache/eve eve/trunk/jndi-provider/src/java/org/apache/eve/jndi eve/trunk/protocol/src/java/org/apache/eve/protocol ldap/trunk/common/src/java/org/apache/ldap/common/message ldap/trunk/common/src/java/org/apache/ldap/common/message/spi seda/trunk/src/java/org/apache/seda/encoder seda/trunk/src/java/org/apache/seda/event snickers/trunk/ber-codec/src/java/org/apache/snickers/ber snickers/trunk/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder snickers/trunk/ldap-ber-provider/src/test/org/apache/snickers/ldap/encoder

Author: akarasulu
Date: Sun Nov 14 02:22:31 2004
New Revision: 65592

Modified:
   incubator/directory/eve/trunk/jndi-provider/src/java/org/apache/eve/EveMain.java
   incubator/directory/eve/trunk/jndi-provider/src/java/org/apache/eve/jndi/EveContextFactory.java
   incubator/directory/eve/trunk/protocol/src/java/org/apache/eve/protocol/LdapProtocolProvider.java
   incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/MessageDecoder.java
   incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/MessageEncoder.java
   incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/Provider.java
   incubator/directory/seda/trunk/src/java/org/apache/seda/encoder/DefaultEncoderManager.java
   incubator/directory/seda/trunk/src/java/org/apache/seda/event/GatheringOutputEvent.java
   incubator/directory/snickers/trunk/ber-codec/src/java/org/apache/snickers/ber/TupleEncodingVisitor.java
   incubator/directory/snickers/trunk/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/SnickersLdapEncoder.java
   incubator/directory/snickers/trunk/ldap-ber-provider/src/test/org/apache/snickers/ldap/encoder/AbstractEncoderTestCase.java
Log:
Changes ...

 o switched to using only Hashtables to align with JNDI
   environments in the LdapProtocolProvider, Provider,
   MessageDecoder, and MessageEncoder
 o LdapProtocolProvider checks to make sure the provider
   property is set to a valid value before abandoning the
   default provider
 o EveContextFactory now passes the environment to the LDAP
   protocol provider
 o Added code to collect ByteBuffers so the GatherOutputEvent
   is used instead of OutputEvent
 o Fixed AbstractEncoderTestCase to now use ByteBuffer arrays
 o SnickersLdapEncoder now flushes the visitor




Modified: incubator/directory/eve/trunk/jndi-provider/src/java/org/apache/eve/EveMain.java
==============================================================================
--- incubator/directory/eve/trunk/jndi-provider/src/java/org/apache/eve/EveMain.java	(original)
+++ incubator/directory/eve/trunk/jndi-provider/src/java/org/apache/eve/EveMain.java	Sun Nov 14 02:22:31 2004
@@ -18,7 +18,6 @@
 
 
 import java.util.Properties;
-import java.io.FileInputStream;
 import java.io.File;
 
 import javax.naming.Context;

Modified: incubator/directory/eve/trunk/jndi-provider/src/java/org/apache/eve/jndi/EveContextFactory.java
==============================================================================
--- incubator/directory/eve/trunk/jndi-provider/src/java/org/apache/eve/jndi/EveContextFactory.java	(original)
+++ incubator/directory/eve/trunk/jndi-provider/src/java/org/apache/eve/jndi/EveContextFactory.java	Sun Nov 14 02:22:31 2004
@@ -491,7 +491,7 @@
 
     private void startUpWireProtocol() throws NamingException
     {
-        proto = new LdapProtocolProvider();
+        proto = new LdapProtocolProvider( initialEnv );
 
         try
         {

Modified: incubator/directory/eve/trunk/protocol/src/java/org/apache/eve/protocol/LdapProtocolProvider.java
==============================================================================
--- incubator/directory/eve/trunk/protocol/src/java/org/apache/eve/protocol/LdapProtocolProvider.java	(original)
+++ incubator/directory/eve/trunk/protocol/src/java/org/apache/eve/protocol/LdapProtocolProvider.java	Sun Nov 14 02:22:31 2004
@@ -24,6 +24,7 @@
 import org.apache.seda.listener.ClientKey;
 
 import org.apache.ldap.common.message.*;
+import org.apache.ldap.common.message.spi.Provider;
 import org.apache.ldap.common.exception.LdapNamingException;
 
 import org.apache.commons.codec.stateful.DecoderFactory;
@@ -112,7 +113,7 @@
      * @param env environment properties used to configure the provider and
      * underlying codec providers if any
      */
-    public LdapProtocolProvider( Properties env ) throws LdapNamingException
+    public LdapProtocolProvider( Hashtable env ) throws LdapNamingException
     {
         this.handlers = new HashMap();
         SessionRegistry.getSingleton( env );
@@ -128,7 +129,7 @@
             {
                 try
                 {
-                    clazz = Class.forName( env.getProperty( type ) );
+                    clazz = Class.forName( ( String ) env.get( type ) );
                 }
                 catch ( ClassNotFoundException e )
                 {
@@ -268,7 +269,7 @@
      */
     private static final class DecoderFactoryImpl implements DecoderFactory
     {
-        final Properties env;
+        final Hashtable env;
 
 
         public DecoderFactoryImpl()
@@ -277,7 +278,7 @@
         }
 
 
-        DecoderFactoryImpl( Properties env )
+        DecoderFactoryImpl( Hashtable env )
         {
             this.env = env;
         }
@@ -285,7 +286,7 @@
 
         public StatefulDecoder createDecoder()
         {
-            if ( env == null )
+            if ( env == null || env.get( Provider.BERLIB_PROVIDER ) == null )
             {
                 return new MessageDecoder();
             }
@@ -302,7 +303,7 @@
      */
     private static final class EncoderFactoryImpl implements EncoderFactory
     {
-        final Properties env;
+        final Hashtable env;
 
 
         public EncoderFactoryImpl()
@@ -311,7 +312,7 @@
         }
 
 
-        public EncoderFactoryImpl( Properties env )
+        public EncoderFactoryImpl( Hashtable env )
         {
             this.env = env;
         }
@@ -319,7 +320,7 @@
 
         public StatefulEncoder createEncoder()
         {
-            if ( env == null )
+            if ( env == null || env.get( Provider.BERLIB_PROVIDER ) == null )
             {
                 return new MessageEncoder();
             }

Modified: incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/MessageDecoder.java
==============================================================================
--- incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/MessageDecoder.java	(original)
+++ incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/MessageDecoder.java	Sun Nov 14 02:22:31 2004
@@ -18,7 +18,7 @@
 
 
 import java.io.InputStream;
-import java.util.Properties;
+import java.util.Hashtable;
 
 import org.apache.ldap.common.message.spi.Provider;
 import org.apache.ldap.common.message.spi.TransformerSpi;
@@ -40,7 +40,7 @@
 public final class MessageDecoder implements ProviderDecoder
 {
     /** Environment parameters stored here */
-    private final Properties env;
+    private final Hashtable env;
     /** the ASN.1 provider */
     private final Provider provider;
     /** the ASN.1 provider's decoder */
@@ -70,9 +70,9 @@
      * @param env The Map of environment parameters.
      * @throws MessageException if there is a problem creating this decoder.
      */
-    public MessageDecoder( final Properties env ) throws MessageException
+    public MessageDecoder( final Hashtable env ) throws MessageException
     {
-        this.env = ( Properties ) env.clone();
+        this.env = ( Hashtable ) env.clone();
         this.provider = Provider.getProvider( this.env );
         this.decoder = this.provider.getDecoder();
         this.transformer = this.provider.getTransformer();

Modified: incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/MessageEncoder.java
==============================================================================
--- incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/MessageEncoder.java	(original)
+++ incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/MessageEncoder.java	Sun Nov 14 02:22:31 2004
@@ -19,6 +19,7 @@
 
 import java.io.OutputStream;
 import java.util.Properties;
+import java.util.Hashtable;
 import java.nio.ByteBuffer;
 
 import org.apache.commons.codec.EncoderException;
@@ -67,7 +68,7 @@
      * @param env The Map of environment parameters.
      * @throws MessageException if the encoder cannot be created.
      */
-    public MessageEncoder( final Properties env ) throws MessageException
+    public MessageEncoder( final Hashtable env ) throws MessageException
     {
         this.provider = Provider.getProvider( ( Properties ) env.clone() );
         this.encoder = provider.getEncoder();

Modified: incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/Provider.java
==============================================================================
--- incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/Provider.java	(original)
+++ incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/Provider.java	Sun Nov 14 02:22:31 2004
@@ -227,6 +227,7 @@
 
 import java.util.List ;
 import java.util.Properties ;
+import java.util.Hashtable;
 
 
 /**
@@ -368,11 +369,11 @@
      * @return a singleton instance of the ASN.1 BER Library Provider
      * @throws ProviderException if the provider cannot be found 
      */
-    public static Provider getProvider( Properties a_env )
+    public static Provider getProvider( Hashtable a_env )
             throws ProviderException
     {
         Provider provider = null ;
-        String className = a_env.getProperty( BERLIB_PROVIDER ) ;
+        String className = ( String ) a_env.get( BERLIB_PROVIDER ) ;
 
         // --------------------------------------------------------------------
         // Check for a valid property value

Modified: incubator/directory/seda/trunk/src/java/org/apache/seda/encoder/DefaultEncoderManager.java
==============================================================================
--- incubator/directory/seda/trunk/src/java/org/apache/seda/encoder/DefaultEncoderManager.java	(original)
+++ incubator/directory/seda/trunk/src/java/org/apache/seda/encoder/DefaultEncoderManager.java	Sun Nov 14 02:22:31 2004
@@ -254,25 +254,18 @@
          */
         encoder.setCallback(new EncoderCallback()
             {
-                public void encodeOccurred(StatefulEncoder encoder,
-                                           Object encoded)
+                public void encodeOccurred(StatefulEncoder encoder, Object encoded)
                 {
                     ClientKey key = ((ClientEncoder) encoder).getClientKey();
                     EventObject event;
 
                     if (encoded instanceof ByteBuffer)
                     {
-                        event =
-                                                        new OutputEvent(this,
-                                                                        key,
-                                                                        (ByteBuffer) encoded);
+                        event = new OutputEvent(this, key, (ByteBuffer) encoded);
                     }
                     else if (encoded instanceof ByteBuffer[])
                     {
-                        event =
-                                                        new GatheringOutputEvent(this,
-                                                                                 key,
-                                                                                 (ByteBuffer[]) encoded);
+                        event = new GatheringOutputEvent(this, key, (ByteBuffer[]) encoded);
                     }
                     else
                     {

Modified: incubator/directory/seda/trunk/src/java/org/apache/seda/event/GatheringOutputEvent.java
==============================================================================
--- incubator/directory/seda/trunk/src/java/org/apache/seda/event/GatheringOutputEvent.java	(original)
+++ incubator/directory/seda/trunk/src/java/org/apache/seda/event/GatheringOutputEvent.java	Sun Nov 14 02:22:31 2004
@@ -40,7 +40,7 @@
      *
      * @param source the source which created this event
      * @param clientKey the key of the client
-     * @param buf the buffer containing the chunk to output
+     * @param buffers the buffer array containing the chunk to output
      */
     public GatheringOutputEvent(Object source, ClientKey clientKey, ByteBuffer[] buffers)
     {

Modified: incubator/directory/snickers/trunk/ber-codec/src/java/org/apache/snickers/ber/TupleEncodingVisitor.java
==============================================================================
--- incubator/directory/snickers/trunk/ber-codec/src/java/org/apache/snickers/ber/TupleEncodingVisitor.java	(original)
+++ incubator/directory/snickers/trunk/ber-codec/src/java/org/apache/snickers/ber/TupleEncodingVisitor.java	Sun Nov 14 02:22:31 2004
@@ -38,6 +38,12 @@
 public class TupleEncodingVisitor extends AbstractStatefulEncoder
         implements TupleNodeVisitor
 {
+    /** An empty buffer array so we do not recreate every time on toArray */
+    private static final ByteBuffer[] EMPTY_ARRAY = new ByteBuffer[0];
+
+    /** The List storing the ByteBuffers collected during a visitation */
+    private ArrayList buffers = new ArrayList();
+
 
     // ------------------------------------------------------------------------
     // TupleNodeVisitor Implemenations
@@ -76,8 +82,7 @@
         ByteBuffer buf = ByteBuffer.wrap( new byte[size] );
         tlv.setTag( buf, tlv.getTagLength() );
         tlv.setLength( buf, tlv.getLengthLength() );
-        super.encodeOccurred( buf.flip() );
-        buf.rewind();
+        buffers.add( buf.flip() );
 
         /*
          * W A R N I N G
@@ -93,7 +98,7 @@
 
         if ( tlv.isPrimitive() )
         {
-            super.encodeOccurred( tlv.getLastValueChunk() );
+            buffers.add( tlv.getLastValueChunk() );
         }
 
         /*
@@ -145,5 +150,15 @@
     public ArrayList getOrder( TupleNode node, ArrayList children )
     {
         return children;
+    }
+
+
+    /**
+     * Flushes out the array of ByteBuffer's collected during the visitation.
+     * This is done by calling encodeOccurred in one shot.
+     */
+    public void flush()
+    {
+        super.encodeOccurred( ( ByteBuffer [] ) buffers.toArray( EMPTY_ARRAY ) );
     }
 }

Modified: incubator/directory/snickers/trunk/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/SnickersLdapEncoder.java
==============================================================================
--- incubator/directory/snickers/trunk/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/SnickersLdapEncoder.java	(original)
+++ incubator/directory/snickers/trunk/ldap-ber-provider/src/java/org/apache/snickers/ldap/encoder/SnickersLdapEncoder.java	Sun Nov 14 02:22:31 2004
@@ -183,6 +183,9 @@
 
         // now encode using the another visitor
         root.accept( encoder );
+
+        // now make the encoder flush out the ByteBuffers with an encodeOccurred
+        encoder.flush();
     }
 
 

Modified: incubator/directory/snickers/trunk/ldap-ber-provider/src/test/org/apache/snickers/ldap/encoder/AbstractEncoderTestCase.java
==============================================================================
--- incubator/directory/snickers/trunk/ldap-ber-provider/src/test/org/apache/snickers/ldap/encoder/AbstractEncoderTestCase.java	(original)
+++ incubator/directory/snickers/trunk/ldap-ber-provider/src/test/org/apache/snickers/ldap/encoder/AbstractEncoderTestCase.java	Sun Nov 14 02:22:31 2004
@@ -119,7 +119,12 @@
      */
     public void encodeOccurred( StatefulEncoder encoder, Object encoded )
     {
-        accumulator.put( ( ByteBuffer ) encoded );
+        ByteBuffer[] buffers = ( ByteBuffer [] ) encoded;
+
+        for ( int ii = 0; ii < buffers.length; ii++ )
+        {
+            accumulator.put( buffers[ii] );
+        }
     }
 
 
@@ -155,5 +160,6 @@
         TupleEncodingVisitor encoder = new TupleEncodingVisitor();
         encoder.setCallback( this );
         node.accept( encoder );
+        encoder.flush();
     }
 }