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 2006/07/14 01:34:56 UTC
svn commit: r421733 -
/directory/branches/shared/optimization/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/SubstringFilterGrammar.java
Author: elecharny
Date: Thu Jul 13 16:34:56 2006
New Revision: 421733
URL: http://svn.apache.org/viewvc?rev=421733&view=rev
Log:
- call addCurrentFilter instead of setCurrentFilter
- renamed compareFilterAction to terminalFilterAction
- call unstackFilters into the SubstringFilter
- moved unstackFilters to SearchRequest class
Modified:
directory/branches/shared/optimization/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/SubstringFilterGrammar.java
Modified: directory/branches/shared/optimization/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/SubstringFilterGrammar.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/optimization/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/SubstringFilterGrammar.java?rev=421733&r1=421732&r2=421733&view=diff
==============================================================================
--- directory/branches/shared/optimization/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/SubstringFilterGrammar.java (original)
+++ directory/branches/shared/optimization/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/SubstringFilterGrammar.java Thu Jul 13 16:34:56 2006
@@ -109,25 +109,8 @@
// We can allocate the SearchRequest
Filter substringFilter = new SubstringFilter();
- // Get the parent, if any
- Filter currentFilter = searchRequest.getCurrentFilter();
-
- if ( currentFilter != null )
- {
- // Ok, we have a parent. The new Filter will be added to
- // this parent, then.
- ( ( ConnectorFilter ) currentFilter ).addFilter( substringFilter );
- substringFilter.setParent( currentFilter );
- }
- else
- {
- // No parent. This Filter will become the root.
-
- searchRequest.setFilter( substringFilter );
- substringFilter.setParent( searchRequest );
- }
-
- searchRequest.setCurrentFilter( substringFilter );
+ searchRequest.addCurrentFilter( substringFilter );
+ searchRequest.setTerminalFilter( substringFilter );
// As this is a new Constructed object, we have to init its
// length
@@ -162,7 +145,7 @@
TLV tlv = ldapMessageContainer.getCurrentTLV();
// Store the value.
- SubstringFilter substringFilter = ( SubstringFilter ) searchRequest.getCurrentFilter();
+ SubstringFilter substringFilter = ( SubstringFilter ) searchRequest.getTerminalFilter();
if ( tlv.getLength().getLength() == 0 )
{
@@ -186,7 +169,7 @@
// We now have to get back to the nearest filter which
// is not terminal.
- unstackFilters( container );
+ searchRequest.setTerminalFilter( substringFilter );
}
}
} );
@@ -261,7 +244,7 @@
TLV tlv = ldapMessageContainer.getCurrentTLV();
// Store the value.
- SubstringFilter substringFilter = ( SubstringFilter ) searchRequest.getCurrentFilter();
+ SubstringFilter substringFilter = ( SubstringFilter ) searchRequest.getTerminalFilter();
if ( tlv.getLength().getLength() == 0 )
{
@@ -283,7 +266,7 @@
// We now have to get back to the nearest filter which is
// not terminal.
- unstackFilters( container );
+ searchRequest.unstackFilters( container );
// We can have a pop transition
container.grammarPopAllowed( true );
@@ -336,7 +319,7 @@
TLV tlv = ldapMessageContainer.getCurrentTLV();
// Store the value.
- SubstringFilter substringFilter = ( SubstringFilter ) searchRequest.getCurrentFilter();
+ SubstringFilter substringFilter = ( SubstringFilter ) searchRequest.getTerminalFilter();
if ( tlv.getLength().getLength() == 0 )
{
@@ -357,7 +340,7 @@
// We now have to get back to the nearest filter which is
// not terminal.
- unstackFilters( container );
+ searchRequest.unstackFilters( container );
// We can have a pop transition
container.grammarPopAllowed( true );
@@ -412,7 +395,7 @@
TLV tlv = ldapMessageContainer.getCurrentTLV();
// Store the value.
- SubstringFilter substringFilter = ( SubstringFilter ) searchRequest.getCurrentFilter();
+ SubstringFilter substringFilter = ( SubstringFilter ) searchRequest.getTerminalFilter();
if ( tlv.getLength().getLength() == 0 )
{
@@ -434,12 +417,12 @@
// We now have to get back to the nearest filter which is
// not terminal.
- unstackFilters( container );
+ searchRequest.unstackFilters( container );
+
// We can have a pop transition
container.grammarPopAllowed( true );
}
} );
-
}
@@ -454,51 +437,5 @@
public static IGrammar getInstance()
{
return instance;
- }
-
-
- /**
- * This method is used to clear the filter's stack for terminated elements.
- * An element is considered as terminated either if : - it's a final element
- * (ie an element which cannot contains a Filter) - its current length
- * equals its expected length.
- *
- * @param container
- * The container being decoded
- */
- private void unstackFilters( IAsn1Container container )
- {
- LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
- LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
- SearchRequest searchRequest = ldapMessage.getSearchRequest();
-
- TLV tlv = ldapMessageContainer.getCurrentTLV();
-
- // Get the parent, if any
- Filter currentFilter = searchRequest.getCurrentFilter();
-
- // We know have to check if the parent has been completed
- if ( tlv.getParent().getExpectedLength() == 0 )
- {
- TLV parent = tlv.getParent();
-
- // The parent has been completed, we have to switch it
- while ( ( parent != null ) && ( parent.getExpectedLength() == 0 ) )
- {
- parent = parent.getParent();
-
- if ( ( currentFilter != null ) && ( currentFilter.getParent() instanceof Filter ) )
- {
- currentFilter = ( Filter ) currentFilter.getParent();
- }
- else
- {
- currentFilter = null;
- break;
- }
- }
-
- searchRequest.setCurrentFilter( currentFilter );
- }
}
}