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/04/18 07:24:22 UTC

svn commit: rev 10081 - in incubator/directory/ldap/trunk/common: . src/java/org/apache/ldap/common/message

Author: akarasulu
Date: Sat Apr 17 22:24:21 2004
New Revision: 10081

Modified:
   incubator/directory/ldap/trunk/common/   (props changed)
   incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/BindRequest.java
   incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/BindRequestImpl.java
Log:
Commit changes ...

o fixed major bug where the version was not getting set on the BindRequestImpl
o ignore IDEA module files



Modified: incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/BindRequest.java
==============================================================================
--- incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/BindRequest.java	(original)
+++ incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/BindRequest.java	Sat Apr 17 22:24:21 2004
@@ -1,193 +1,5 @@
 /*
- *                                 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]
+ *   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.
@@ -202,136 +14,125 @@
  *   limitations under the License.
  *
  */
-
-/*
- * $Id: BindRequest.java,v 1.8 2003/07/31 21:44:48 akarasulu Exp $
- *
- * -- (c) LDAPd Group                                                    --
- * -- Please refer to the LICENSE.txt file in the root directory of      --
- * -- any LDAPd project for copyright and distribution information.      --
- *
- */
-
-package org.apache.ldap.common.message ;
-
-
-/**
- * Bind protocol operation request which authenticates and begins a client
- * session.  Does not yet contain interfaces for SASL authentication mechanisms.
- * 
- * @author <a href="mailto:aok123@bellsouth.net">Alex Karasulu</a>
- * @author $Author: akarasulu $
- * @version $Revision: 1.8 $
- */
-public interface BindRequest
-    extends SingleReplyRequest
-{
-    /** Bind request message type enumeration value */
-    MessageTypeEnum TYPE = MessageTypeEnum.BINDREQUEST ;
-    /** Bind response message type enumeration value */
-    MessageTypeEnum RESP_TYPE = BindResponse.TYPE ;
-
-    /**
-     * Checks to see if the authentication mechanism is simple and not SASL
-     * based.
-     *
-     * @return true if the mechanism is simple false if it is SASL based.
-     */
-    boolean isSimple() ;
-
-    /**
-     * Checks to see if the authentication mechanism is simple and not SASL
-     * based.
-     *
-     * @return true if the mechanism is simple false if it is SASL based.
-     */
-    boolean getSimple() ;
-
-    /**
-     * Sets the authentication mechanism to simple or to SASL based
-     * authentication.
-     *
-     * @param a_isSimple true if authentication is simple, false otherwise.
-     */
-    void setSimple( boolean a_isSimple ) ;
-
-    /**
-     * Gets the simple credentials associated with a simple authentication
-     * attempt or null if this request uses SASL authentication mechanisms.
-     *
-     * @return null if the mechanism is SASL or the credentials if it is simple.
-     */
-    byte [] getCredentials() ;
-
-    /**
-     * Sets the simple credentials associated with a simple authentication
-     * attempt ignored if this request uses SASL authentication mechanisms.
-     *
-     * @param a_credentials the credentials if authentication is simple, null
-     * otherwise
-     */
-    void setCredentials( byte [] a_credentials ) ;
-
-    /**
-     * Gets the distinguished name of the subject in this authentication
-     * request.  This field may take on a null value (a zero length string)
-     * for the purposes of anonymous binds, when authentication has been
-     * performed at a lower layer, or when using SASL credentials with a
-     * mechanism that includes the LDAPDN in the credentials.
-     *
-     * @return the DN of the authenticating user.
-     */
-    String getName() ;
-
-    /**
-     * Sets the distinguished name of the subject in this authentication
-     * request.  This field may take on a null value (or a zero length string)
-     * for the purposes of anonymous binds, when authentication has been
-     * performed at a lower layer, or when using SASL credentials with a
-     * mechanism that includes the LDAPDN in the credentials.
-     *
-     * @param a_name the DN of the authenticating user - leave null for
-     * annonymous user.
-     */
-    void setName( String a_name ) ;
-
-    /**
-     * Checks to see if the Ldap v3 protocol is used.  Normally this would
-     * extract a version number from the bind request sent by the client
-     * indicating the version of the protocol to be used in this protocol
-     * session.  The integer is either a 2 or a 3 at the moment.  We thought it
-     * was better to just check if the protocol used is 3 or not rather than
-     * use an type-safe enumeration type for a binary value.  If an LDAPv4 comes
-     * out then we shall convert the return type to a type safe enumeration.
-     *
-     * @return true if client using version 3 false if it is version 2.
-     */
-    boolean isVersion3() ;
-
-    /**
-     * Gets whether or not the Ldap v3 protocol is used.  Normally this would
-     * extract a version number from the bind request sent by the client
-     * indicating the version of the protocol to be used in this protocol
-     * session.  The integer is either a 2 or a 3 at the moment.  We thought it
-     * was better to just check if the protocol used is 3 or not rather than
-     * use an type-safe enumeration type for a binary value.  If an LDAPv4 comes
-     * out then we shall convert the return type to a type safe enumeration.
-     *
-     * @return true if client using version 3 false if it is version 2.
-     */
-    boolean getVersion3() ;
-
-    /**
-     * Sets whether or not the LDAP v3 or v2 protocol is used.  Normally this
-     * would extract a version number from the bind request sent by the client
-     * indicating the version of the protocol to be used in this protocol
-     * session.  The integer is either a 2 or a 3 at the moment.  We thought it
-     * was better to just check if the protocol used is 3 or not rather than
-     * use an type-safe enumeration type for a binary value.  If an LDAPv4 comes
-     * out then we shall convert the return type to a type safe enumeration.
-     *
-     * @param a_isVersion3 if true the client will be exhibiting version 3 bind
-     * behavoir, if false is used version 2 behavoir will be exhibited.
-     */
-    void setVersion3( boolean a_isVersion3 ) ;
-}
+package org.apache.ldap.common.message ;
+
+
+/**
+ * Bind protocol operation request which authenticates and begins a client
+ * session.  Does not yet contain interfaces for SASL authentication mechanisms.
+ * 
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public interface BindRequest
+    extends SingleReplyRequest
+{
+    /** Bind request message type enumeration value */
+    MessageTypeEnum TYPE = MessageTypeEnum.BINDREQUEST ;
+    /** Bind response message type enumeration value */
+    MessageTypeEnum RESP_TYPE = BindResponse.TYPE ;
+
+    /**
+     * Checks to see if the authentication mechanism is simple and not SASL
+     * based.
+     *
+     * @return true if the mechanism is simple false if it is SASL based.
+     */
+    boolean isSimple() ;
+
+    /**
+     * Checks to see if the authentication mechanism is simple and not SASL
+     * based.
+     *
+     * @return true if the mechanism is simple false if it is SASL based.
+     */
+    boolean getSimple() ;
+
+    /**
+     * Sets the authentication mechanism to simple or to SASL based
+     * authentication.
+     *
+     * @param a_isSimple true if authentication is simple, false otherwise.
+     */
+    void setSimple( boolean a_isSimple ) ;
+
+    /**
+     * Gets the simple credentials associated with a simple authentication
+     * attempt or null if this request uses SASL authentication mechanisms.
+     *
+     * @return null if the mechanism is SASL or the credentials if it is simple.
+     */
+    byte [] getCredentials() ;
+
+    /**
+     * Sets the simple credentials associated with a simple authentication
+     * attempt ignored if this request uses SASL authentication mechanisms.
+     *
+     * @param a_credentials the credentials if authentication is simple, null
+     * otherwise
+     */
+    void setCredentials( byte [] a_credentials ) ;
+
+    /**
+     * Gets the distinguished name of the subject in this authentication
+     * request.  This field may take on a null value (a zero length string)
+     * for the purposes of anonymous binds, when authentication has been
+     * performed at a lower layer, or when using SASL credentials with a
+     * mechanism that includes the LDAPDN in the credentials.
+     *
+     * @return the DN of the authenticating user.
+     */
+    String getName() ;
+
+    /**
+     * Sets the distinguished name of the subject in this authentication
+     * request.  This field may take on a null value (or a zero length string)
+     * for the purposes of anonymous binds, when authentication has been
+     * performed at a lower layer, or when using SASL credentials with a
+     * mechanism that includes the LDAPDN in the credentials.
+     *
+     * @param a_name the DN of the authenticating user - leave null for
+     * annonymous user.
+     */
+    void setName( String a_name ) ;
+
+    /**
+     * Checks to see if the Ldap v3 protocol is used.  Normally this would
+     * extract a version number from the bind request sent by the client
+     * indicating the version of the protocol to be used in this protocol
+     * session.  The integer is either a 2 or a 3 at the moment.  We thought it
+     * was better to just check if the protocol used is 3 or not rather than
+     * use an type-safe enumeration type for a binary value.  If an LDAPv4 comes
+     * out then we shall convert the return type to a type safe enumeration.
+     *
+     * @return true if client using version 3 false if it is version 2.
+     */
+    boolean isVersion3() ;
+
+    /**
+     * Gets whether or not the Ldap v3 protocol is used.  Normally this would
+     * extract a version number from the bind request sent by the client
+     * indicating the version of the protocol to be used in this protocol
+     * session.  The integer is either a 2 or a 3 at the moment.  We thought it
+     * was better to just check if the protocol used is 3 or not rather than
+     * use an type-safe enumeration type for a binary value.  If an LDAPv4 comes
+     * out then we shall convert the return type to a type safe enumeration.
+     *
+     * @return true if client using version 3 false if it is version 2.
+     */
+    boolean getVersion3() ;
+
+    /**
+     * Sets whether or not the LDAP v3 or v2 protocol is used.  Normally this
+     * would extract a version number from the bind request sent by the client
+     * indicating the version of the protocol to be used in this protocol
+     * session.  The integer is either a 2 or a 3 at the moment.  We thought it
+     * was better to just check if the protocol used is 3 or not rather than
+     * use an type-safe enumeration type for a binary value.  If an LDAPv4 comes
+     * out then we shall convert the return type to a type safe enumeration.
+     *
+     * @param a_isVersion3 if true the client will be exhibiting version 3 bind
+     * behavoir, if false is used version 2 behavoir will be exhibited.
+     */
+    void setVersion3( boolean a_isVersion3 ) ;
+}

Modified: incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/BindRequestImpl.java
==============================================================================
--- incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/BindRequestImpl.java	(original)
+++ incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/message/BindRequestImpl.java	Sat Apr 17 22:24:21 2004
@@ -14,212 +14,212 @@
  *   limitations under the License.
  *
  */
-package org.apache.ldap.common.message ;
-
-
-/**
- * Bind protocol operation request which authenticates and begins a client
- * session.  Does not yet contain interfaces for SASL authentication mechanisms.
- * 
+package org.apache.ldap.common.message ;
+
+
+/**
+ * Bind protocol operation request which authenticates and begins a client
+ * session.  Does not yet contain interfaces for SASL authentication mechanisms.
+ * 
  * @author <a href="mailto:directory-dev@incubator.apache.org">
  * Apache Directory Project</a>
  * @version $Rev$
- */
-public class BindRequestImpl
-    extends AbstractRequest implements BindRequest
-{
-    /** Distinguished name identifying the name of the authenticating subject */
-    private String m_name ;
-    /** The passwords, keys or tickets used to verify user identity */
-    private byte [] m_credentials ;
-    /** Simple vs. SASL authentication mode flag */
-    private boolean m_isSimple = true ;
-    /** Bind behavoir exhibity by protocol version */
-    private boolean m_isVersion3 = true ;
-
-
-    // ------------------------------------------------------------------------
-    // Constructors
-    // ------------------------------------------------------------------------
-
-
-    /**
-     * Creates an BindRequest implementation to bind to an LDAP server.
-     *
-     * @param id the sequence identifier of the BindRequest message.
-     */
-    public BindRequestImpl( final int id )
-    {
-        super( id, TYPE, true ) ;
-    }
-
-
-    // -----------------------------------------------------------------------
-    // BindRequest Interface Method Implementations
-    // -----------------------------------------------------------------------
-
-
-    /**
-     * Checks to see if the authentication mechanism is simple and not SASL
-     * based.
-     *
-     * @return true if the mechanism is simple false if it is SASL based.
-     */
-    public boolean isSimple()
-    {
-        return m_isSimple ;
-    }
-
-
-    /**
-     * Checks to see if the authentication mechanism is simple and not SASL
-     * based.
-     *
-     * @return true if the mechanism is simple false if it is SASL based.
-     */
-    public boolean getSimple()
-    {
-        return m_isSimple ;
-    }
-
-
-    /**
-     * Sets the authentication mechanism to simple or to SASL based
-     * authentication.
-     *
-     * @param isSimple true if authentication is simple, false otherwise.
-     */
-    public void setSimple( boolean isSimple )
-    {
-        lockCheck( "Attempt to alter auth. mode of locked BindRequest!" ) ;
-        m_isSimple = isSimple ;
-    }
-
-
-    /**
-     * Gets the simple credentials associated with a simple authentication
-     * attempt or null if this request uses SASL authentication mechanisms.
-     *
-     * @return null if the mechanism is SASL or the credentials if it is simple.
-     */
-    public byte [] getCredentials()
-    {
-        return m_credentials ;
-    }
-
-
-    /**
-     * Sets the simple credentials associated with a simple authentication
-     * attempt ignored if this request uses SASL authentication mechanisms.
-     *
-     * @param credentials the credentials if authentication is simple, null
-     * otherwise
-     */
-    public void setCredentials( byte [] credentials )
-    {
-        lockCheck( "Attempt to alter auth. cred. of locked BindRequest!" ) ;
-        m_credentials = credentials ;
-    }
-
-
-    /**
-     * Gets the distinguished name of the subject in this authentication
-     * request.  This field may take on a null value (a zero length string)
-     * for the purposes of anonymous binds, when authentication has been
-     * performed at a lower layer, or when using SASL credentials with a
-     * mechanism that includes the LDAPDN in the credentials.
-     *
-     * @return the DN of the authenticating user.
-     */
-    public String getName()
-    {
-        return m_name ;
-    }
-
-
-    /**
-     * Sets the distinguished name of the subject in this authentication
-     * request.  This field may take on a null value (or a zero length string)
-     * for the purposes of anonymous binds, when authentication has been
-     * performed at a lower layer, or when using SASL credentials with a
-     * mechanism that includes the LDAPDN in the credentials.
-     *
-     * @param name the DN of the authenticating user - leave null for
-     * annonymous user.
-     */
-    public void setName( String name )
-    {
-        lockCheck( "Attempt to alter auth. DN of locked BindRequest!" ) ;
-        m_name = name ;
-    }
-
-
-    /**
-     * Checks to see if the Ldap v3 protocol is used.  Normally this would
-     * extract a version number from the bind request sent by the client
-     * indicating the version of the protocol to be used in this protocol
-     * session.  The integer is either a 2 or a 3 at the moment.  We thought it
-     * was better to just check if the protocol used is 3 or not rather than
-     * use an type-safe enumeration type for a binary value.  If an LDAPv4 comes
-     * out then we shall convert the return type to a type safe enumeration.
-     *
-     * @return true if client using version 3 false if it is version 2.
-     */
-    public boolean isVersion3()
-    {
-        return m_isVersion3 ;
-    }
-
-
-    /**
-     * Gets whether or not the Ldap v3 protocol is used.  Normally this would
-     * extract a version number from the bind request sent by the client
-     * indicating the version of the protocol to be used in this protocol
-     * session.  The integer is either a 2 or a 3 at the moment.  We thought it
-     * was better to just check if the protocol used is 3 or not rather than
-     * use an type-safe enumeration type for a binary value.  If an LDAPv4 comes
-     * out then we shall convert the return type to a type safe enumeration.
-     *
-     * @return true if client using version 3 false if it is version 2.
-     */
-    public boolean getVersion3()
-    {
-        return m_isVersion3 ;
-    }
-
-
-    /**
-     * Sets whether or not the LDAP v3 or v2 protocol is used.  Normally this
-     * would extract a version number from the bind request sent by the client
-     * indicating the version of the protocol to be used in this protocol
-     * session.  The integer is either a 2 or a 3 at the moment.  We thought it
-     * was better to just check if the protocol used is 3 or not rather than
-     * use an type-safe enumeration type for a binary value.  If an LDAPv4 comes
-     * out then we shall convert the return type to a type safe enumeration.
-     *
-     * @param isVersion3 if true the client will be exhibiting version 3 bind
-     * behavoir, if false is used version 2 behavoir will be exhibited.
-     */
-    public void setVersion3( boolean isVersion3 )
-    {
-        lockCheck( "Attempt to alter proto. version of locked BindRequest!" ) ;
-        isVersion3 = m_isVersion3 ;
-    }
-
-
-    // -----------------------------------------------------------------------
-    // BindRequest Interface Method Implementations
-    // -----------------------------------------------------------------------
-
-
-    /**
-     * Gets the protocol response message type for this request which produces
-     * at least one response.
-     *
-     * @return the message type of the response.
-     */
-    public MessageTypeEnum getResponseType()
-    {
-        return RESP_TYPE ;
-    }
-}
+ */
+public class BindRequestImpl
+    extends AbstractRequest implements BindRequest
+{
+    /** Distinguished name identifying the name of the authenticating subject */
+    private String m_name ;
+    /** The passwords, keys or tickets used to verify user identity */
+    private byte [] m_credentials ;
+    /** Simple vs. SASL authentication mode flag */
+    private boolean m_isSimple = true ;
+    /** Bind behavoir exhibity by protocol version */
+    private boolean m_isVersion3 = true ;
+
+
+    // ------------------------------------------------------------------------
+    // Constructors
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * Creates an BindRequest implementation to bind to an LDAP server.
+     *
+     * @param id the sequence identifier of the BindRequest message.
+     */
+    public BindRequestImpl( final int id )
+    {
+        super( id, TYPE, true ) ;
+    }
+
+
+    // -----------------------------------------------------------------------
+    // BindRequest Interface Method Implementations
+    // -----------------------------------------------------------------------
+
+
+    /**
+     * Checks to see if the authentication mechanism is simple and not SASL
+     * based.
+     *
+     * @return true if the mechanism is simple false if it is SASL based.
+     */
+    public boolean isSimple()
+    {
+        return m_isSimple ;
+    }
+
+
+    /**
+     * Checks to see if the authentication mechanism is simple and not SASL
+     * based.
+     *
+     * @return true if the mechanism is simple false if it is SASL based.
+     */
+    public boolean getSimple()
+    {
+        return m_isSimple ;
+    }
+
+
+    /**
+     * Sets the authentication mechanism to simple or to SASL based
+     * authentication.
+     *
+     * @param isSimple true if authentication is simple, false otherwise.
+     */
+    public void setSimple( boolean isSimple )
+    {
+        lockCheck( "Attempt to alter auth. mode of locked BindRequest!" ) ;
+        m_isSimple = isSimple ;
+    }
+
+
+    /**
+     * Gets the simple credentials associated with a simple authentication
+     * attempt or null if this request uses SASL authentication mechanisms.
+     *
+     * @return null if the mechanism is SASL or the credentials if it is simple.
+     */
+    public byte [] getCredentials()
+    {
+        return m_credentials ;
+    }
+
+
+    /**
+     * Sets the simple credentials associated with a simple authentication
+     * attempt ignored if this request uses SASL authentication mechanisms.
+     *
+     * @param credentials the credentials if authentication is simple, null
+     * otherwise
+     */
+    public void setCredentials( byte [] credentials )
+    {
+        lockCheck( "Attempt to alter auth. cred. of locked BindRequest!" ) ;
+        m_credentials = credentials ;
+    }
+
+
+    /**
+     * Gets the distinguished name of the subject in this authentication
+     * request.  This field may take on a null value (a zero length string)
+     * for the purposes of anonymous binds, when authentication has been
+     * performed at a lower layer, or when using SASL credentials with a
+     * mechanism that includes the LDAPDN in the credentials.
+     *
+     * @return the DN of the authenticating user.
+     */
+    public String getName()
+    {
+        return m_name ;
+    }
+
+
+    /**
+     * Sets the distinguished name of the subject in this authentication
+     * request.  This field may take on a null value (or a zero length string)
+     * for the purposes of anonymous binds, when authentication has been
+     * performed at a lower layer, or when using SASL credentials with a
+     * mechanism that includes the LDAPDN in the credentials.
+     *
+     * @param name the DN of the authenticating user - leave null for
+     * annonymous user.
+     */
+    public void setName( String name )
+    {
+        lockCheck( "Attempt to alter auth. DN of locked BindRequest!" ) ;
+        m_name = name ;
+    }
+
+
+    /**
+     * Checks to see if the Ldap v3 protocol is used.  Normally this would
+     * extract a version number from the bind request sent by the client
+     * indicating the version of the protocol to be used in this protocol
+     * session.  The integer is either a 2 or a 3 at the moment.  We thought it
+     * was better to just check if the protocol used is 3 or not rather than
+     * use an type-safe enumeration type for a binary value.  If an LDAPv4 comes
+     * out then we shall convert the return type to a type safe enumeration.
+     *
+     * @return true if client using version 3 false if it is version 2.
+     */
+    public boolean isVersion3()
+    {
+        return m_isVersion3 ;
+    }
+
+
+    /**
+     * Gets whether or not the Ldap v3 protocol is used.  Normally this would
+     * extract a version number from the bind request sent by the client
+     * indicating the version of the protocol to be used in this protocol
+     * session.  The integer is either a 2 or a 3 at the moment.  We thought it
+     * was better to just check if the protocol used is 3 or not rather than
+     * use an type-safe enumeration type for a binary value.  If an LDAPv4 comes
+     * out then we shall convert the return type to a type safe enumeration.
+     *
+     * @return true if client using version 3 false if it is version 2.
+     */
+    public boolean getVersion3()
+    {
+        return m_isVersion3 ;
+    }
+
+
+    /**
+     * Sets whether or not the LDAP v3 or v2 protocol is used.  Normally this
+     * would extract a version number from the bind request sent by the client
+     * indicating the version of the protocol to be used in this protocol
+     * session.  The integer is either a 2 or a 3 at the moment.  We thought it
+     * was better to just check if the protocol used is 3 or not rather than
+     * use an type-safe enumeration type for a binary value.  If an LDAPv4 comes
+     * out then we shall convert the return type to a type safe enumeration.
+     *
+     * @param isVersion3 if true the client will be exhibiting version 3 bind
+     * behavoir, if false is used version 2 behavoir will be exhibited.
+     */
+    public void setVersion3( boolean isVersion3 )
+    {
+        lockCheck( "Attempt to alter proto. version of locked BindRequest!" ) ;
+        m_isVersion3 = isVersion3 ;
+    }
+
+
+    // -----------------------------------------------------------------------
+    // BindRequest Interface Method Implementations
+    // -----------------------------------------------------------------------
+
+
+    /**
+     * Gets the protocol response message type for this request which produces
+     * at least one response.
+     *
+     * @return the message type of the response.
+     */
+    public MessageTypeEnum getResponseType()
+    {
+        return RESP_TYPE ;
+    }
+}