directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From akaras...@apache.org
Subject svn commit: rev 56405 - in incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message: . spi
Date Tue, 02 Nov 2004 19:31:06 GMT
Author: akarasulu
Date: Tue Nov  2 11:31:06 2004
New Revision: 56405

Added:
   incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/EncoderProvider.java
      - copied, changed from rev 56324, incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/EncoderSpi.java
Removed:
   incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/EncoderSpi.java
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/MessageEncoder.java
   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/ProviderDecoder.java
Log:
Changes ...

 o ok renamed EncoderSpi to be ProviderEncoder
 o cleaned up ProviderEncoder wrt style and conventions
 o changes encoder family to implement StatefulEncoder interfaces mirroring 
   the decoder side



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
Tue Nov  2 11:31:06 2004
@@ -37,7 +37,7 @@
  * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
  * @version $Rev$
  */
-public final class MessageDecoder implements StatefulDecoder
+public final class MessageDecoder implements ProviderDecoder
 {
     /** Environment parameters stored here */
     private final Properties env;
@@ -67,19 +67,18 @@
      * Creates a MessageDecoder using default properties for enabling a BER
      * library provider.
      *
-     * @param a_env The Map of environment parameters.
+     * @param env The Map of environment parameters.
      * @throws MessageException if there is a problem creating this decoder.
      */
-    public MessageDecoder( final Properties a_env ) throws MessageException
+    public MessageDecoder( final Properties env ) throws MessageException
     {
-        env = ( Properties ) a_env.clone();
-        provider = Provider.getProvider( env );
-        decoder = provider.getDecoder();
-        transformer = provider.getTransformer();
-        decoder.setCallback( new DecoderCallback()
+        this.env = ( Properties ) env.clone();
+        this.provider = Provider.getProvider( this.env );
+        this.decoder = this.provider.getDecoder();
+        this.transformer = this.provider.getTransformer();
+        this.decoder.setCallback( new DecoderCallback()
         {
-            public void decodeOccurred( StatefulDecoder decoder,
-                                        Object decoded )
+            public void decodeOccurred( StatefulDecoder decoder, Object decoded )
             {
                 cb.decodeOccurred( decoder, transformer.transform( decoded ) );
             }
@@ -96,8 +95,7 @@
      * @return the populated Message representing the PDU envelope.
      * @throws MessageException if there is a problem decoding.
      */
-    public Message decode( final Object lock, final InputStream in )
-        throws MessageException
+    public Message decode( final Object lock, final InputStream in ) throws MessageException
     {
         Object providerEnvelope = null;
 
@@ -169,5 +167,11 @@
     public void setDecoderMonitor( DecoderMonitor monitor )
     {
         decoder.setDecoderMonitor( monitor );
+    }
+
+
+    public Provider getProvider()
+    {
+        return this.provider;
     }
 }

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
Tue Nov  2 11:31:06 2004
@@ -1,246 +1,51 @@
-/*
- *                                 Apache License
- *                           Version 2.0, January 2004
- *                        http://www.apache.org/licenses/
- *
- *   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
- *
- *   1. Definitions.
- *
- *      "License" shall mean the terms and conditions for use, reproduction,
- *      and distribution as defined by Sections 1 through 9 of this document.
- *
- *      "Licensor" shall mean the copyright owner or entity authorized by
- *      the copyright owner that is granting the License.
- *
- *      "Legal Entity" shall mean the union of the acting entity and all
- *      other entities that control, are controlled by, or are under common
- *      control with that entity. For the purposes of this definition,
- *      "control" means (i) the power, direct or indirect, to cause the
- *      direction or management of such entity, whether by contract or
- *      otherwise, or (ii) ownership of fifty percent (50%) or more of the
- *      outstanding shares, or (iii) beneficial ownership of such entity.
- *
- *      "You" (or "Your") shall mean an individual or Legal Entity
- *      exercising permissions granted by this License.
- *
- *      "Source" form shall mean the preferred form for making modifications,
- *      including but not limited to software source code, documentation
- *      source, and configuration files.
- *
- *      "Object" form shall mean any form resulting from mechanical
- *      transformation or translation of a Source form, including but
- *      not limited to compiled object code, generated documentation,
- *      and conversions to other media types.
- *
- *      "Work" shall mean the work of authorship, whether in Source or
- *      Object form, made available under the License, as indicated by a
- *      copyright notice that is included in or attached to the work
- *      (an example is provided in the Appendix below).
- *
- *      "Derivative Works" shall mean any work, whether in Source or Object
- *      form, that is based on (or derived from) the Work and for which the
- *      editorial revisions, annotations, elaborations, or other modifications
- *      represent, as a whole, an original work of authorship. For the purposes
- *      of this License, Derivative Works shall not include works that remain
- *      separable from, or merely link (or bind by name) to the interfaces of,
- *      the Work and Derivative Works thereof.
- *
- *      "Contribution" shall mean any work of authorship, including
- *      the original version of the Work and any modifications or additions
- *      to that Work or Derivative Works thereof, that is intentionally
- *      submitted to Licensor for inclusion in the Work by the copyright owner
- *      or by an individual or Legal Entity authorized to submit on behalf of
- *      the copyright owner. For the purposes of this definition, "submitted"
- *      means any form of electronic, verbal, or written communication sent
- *      to the Licensor or its representatives, including but not limited to
- *      communication on electronic mailing lists, source code control systems,
- *      and issue tracking systems that are managed by, or on behalf of, the
- *      Licensor for the purpose of discussing and improving the Work, but
- *      excluding communication that is conspicuously marked or otherwise
- *      designated in writing by the copyright owner as "Not a Contribution."
- *
- *      "Contributor" shall mean Licensor and any individual or Legal Entity
- *      on behalf of whom a Contribution has been received by Licensor and
- *      subsequently incorporated within the Work.
- *
- *   2. Grant of Copyright License. Subject to the terms and conditions of
- *      this License, each Contributor hereby grants to You a perpetual,
- *      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- *      copyright license to reproduce, prepare Derivative Works of,
- *      publicly display, publicly perform, sublicense, and distribute the
- *      Work and such Derivative Works in Source or Object form.
- *
- *   3. Grant of Patent License. Subject to the terms and conditions of
- *      this License, each Contributor hereby grants to You a perpetual,
- *      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- *      (except as stated in this section) patent license to make, have made,
- *      use, offer to sell, sell, import, and otherwise transfer the Work,
- *      where such license applies only to those patent claims licensable
- *      by such Contributor that are necessarily infringed by their
- *      Contribution(s) alone or by combination of their Contribution(s)
- *      with the Work to which such Contribution(s) was submitted. If You
- *      institute patent litigation against any entity (including a
- *      cross-claim or counterclaim in a lawsuit) alleging that the Work
- *      or a Contribution incorporated within the Work constitutes direct
- *      or contributory patent infringement, then any patent licenses
- *      granted to You under this License for that Work shall terminate
- *      as of the date such litigation is filed.
- *
- *   4. Redistribution. You may reproduce and distribute copies of the
- *      Work or Derivative Works thereof in any medium, with or without
- *      modifications, and in Source or Object form, provided that You
- *      meet the following conditions:
- *
- *      (a) You must give any other recipients of the Work or
- *          Derivative Works a copy of this License; and
- *
- *      (b) You must cause any modified files to carry prominent notices
- *          stating that You changed the files; and
- *
- *      (c) You must retain, in the Source form of any Derivative Works
- *          that You distribute, all copyright, patent, trademark, and
- *          attribution notices from the Source form of the Work,
- *          excluding those notices that do not pertain to any part of
- *          the Derivative Works; and
- *
- *      (d) If the Work includes a "NOTICE" text file as part of its
- *          distribution, then any Derivative Works that You distribute must
- *          include a readable copy of the attribution notices contained
- *          within such NOTICE file, excluding those notices that do not
- *          pertain to any part of the Derivative Works, in at least one
- *          of the following places: within a NOTICE text file distributed
- *          as part of the Derivative Works; within the Source form or
- *          documentation, if provided along with the Derivative Works; or,
- *          within a display generated by the Derivative Works, if and
- *          wherever such third-party notices normally appear. The contents
- *          of the NOTICE file are for informational purposes only and
- *          do not modify the License. You may add Your own attribution
- *          notices within Derivative Works that You distribute, alongside
- *          or as an addendum to the NOTICE text from the Work, provided
- *          that such additional attribution notices cannot be construed
- *          as modifying the License.
- *
- *      You may add Your own copyright statement to Your modifications and
- *      may provide additional or different license terms and conditions
- *      for use, reproduction, or distribution of Your modifications, or
- *      for any such Derivative Works as a whole, provided Your use,
- *      reproduction, and distribution of the Work otherwise complies with
- *      the conditions stated in this License.
- *
- *   5. Submission of Contributions. Unless You explicitly state otherwise,
- *      any Contribution intentionally submitted for inclusion in the Work
- *      by You to the Licensor shall be under the terms and conditions of
- *      this License, without any additional terms or conditions.
- *      Notwithstanding the above, nothing herein shall supersede or modify
- *      the terms of any separate license agreement you may have executed
- *      with Licensor regarding such Contributions.
- *
- *   6. Trademarks. This License does not grant permission to use the trade
- *      names, trademarks, service marks, or product names of the Licensor,
- *      except as required for reasonable and customary use in describing the
- *      origin of the Work and reproducing the content of the NOTICE file.
- *
- *   7. Disclaimer of Warranty. Unless required by applicable law or
- *      agreed to in writing, Licensor provides the Work (and each
- *      Contributor provides its Contributions) on an "AS IS" BASIS,
- *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- *      implied, including, without limitation, any warranties or conditions
- *      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- *      PARTICULAR PURPOSE. You are solely responsible for determining the
- *      appropriateness of using or redistributing the Work and assume any
- *      risks associated with Your exercise of permissions under this License.
- *
- *   8. Limitation of Liability. In no event and under no legal theory,
- *      whether in tort (including negligence), contract, or otherwise,
- *      unless required by applicable law (such as deliberate and grossly
- *      negligent acts) or agreed to in writing, shall any Contributor be
- *      liable to You for damages, including any direct, indirect, special,
- *      incidental, or consequential damages of any character arising as a
- *      result of this License or out of the use or inability to use the
- *      Work (including but not limited to damages for loss of goodwill,
- *      work stoppage, computer failure or malfunction, or any and all
- *      other commercial damages or losses), even if such Contributor
- *      has been advised of the possibility of such damages.
- *
- *   9. Accepting Warranty or Additional Liability. While redistributing
- *      the Work or Derivative Works thereof, You may choose to offer,
- *      and charge a fee for, acceptance of support, warranty, indemnity,
- *      or other liability obligations and/or rights consistent with this
- *      License. However, in accepting such obligations, You may act only
- *      on Your own behalf and on Your sole responsibility, not on behalf
- *      of any other Contributor, and only if You agree to indemnify,
- *      defend, and hold each Contributor harmless for any liability
- *      incurred by, or claims asserted against, such Contributor by reason
- *      of your accepting any such warranty or additional liability.
- *
- *   END OF TERMS AND CONDITIONS
- *
- *   APPENDIX: How to apply the Apache License to your work.
- *
- *      To apply the Apache License to your work, attach the following
- *      boilerplate notice, with the fields enclosed by brackets "[]"
- *      replaced with your own identifying information. (Don't include
- *      the brackets!)  The text should be enclosed in the appropriate
- *      comment syntax for the file format. We also recommend that a
- *      file or class name and description of purpose be included on the
- *      same "printed page" as the copyright notice for easier
- *      identification within third-party archives.
- *
- *   Copyright [yyyy] [name of copyright owner]
- *
- *   Licensed 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.
- *
- */
-
 /*
- * $Id: MessageEncoder.java,v 1.6 2003/07/31 21:44:48 akarasulu Exp $
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed 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
  *
- * -- (c) LDAPd Group                                                    --
- * -- Please refer to the LICENSE.txt file in the root directory of      --
- * -- any LDAPd project for copyright and distribution information.      --
+ *   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.ldap.common.message;
 
-package org.apache.ldap.common.message ;
 
+import java.io.OutputStream;
+import java.util.Properties;
+import java.nio.ByteBuffer;
 
-import java.io.OutputStream ;
-import java.util.Properties ;
+import org.apache.commons.codec.EncoderException;
+import org.apache.commons.codec.stateful.EncoderCallback;
+import org.apache.commons.codec.stateful.EncoderMonitor;
 
-import org.apache.ldap.common.message.spi.Provider ;
-import org.apache.ldap.common.message.spi.EncoderSpi ;
-import org.apache.ldap.common.message.spi.TransformerSpi ;
+import org.apache.ldap.common.message.spi.Provider;
+import org.apache.ldap.common.message.spi.EncoderProvider;
+import org.apache.ldap.common.message.spi.TransformerSpi;
+import org.apache.ldap.common.message.spi.ProviderException;
 
 
 /**
  * Encodes a Message instance into a binary message envelope using Basic
  * Encoding rules flushing the PDU out to an OutputStream.
  *
- * @author <a href="mailto:aok123@bellsouth.net">Alex Karasulu</a>
- * @author $Author: akarasulu $
- * @version $Revision: 1.6 $
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 56106 $
  */
-public final class MessageEncoder
+public final class MessageEncoder implements EncoderProvider
 {
-    /** Environment parameters stored here */
-    private final Properties m_env ;
     /** the provider */
-    private final Provider m_provider ;
+    private final Provider provider;
     /** the provider's encoder */
-    private final EncoderSpi m_encoder ;
+    private final EncoderProvider encoder;
     /** the provider's transformer */
-    private final TransformerSpi m_transformer ;
+    private final TransformerSpi transformer;
 
 
     /**
@@ -249,10 +54,9 @@
      * 
      * @throws MessageException if the encoder cannot be created.
      */
-    public MessageEncoder()
-        throws MessageException
+    public MessageEncoder() throws MessageException
     {
-        this( Provider.getEnvironment() ) ;
+        this( Provider.getEnvironment() );
     }
 
 
@@ -260,61 +64,104 @@
      * Creates a MessageEncoder using default properties for enabling a BER
      * library provider.
      *
-     * @param a_env The Map of environment parameters.
+     * @param env The Map of environment parameters.
      * @throws MessageException if the encoder cannot be created.
      */
-    public MessageEncoder( final Properties a_env )
-        throws MessageException
+    public MessageEncoder( final Properties env ) throws MessageException
     {
-        m_env = ( Properties ) a_env.clone() ;
-        m_provider = Provider.getProvider( m_env ) ;
-        m_encoder = m_provider.getEncoder() ;
-        m_transformer = m_provider.getTransformer() ;
+        this.provider = Provider.getProvider( ( Properties ) env.clone() );
+        this.encoder = provider.getEncoder();
+        this.transformer = provider.getTransformer();
     }
 
 
+    // ------------------------------------------------------------------------
+    // ProviderEncoder
+    // ------------------------------------------------------------------------
+
+
     /**
-     * Encodes and writes a BER encoded LDAPv3 ASN.1 message envelope structure
-     * to an output stream using a fully populated Message object instance.
-     *
-     * @param a_lock lock object used to exclusively write to the output stream
-     * @param a_msg the populated Message representing the PDU envelope.
-     * @param a_out the output stream to read PDU data from.
-     * @throws MessageException if the encoder cannot encode.
+     * @see EncoderProvider#encodeBlocking(Object, java.io.OutputStream, Object)
      */
-    public void encode( final Object a_lock, final OutputStream a_out,
-        final Message a_msg )
-        throws MessageException
+    public void encodeBlocking( Object lock, OutputStream out, Object obj ) throws ProviderException
     {
-        // Lock composed message to prevent alteration via provider.
-        a_msg.setLocked( true ) ;
+        // transform to build provider specific intermediate envelope
+        Object providerEnvelope = transformer.transform( ( Message ) obj );
+
+        // now encode provider's intermediate stub into a PDU onto stream
+        this.encoder.encodeBlocking( lock, out, providerEnvelope );
+    }
+
 
-        // Call provider transformation methods to build provider specific PDU
-        Object l_providerEnvelope = m_transformer.transform( a_msg ) ;
+    /**
+     * @see EncoderProvider#encodeBlocking(Object)
+     */
+    public ByteBuffer encodeBlocking( Object obj ) throws ProviderException
+    {
+        // transform to build provider specific intermediate envelope
+        Object providerEnvelope = transformer.transform( ( Message ) obj );
 
-        // Call upon provider encoder to encode and write data to output stream
-        m_encoder.encode( a_lock, a_out, l_providerEnvelope ) ;
+        // now encode provider's intermediate stub into PDU in a byte buffer
+        return this.encodeBlocking( providerEnvelope );
     }
 
 
+    // ------------------------------------------------------------------------
+    // ProviderObject Methods
+    // ------------------------------------------------------------------------
+
+
     /**
-     * Encodes and writes a BER encoded LDAPv3 ASN.1 message envelope structure
-     * to an output stream using a fully populated Message object instance.
+     * @see org.apache.ldap.common.message.spi.ProviderObject#getProvider()
+     */
+    public Provider getProvider()
+    {
+        return this.provider;
+    }
+
+
+    // ------------------------------------------------------------------------
+    // StatefulEncoder Methods
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * Encodes a Message object peice by peice often emitting chunks of the
+     * final PDU to the callback if present.
      *
-     * @param a_msg the populated Message representing the PDU envelope
-     * @return the byte array representing the encoded message
-     * @throws MessageException if the encoder cannot encode
+     * @param obj the message object to encode into a PDU
+     * @throws EncoderException if there are problems while encodinggg
      */
-    public byte [] encode( final Message a_msg )
-        throws MessageException
+    public void encode( Object obj ) throws EncoderException
     {
-        // Lock composed message to prevent alteration via provider.
-        a_msg.setLocked( true ) ;
+        // transform to build provider specific intermediate envelope
+        Object providerEnvelope = transformer.transform( ( Message ) obj );
 
-        // Call provider transformation methods to build provider specific PDU
-        Object l_providerEnvelope = m_transformer.transform( a_msg ) ;
+        // now give intermediate envelope to provider's encoder
+        this.encoder.encode( providerEnvelope );
+    }
 
-        // Call upon provider encoder to encode and write data to output stream
-        return m_encoder.encode( l_providerEnvelope ) ;
+
+    /**
+     * Sets the callback of the underlying implementation.  There is no need
+     * for any special callbacks because when encoding we do not need to
+     * transform before a value return as we did in the decoder.
+     *
+     * @param cb the callback to set on the underlying provider specific encoder
+     */
+    public void setCallback( EncoderCallback cb )
+    {
+        this.encoder.setCallback( cb );
+    }
+
+
+    /**
+     * Sets the monitor of the underlying implementation.
+     *
+     * @param monitor the monitor to set on the underlying implementation
+     */
+    public void setEncoderMonitor( EncoderMonitor monitor )
+    {
+        this.encoder.setEncoderMonitor( monitor );
     }
 }

Copied: incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/EncoderProvider.java
(from rev 56324, incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/EncoderSpi.java)
==============================================================================
--- incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/EncoderSpi.java
(original)
+++ incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/EncoderProvider.java
Tue Nov  2 11:31:06 2004
@@ -1,240 +1,45 @@
-/*
- *                                 Apache License
- *                           Version 2.0, January 2004
- *                        http://www.apache.org/licenses/
- *
- *   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
- *
- *   1. Definitions.
- *
- *      "License" shall mean the terms and conditions for use, reproduction,
- *      and distribution as defined by Sections 1 through 9 of this document.
- *
- *      "Licensor" shall mean the copyright owner or entity authorized by
- *      the copyright owner that is granting the License.
- *
- *      "Legal Entity" shall mean the union of the acting entity and all
- *      other entities that control, are controlled by, or are under common
- *      control with that entity. For the purposes of this definition,
- *      "control" means (i) the power, direct or indirect, to cause the
- *      direction or management of such entity, whether by contract or
- *      otherwise, or (ii) ownership of fifty percent (50%) or more of the
- *      outstanding shares, or (iii) beneficial ownership of such entity.
- *
- *      "You" (or "Your") shall mean an individual or Legal Entity
- *      exercising permissions granted by this License.
- *
- *      "Source" form shall mean the preferred form for making modifications,
- *      including but not limited to software source code, documentation
- *      source, and configuration files.
- *
- *      "Object" form shall mean any form resulting from mechanical
- *      transformation or translation of a Source form, including but
- *      not limited to compiled object code, generated documentation,
- *      and conversions to other media types.
- *
- *      "Work" shall mean the work of authorship, whether in Source or
- *      Object form, made available under the License, as indicated by a
- *      copyright notice that is included in or attached to the work
- *      (an example is provided in the Appendix below).
- *
- *      "Derivative Works" shall mean any work, whether in Source or Object
- *      form, that is based on (or derived from) the Work and for which the
- *      editorial revisions, annotations, elaborations, or other modifications
- *      represent, as a whole, an original work of authorship. For the purposes
- *      of this License, Derivative Works shall not include works that remain
- *      separable from, or merely link (or bind by name) to the interfaces of,
- *      the Work and Derivative Works thereof.
- *
- *      "Contribution" shall mean any work of authorship, including
- *      the original version of the Work and any modifications or additions
- *      to that Work or Derivative Works thereof, that is intentionally
- *      submitted to Licensor for inclusion in the Work by the copyright owner
- *      or by an individual or Legal Entity authorized to submit on behalf of
- *      the copyright owner. For the purposes of this definition, "submitted"
- *      means any form of electronic, verbal, or written communication sent
- *      to the Licensor or its representatives, including but not limited to
- *      communication on electronic mailing lists, source code control systems,
- *      and issue tracking systems that are managed by, or on behalf of, the
- *      Licensor for the purpose of discussing and improving the Work, but
- *      excluding communication that is conspicuously marked or otherwise
- *      designated in writing by the copyright owner as "Not a Contribution."
- *
- *      "Contributor" shall mean Licensor and any individual or Legal Entity
- *      on behalf of whom a Contribution has been received by Licensor and
- *      subsequently incorporated within the Work.
- *
- *   2. Grant of Copyright License. Subject to the terms and conditions of
- *      this License, each Contributor hereby grants to You a perpetual,
- *      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- *      copyright license to reproduce, prepare Derivative Works of,
- *      publicly display, publicly perform, sublicense, and distribute the
- *      Work and such Derivative Works in Source or Object form.
- *
- *   3. Grant of Patent License. Subject to the terms and conditions of
- *      this License, each Contributor hereby grants to You a perpetual,
- *      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- *      (except as stated in this section) patent license to make, have made,
- *      use, offer to sell, sell, import, and otherwise transfer the Work,
- *      where such license applies only to those patent claims licensable
- *      by such Contributor that are necessarily infringed by their
- *      Contribution(s) alone or by combination of their Contribution(s)
- *      with the Work to which such Contribution(s) was submitted. If You
- *      institute patent litigation against any entity (including a
- *      cross-claim or counterclaim in a lawsuit) alleging that the Work
- *      or a Contribution incorporated within the Work constitutes direct
- *      or contributory patent infringement, then any patent licenses
- *      granted to You under this License for that Work shall terminate
- *      as of the date such litigation is filed.
- *
- *   4. Redistribution. You may reproduce and distribute copies of the
- *      Work or Derivative Works thereof in any medium, with or without
- *      modifications, and in Source or Object form, provided that You
- *      meet the following conditions:
- *
- *      (a) You must give any other recipients of the Work or
- *          Derivative Works a copy of this License; and
- *
- *      (b) You must cause any modified files to carry prominent notices
- *          stating that You changed the files; and
- *
- *      (c) You must retain, in the Source form of any Derivative Works
- *          that You distribute, all copyright, patent, trademark, and
- *          attribution notices from the Source form of the Work,
- *          excluding those notices that do not pertain to any part of
- *          the Derivative Works; and
- *
- *      (d) If the Work includes a "NOTICE" text file as part of its
- *          distribution, then any Derivative Works that You distribute must
- *          include a readable copy of the attribution notices contained
- *          within such NOTICE file, excluding those notices that do not
- *          pertain to any part of the Derivative Works, in at least one
- *          of the following places: within a NOTICE text file distributed
- *          as part of the Derivative Works; within the Source form or
- *          documentation, if provided along with the Derivative Works; or,
- *          within a display generated by the Derivative Works, if and
- *          wherever such third-party notices normally appear. The contents
- *          of the NOTICE file are for informational purposes only and
- *          do not modify the License. You may add Your own attribution
- *          notices within Derivative Works that You distribute, alongside
- *          or as an addendum to the NOTICE text from the Work, provided
- *          that such additional attribution notices cannot be construed
- *          as modifying the License.
- *
- *      You may add Your own copyright statement to Your modifications and
- *      may provide additional or different license terms and conditions
- *      for use, reproduction, or distribution of Your modifications, or
- *      for any such Derivative Works as a whole, provided Your use,
- *      reproduction, and distribution of the Work otherwise complies with
- *      the conditions stated in this License.
- *
- *   5. Submission of Contributions. Unless You explicitly state otherwise,
- *      any Contribution intentionally submitted for inclusion in the Work
- *      by You to the Licensor shall be under the terms and conditions of
- *      this License, without any additional terms or conditions.
- *      Notwithstanding the above, nothing herein shall supersede or modify
- *      the terms of any separate license agreement you may have executed
- *      with Licensor regarding such Contributions.
- *
- *   6. Trademarks. This License does not grant permission to use the trade
- *      names, trademarks, service marks, or product names of the Licensor,
- *      except as required for reasonable and customary use in describing the
- *      origin of the Work and reproducing the content of the NOTICE file.
- *
- *   7. Disclaimer of Warranty. Unless required by applicable law or
- *      agreed to in writing, Licensor provides the Work (and each
- *      Contributor provides its Contributions) on an "AS IS" BASIS,
- *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- *      implied, including, without limitation, any warranties or conditions
- *      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- *      PARTICULAR PURPOSE. You are solely responsible for determining the
- *      appropriateness of using or redistributing the Work and assume any
- *      risks associated with Your exercise of permissions under this License.
- *
- *   8. Limitation of Liability. In no event and under no legal theory,
- *      whether in tort (including negligence), contract, or otherwise,
- *      unless required by applicable law (such as deliberate and grossly
- *      negligent acts) or agreed to in writing, shall any Contributor be
- *      liable to You for damages, including any direct, indirect, special,
- *      incidental, or consequential damages of any character arising as a
- *      result of this License or out of the use or inability to use the
- *      Work (including but not limited to damages for loss of goodwill,
- *      work stoppage, computer failure or malfunction, or any and all
- *      other commercial damages or losses), even if such Contributor
- *      has been advised of the possibility of such damages.
- *
- *   9. Accepting Warranty or Additional Liability. While redistributing
- *      the Work or Derivative Works thereof, You may choose to offer,
- *      and charge a fee for, acceptance of support, warranty, indemnity,
- *      or other liability obligations and/or rights consistent with this
- *      License. However, in accepting such obligations, You may act only
- *      on Your own behalf and on Your sole responsibility, not on behalf
- *      of any other Contributor, and only if You agree to indemnify,
- *      defend, and hold each Contributor harmless for any liability
- *      incurred by, or claims asserted against, such Contributor by reason
- *      of your accepting any such warranty or additional liability.
- *
- *   END OF TERMS AND CONDITIONS
- *
- *   APPENDIX: How to apply the Apache License to your work.
- *
- *      To apply the Apache License to your work, attach the following
- *      boilerplate notice, with the fields enclosed by brackets "[]"
- *      replaced with your own identifying information. (Don't include
- *      the brackets!)  The text should be enclosed in the appropriate
- *      comment syntax for the file format. We also recommend that a
- *      file or class name and description of purpose be included on the
- *      same "printed page" as the copyright notice for easier
- *      identification within third-party archives.
- *
- *   Copyright [yyyy] [name of copyright owner]
- *
- *   Licensed 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.
- *
- */
-
 /*
- * $Id: EncoderSpi.java,v 1.3 2003/07/31 21:44:48 akarasulu Exp $
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed 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
  *
- * -- (c) LDAPd Group                                                    --
- * -- Please refer to the LICENSE.txt file in the root directory of      --
- * -- any LDAPd project for copyright and distribution information.      --
+ *   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.ldap.common.message.spi ;
 
 
 import java.io.OutputStream ;
+import java.nio.ByteBuffer;
+
+import org.apache.commons.codec.stateful.StatefulEncoder;
+import org.apache.ldap.common.message.Message;
 
 
 /**
  * Standard encoder service provider interface.  BER encoders of ASN.1 compiler
  * stubs are expected to implement this interface.
  * 
- * @author <a href="mailto:aok123@bellsouth.net">Alex Karasulu</a>
- * @author $Author: akarasulu $
- * @version $Revision: 1.3 $
+ * @author <a href="mailto:directory-dev@incubator.apache.org"> Apache Directory Project</a>
+ * @version $Rev$
  */
-public interface EncoderSpi extends ProviderObject
+public interface EncoderProvider extends ProviderObject, StatefulEncoder
 {
     /**
      * Encodes a compiler stub specific ASN.1 message envelope containment tree
      * onto an output stream.
      *
-     * @param a_lock lock object used to exclusively write to the output stream
-     * @param a_out the OutputStream to encode the message envelope onto.
-     * @param a_obj the top-level message envelope stub instance, i.e. for the
+     * @param lock lock object used to exclusively write to the output stream
+     * @param out the OutputStream to encode the message envelope onto.
+     * @param obj the top-level message envelope stub instance, i.e. for the
      * Snacc4J service provider this would be an instance of the LDAPMessage
      * compiler generated stub class.
      * @throws ProviderException to indicate an error while attempting to encode
@@ -242,22 +47,20 @@
      * exceptions encountered while encoding can be held within this subclass
      * of MultiException.
      */
-    void encode( Object a_lock, OutputStream a_out, Object a_obj )
-        throws ProviderException ;
+    void encodeBlocking( Object lock, OutputStream out, Object obj ) throws ProviderException
;
 
     /**
      * Encodes a compiler stub specific ASN.1 message envelope containment tree
      * into byte array.
      *
-     * @param a_obj the top-level message envelope stub instance, i.e. for the
+     * @param obj the top-level message envelope stub instance, i.e. for the
      * Snacc4J service provider this would be an instance of the LDAPMessage
      * compiler generated stub class.
-     * @return the encoded object in a byte array
+     * @return the encoded object in a byte buffer
      * @throws ProviderException to indicate an error while attempting to encode
      * the message envelope into a byte buffer.  Provider specific exceptions
      * encountered while encoding can be held within this subclass of
      * MultiException.
      */
-    byte [] encode( Object a_obj )
-        throws ProviderException ;
+    ByteBuffer encodeBlocking( Object obj ) throws ProviderException ;
 }

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
Tue Nov  2 11:31:06 2004
@@ -312,7 +312,7 @@
      * @return the provider's encoder.
      * @throws ProviderException if the provider or its encoder cannot be found
      */
-    public abstract EncoderSpi getEncoder() throws ProviderException ;
+    public abstract EncoderProvider getEncoder() throws ProviderException ;
 
 
     /**

Modified: incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/ProviderDecoder.java
==============================================================================
--- incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/ProviderDecoder.java
(original)
+++ incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/spi/ProviderDecoder.java
Tue Nov  2 11:31:06 2004
@@ -216,6 +216,7 @@
 
 
 import org.apache.commons.codec.stateful.StatefulDecoder;
+import org.apache.ldap.common.message.Message;
 
 import java.io.InputStream ;
 
@@ -236,8 +237,8 @@
      * stream into an in memory containment tree using stub's generated by a
      * provider's ASN.1 stub compiler and associated runtime BER libraries.
      *
-     * @param a_lock lock object used to exclusively read from the input stream
-     * @param a_in the binary input stream where the encoded message PDU is read
+     * @param lock lock object used to exclusively read from the input stream
+     * @param in the binary input stream where the encoded message PDU is read
      * @return an object representing the top-most containment tree object which
      * represents the entire message envelope.  For the Snacc provider this
      * object would be a populated instance of LDAPMessage.
@@ -246,5 +247,5 @@
      * exceptions encountered while decoding can be held within this subclass
      * of MultiException.
      */
-    Object decode( Object a_lock, InputStream a_in ) throws ProviderException;
+    Message decode( Object lock, InputStream in ) throws ProviderException;
 }

Mime
View raw message