You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2005/04/03 19:26:41 UTC

svn commit: r159935 - directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/ldap/codec/LdapMessageGrammar.java

Author: elecharny
Date: Sun Apr  3 10:26:40 2005
New Revision: 159935

URL: http://svn.apache.org/viewcvs?view=rev&rev=159935
Log:
Used poolable MutableString instead of String to allocate strings in POJOs. It's faster (20%), and all the decoder is now working with pools.

1 000 000 BindRequest decoded in 4.4 seconds (IBM JVM 1.4.2) 

Modified:
    directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/ldap/codec/LdapMessageGrammar.java

Modified: directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/ldap/codec/LdapMessageGrammar.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/ldap/codec/LdapMessageGrammar.java?view=diff&r1=159934&r2=159935
==============================================================================
--- directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/ldap/codec/LdapMessageGrammar.java (original)
+++ directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/ldap/codec/LdapMessageGrammar.java Sun Apr  3 10:26:40 2005
@@ -25,12 +25,12 @@
 import org.apache.asn1.ber.tlv.TLV;
 import org.apache.asn1.ber.tlv.Value;
 import org.apache.asn1.ldap.codec.primitives.IntegerDecoder;
-import org.apache.asn1.ldap.codec.primitives.LdapDNDecoder;
 import org.apache.asn1.ldap.pojo.AbstractPOJO;
 import org.apache.asn1.ldap.pojo.BindRequestPOJO;
 import org.apache.asn1.ldap.pojo.LdapMessagePOJO;
 import org.apache.asn1.ldap.pojo.LdapPOJO;
 import org.apache.asn1.ldap.pojo.SimpleAuthenticationPOJO;
+import org.apache.asn1.util.MutableString;
 import org.apache.asn1.util.pools.PoolEnum;
 import org.apache.asn1.util.pools.PoolException;
 
@@ -308,13 +308,24 @@
 	                    // Get the Value and store it in the BindRequest 
 	                    TLV   tlv     = ldapMessageContainer.getCurrentTLV();
 	                    
-	                    // TODO : allocate the string from a pool.
-	                    String value = LdapDNDecoder.parse(tlv.getValue());
-                        //String value = new String(tlv.getValue().getData());
+	                    MutableString name = null;
+	                    
+	                    try
+	                    {
+		                    name = ( MutableString ) ldapMessageContainer.getPoolManager().allocateString(tlv.getValue().getData().length);
+	                    } 
+	                    catch (PoolException pe)
+	                    {
+	                        throw new DecoderException(
+		                            "Cannot allocate a MutableString for Name : " + pe.getMessage() );
+	                    }
+	                    
+                        name.setData(tlv.getValue().getData());
+                        
 
                         BindRequestPOJO      bindRequestMessage   = (BindRequestPOJO)ldapMessageContainer.getLdapMessage().getProtocolOp();
 
-                        bindRequestMessage.setName(value);
+                        bindRequestMessage.setName(name);
                         return;
                     }
                 } );
@@ -352,8 +363,19 @@
 	                    // Get the Value and store it in the BindRequest 
 	                    TLV   tlv     = ldapMessageContainer.getCurrentTLV();
 	                    
-	                    // TODO : allocate the string from a pool.
-                        String simple = new String(tlv.getValue().getData());
+	                    MutableString simple = null;
+	                    
+	                    try
+	                    {
+		                    simple = ( MutableString ) ldapMessageContainer.getPoolManager().allocateString(tlv.getValue().getData().length);
+	                    } 
+	                    catch (PoolException pe)
+	                    {
+	                        throw new DecoderException(
+		                            "Cannot allocate a MutableString for simple : " + pe.getMessage() );
+	                    }
+	                    
+                        simple.setData(tlv.getValue().getData());
 
                         BindRequestPOJO      bindRequestMessage   = (BindRequestPOJO)ldapMessageContainer.getLdapMessage().getProtocolOp();