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/10/02 01:07:49 UTC
svn commit: r451836 [5/11] - in /directory/branches/shared/0.9.5/ldap/src:
main/java/org/apache/directory/shared/ldap/codec/
main/java/org/apache/directory/shared/ldap/codec/abandon/
main/java/org/apache/directory/shared/ldap/codec/actions/ main/java/o...
Modified: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java?view=diff&rev=451836&r1=451835&r2=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java (original)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java Sun Oct 1 16:07:44 2006
@@ -66,8 +66,6 @@
import org.apache.directory.shared.ldap.codec.search.SubstringFilter;
import org.apache.directory.shared.ldap.codec.search.controls.PSearchControl;
import org.apache.directory.shared.ldap.codec.search.controls.SubEntryControl;
-import org.apache.directory.shared.ldap.codec.util.LdapString;
-import org.apache.directory.shared.ldap.codec.util.LdapStringEncodingException;
import org.apache.directory.shared.ldap.codec.util.LdapURL;
import org.apache.directory.shared.ldap.codec.util.LdapURLEncodingException;
import org.apache.directory.shared.ldap.filter.AbstractExprNode;
@@ -136,8 +134,7 @@
/**
* Creates a passthrough transformer that really does nothing at all.
*
- * @param provider
- * the povider for this transformer
+ * @param provider the provider for this transformer
*/
public TwixTransformer(Provider provider)
{
@@ -160,10 +157,8 @@
* Transform an AbandonRequest message from a TwixMessage to a
* SnickersMessage
*
- * @param twixMessage
- * The message to transform
- * @param messageId
- * The message Id
+ * @param twixMessage The message to transform
+ * @param messageId The message Id
* @return A Snickers AbandonRequestImpl
*/
private Message transformAbandonRequest( LdapMessage twixMessage, int messageId )
@@ -181,10 +176,8 @@
/**
* Transform an AddRequest message from a TwixMessage to a SnickersMessage
*
- * @param twixMessage
- * The message to transform
- * @param messageId
- * The message Id
+ * @param twixMessage The message to transform
+ * @param messageId The message Id
* @return A Snickers AddRequestImpl
*/
private Message transformAddRequest( LdapMessage twixMessage, int messageId )
@@ -205,10 +198,8 @@
/**
* Transform a BindRequest message from a TwixMessage to a SnickersMessage
*
- * @param twixMessage
- * The message to transform
- * @param messageId
- * The message Id
+ * @param twixMessage The message to transform
+ * @param messageId The message Id
* @return A Snickers BindRequestImpl
*/
private Message transformBindRequest( LdapMessage twixMessage, int messageId )
@@ -248,10 +239,8 @@
* Transform a CompareRequest message from a TwixMessage to a
* SnickersMessage
*
- * @param twixMessage
- * The message to transform
- * @param messageId
- * The message Id
+ * @param twixMessage The message to transform
+ * @param messageId The message Id
* @return A Snickers CompareRequestImpl
*/
private Message transformCompareRequest( LdapMessage twixMessage, int messageId )
@@ -282,10 +271,8 @@
/**
* Transform a DelRequest message from a TwixMessage to a SnickersMessage
*
- * @param twixMessage
- * The message to transform
- * @param messageId
- * The message Id
+ * @param twixMessage The message to transform
+ * @param messageId The message Id
* @return A Snickers DeleteRequestImpl
*/
private Message transformDelRequest( LdapMessage twixMessage, int messageId )
@@ -304,10 +291,8 @@
* Transform an ExtendedRequest message from a TwixMessage to a
* SnickersMessage
*
- * @param twixMessage
- * The message to transform
- * @param messageId
- * The message Id
+ * @param twixMessage The message to transform
+ * @param messageId The message Id
* @return A Snickers ExtendedRequestImpl
*/
private Message transformExtendedRequest( LdapMessage twixMessage, int messageId )
@@ -338,10 +323,8 @@
* Transform a ModifyDNRequest message from a TwixMessage to a
* SnickersMessage
*
- * @param twixMessage
- * The message to transform
- * @param messageId
- * The message Id
+ * @param twixMessage The message to transform
+ * @param messageId The message Id
* @return A Snickers ModifyDNRequestImpl
*/
private Message transformModifyDNRequest( LdapMessage twixMessage, int messageId )
@@ -368,10 +351,8 @@
/**
* Transform a ModifyRequest message from a TwixMessage to a SnickersMessage
*
- * @param twixMessage
- * The message to transform
- * @param messageId
- * The message Id
+ * @param twixMessage The message to transform
+ * @param messageId The message Id
* @return A Snickers ModifyRequestImpl
*/
private Message transformModifyRequest( LdapMessage twixMessage, int messageId )
@@ -401,8 +382,7 @@
/**
* Transform the Filter part of a SearchRequest to en ExprNode
*
- * @param twixFilter
- * The filter to be transformed
+ * @param twixFilter The filter to be transformed
* @return An ExprNode
*/
private ExprNode transformFilter( Filter twixFilter )
@@ -605,10 +585,8 @@
/**
* Transform a SearchRequest message from a TwixMessage to a SnickersMessage
*
- * @param twixMessage
- * The message to transform
- * @param messageId
- * The message Id
+ * @param twixMessage The message to transform
+ * @param messageId The message Id
* @return A Snickers SearchRequestImpl
*/
private Message transformSearchRequest( LdapMessage twixMessage, int messageId )
@@ -696,10 +674,8 @@
* Transform an UnBindRequest message from a TwixMessage to a
* SnickersMessage
*
- * @param twixMessage
- * The message to transform
- * @param messageId
- * The message Id
+ * @param twixMessage The message to transform
+ * @param messageId The message Id
* @return A Snickers UnBindRequestImpl
*/
private Message transformUnBindRequest( LdapMessage twixMessage, int messageId )
@@ -711,8 +687,7 @@
/**
* Transform the Twix message to a codec neutral message.
*
- * @param obj
- * the object to transform
+ * @param obj the object to transform
* @return the object transformed
*/
public Message transform( Object obj )
@@ -885,8 +860,7 @@
/**
* Transform a Ldapresult part of a Snickers Response to a Twix LdapResult
*
- * @param snickersLdapResult
- * The Snickers LdapResult to transform
+ * @param snickersLdapResult The Snickers LdapResult to transform
* @return A Twix LdapResult
*/
private LdapResult transformLdapResult( LdapResultImpl snickersLdapResult )
@@ -897,24 +871,15 @@
twixLdapResult.setResultCode( snickersLdapResult.getResultCode().getValue() );
// Snickers : String errorMessage -> Twix : LdapString errorMessage
- try
- {
- String errorMessage = snickersLdapResult.getErrorMessage();
+ String errorMessage = snickersLdapResult.getErrorMessage();
- if ( ( errorMessage == null ) || ( errorMessage.length() == 0 ) )
- {
- twixLdapResult.setErrorMessage( LdapString.EMPTY_STRING );
- }
- else
- {
- twixLdapResult.setErrorMessage( new LdapString( snickersLdapResult.getErrorMessage().getBytes() ) );
- }
+ if ( ( errorMessage == null ) || ( errorMessage.length() == 0 ) )
+ {
+ twixLdapResult.setErrorMessage( "" );
}
- catch ( LdapStringEncodingException lsee )
+ else
{
- log.warn( "The error message " + snickersLdapResult.getErrorMessage() + " is invalid : "
- + lsee.getMessage() );
- twixLdapResult.setErrorMessage( LdapString.EMPTY_STRING );
+ twixLdapResult.setErrorMessage( new String( snickersLdapResult.getErrorMessage().getBytes() ) );
}
// Snickers : String matchedDn -> Twix : LdapDN matchedDN
@@ -926,6 +891,7 @@
if ( snisckersReferrals != null )
{
Iterator referrals = snisckersReferrals.getLdapUrls().iterator();
+ twixLdapResult.initReferrals();
while ( referrals.hasNext() )
{
@@ -951,10 +917,8 @@
/**
* Transform a Snickers AddResponse to a Twix AddResponse
*
- * @param twixMessage
- * The Twix AddResponse to produce
- * @param snickersMessage
- * The incoming Snickers AddResponse
+ * @param twixMessage The Twix AddResponse to produce
+ * @param snickersMessage The incoming Snickers AddResponse
*/
private void transformAddResponse( LdapMessage twixMessage, Message snickersMessage )
{
@@ -973,10 +937,8 @@
/**
* Transform a Snickers BindResponse to a Twix BindResponse
*
- * @param twixMessage
- * The Twix BindResponse to produce
- * @param snickersMessage
- * The incoming Snickers BindResponse
+ * @param twixMessage The Twix BindResponse to produce
+ * @param snickersMessage The incoming Snickers BindResponse
*/
private void transformBindResponse( LdapMessage twixMessage, Message snickersMessage )
{
@@ -1004,10 +966,8 @@
/**
* Transform a Snickers CompareResponse to a Twix CompareResponse
*
- * @param twixMessage
- * The Twix CompareResponse to produce
- * @param snickersMessage
- * The incoming Snickers CompareResponse
+ * @param twixMessage The Twix CompareResponse to produce
+ * @param snickersMessage The incoming Snickers CompareResponse
*/
private void transformCompareResponse( LdapMessage twixMessage, Message snickersMessage )
{
@@ -1027,10 +987,8 @@
/**
* Transform a Snickers DelResponse to a Twix DelResponse
*
- * @param twixMessage
- * The Twix DelResponse to produce
- * @param snickersMessage
- * The incoming Snickers DelResponse
+ * @param twixMessage The Twix DelResponse to produce
+ * @param snickersMessage The incoming Snickers DelResponse
*/
private void transformDelResponse( LdapMessage twixMessage, Message snickersMessage )
{
@@ -1049,10 +1007,8 @@
/**
* Transform a Snickers ExtendedResponse to a Twix ExtendedResponse
*
- * @param twixMessage
- * The Twix ExtendedResponse to produce
- * @param snickersMessage
- * The incoming Snickers ExtendedResponse
+ * @param twixMessage The Twix ExtendedResponse to produce
+ * @param snickersMessage The incoming Snickers ExtendedResponse
*/
private void transformExtendedResponse( LdapMessage twixMessage, Message snickersMessage )
{
@@ -1085,10 +1041,8 @@
/**
* Transform a Snickers ModifyResponse to a Twix ModifyResponse
*
- * @param twixMessage
- * The Twix ModifyResponse to produce
- * @param snickersMessage
- * The incoming Snickers ModifyResponse
+ * @param twixMessage The Twix ModifyResponse to produce
+ * @param snickersMessage The incoming Snickers ModifyResponse
*/
private void transformModifyResponse( LdapMessage twixMessage, Message snickersMessage )
{
@@ -1107,10 +1061,8 @@
/**
* Transform a Snickers ModifyDNResponse to a Twix ModifyDNResponse
*
- * @param twixMessage
- * The Twix ModifyDNResponse to produce
- * @param snickersMessage
- * The incoming Snickers ModifyDNResponse
+ * @param twixMessage The Twix ModifyDNResponse to produce
+ * @param snickersMessage The incoming Snickers ModifyDNResponse
*/
private void transformModifyDNResponse( LdapMessage twixMessage, Message snickersMessage )
{
@@ -1130,10 +1082,8 @@
/**
* Transform a Snickers SearchResponseDone to a Twix SearchResultDone
*
- * @param twixMessage
- * The Twix SearchResultDone to produce
- * @param snickersMessage
- * The incoming Snickers SearchResponseDone
+ * @param twixMessage The Twix SearchResultDone to produce
+ * @param snickersMessage The incoming Snickers SearchResponseDone
*/
private void transformSearchResultDone( LdapMessage twixMessage, Message snickersMessage )
{
@@ -1152,10 +1102,8 @@
/**
* Transform a Snickers SearchResponseEntry to a Twix SearchResultEntry
*
- * @param twixMessage
- * The Twix SearchResultEntry to produce
- * @param snickersMessage
- * The incoming Snickers SearchResponseEntry
+ * @param twixMessage The Twix SearchResultEntry to produce
+ * @param snickersMessage The incoming Snickers SearchResponseEntry
*/
private void transformSearchResultEntry( LdapMessage twixMessage, Message snickersMessage )
{
@@ -1178,10 +1126,8 @@
* Transform a Snickers SearchResponseReference to a Twix
* SearchResultReference
*
- * @param twixMessage
- * The Twix SearchResultReference to produce
- * @param snickersMessage
- * The incoming Snickers SearchResponseReference
+ * @param twixMessage The Twix SearchResultReference to produce
+ * @param snickersMessage The incoming Snickers SearchResponseReference
*/
private void transformSearchResultReference( LdapMessage twixMessage, Message snickersMessage )
{
@@ -1225,8 +1171,7 @@
/**
* Transform the Snickers message to a Twix message.
*
- * @param msg
- * the message to transform
+ * @param msg the message to transform
* @return the msg transformed
*/
public Object transform( Message msg )
@@ -1295,8 +1240,12 @@
return twixMessage;
}
-
- private void transformControls( org.apache.directory.shared.ldap.codec.LdapMessage twixMessage, Message msg )
+ /**
+ * Transforms the controls
+ * @param twixMessage The Twix SearchResultReference to produce
+ * @param msg The incoming Snickers SearchResponseReference
+ */
+ private void transformControls( LdapMessage twixMessage, Message msg )
{
Iterator list = msg.getControls().values().iterator();
while ( list.hasNext() )
@@ -1307,14 +1256,7 @@
twixControl.setCriticality( control.isCritical() );
twixControl.setControlValue( control.getEncodedValue() );
twixControl.setEncodedValue( control.getEncodedValue() );
- try
- {
- twixControl.setControlType( new LdapString( Asn1StringUtils.getBytesUtf8( control.getID() ) ) );
- }
- catch ( LdapStringEncodingException e )
- {
- log.error( "failed to encode string for control id", e );
- }
+ twixControl.setControlType( new String( Asn1StringUtils.getBytesUtf8( control.getID() ) ) );
twixControl.setParent( twixMessage );
}
}
Modified: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/abandon/AbandonRequest.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/abandon/AbandonRequest.java?view=diff&rev=451836&r1=451835&r2=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/abandon/AbandonRequest.java (original)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/abandon/AbandonRequest.java Sun Oct 1 16:07:44 2006
@@ -32,9 +32,14 @@
/**
- * A AbandonRequest Message. Its syntax is : AbandonRequest ::= [APPLICATION 16]
- * MessageID MessageID ::= INTEGER (0 .. maxInt) maxInt INTEGER ::= 2147483647 --
- * (2^^31 - 1) --
+ * A AbandonRequest Message.
+ *
+ * Its syntax is :
+ * AbandonRequest ::= [APPLICATION 16] MessageID
+ *
+ * MessageID ::= INTEGER (0 .. maxInt)
+ *
+ * maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) --
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
@@ -93,8 +98,7 @@
/**
* Set the abandoned message ID
*
- * @param abandonedMessageId
- * The abandoned messageID to set.
+ * @param abandonedMessageId The abandoned messageID to set.
*/
public void setAbandonedMessageId( int abandonedMessageId )
{
@@ -103,9 +107,12 @@
/**
- * Compute the AbandonRequest length AbandonRequest : 0x50 0x0(1..4)
- * abandoned MessageId Length(AbandonRequest) = Length(0x50) + 1 +
- * Length(abandoned MessageId)
+ * Compute the AbandonRequest length
+ *
+ * AbandonRequest :
+ * 0x50 0x0(1..4) abandoned MessageId
+ *
+ * Length(AbandonRequest) = Length(0x50) + 1 + Length(abandoned MessageId)
*/
public int computeLength()
{
@@ -123,8 +130,7 @@
/**
* Encode the AbandonRequest message to a PDU.
*
- * @param buffer
- * The buffer where to put the PDU
+ * @param buffer The buffer where to put the PDU
* @return The PDU.
*/
public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/AttributeDescAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/AttributeDescAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/AttributeDescAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/AttributeDescAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to store the attribute description
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class AttributeDescAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( AttributeDescAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public AttributeDescAction()
+ {
+ super( "Store attribute description" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+
+ SearchRequest searchRequest = ldapMessageContainer.getLdapMessage().getSearchRequest();
+
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+ String attributeDescription = null;
+
+ byte[] value = null;
+
+ if ( tlv.getLength() == 0 )
+ {
+ value = new byte[]
+ { '*' };
+ }
+ else
+ {
+ value = tlv.getValue().getData();
+ }
+
+ attributeDescription = new String( value );
+ searchRequest.addAttribute( attributeDescription );
+
+ // We can have an END transition
+ ldapMessageContainer.grammarEndAllowed( true );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Decoded Attribute Description : {}", attributeDescription );
+ }
+
+ return;
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.ber.tlv.Value;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.Control;
+import org.apache.directory.shared.ldap.codec.ControlDecoder;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.ManageDsaITControlDecoder;
+import org.apache.directory.shared.ldap.codec.search.controls.PSearchControlDecoder;
+import org.apache.directory.shared.ldap.codec.search.controls.SubEntryControlDecoder;
+import org.apache.directory.shared.ldap.util.StringTools;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to set the value of a control. This is an extension point
+ * where different controls can be plugged in (at least eventually). For now we
+ * hard code controls.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class ControlValueAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( ControlValueAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ private static Map controlDecoders = new HashMap();
+
+
+ public ControlValueAction()
+ {
+ super( "Sets the control value" );
+
+ ControlDecoder decoder;
+ decoder = new PSearchControlDecoder();
+ controlDecoders.put( decoder.getControlType(), decoder );
+
+ decoder = new ManageDsaITControlDecoder();
+ controlDecoders.put( decoder.getControlType(), decoder );
+
+ decoder = new SubEntryControlDecoder();
+ controlDecoders.put( decoder.getControlType(), decoder );
+ }
+
+
+ public void action( IAsn1Container container ) throws DecoderException, NamingException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+ LdapMessage message = ldapMessageContainer.getLdapMessage();
+
+ // Get the current control
+ Control control = message.getCurrentControl();
+ Value value = tlv.getValue();
+
+ ControlDecoder decoder = ( ControlDecoder ) controlDecoders.get( control.getControlType() );
+
+ // Store the value - have to handle the special case of a 0 length value
+ if ( tlv.getLength() == 0 )
+ {
+ control.setControlValue( new byte[]
+ {} );
+ }
+ else
+ {
+ Object decoded;
+
+ if ( decoder != null )
+ {
+ decoded = decoder.decode( value.getData() );
+ }
+ else
+ {
+ decoded = value.getData();
+ }
+
+ control.setEncodedValue( value.getData() );
+ control.setControlValue( decoded );
+ }
+
+ // We can have an END transition
+ ldapMessageContainer.grammarEndAllowed( true );
+
+ if ( IS_DEBUG )
+ {
+ if ( control.getControlValue() instanceof byte[] )
+ {
+ log.debug( "Control value : " + StringTools.dumpBytes( ( byte[] ) control.getControlValue() ) );
+ }
+ else if ( control.getControlValue() instanceof String )
+ {
+ log.debug( "Control value : " + ( String ) control.getControlValue() );
+ }
+ else
+ {
+ log.debug( "Control value : " + control.getControlValue() );
+ }
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlsInitAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlsInitAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlsInitAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlsInitAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize a control.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class ControlsInitAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( ControlsInitAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public ControlsInitAction()
+ {
+ super( "Initialize a control" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage message = ldapMessageContainer.getLdapMessage();
+
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+ int expectedLength = tlv.getLength();
+
+ // The Length should be null
+ if ( expectedLength == 0 )
+ {
+ log.error( "The length of controls must not be null" );
+
+ // This will generate a PROTOCOL_ERROR
+ throw new DecoderException( "The length of controls must not be null" );
+ }
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "A new list of controls has been initialized" );
+ }
+
+ // We can initialize the controls array
+ message.initControls();
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ErrorMessageAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ErrorMessageAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ErrorMessageAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ErrorMessageAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.LdapResponse;
+import org.apache.directory.shared.ldap.codec.LdapResult;
+import org.apache.directory.shared.ldap.util.StringTools;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to set the LdapResult error message.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class ErrorMessageAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( ErrorMessageAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public ErrorMessageAction()
+ {
+ super( "Store error message" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+ LdapResponse response = ldapMessage.getLdapResponse();
+ LdapResult ldapResult = response.getLdapResult();
+
+ // Get the Value and store it in the BindResponse
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+
+ // We have to handle the special case of a 0 length error
+ // message
+ if ( tlv.getLength() == 0 )
+ {
+ ldapResult.setErrorMessage( "" );
+ }
+ else
+ {
+ ldapResult.setErrorMessage( StringTools.utf8ToString( tlv.getValue().getData() ) );
+ }
+
+ // We can have an END transition
+ ldapMessageContainer.grammarEndAllowed( true );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "The error message is : " + ldapResult.getErrorMessage() );
+ }
+
+ return;
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAndFilterAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAndFilterAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAndFilterAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAndFilterAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.AndFilter;
+import org.apache.directory.shared.ldap.codec.search.Filter;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the AND filter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitAndFilterAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitAndFilterAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitAndFilterAction()
+ {
+ super( "Initialize AND filter" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+
+ if ( tlv.getLength() == 0 )
+ {
+ log.error( "The And filter PDU must not be empty" );
+ throw new DecoderException( "The And filter PDU must not be empty" );
+ }
+
+ SearchRequest searchRequest = ldapMessage.getSearchRequest();
+
+ // We can allocate the SearchRequest
+ Filter andFilter = new AndFilter();
+
+ // Set the filter
+ searchRequest.addCurrentFilter( andFilter );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize AND filter" );
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitApproxMatchFilterAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitApproxMatchFilterAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitApproxMatchFilterAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitApproxMatchFilterAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapConstants;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.AttributeValueAssertionFilter;
+import org.apache.directory.shared.ldap.codec.search.Filter;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the Approx Match filter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitApproxMatchFilterAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitApproxMatchFilterAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitApproxMatchFilterAction()
+ {
+ super( "Init Approx Match filter Value" );
+ }
+
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+ SearchRequest searchRequest = ldapMessage.getSearchRequest();
+
+ // We can allocate the Attribute Value Assertion
+ Filter filter = new AttributeValueAssertionFilter( LdapConstants.APPROX_MATCH_FILTER );
+
+ searchRequest.addCurrentFilter( filter );
+
+ // Store the filter structure that still has to be
+ // fullfiled
+ searchRequest.setTerminalFilter( filter );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize Approx Match filter" );
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAssertionValueFilterAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAssertionValueFilterAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAssertionValueFilterAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAssertionValueFilterAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.AttributeValueAssertion;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.AttributeValueAssertionFilter;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+import org.apache.directory.shared.ldap.util.StringTools;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the Assertion Value filter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitAssertionValueFilterAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitAssertionValueFilterAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitAssertionValueFilterAction()
+ {
+ super( "Initialize Assertion Value filter" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+ SearchRequest searchRequest = ldapMessage.getSearchRequest();
+
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+
+ // The value can be null.
+ Object assertionValue = StringTools.EMPTY_BYTES;
+
+ if ( tlv.getLength() != 0 )
+ {
+ assertionValue = tlv.getValue().getData();
+ }
+
+ AttributeValueAssertionFilter terminalFilter = ( AttributeValueAssertionFilter ) searchRequest
+ .getTerminalFilter();
+ AttributeValueAssertion assertion = terminalFilter.getAssertion();
+
+ if ( ldapMessageContainer.isBinary( assertion.getAttributeDesc() ) )
+ {
+ assertion.setAssertionValue( assertionValue );
+ }
+ else
+ {
+ assertion.setAssertionValue( StringTools.utf8ToString( ( byte[] ) assertionValue ) );
+ }
+
+ // We now have to get back to the nearest filter which is
+ // not terminal.
+ searchRequest.unstackFilters( container );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize Assertion Value filter" );
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAttributeDescFilterAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAttributeDescFilterAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAttributeDescFilterAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAttributeDescFilterAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.AttributeValueAssertion;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.AttributeValueAssertionFilter;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the AttributeDesc filter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitAttributeDescFilterAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitAttributeDescFilterAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitAttributeDescFilterAction()
+ {
+ super( "Initialize AttributeDesc filter" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+ SearchRequest searchRequest = ldapMessage.getSearchRequest();
+
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+
+ AttributeValueAssertion assertion = new AttributeValueAssertion();
+
+ if ( tlv.getLength() == 0 )
+ {
+ log.error( "The attribute description is empty " );
+ throw new DecoderException( "The type can't be null" );
+ }
+ else
+ {
+ String type = new String( tlv.getValue().getData() );
+ assertion.setAttributeDesc( type );
+
+ AttributeValueAssertionFilter terminalFilter = ( AttributeValueAssertionFilter ) searchRequest
+ .getTerminalFilter();
+ terminalFilter.setAssertion( assertion );
+ }
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize AttributeDesc filter" );
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAttributeDescListAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAttributeDescListAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAttributeDescListAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitAttributeDescListAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the AttributeDesc list
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitAttributeDescListAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitAttributeDescListAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitAttributeDescListAction()
+ {
+ super( "Initialize AttributeDesc list" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+
+ // We can have an END transition
+ ldapMessageContainer.grammarEndAllowed( true );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize AttributeDesc list" );
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitEqualityMatchFilterAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitEqualityMatchFilterAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitEqualityMatchFilterAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitEqualityMatchFilterAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapConstants;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.AttributeValueAssertionFilter;
+import org.apache.directory.shared.ldap.codec.search.Filter;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the Equality Match filter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitEqualityMatchFilterAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitEqualityMatchFilterAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitEqualityMatchFilterAction()
+ {
+ super( "Initialize Equality Match filter" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+ SearchRequest searchRequest = ldapMessage.getSearchRequest();
+
+ // We can allocate the Attribute Value Assertion
+ Filter filter = new AttributeValueAssertionFilter( LdapConstants.EQUALITY_MATCH_FILTER );
+
+ searchRequest.addCurrentFilter( filter );
+
+ // Store the filter structure that still has to be
+ // fullfiled
+ searchRequest.setTerminalFilter( filter );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize Equality Match filter" );
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitExtensibleMatchFilterAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitExtensibleMatchFilterAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitExtensibleMatchFilterAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitExtensibleMatchFilterAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.ExtensibleMatchFilter;
+import org.apache.directory.shared.ldap.codec.search.Filter;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the Extensible Match filter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitExtensibleMatchFilterAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitExtensibleMatchFilterAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitExtensibleMatchFilterAction()
+ {
+ super( "Init Extensible Match filter Value" );
+ }
+
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+ SearchRequest searchRequest = ldapMessage.getSearchRequest();
+
+ // We can allocate the ExtensibleMatch Filter
+ Filter extensibleMatchFilter = new ExtensibleMatchFilter();
+
+ searchRequest.addCurrentFilter( extensibleMatchFilter );
+ searchRequest.setTerminalFilter( extensibleMatchFilter );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize Extensible Match filter" );
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitGreaterOrEqualFilterAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitGreaterOrEqualFilterAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitGreaterOrEqualFilterAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitGreaterOrEqualFilterAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapConstants;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.AttributeValueAssertionFilter;
+import org.apache.directory.shared.ldap.codec.search.Filter;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the Greater Or Equal filter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitGreaterOrEqualFilterAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitGreaterOrEqualFilterAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitGreaterOrEqualFilterAction()
+ {
+ super( "Initialize Greater Or Equal filter" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+ SearchRequest searchRequest = ldapMessage.getSearchRequest();
+
+ // We can allocate the Attribute Value Assertion
+ Filter filter = new AttributeValueAssertionFilter( LdapConstants.GREATER_OR_EQUAL_FILTER );
+
+ searchRequest.addCurrentFilter( filter );
+
+ // Store the filter structure that still has to be
+ // fullfiled
+ searchRequest.setTerminalFilter( filter );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize Greater Or Equal filter" );
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitLessOrEqualFilterAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitLessOrEqualFilterAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitLessOrEqualFilterAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitLessOrEqualFilterAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapConstants;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.AttributeValueAssertionFilter;
+import org.apache.directory.shared.ldap.codec.search.Filter;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the Less Or Equal filter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitLessOrEqualFilterAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitLessOrEqualFilterAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitLessOrEqualFilterAction()
+ {
+ super( "Initialize Less Or Equal filter" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+ SearchRequest searchRequest = ldapMessage.getSearchRequest();
+
+ // We can allocate the Attribute Value Assertion
+ Filter filter = new AttributeValueAssertionFilter( LdapConstants.LESS_OR_EQUAL_FILTER );
+
+ searchRequest.addCurrentFilter( filter );
+
+ // Store the filter structure that still has to be
+ // fullfiled
+ searchRequest.setTerminalFilter( filter );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize Less Or Equal filter" );
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitNotFilterAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitNotFilterAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitNotFilterAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitNotFilterAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.Filter;
+import org.apache.directory.shared.ldap.codec.search.NotFilter;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the NOT filter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitNotFilterAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitNotFilterAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitNotFilterAction()
+ {
+ super( "Initialize NOT filter" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+
+ if ( tlv.getLength() == 0 )
+ {
+ log.error( "The Not filter PDU must not be empty" );
+ throw new DecoderException( "The Not filter PDU must not be empty" );
+ }
+
+ SearchRequest searchRequest = ldapMessage.getSearchRequest();
+
+ // We can allocate the SearchRequest
+ Filter notFilter = new NotFilter();
+
+ // Set the filter
+ searchRequest.addCurrentFilter( notFilter );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize NOT filter" );
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitOrFilterAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitOrFilterAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitOrFilterAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitOrFilterAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.Filter;
+import org.apache.directory.shared.ldap.codec.search.OrFilter;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the OR filter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitOrFilterAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitOrFilterAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitOrFilterAction()
+ {
+ super( "Initialize OR filter" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+
+ if ( tlv.getLength() == 0 )
+ {
+ log.error( "The Or filter PDU must not be empty" );
+ throw new DecoderException( "The Or filter PDU must not be empty" );
+ }
+
+ SearchRequest searchRequest = ldapMessage.getSearchRequest();
+
+ // We can allocate the SearchRequest
+ Filter orFilter = new OrFilter();
+
+ // Set the filter
+ searchRequest.addCurrentFilter( orFilter );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize OR filter" );
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitPresentFilterAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitPresentFilterAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitPresentFilterAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitPresentFilterAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.PresentFilter;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+import org.apache.directory.shared.ldap.util.StringTools;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the Present filter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitPresentFilterAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitPresentFilterAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitPresentFilterAction()
+ {
+ super( "Init present filter Value" );
+ }
+
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+ SearchRequest searchRequest = ldapMessage.getSearchRequest();
+
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+
+ // We can allocate the Attribute Value Assertion
+ PresentFilter presentFilter = new PresentFilter();
+
+ // add the filter to the request filter
+ searchRequest.addCurrentFilter( presentFilter );
+ searchRequest.setTerminalFilter( presentFilter );
+
+ String value = StringTools.utf8ToString( tlv.getValue().getData() );
+
+ if ( StringTools.isEmpty( value ) )
+ {
+ presentFilter.setAttributeDescription( "" );
+ }
+ else
+ {
+ // Store the value.
+ String type = StringTools.utf8ToString( tlv.getValue().getData() );
+ presentFilter.setAttributeDescription( type );
+ }
+
+ // We now have to get back to the nearest filter which is
+ // not terminal.
+ searchRequest.unstackFilters( container );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize Present filter" );
+ }
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitReferralsAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitReferralsAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitReferralsAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitReferralsAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.LdapResponse;
+import org.apache.directory.shared.ldap.codec.LdapResult;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to init referrals to a LdapTresult
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitReferralsAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitReferralsAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitReferralsAction()
+ {
+ super( "Init the referrals list" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+ LdapResponse response = ldapMessage.getLdapResponse();
+ LdapResult ldapResult = response.getLdapResult();
+
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+
+ // If we hae a Referrals sequence, then it should not be empty
+ // sasl credentials
+ if ( tlv.getLength() == 0 )
+ {
+ String msg = "The Referrals must not be null";
+ log.error( msg );
+
+ // This will generate a PROTOCOL_ERROR
+ throw new DecoderException( msg );
+ }
+
+ if ( IS_DEBUG)
+ {
+ log.debug( "Initialising a referrals list" );
+ }
+
+ ldapResult.initReferrals();
+ }
+}
Added: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitSubstringsFilterAction.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitSubstringsFilterAction.java?view=auto&rev=451836
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitSubstringsFilterAction.java (added)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/InitSubstringsFilterAction.java Sun Oct 1 16:07:44 2006
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.directory.shared.ldap.codec.actions;
+
+
+import org.apache.directory.shared.asn1.ber.IAsn1Container;
+import org.apache.directory.shared.asn1.ber.grammar.GrammarAction;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
+import org.apache.directory.shared.asn1.codec.DecoderException;
+import org.apache.directory.shared.ldap.codec.LdapMessage;
+import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.search.Filter;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
+import org.apache.directory.shared.ldap.codec.search.SubstringFilter;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The action used to initialize the Substrings filter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class InitSubstringsFilterAction extends GrammarAction
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( InitSubstringsFilterAction.class );
+
+ /** Speedup for logs */
+ private static final boolean IS_DEBUG = log.isDebugEnabled();
+
+ public InitSubstringsFilterAction()
+ {
+ super( "Initialize Substrings filter" );
+ }
+
+ /**
+ * The initialization action
+ */
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+ SearchRequest searchRequest = ldapMessage.getSearchRequest();
+
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+
+ int expectedLength = tlv.getLength();
+
+ if ( expectedLength == 0 )
+ {
+ log.error( "The Substring filter PDU must not be empty" );
+ throw new DecoderException( "The Substring filter PDU must not be empty" );
+ }
+
+ // We can allocate the SearchRequest
+ Filter substringFilter = new SubstringFilter();
+
+ searchRequest.addCurrentFilter( substringFilter );
+ searchRequest.setTerminalFilter( substringFilter );
+
+ // As this is a new Constructed object, we have to init its
+ // length
+
+ substringFilter.setExpectedLength( expectedLength );
+ substringFilter.setCurrentLength( 0 );
+
+ if ( IS_DEBUG )
+ {
+ log.debug( "Initialize Substrings filter" );
+ }
+ }
+}