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 2010/12/01 18:32:00 UTC
svn commit: r1041097 - in
/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber:
AbstractContainer.java Asn1Container.java Asn1Decoder.java
grammar/AbstractGrammar.java
Author: elecharny
Date: Wed Dec 1 17:32:00 2010
New Revision: 1041097
URL: http://svn.apache.org/viewvc?rev=1041097&view=rev
Log:
Added a new flag in the Asn1Container to tell the Asn1Decoder to gather the incoming data in the TLV Value when it's a constructed type
Modified:
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/AbstractContainer.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/Asn1Container.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/Asn1Decoder.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/grammar/AbstractGrammar.java
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/AbstractContainer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/AbstractContainer.java?rev=1041097&r1=1041096&r2=1041097&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/AbstractContainer.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/AbstractContainer.java Wed Dec 1 17:32:00 2010
@@ -69,6 +69,10 @@ public abstract class AbstractContainer
/** The Stream being decoded */
private ByteBuffer stream;
+
+ /** A flag telling if the Value should be accumulated before being decoded
+ * for constructed types */
+ private boolean isGathering = false;
/**
* Creates a new instance of AbstractContainer with a starting state.
@@ -324,4 +328,23 @@ public abstract class AbstractContainer
this.parentTLV = parentTlv;
}
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isGathering()
+ {
+ return isGathering;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setGathering( boolean isGathering )
+ {
+ this.isGathering = isGathering;
+ }
+
}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/Asn1Container.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/Asn1Container.java?rev=1041097&r1=1041096&r2=1041097&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/Asn1Container.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/Asn1Container.java Wed Dec 1 17:32:00 2010
@@ -193,4 +193,20 @@ public interface Asn1Container
* Look for the closest parent which has an expected length above 0
*/
void updateParent();
+
+
+ /**
+ * @return true if the container should gather the value into itself, false
+ * if the decoding of the Value part should be done immediately for
+ * constructed types.
+ */
+ boolean isGathering();
+
+
+ /**
+ * Set the isGathering flag
+ * @param isGathering true to ask the Asn1Decoder to gather the data
+ * into the container. If not set, the default value is 'false'
+ */
+ void setGathering( boolean isGathering );
}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/Asn1Decoder.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/Asn1Decoder.java?rev=1041097&r1=1041096&r2=1041097&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/Asn1Decoder.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/Asn1Decoder.java Wed Dec 1 17:32:00 2010
@@ -508,7 +508,7 @@ public class Asn1Decoder implements TLVB
{
TLV currentTlv = container.getCurrentTLV();
- if ( TLV.isConstructed( currentTlv.getTag() ) )
+ if ( TLV.isConstructed( currentTlv.getTag() ) && !container.isGathering() )
{
container.setState( TLVStateEnum.TLV_STATE_DONE );
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/grammar/AbstractGrammar.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/grammar/AbstractGrammar.java?rev=1041097&r1=1041096&r2=1041097&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/grammar/AbstractGrammar.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/asn1/ber/grammar/AbstractGrammar.java Wed Dec 1 17:32:00 2010
@@ -24,6 +24,7 @@ import org.apache.directory.shared.asn1.
import org.apache.directory.shared.asn1.codec.DecoderException;
import org.apache.directory.shared.asn1.util.Asn1StringUtils;
import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.ldap.util.StringTools;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;