You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2006/01/04 07:46:15 UTC
svn commit: r365844 - in /directory/trunk/ldap-common: ./
src/main/java/org/apache/ldap/common/codec/
src/main/java/org/apache/ldap/common/codec/search/controls/
src/main/java/org/apache/ldap/common/message/
Author: akarasulu
Date: Tue Jan 3 22:46:05 2006
New Revision: 365844
URL: http://svn.apache.org/viewcvs?rev=365844&view=rev
Log:
changes ...
o added code that integrates PSearchControl into the servers messages
o now all we have to do is use this info
Added:
directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/ControlDecoder.java (with props)
directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/ControlValueAction.java (with props)
directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/search/controls/PSearchControlDecoder.java (with props)
directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/PersistentSearchControl.java (with props)
Modified:
directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/Control.java
directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/LdapControlGrammar.java
directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/TwixTransformer.java
directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/Control.java
directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/ControlImpl.java
directory/trunk/ldap-common/todo.txt
Modified: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/Control.java
URL: http://svn.apache.org/viewcvs/directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/Control.java?rev=365844&r1=365843&r2=365844&view=diff
==============================================================================
--- directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/Control.java (original)
+++ directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/Control.java Tue Jan 3 22:46:05 2006
@@ -46,6 +46,9 @@
/** Optionnal control value */
private Object controlValue;
+ /** Optionnal control value in encoded form */
+ private byte[] encodedValue;
+
/** The control length */
private transient int controlLength;
@@ -78,7 +81,7 @@
*
* @return The control value
*/
- public byte[] getControlValue()
+ public Object getControlValue()
{
if ( controlValue == null )
{
@@ -90,11 +93,36 @@
}
else
{
- return (byte[])controlValue;
+ return controlValue;
}
}
/**
+ * Set the encoded control value
+ *
+ * @param encodedValue The encoded control value to store
+ */
+ public void setEncodedValue( byte[] encodedValue )
+ {
+ this.encodedValue = encodedValue;
+ }
+
+ /**
+ * Get the raw control encoded bytes
+ *
+ * @return the encoded bytes for the control
+ */
+ public byte[] getEnodedValue()
+ {
+ if ( encodedValue == null )
+ {
+ return EMPTY_BYTES;
+ }
+
+ return encodedValue;
+ }
+
+ /**
* Set the control value
*
* @param controlValue The control value to store
@@ -155,12 +183,33 @@
// The control value, if any
if (controlValue != null)
{
- controlLength += 1 + Length.getNbBytes( getControlValue().length ) + getControlValue().length;
+ byte[] controlBytes;
+ if ( controlValue instanceof byte[] )
+ {
+ controlBytes = ( byte[] ) controlValue;
+ controlLength += 1 + Length.getNbBytes( controlBytes.length ) + controlBytes.length;
+ }
+ else if ( controlValue instanceof String )
+ {
+ controlBytes = StringTools.getBytesUtf8( ( String ) controlValue );
+ controlLength += 1 + Length.getNbBytes( controlBytes.length ) + controlBytes.length;
+ }
+ else if ( controlValue instanceof Asn1Object )
+ {
+ int length = ( ( Asn1Object ) controlValue ).computeLength();
+ controlLength += 1 + Length.getNbBytes( length ) + length;
+ }
+ else
+ {
+ throw new IllegalStateException( "Don't know how to handle control value class "
+ + controlValue.getClass() );
+ }
}
return 1 + Length.getNbBytes( controlLength ) + controlLength;
}
+
/**
* Generate the PDU which contains the Control.
*
@@ -201,7 +250,29 @@
// The control value, if any
if ( controlValue != null )
{
- Value.encode( buffer, getControlValue() );
+ byte[] controlBytes;
+ if ( controlValue instanceof byte[] )
+ {
+ controlBytes = ( byte[] ) controlValue;
+ encodedValue = controlBytes;
+ }
+ else if ( controlValue instanceof String )
+ {
+ controlBytes = StringTools.getBytesUtf8( ( String ) controlValue );
+ encodedValue = controlBytes;
+ }
+ else if ( controlValue instanceof Asn1Object )
+ {
+ controlBytes = ( ( Asn1Object ) controlValue ).encode( null ).array();
+ encodedValue = controlBytes;
+ }
+ else
+ {
+ throw new IllegalStateException( "Don't know how to handle control value class "
+ + controlValue.getClass() );
+ }
+
+ Value.encode( buffer, controlBytes );
}
return buffer;
Added: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/ControlDecoder.java
URL: http://svn.apache.org/viewcvs/directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/ControlDecoder.java?rev=365844&view=auto
==============================================================================
--- directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/ControlDecoder.java (added)
+++ directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/ControlDecoder.java Tue Jan 3 22:46:05 2006
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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.ldap.common.codec;
+
+import org.apache.asn1.Asn1Object;
+import org.apache.asn1.codec.DecoderException;
+
+
+/**
+ * An interface for decoders of controls.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public interface ControlDecoder
+{
+ /**
+ * The control type this decoder decodes.
+ *
+ * @return the control type (an OID string)
+ */
+ String getControlType();
+
+ /**
+ * Decodes raw ASN.1 encoded bytes into an Asn1Object for the control.
+ *
+ * @param controlBytes the encoded control bytes
+ * @return the decoded Asn1Object for the control
+ * @throws DecoderException if anything goes wrong
+ */
+ Asn1Object decode( byte[] controlBytes ) throws DecoderException;
+}
Propchange: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/ControlDecoder.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/ControlValueAction.java
URL: http://svn.apache.org/viewcvs/directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/ControlValueAction.java?rev=365844&view=auto
==============================================================================
--- directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/ControlValueAction.java (added)
+++ directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/ControlValueAction.java Tue Jan 3 22:46:05 2006
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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.ldap.common.codec;
+
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.asn1.ber.IAsn1Container;
+import org.apache.asn1.ber.grammar.GrammarAction;
+import org.apache.asn1.ber.tlv.TLV;
+import org.apache.asn1.ber.tlv.Value;
+import org.apache.asn1.codec.DecoderException;
+import org.apache.ldap.common.codec.search.controls.PSearchControlDecoder;
+import org.apache.ldap.common.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 );
+ private static Map controlDecoders = new HashMap();
+
+
+ public ControlValueAction()
+ {
+ super( "Sets the control value" );
+ PSearchControlDecoder decoder = new PSearchControlDecoder();
+ controlDecoders.put( decoder.getControlType(), decoder );
+ }
+
+
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
+ LdapMessage ldapMessage = ldapMessageContainer.getLdapMessage();
+ TLV tlv = ldapMessageContainer.getCurrentTLV();
+
+ // Get the current control
+ Control control = ldapMessage.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().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 );
+ }
+
+ if ( log.isDebugEnabled() )
+ {
+ 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() );
+ }
+ }
+ }
+}
Propchange: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/ControlValueAction.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/LdapControlGrammar.java
URL: http://svn.apache.org/viewcvs/directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/LdapControlGrammar.java?rev=365844&r1=365843&r2=365844&view=diff
==============================================================================
--- directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/LdapControlGrammar.java (original)
+++ directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/LdapControlGrammar.java Tue Jan 3 22:46:05 2006
@@ -298,39 +298,6 @@
// controlValue OCTET STRING OPTIONAL } (Value)
// Store the value in the control object created before
super.transitions[LdapStatesEnum.CONTROL_VALUE_VALUE][UniversalTag.OCTET_STRING_TAG] = new GrammarTransition(
- LdapStatesEnum.CONTROL_VALUE_VALUE, LdapStatesEnum.CONTROL_LOOP_OR_END_TAG,
- new GrammarAction( "Set Control value" )
- {
- public void action( IAsn1Container container )
- {
- LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer )
- container;
- LdapMessage ldapMessage =
- ldapMessageContainer.getLdapMessage();
-
- TLV tlv = ldapMessageContainer.getCurrentTLV();
-
- // Get the current control
- Control control = ldapMessage.getCurrentControl();
-
- Value value = tlv.getValue();
-
- // Store the value
- // We have to handle the special case of a 0 length value
- if ( tlv.getLength().getLength() == 0 )
- {
- control.setControlValue( new byte[]{} );
- }
- else
- {
- control.setControlValue( value.getData() );
- }
-
- if ( log.isDebugEnabled() )
- {
- log.debug( "Control value : " + StringTools.dumpBytes( control.getControlValue() ) );
- }
- }
- });
+ LdapStatesEnum.CONTROL_VALUE_VALUE, LdapStatesEnum.CONTROL_LOOP_OR_END_TAG, new ControlValueAction() );
}
}
Modified: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/TwixTransformer.java
URL: http://svn.apache.org/viewcvs/directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/TwixTransformer.java?rev=365844&r1=365843&r2=365844&view=diff
==============================================================================
--- directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/TwixTransformer.java (original)
+++ directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/TwixTransformer.java Tue Jan 3 22:46:05 2006
@@ -60,6 +60,7 @@
import org.apache.ldap.common.codec.search.SearchResultEntry;
import org.apache.ldap.common.codec.search.SearchResultReference;
import org.apache.ldap.common.codec.search.SubstringFilter;
+import org.apache.ldap.common.codec.search.controls.PSearchControl;
import org.apache.ldap.common.codec.util.LdapDN;
import org.apache.ldap.common.codec.util.LdapString;
import org.apache.ldap.common.codec.util.LdapStringEncodingException;
@@ -93,6 +94,7 @@
import org.apache.ldap.common.message.ModifyDnResponseImpl;
import org.apache.ldap.common.message.ModifyRequestImpl;
import org.apache.ldap.common.message.ModifyResponseImpl;
+import org.apache.ldap.common.message.PersistentSearchControl;
import org.apache.ldap.common.message.Referral;
import org.apache.ldap.common.message.ReferralImpl;
import org.apache.ldap.common.message.ScopeEnum;
@@ -676,30 +678,45 @@
while ( controls.hasNext() )
{
+ ControlImpl neutralControl = null;
Control twixControl = (Control)controls.next();
-
- ControlImpl snickersControl = new ControlImpl( snickersMessage )
+
+ if ( twixControl.getControlValue() instanceof PSearchControl )
+ {
+ PersistentSearchControl neutralPsearch = new PersistentSearchControl();
+ neutralControl = neutralPsearch;
+ PSearchControl twixPsearch = ( PSearchControl ) twixControl.getControlValue();
+ neutralPsearch.setChangeTypes( twixPsearch.getChangeTypes() );
+ neutralPsearch.setChangesOnly( twixPsearch.isChangesOnly() );
+ neutralPsearch.setReturnECs( twixPsearch.isReturnECs() );
+ neutralPsearch.setCritical( twixControl.getCriticality() );
+ neutralPsearch.setValue( twixControl.getEnodedValue() );
+ }
+ else if ( twixControl.getControlValue() instanceof byte[] )
{
- // Just to avoid a compilation warning !!!
- public static final long serialVersionUID = 1L;
-
-
- public byte[] getEncodedValue()
+ neutralControl = new ControlImpl( snickersMessage )
{
- return null;
- }
- };
-
- // Twix : boolean criticality -> Snickers : boolean m_isCritical
- snickersControl.setCritical( twixControl.getCriticality() );
-
- // Twix : OID controlType -> Snickers : String m_oid
- snickersControl.setType( twixControl.getControlType() );
-
- // Twix : OctetString controlValue -> Snickers : byte [] m_value
- snickersControl.setValue( twixControl.getControlValue() );
-
- snickersMessage.add( snickersControl );
+ // Just to avoid a compilation warning !!!
+ public static final long serialVersionUID = 1L;
+
+
+ public byte[] getEncodedValue()
+ {
+ return null;
+ }
+ };
+
+ // Twix : boolean criticality -> Snickers : boolean m_isCritical
+ neutralControl.setCritical( twixControl.getCriticality() );
+
+ // Twix : OID controlType -> Snickers : String m_oid
+ neutralControl.setType( twixControl.getControlType() );
+
+ // Twix : OctetString controlValue -> Snickers : byte [] m_value
+ neutralControl.setValue( ( byte[] ) twixControl.getControlValue() );
+ }
+
+ snickersMessage.add( neutralControl );
}
}
Added: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/search/controls/PSearchControlDecoder.java
URL: http://svn.apache.org/viewcvs/directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/search/controls/PSearchControlDecoder.java?rev=365844&view=auto
==============================================================================
--- directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/search/controls/PSearchControlDecoder.java (added)
+++ directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/search/controls/PSearchControlDecoder.java Tue Jan 3 22:46:05 2006
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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.ldap.common.codec.search.controls;
+
+
+import java.nio.ByteBuffer;
+
+import org.apache.asn1.Asn1Object;
+import org.apache.asn1.ber.Asn1Decoder;
+import org.apache.asn1.codec.DecoderException;
+import org.apache.ldap.common.codec.ControlDecoder;
+
+
+/**
+ * A decoder for PSearchControls.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class PSearchControlDecoder implements ControlDecoder
+{
+ private final static String CONTROL_TYPE_OID = "2.16.840.1.113730.3.4.3";
+
+
+ public String getControlType()
+ {
+ return CONTROL_TYPE_OID;
+ }
+
+
+ public Asn1Object decode(byte[] controlBytes) throws DecoderException
+ {
+ // @todo if Asn1Decoder is reusable and thread safe the we should reuse it
+ // instead of creating a new one every time.
+ Asn1Decoder decoder = new Asn1Decoder();
+ ByteBuffer bb = ByteBuffer.wrap( controlBytes );
+ PSearchControlContainer container = new PSearchControlContainer();
+ decoder.decode( bb, container );
+ return container.getPSearchControl();
+ }
+}
Propchange: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/codec/search/controls/PSearchControlDecoder.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/Control.java
URL: http://svn.apache.org/viewcvs/directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/Control.java?rev=365844&r1=365843&r2=365844&view=diff
==============================================================================
--- directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/Control.java (original)
+++ directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/Control.java Tue Jan 3 22:46:05 2006
@@ -38,9 +38,9 @@
/**
* Sets the OID of the Control to identify the control type.
*
- * @param a_oid the OID of this Control.
+ * @param oid the OID of this Control.
*/
- void setType( String a_oid ) ;
+ void setType( String oid ) ;
/**
* Gets the ASN.1 BER encoded value of the control which would have its own
@@ -54,9 +54,9 @@
* Sets the ASN.1 BER encoded value of the control which would have its own
* custom ASN.1 defined structure based on the nature of the control.
*
- * @param a_value ASN.1 BER encoded value as binary data.
+ * @param value ASN.1 BER encoded value as binary data.
*/
- void setValue( byte [] a_value ) ;
+ void setValue( byte [] value ) ;
/**
* Determines whether or not this control is critical for the correct
@@ -72,7 +72,7 @@
* critical for the correct operation of a request or response message. The
* default for this value should be false.
*
- * @param a_isCritical true if the control is critical false otherwise.
+ * @param isCritical true if the control is critical false otherwise.
*/
- void setCritical( boolean a_isCritical ) ;
+ void setCritical( boolean isCritical ) ;
}
Modified: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/ControlImpl.java
URL: http://svn.apache.org/viewcvs/directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/ControlImpl.java?rev=365844&r1=365843&r2=365844&view=diff
==============================================================================
--- directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/ControlImpl.java (original)
+++ directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/ControlImpl.java Tue Jan 3 22:46:05 2006
@@ -30,11 +30,11 @@
public abstract class ControlImpl extends AbstractLockable implements Control
{
/** Unique object identifier for this control */
- private String m_oid ;
+ private String oid ;
/** Control ASN.1 encoded parameters */
- private byte [] m_value ;
+ private byte [] value ;
/** Flag for control criticality */
- private boolean m_isCritical ;
+ private boolean isCritical ;
private String id;
@@ -47,11 +47,11 @@
* Creates a non-root Lockable Control implementation whose state is
* overriden by a parent Lockable.
*
- * @param a_parent the overriding parent Lockable.
+ * @param parent the overriding parent Lockable.
*/
- public ControlImpl( final Lockable a_parent )
+ public ControlImpl( final Lockable parent )
{
- super( a_parent, false ) ;
+ super( parent, false ) ;
}
@@ -79,7 +79,7 @@
*/
public boolean isCritical()
{
- return m_isCritical ;
+ return this.isCritical ;
}
@@ -88,12 +88,12 @@
* critical for the correct operation of a request or response message. The
* default for this value should be false.
*
- * @param a_isCritical true if the control is critical false otherwise.
+ * @param isCritical true if the control is critical false otherwise.
*/
- public void setCritical( boolean a_isCritical )
+ public void setCritical( boolean isCritical )
{
lockCheck( "Attempt to alter criticality flag of locked Control!" ) ;
- m_isCritical = a_isCritical ;
+ this.isCritical = isCritical ;
}
@@ -104,19 +104,19 @@
*/
public String getType()
{
- return m_oid ;
+ return this.oid ;
}
/**
* Sets the OID of the Control to identify the control type.
*
- * @param a_oid the OID of this Control.
+ * @param oid the OID of this Control.
*/
- public void setType( String a_oid )
+ public void setType( String oid )
{
lockCheck( "Attempt to alter OID of locked Control!" ) ;
- m_oid = a_oid ;
+ this.oid = oid ;
}
@@ -128,7 +128,7 @@
*/
public byte [] getValue()
{
- return m_value ;
+ return this.value ;
}
@@ -136,12 +136,12 @@
* Sets the ASN.1 BER encoded value of the control which would have its own
* custom ASN.1 defined structure based on the nature of the control.
*
- * @param a_value ASN.1 BER encoded value as binary data.
+ * @param value ASN.1 BER encoded value as binary data.
*/
- public void setValue( byte [] a_value )
+ public void setValue( byte [] value )
{
lockCheck( "Attempt to alter encoded values of locked Control!" ) ;
- m_value = a_value ;
+ this.value = value ;
}
Added: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/PersistentSearchControl.java
URL: http://svn.apache.org/viewcvs/directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/PersistentSearchControl.java?rev=365844&view=auto
==============================================================================
--- directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/PersistentSearchControl.java (added)
+++ directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/PersistentSearchControl.java Tue Jan 3 22:46:05 2006
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.ldap.common.message;
+
+
+/**
+ * The control for a persistent search operation.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class PersistentSearchControl extends ControlImpl
+{
+ private static final long serialVersionUID = -2356861450876343999L;
+
+ /**
+ * If changesOnly is TRUE, the server MUST NOT return any existing
+ * entries that match the search criteria. Entries are only
+ * returned when they are changed (added, modified, deleted, or
+ * subject to a modifyDN operation).
+ */
+ private boolean changesOnly;
+
+ /**
+ * If returnECs is TRUE, the server MUST return an Entry Change
+ * Notification control with each entry returned as the result of
+ * changes.
+ */
+ private boolean returnECs;
+
+ /**
+ * As changes are made to the server, the effected entries MUST be
+ * returned to the client if they match the standard search cri-
+ * teria and if the operation that caused the change is included in
+ * the changeTypes field. The changeTypes field is the logical OR
+ * of one or more of these values: add (1), delete (2), modify (4),
+ * modDN (8).
+ */
+ private int changeTypes;
+
+
+ public byte[] getEncodedValue()
+ {
+ return null;
+ }
+
+
+ public void setChangesOnly( boolean changesOnly )
+ {
+ this.changesOnly = changesOnly;
+ }
+
+
+ public boolean isChangesOnly()
+ {
+ return changesOnly;
+ }
+
+
+ public void setReturnECs( boolean returnECs )
+ {
+ this.returnECs = returnECs;
+ }
+
+
+ public boolean isReturnECs()
+ {
+ return returnECs;
+ }
+
+
+ public void setChangeTypes( int changeTypes )
+ {
+ this.changeTypes = changeTypes;
+ }
+
+
+ public int getChangeTypes()
+ {
+ return changeTypes;
+ }
+}
Propchange: directory/trunk/ldap-common/src/main/java/org/apache/ldap/common/message/PersistentSearchControl.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: directory/trunk/ldap-common/todo.txt
URL: http://svn.apache.org/viewcvs/directory/trunk/ldap-common/todo.txt?rev=365844&r1=365843&r2=365844&view=diff
==============================================================================
--- directory/trunk/ldap-common/todo.txt (original)
+++ directory/trunk/ldap-common/todo.txt Tue Jan 3 22:46:05 2006
@@ -5,8 +5,5 @@
o reduce footprint
o remove old provider architecture structures since we now have only one
asn1 provider library
- o make sure logging properties files are being picked up for tests
o delete unneeded tag transitions that don't have actions
o remove Assert.assertXXX lines in test cases
- o move out GrammarAction for LdapControlGrammar into its own class and setup
- an extension point where we can plugin different control codec extensions