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:[EMAIL PROTECTED]">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:[EMAIL PROTECTED]">Alex Karasulu</a>
- * @author $Author: akarasulu $
- * @version $Revision: 1.6 $
+ * @author <a href="mailto:[EMAIL PROTECTED]">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:[EMAIL PROTECTED]">Alex Karasulu</a>
- * @author $Author: akarasulu $
- * @version $Revision: 1.3 $
+ * @author <a href="mailto:[EMAIL PROTECTED]"> 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;
}