Return-Path: X-Original-To: apmail-directory-commits-archive@www.apache.org Delivered-To: apmail-directory-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 49D79D47D for ; Sun, 23 Sep 2012 00:48:58 +0000 (UTC) Received: (qmail 83224 invoked by uid 500); 23 Sep 2012 00:48:57 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 83162 invoked by uid 500); 23 Sep 2012 00:48:57 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 83150 invoked by uid 99); 23 Sep 2012 00:48:57 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Sep 2012 00:48:57 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Sep 2012 00:48:55 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 802A423888CD for ; Sun, 23 Sep 2012 00:48:12 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1388933 - in /directory/shared/branches/shared-mvbt: dsml/parser/src/main/java/org/apache/directory/shared/dsmlv2/reponse/ ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/ ldap/model/src/main/java/org/apache... Date: Sun, 23 Sep 2012 00:48:12 -0000 To: commits@directory.apache.org From: elecharny@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120923004812.802A423888CD@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: elecharny Date: Sun Sep 23 00:48:11 2012 New Revision: 1388933 URL: http://svn.apache.org/viewvc?rev=1388933&view=rev Log: o Small speed improvement : when the LdapResult is SUCCESS, with no additional information, we can avoid the computation of its length and we can provide the byte[] directly Modified: directory/shared/branches/shared-mvbt/dsml/parser/src/main/java/org/apache/directory/shared/dsmlv2/reponse/LdapResultDsml.java directory/shared/branches/shared-mvbt/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/LdapResultDecorator.java directory/shared/branches/shared-mvbt/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/LdapResult.java directory/shared/branches/shared-mvbt/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/LdapResultImpl.java directory/shared/branches/shared-mvbt/ldap/model/src/test/java/org/apache/directory/shared/ldap/model/message/LdapResultImplTest.java Modified: directory/shared/branches/shared-mvbt/dsml/parser/src/main/java/org/apache/directory/shared/dsmlv2/reponse/LdapResultDsml.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-mvbt/dsml/parser/src/main/java/org/apache/directory/shared/dsmlv2/reponse/LdapResultDsml.java?rev=1388933&r1=1388932&r2=1388933&view=diff ============================================================================== --- directory/shared/branches/shared-mvbt/dsml/parser/src/main/java/org/apache/directory/shared/dsmlv2/reponse/LdapResultDsml.java (original) +++ directory/shared/branches/shared-mvbt/dsml/parser/src/main/java/org/apache/directory/shared/dsmlv2/reponse/LdapResultDsml.java Sun Sep 23 00:48:11 2012 @@ -243,4 +243,13 @@ public class LdapResultDsml implements D { getDecorated().setReferral( referral ); } + + + /** + * {@inheritDoc} + */ + public boolean isDefaultSuccess() + { + return false; + } } Modified: directory/shared/branches/shared-mvbt/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/LdapResultDecorator.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-mvbt/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/LdapResultDecorator.java?rev=1388933&r1=1388932&r2=1388933&view=diff ============================================================================== --- directory/shared/branches/shared-mvbt/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/LdapResultDecorator.java (original) +++ directory/shared/branches/shared-mvbt/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/LdapResultDecorator.java Sun Sep 23 00:48:11 2012 @@ -24,8 +24,8 @@ import java.nio.BufferOverflowException; import java.nio.ByteBuffer; import org.apache.directory.shared.asn1.EncoderException; -import org.apache.directory.shared.asn1.ber.tlv.TLV; import org.apache.directory.shared.asn1.ber.tlv.BerValue; +import org.apache.directory.shared.asn1.ber.tlv.TLV; import org.apache.directory.shared.i18n.I18n; import org.apache.directory.shared.ldap.codec.api.Decorator; import org.apache.directory.shared.ldap.codec.api.LdapApiService; @@ -56,6 +56,9 @@ public class LdapResultDecorator impleme /** The codec responsible for encoding and decoding this object. */ private LdapApiService codec; + private static final byte[] DEFAULT_SUCCESS = new byte[] + { 0x0A, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00 }; + /** * Makes a LdapResult encodable. @@ -208,7 +211,7 @@ public class LdapResultDecorator impleme * Compute the LdapResult length * * LdapResult : - * 0x0A 01 resultCode (0..80) + * 0x0A 01 resultCode (0..80) * 0x04 L1 matchedDN (L1 = Length(matchedDN)) * 0x04 L2 errorMessage (L2 = Length(errorMessage)) * [0x83 L3] referrals @@ -230,6 +233,12 @@ public class LdapResultDecorator impleme */ public int computeLength() { + if ( decoratedLdapResult.isDefaultSuccess() ) + { + // The length of a default success PDU : 0xA0 0x01 0x00 0x04 0x00 0x04 0x00 + return DEFAULT_SUCCESS.length; + } + int ldapResultLength = 0; // The result code @@ -277,6 +286,14 @@ public class LdapResultDecorator impleme throw new EncoderException( I18n.err( I18n.ERR_04023 ) ); } + if ( decoratedLdapResult.isDefaultSuccess() ) + { + // The length of a default success PDU : 0xA0 0x01 0x00 0x04 0x00 0x04 0x00 + buffer.put( DEFAULT_SUCCESS ); + + return buffer; + } + try { // The result code @@ -321,4 +338,13 @@ public class LdapResultDecorator impleme { return codec; } + + + /** + * {@inheritDoc} + */ + public boolean isDefaultSuccess() + { + return decoratedLdapResult.isDefaultSuccess(); + } } Modified: directory/shared/branches/shared-mvbt/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/LdapResult.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-mvbt/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/LdapResult.java?rev=1388933&r1=1388932&r2=1388933&view=diff ============================================================================== --- directory/shared/branches/shared-mvbt/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/LdapResult.java (original) +++ directory/shared/branches/shared-mvbt/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/LdapResult.java Sun Sep 23 00:48:11 2012 @@ -184,4 +184,14 @@ public interface LdapResult * @param referral optional referral on REFERRAL errors. */ void setReferral( Referral referral ); + + + /** + * Tells if the LdapResult is a success, with no added information. The + * MatchedDn will be empty, as the diagnostic message and the referral. + * The ResultCode will always be 0. + * + * @return True if the LdapResult is SUCCESS. + */ + boolean isDefaultSuccess(); } Modified: directory/shared/branches/shared-mvbt/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/LdapResultImpl.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-mvbt/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/LdapResultImpl.java?rev=1388933&r1=1388932&r2=1388933&view=diff ============================================================================== --- directory/shared/branches/shared-mvbt/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/LdapResultImpl.java (original) +++ directory/shared/branches/shared-mvbt/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/LdapResultImpl.java Sun Sep 23 00:48:11 2012 @@ -43,6 +43,9 @@ public class LdapResultImpl implements L /** Resultant operation error code - defaults to SUCCESS */ private ResultCodeEnum resultCode = ResultCodeEnum.SUCCESS; + /** A flag set when the LdapResult is a SUCESS with no additional information */ + private boolean isDefaultSuccess = true; + // ------------------------------------------------------------------------ // LdapResult Interface Method Implementations @@ -62,6 +65,7 @@ public class LdapResultImpl implements L public void setDiagnosticMessage( String diagnosticMessage ) { this.diagnosticMessage = diagnosticMessage; + isDefaultSuccess = false; } @@ -80,6 +84,7 @@ public class LdapResultImpl implements L public void setMatchedDn( Dn matchedDn ) { this.matchedDn = matchedDn; + isDefaultSuccess = false; } @@ -98,6 +103,8 @@ public class LdapResultImpl implements L public void setResultCode( ResultCodeEnum resultCode ) { this.resultCode = resultCode; + + isDefaultSuccess = isDefaultSuccess & ( resultCode == ResultCodeEnum.SUCCESS ); } @@ -125,6 +132,16 @@ public class LdapResultImpl implements L public void setReferral( Referral referral ) { this.referral = referral; + isDefaultSuccess = false; + } + + + /** + * {@inheritDoc} + */ + public boolean isDefaultSuccess() + { + return isDefaultSuccess; } Modified: directory/shared/branches/shared-mvbt/ldap/model/src/test/java/org/apache/directory/shared/ldap/model/message/LdapResultImplTest.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-mvbt/ldap/model/src/test/java/org/apache/directory/shared/ldap/model/message/LdapResultImplTest.java?rev=1388933&r1=1388932&r2=1388933&view=diff ============================================================================== --- directory/shared/branches/shared-mvbt/ldap/model/src/test/java/org/apache/directory/shared/ldap/model/message/LdapResultImplTest.java (original) +++ directory/shared/branches/shared-mvbt/ldap/model/src/test/java/org/apache/directory/shared/ldap/model/message/LdapResultImplTest.java Sun Sep 23 00:48:11 2012 @@ -140,6 +140,12 @@ public class LdapResultImplTest public void setReferral( Referral referral ) { } + + + public boolean isDefaultSuccess() + { + return false; + } }; assertTrue( "r0 equals should see other impl r1 as equal", r0.equals( r1 ) );