You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2010/02/01 16:04:20 UTC
svn commit: r905297 [3/7] - in /directory:
apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/event/
apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/interceptor/context/
apacheds/trunk/core-api/src/main/java/o...
Modified: directory/shared/trunk/dsml-parser/src/test/java/org/apache/directory/shared/dsmlv2/searchResponse/searchResultDone/SearchResultDoneTest.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/dsml-parser/src/test/java/org/apache/directory/shared/dsmlv2/searchResponse/searchResultDone/SearchResultDoneTest.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/dsml-parser/src/test/java/org/apache/directory/shared/dsmlv2/searchResponse/searchResultDone/SearchResultDoneTest.java (original)
+++ directory/shared/trunk/dsml-parser/src/test/java/org/apache/directory/shared/dsmlv2/searchResponse/searchResultDone/SearchResultDoneTest.java Mon Feb 1 15:04:10 2010
@@ -32,8 +32,8 @@
import org.apache.directory.shared.dsmlv2.AbstractResponseTest;
import org.apache.directory.shared.dsmlv2.Dsmlv2ResponseParser;
import org.apache.directory.shared.dsmlv2.reponse.SearchResponse;
-import org.apache.directory.shared.ldap.codec.ControlCodec;
import org.apache.directory.shared.ldap.codec.LdapResultCodec;
+import org.apache.directory.shared.ldap.codec.controls.CodecControl;
import org.apache.directory.shared.ldap.codec.search.SearchResultDoneCodec;
import org.apache.directory.shared.ldap.codec.util.LdapURLEncodingException;
import org.apache.directory.shared.ldap.message.ResultCodeEnum;
@@ -76,13 +76,13 @@
assertEquals( 1, searchResultDone.getControls().size() );
- ControlCodec control = searchResultDone.getCurrentControl();
+ CodecControl control = searchResultDone.getCurrentControl();
- assertTrue( control.getCriticality() );
+ assertTrue( control.isCritical() );
- assertEquals( "1.2.840.113556.1.4.643", control.getControlType() );
+ assertEquals( "1.2.840.113556.1.4.643", control.getOid() );
- assertEquals( "Some text", StringTools.utf8ToString( ( byte[] ) control.getControlValue() ) );
+ assertEquals( "Some text", StringTools.utf8ToString( ( byte[] ) control.getValue() ) );
}
@@ -109,12 +109,12 @@
SearchResultDoneCodec searchResultDone = ( ( SearchResponse ) parser.getBatchResponse().getCurrentResponse() )
.getSearchResultDone();
- ControlCodec control = searchResultDone.getCurrentControl();
+ CodecControl control = searchResultDone.getCurrentControl();
assertEquals( 1, searchResultDone.getControls().size() );
- assertTrue( control.getCriticality() );
- assertEquals( "1.2.840.113556.1.4.643", control.getControlType() );
- assertEquals( StringTools.EMPTY_BYTES, ( byte[] ) control.getControlValue() );
+ assertTrue( control.isCritical() );
+ assertEquals( "1.2.840.113556.1.4.643", control.getOid() );
+ assertFalse( control.hasValue() );
}
@@ -144,13 +144,13 @@
assertEquals( 2, searchResultDone.getControls().size() );
- ControlCodec control = searchResultDone.getCurrentControl();
+ CodecControl control = searchResultDone.getCurrentControl();
- assertFalse( control.getCriticality() );
+ assertFalse( control.isCritical() );
- assertEquals( "1.2.840.113556.1.4.789", control.getControlType() );
+ assertEquals( "1.2.840.113556.1.4.789", control.getOid() );
- assertEquals( "Some other text", StringTools.utf8ToString( ( byte[] ) control.getControlValue() ) );
+ assertEquals( "Some other text", StringTools.utf8ToString( ( byte[] ) control.getValue() ) );
}
@@ -180,13 +180,13 @@
assertEquals( 3, searchResultDone.getControls().size() );
- ControlCodec control = searchResultDone.getCurrentControl();
+ CodecControl control = searchResultDone.getCurrentControl();
- assertTrue( control.getCriticality() );
+ assertTrue( control.isCritical() );
- assertEquals( "1.2.840.113556.1.4.456", control.getControlType() );
+ assertEquals( "1.2.840.113556.1.4.456", control.getOid() );
- assertEquals( StringTools.EMPTY_BYTES, control.getControlValue() );
+ assertFalse( control.hasValue() );
}
Modified: directory/shared/trunk/dsml-parser/src/test/java/org/apache/directory/shared/dsmlv2/searchResponse/searchResultEntry/SearchResultEntryTest.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/dsml-parser/src/test/java/org/apache/directory/shared/dsmlv2/searchResponse/searchResultEntry/SearchResultEntryTest.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/dsml-parser/src/test/java/org/apache/directory/shared/dsmlv2/searchResponse/searchResultEntry/SearchResultEntryTest.java (original)
+++ directory/shared/trunk/dsml-parser/src/test/java/org/apache/directory/shared/dsmlv2/searchResponse/searchResultEntry/SearchResultEntryTest.java Mon Feb 1 15:04:10 2010
@@ -21,23 +21,24 @@
package org.apache.directory.shared.dsmlv2.searchResponse.searchResultEntry;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import org.apache.directory.shared.dsmlv2.AbstractResponseTest;
import org.apache.directory.shared.dsmlv2.Dsmlv2ResponseParser;
import org.apache.directory.shared.dsmlv2.reponse.SearchResponse;
-import org.apache.directory.shared.ldap.codec.ControlCodec;
+import org.apache.directory.shared.ldap.codec.controls.CodecControl;
import org.apache.directory.shared.ldap.codec.search.SearchResultEntryCodec;
import org.apache.directory.shared.ldap.entry.Entry;
import org.apache.directory.shared.ldap.entry.EntryAttribute;
import org.apache.directory.shared.ldap.entry.Value;
import org.apache.directory.shared.ldap.util.StringTools;
import org.junit.Test;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.junit.Assert.assertFalse;
/**
* Tests for the Search Result Entry Response parsing
@@ -73,13 +74,13 @@
assertEquals( 1, searchResultEntry.getControls().size() );
- ControlCodec control = searchResultEntry.getCurrentControl();
+ CodecControl control = searchResultEntry.getCurrentControl();
- assertTrue( control.getCriticality() );
+ assertTrue( control.isCritical() );
- assertEquals( "1.2.840.113556.1.4.643", control.getControlType() );
+ assertEquals( "1.2.840.113556.1.4.643", control.getOid() );
- assertEquals( "Some text", StringTools.utf8ToString( ( byte[] ) control.getControlValue() ) );
+ assertEquals( "Some text", StringTools.utf8ToString( ( byte[] ) control.getValue() ) );
}
@@ -106,12 +107,12 @@
SearchResultEntryCodec searchResultEntry = ( ( SearchResponse ) parser.getBatchResponse().getCurrentResponse() )
.getCurrentSearchResultEntry();
- ControlCodec control = searchResultEntry.getCurrentControl();
+ CodecControl control = searchResultEntry.getCurrentControl();
assertEquals( 1, searchResultEntry.getControls().size() );
- assertTrue( control.getCriticality() );
- assertEquals( "1.2.840.113556.1.4.643", control.getControlType() );
- assertEquals( StringTools.EMPTY_BYTES, ( byte[] ) control.getControlValue() );
+ assertTrue( control.isCritical() );
+ assertEquals( "1.2.840.113556.1.4.643", control.getOid() );
+ assertFalse( control.hasValue() );
}
@@ -141,13 +142,13 @@
assertEquals( 2, searchResultEntry.getControls().size() );
- ControlCodec control = searchResultEntry.getCurrentControl();
+ CodecControl control = searchResultEntry.getCurrentControl();
- assertFalse( control.getCriticality() );
+ assertFalse( control.isCritical() );
- assertEquals( "1.2.840.113556.1.4.789", control.getControlType() );
+ assertEquals( "1.2.840.113556.1.4.789", control.getOid() );
- assertEquals( "Some other text", StringTools.utf8ToString( ( byte[] ) control.getControlValue() ) );
+ assertEquals( "Some other text", StringTools.utf8ToString( ( byte[] ) control.getValue() ) );
}
@@ -177,13 +178,13 @@
assertEquals( 3, searchResultEntry.getControls().size() );
- ControlCodec control = searchResultEntry.getCurrentControl();
+ CodecControl control = searchResultEntry.getCurrentControl();
- assertTrue( control.getCriticality() );
+ assertTrue( control.isCritical() );
- assertEquals( "1.2.840.113556.1.4.456", control.getControlType() );
+ assertEquals( "1.2.840.113556.1.4.456", control.getOid() );
- assertEquals( StringTools.EMPTY_BYTES, control.getControlValue() );
+ assertFalse( control.hasValue() );
}
Modified: directory/shared/trunk/dsml-parser/src/test/java/org/apache/directory/shared/dsmlv2/searchResponse/searchResultReference/SearchResultReferenceTest.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/dsml-parser/src/test/java/org/apache/directory/shared/dsmlv2/searchResponse/searchResultReference/SearchResultReferenceTest.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/dsml-parser/src/test/java/org/apache/directory/shared/dsmlv2/searchResponse/searchResultReference/SearchResultReferenceTest.java (original)
+++ directory/shared/trunk/dsml-parser/src/test/java/org/apache/directory/shared/dsmlv2/searchResponse/searchResultReference/SearchResultReferenceTest.java Mon Feb 1 15:04:10 2010
@@ -21,21 +21,22 @@
package org.apache.directory.shared.dsmlv2.searchResponse.searchResultReference;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.util.List;
import org.apache.directory.shared.dsmlv2.AbstractResponseTest;
import org.apache.directory.shared.dsmlv2.Dsmlv2ResponseParser;
import org.apache.directory.shared.dsmlv2.reponse.SearchResponse;
-import org.apache.directory.shared.ldap.codec.ControlCodec;
+import org.apache.directory.shared.ldap.codec.controls.CodecControl;
import org.apache.directory.shared.ldap.codec.search.SearchResultReferenceCodec;
-import org.apache.directory.shared.ldap.util.LdapURL;
import org.apache.directory.shared.ldap.codec.util.LdapURLEncodingException;
+import org.apache.directory.shared.ldap.util.LdapURL;
import org.apache.directory.shared.ldap.util.StringTools;
import org.junit.Test;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.junit.Assert.assertFalse;
/**
* Tests for the Search Result Reference Response parsing
@@ -71,13 +72,13 @@
assertEquals( 1, searchResultReference.getControls().size() );
- ControlCodec control = searchResultReference.getCurrentControl();
+ CodecControl control = searchResultReference.getCurrentControl();
- assertTrue( control.getCriticality() );
+ assertTrue( control.isCritical() );
- assertEquals( "1.2.840.113556.1.4.643", control.getControlType() );
+ assertEquals( "1.2.840.113556.1.4.643", control.getOid() );
- assertEquals( "Some text", StringTools.utf8ToString( ( byte[] ) control.getControlValue() ) );
+ assertEquals( "Some text", StringTools.utf8ToString( ( byte[] ) control.getValue() ) );
}
@@ -107,13 +108,13 @@
assertEquals( 1, searchResultReference.getControls().size() );
- ControlCodec control = searchResultReference.getCurrentControl();
+ CodecControl control = searchResultReference.getCurrentControl();
- assertTrue( control.getCriticality() );
+ assertTrue( control.isCritical() );
- assertEquals( "1.2.840.113556.1.4.643", control.getControlType() );
+ assertEquals( "1.2.840.113556.1.4.643", control.getOid() );
- assertEquals( StringTools.EMPTY_BYTES, ( byte[] ) control.getControlValue() );
+ assertFalse( control.hasValue() );
}
@@ -143,13 +144,13 @@
assertEquals( 2, searchResultReference.getControls().size() );
- ControlCodec control = searchResultReference.getCurrentControl();
+ CodecControl control = searchResultReference.getCurrentControl();
- assertFalse( control.getCriticality() );
+ assertFalse( control.isCritical() );
- assertEquals( "1.2.840.113556.1.4.789", control.getControlType() );
+ assertEquals( "1.2.840.113556.1.4.789", control.getOid() );
- assertEquals( "Some other text", StringTools.utf8ToString( ( byte[] ) control.getControlValue() ) );
+ assertEquals( "Some other text", StringTools.utf8ToString( ( byte[] ) control.getValue() ) );
}
@@ -179,13 +180,13 @@
assertEquals( 3, searchResultReference.getControls().size() );
- ControlCodec control = searchResultReference.getCurrentControl();
+ CodecControl control = searchResultReference.getCurrentControl();
- assertTrue( control.getCriticality() );
+ assertTrue( control.isCritical() );
- assertEquals( "1.2.840.113556.1.4.456", control.getControlType() );
+ assertEquals( "1.2.840.113556.1.4.456", control.getOid() );
- assertEquals( StringTools.EMPTY_BYTES, control.getControlValue() );
+ assertFalse( control.hasValue() );
}
Modified: directory/shared/trunk/ldap-jndi/src/main/java/org/apache/directory/shared/ldap/jndi/JndiUtils.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap-jndi/src/main/java/org/apache/directory/shared/ldap/jndi/JndiUtils.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap-jndi/src/main/java/org/apache/directory/shared/ldap/jndi/JndiUtils.java (original)
+++ directory/shared/trunk/ldap-jndi/src/main/java/org/apache/directory/shared/ldap/jndi/JndiUtils.java Mon Feb 1 15:04:10 2010
@@ -22,8 +22,9 @@
import javax.naming.NamingException;
import javax.naming.ldap.BasicControl;
+import org.apache.directory.shared.ldap.codec.controls.CodecControl;
+import org.apache.directory.shared.ldap.codec.controls.CodecControlImpl;
import org.apache.directory.shared.ldap.message.control.Control;
-import org.apache.directory.shared.ldap.message.control.ControlImpl;
/**
* An utility class to convert back and forth JNDI classes to ADS classes.
@@ -35,7 +36,7 @@
{
public static javax.naming.ldap.Control toJndiControl( Control control )
{
- byte[] value = control.getValue();
+ byte[] value = ((CodecControl)control).getValue();
javax.naming.ldap.Control jndiControl = new BasicControl( control.getOid(), control.isCritical(), value );
return jndiControl;
@@ -65,9 +66,8 @@
public static Control fromJndiControl( javax.naming.ldap.Control jndiControl )
{
- Control control = new ControlImpl( jndiControl.getID() );
+ Control control = new CodecControlImpl( jndiControl.getID() );
- control.setOid( jndiControl.getID() );
control.setValue( jndiControl.getEncodedValue() );
return control;
Modified: directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifControl.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifControl.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifControl.java (original)
+++ directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifControl.java Mon Feb 1 15:04:10 2010
@@ -20,7 +20,7 @@
package org.apache.directory.shared.ldap.ldif;
-import org.apache.directory.shared.ldap.message.control.AbstractControl;
+import org.apache.directory.shared.ldap.codec.controls.AbstractControlCodec;
import org.apache.directory.shared.ldap.util.StringTools;
/**
@@ -30,15 +30,14 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$, $Date$
*/
-public class LdifControl extends AbstractControl
+public class LdifControl extends AbstractControlCodec
{
private static final long serialVersionUID = 1L;
/**
* Create a new Control
*
- * @param oid
- * OID of the created control
+ * @param oid OID of the created control
*/
public LdifControl( String oid )
{
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageCodec.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageCodec.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageCodec.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageCodec.java Mon Feb 1 15:04:10 2010
@@ -22,9 +22,10 @@
import java.nio.BufferOverflowException;
import java.nio.ByteBuffer;
-
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.directory.shared.asn1.AbstractAsn1Object;
import org.apache.directory.shared.asn1.Asn1Object;
@@ -39,6 +40,12 @@
import org.apache.directory.shared.ldap.codec.bind.BindResponseCodec;
import org.apache.directory.shared.ldap.codec.compare.CompareRequestCodec;
import org.apache.directory.shared.ldap.codec.compare.CompareResponseCodec;
+import org.apache.directory.shared.ldap.codec.controls.CodecControl;
+import org.apache.directory.shared.ldap.codec.controls.ManageDsaITControlCodec;
+import org.apache.directory.shared.ldap.codec.controls.replication.syncDoneValue.SyncDoneValueControlCodec;
+import org.apache.directory.shared.ldap.codec.controls.replication.syncInfoValue.SyncInfoValueControlCodec;
+import org.apache.directory.shared.ldap.codec.controls.replication.syncRequestValue.SyncRequestValueControlCodec;
+import org.apache.directory.shared.ldap.codec.controls.replication.syncStateValue.SyncStateValueControlCodec;
import org.apache.directory.shared.ldap.codec.del.DelRequestCodec;
import org.apache.directory.shared.ldap.codec.del.DelResponseCodec;
import org.apache.directory.shared.ldap.codec.extended.ExtendedRequestCodec;
@@ -52,7 +59,11 @@
import org.apache.directory.shared.ldap.codec.search.SearchResultDoneCodec;
import org.apache.directory.shared.ldap.codec.search.SearchResultEntryCodec;
import org.apache.directory.shared.ldap.codec.search.SearchResultReferenceCodec;
+import org.apache.directory.shared.ldap.codec.search.controls.pagedSearch.PagedResultsControlCodec;
+import org.apache.directory.shared.ldap.codec.search.controls.persistentSearch.PersistentSearchControlCodec;
+import org.apache.directory.shared.ldap.codec.search.controls.subentries.SubentriesControlCodec;
import org.apache.directory.shared.ldap.codec.unbind.UnBindRequestCodec;
+import org.apache.directory.shared.ldap.message.control.replication.SynchronizationInfoEnum;
/**
@@ -74,10 +85,10 @@
private Asn1Object protocolOp;
/** The controls */
- private List<ControlCodec> controls;
+ private List<CodecControl> controls;
/** The current control */
- private ControlCodec currentControl;
+ private CodecControl currentControl;
/** The LdapMessage length */
private int ldapMessageLength;
@@ -88,6 +99,8 @@
/** The controls sequence length */
private int controlsSequenceLength;
+ private Map<String, CodecControl> codecControls = new HashMap<String,CodecControl>();
+
// ~ Constructors
// -------------------------------------------------------------------------------
@@ -99,6 +112,40 @@
{
super();
// We should not create this kind of object directly
+
+ // Initialize the different known Controls
+ CodecControl control = new PersistentSearchControlCodec();
+ codecControls.put( control.getOid(), control );
+
+ control = new ManageDsaITControlCodec();
+ codecControls.put( control.getOid(), control );
+
+ control = new SubentriesControlCodec();
+ codecControls.put( control.getOid(), control );
+
+ control = new PagedResultsControlCodec();
+ codecControls.put( control.getOid(), control );
+
+ control = new SyncDoneValueControlCodec();
+ codecControls.put( control.getOid(), control );
+
+ control = new SyncInfoValueControlCodec( SynchronizationInfoEnum.NEW_COOKIE );
+ codecControls.put( control.getOid(), control );
+
+ control = new SyncInfoValueControlCodec( SynchronizationInfoEnum.REFRESH_DELETE );
+ codecControls.put( control.getOid(), control );
+
+ control = new SyncInfoValueControlCodec( SynchronizationInfoEnum.REFRESH_PRESENT );
+ codecControls.put( control.getOid(), control );
+
+ control = new SyncInfoValueControlCodec( SynchronizationInfoEnum.SYNC_ID_SET );
+ codecControls.put( control.getOid(), control );
+
+ control = new SyncRequestValueControlCodec();
+ codecControls.put( control.getOid(), control );
+
+ control = new SyncStateValueControlCodec();
+ codecControls.put( control.getOid(), control );
}
@@ -111,7 +158,7 @@
* @param i The index of the Control Object to get
* @return The selected Control Object
*/
- public ControlCodec getControls( int i )
+ public CodecControl getControls( int i )
{
if ( controls != null )
{
@@ -129,7 +176,7 @@
*
* @return The Control Objects
*/
- public List<ControlCodec> getControls()
+ public List<CodecControl> getControls()
{
return controls;
}
@@ -140,10 +187,16 @@
*
* @return The current Control Object
*/
- public ControlCodec getCurrentControl()
+ public CodecControl getCurrentControl()
{
return currentControl;
}
+
+
+ public CodecControl getCodecControl( String oid )
+ {
+ return codecControls.get( oid );
+ }
/**
@@ -151,13 +204,13 @@
*
* @param control The Control to add
*/
- public void addControl( ControlCodec control )
+ public void addControl( CodecControl control )
{
currentControl = control;
if ( controls == null )
{
- controls = new ArrayList<ControlCodec>();
+ controls = new ArrayList<CodecControl>();
}
controls.add( control );
@@ -170,7 +223,7 @@
*
* @param controls The list of Controls to set or add
*/
- public void addControls( List<ControlCodec> controls )
+ public void addControls( List<CodecControl> controls )
{
if( this.controls == null )
{
@@ -188,7 +241,7 @@
*/
public void initControls()
{
- controls = new ArrayList<ControlCodec>();
+ controls = new ArrayList<CodecControl>();
}
@@ -628,7 +681,7 @@
controlsSequenceLength = 0;
// We may have more than one control. ControlsLength is L4.
- for ( ControlCodec control:controls )
+ for ( CodecControl control:controls )
{
controlsSequenceLength += control.computeLength();
}
@@ -657,6 +710,7 @@
* global PDU length
* - second, we produce the PDU.
*
+ * <pre>
* 0x30 L1
* |
* +--> 0x02 L2 MessageId
@@ -666,6 +720,7 @@
* L2 = Length(MessageId)
* L1 = Length(0x02) + Length(L2) + L2 + Length(ProtocolOp) + Length(Controls)
* LdapMessageLength = Length(0x30) + Length(L1) + L1
+ * </pre>
*
* @param buffer The encoded PDU
* @return A ByteBuffer that contaons the PDU
@@ -703,7 +758,7 @@
bb.put( TLV.getBytes( controlsLength ) );
// Encode each control
- for ( ControlCodec control:controls )
+ for ( CodecControl control:controls )
{
control.encode( bb );
}
@@ -728,7 +783,7 @@
if ( controls != null )
{
- for ( ControlCodec control:controls )
+ for ( CodecControl control:controls )
{
sb.append( control );
}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java Mon Feb 1 15:04:10 2010
@@ -21,6 +21,7 @@
import org.apache.directory.shared.asn1.ber.AbstractContainer;
+import org.apache.directory.shared.ldap.codec.controls.AbstractControlCodec;
import org.apache.directory.shared.ldap.message.spi.BinaryAttributeDetector;
@@ -47,7 +48,7 @@
private int messageId;
/** The current control */
- private ControlCodec currentControl;
+ private AbstractControlCodec currentControl;
// ~ Constructors
// -------------------------------------------------------------------------------
@@ -147,7 +148,7 @@
/**
* @return the current control being created
*/
- public ControlCodec getCurrentControl()
+ public AbstractControlCodec getCurrentControl()
{
return currentControl;
}
@@ -156,7 +157,7 @@
* Store a newly created control
* @param currentControl The control to store
*/
- public void setCurrentControl( ControlCodec currentControl )
+ public void setCurrentControl( AbstractControlCodec currentControl )
{
this.currentControl = currentControl;
}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java Mon Feb 1 15:04:10 2010
@@ -79,6 +79,8 @@
import org.apache.directory.shared.ldap.codec.bind.SimpleAuthentication;
import org.apache.directory.shared.ldap.codec.compare.CompareRequestCodec;
import org.apache.directory.shared.ldap.codec.compare.CompareResponseCodec;
+import org.apache.directory.shared.ldap.codec.controls.CodecControl;
+import org.apache.directory.shared.ldap.codec.controls.CodecControlImpl;
import org.apache.directory.shared.ldap.codec.del.DelRequestCodec;
import org.apache.directory.shared.ldap.codec.del.DelResponseCodec;
import org.apache.directory.shared.ldap.codec.extended.ExtendedRequestCodec;
@@ -3470,7 +3472,6 @@
public void action( IAsn1Container container ) throws DecoderException
{
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
- LdapMessageCodec message = ldapMessageContainer.getLdapMessage();
TLV tlv = ldapMessageContainer.getCurrentTLV();
int expectedLength = tlv.getLength();
@@ -3483,12 +3484,6 @@
// This will generate a PROTOCOL_ERROR
throw new DecoderException( "The length of a control must not be null" );
}
-
- // Create a new control
- ControlCodec control = new ControlCodec();
-
- // Store the control into the container
- message.addControl( control );
}
};
@@ -3522,7 +3517,7 @@
TLV tlv = ldapMessageContainer.getCurrentTLV();
// Get the current control
- ControlCodec control = message.getCurrentControl();
+ CodecControl control = null;
// Store the type
// We have to handle the special case of a 0 length OID
@@ -3533,34 +3528,37 @@
// This will generate a PROTOCOL_ERROR
throw new DecoderException( "The OID must not be null" );
}
- else
- {
- byte[] value = tlv.getValue().getData();
- String oidValue = StringTools.asciiBytesToString( value );
- // The OID is encoded as a String, not an Object Id
- try
- {
- new OID( oidValue );
- }
- catch ( DecoderException de )
- {
- log.error( "The control type " + StringTools.dumpBytes( value ) + " is not a valid OID : "
- + de.getMessage() );
+ byte[] value = tlv.getValue().getData();
+ String oidValue = StringTools.asciiBytesToString( value );
- // This will generate a PROTOCOL_ERROR
- throw de;
- }
+ // The OID is encoded as a String, not an Object Id
+ if ( !OID.isOID( oidValue ) )
+ {
+ log.error( "The control type " + StringTools.dumpBytes( value ) + " is not a valid OID" );
- control.setControlType( oidValue );
+ // This will generate a PROTOCOL_ERROR
+ throw new DecoderException( "Invalid control OID : " + oidValue );
}
+
+ // get the Control for this OID
+ control = message.getCodecControl( oidValue );
+
+ if ( control == null )
+ {
+ // This control is unknown, we will create a neutral control
+ control = new CodecControlImpl( oidValue );
+ }
+
+ // The control may be null, if not known
+ message.addControl( control );
// We can have an END transition
ldapMessageContainer.grammarEndAllowed( true );
if ( IS_DEBUG )
{
- log.debug( "Control OID : " + control.getControlType() );
+ log.debug( "Control OID : " + control.getOid() );
}
}
} );
@@ -3586,7 +3584,7 @@
TLV tlv = ldapMessageContainer.getCurrentTLV();
// Get the current control
- ControlCodec control = message.getCurrentControl();
+ CodecControl control = message.getCurrentControl();
// Store the criticality
// We get the value. If it's a 0, it's a FALSE. If it's
@@ -3599,7 +3597,7 @@
try
{
- control.setCriticality( BooleanDecoder.parse( value ) );
+ control.setCritical( BooleanDecoder.parse( value ) );
}
catch ( BooleanDecoderException bde )
{
@@ -3615,7 +3613,7 @@
if ( IS_DEBUG )
{
- log.debug( "Control criticality : " + control.getCriticality() );
+ log.debug( "Control criticality : " + control.isCritical() );
}
}
} );
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java Mon Feb 1 15:04:10 2010
@@ -38,11 +38,7 @@
import org.apache.directory.shared.ldap.codec.bind.SimpleAuthentication;
import org.apache.directory.shared.ldap.codec.compare.CompareRequestCodec;
import org.apache.directory.shared.ldap.codec.compare.CompareResponseCodec;
-import org.apache.directory.shared.ldap.codec.controls.CascadeControlCodec;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncDoneValue.SyncDoneValueControlCodec;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncInfoValue.SyncInfoValueControlCodec;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncRequestValue.SyncRequestValueControlCodec;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncStateValue.SyncStateValueControlCodec;
+import org.apache.directory.shared.ldap.codec.controls.CodecControl;
import org.apache.directory.shared.ldap.codec.del.DelRequestCodec;
import org.apache.directory.shared.ldap.codec.del.DelResponseCodec;
import org.apache.directory.shared.ldap.codec.extended.ExtendedRequestCodec;
@@ -64,9 +60,6 @@
import org.apache.directory.shared.ldap.codec.search.SearchResultEntryCodec;
import org.apache.directory.shared.ldap.codec.search.SearchResultReferenceCodec;
import org.apache.directory.shared.ldap.codec.search.SubstringFilter;
-import org.apache.directory.shared.ldap.codec.search.controls.pSearch.PSearchControlCodec;
-import org.apache.directory.shared.ldap.codec.search.controls.pagedSearch.PagedSearchControlCodec;
-import org.apache.directory.shared.ldap.codec.search.controls.subEntry.SubEntryControlCodec;
import org.apache.directory.shared.ldap.codec.util.LdapURLEncodingException;
import org.apache.directory.shared.ldap.entry.EntryAttribute;
import org.apache.directory.shared.ldap.entry.Modification;
@@ -111,19 +104,7 @@
import org.apache.directory.shared.ldap.message.SearchResponseEntryImpl;
import org.apache.directory.shared.ldap.message.SearchResponseReferenceImpl;
import org.apache.directory.shared.ldap.message.UnbindRequestImpl;
-import org.apache.directory.shared.ldap.message.control.CascadeControl;
import org.apache.directory.shared.ldap.message.control.Control;
-import org.apache.directory.shared.ldap.message.control.ControlImpl;
-import org.apache.directory.shared.ldap.message.control.PagedSearchControl;
-import org.apache.directory.shared.ldap.message.control.PersistentSearchControl;
-import org.apache.directory.shared.ldap.message.control.SubentriesControl;
-import org.apache.directory.shared.ldap.message.control.replication.SyncDoneValueControl;
-import org.apache.directory.shared.ldap.message.control.replication.SyncInfoValueNewCookieControl;
-import org.apache.directory.shared.ldap.message.control.replication.SyncInfoValueRefreshDeleteControl;
-import org.apache.directory.shared.ldap.message.control.replication.SyncInfoValueRefreshPresentControl;
-import org.apache.directory.shared.ldap.message.control.replication.SyncInfoValueSyncIdSetControl;
-import org.apache.directory.shared.ldap.message.control.replication.SyncRequestValueControl;
-import org.apache.directory.shared.ldap.message.control.replication.SyncStateValueControl;
import org.apache.directory.shared.ldap.message.extended.GracefulShutdownRequest;
import org.apache.directory.shared.ldap.name.LdapDN;
import org.apache.directory.shared.ldap.util.LdapURL;
@@ -883,7 +864,7 @@
case ( LdapConstants.EXTENDED_REQUEST ):
internalMessage = transformExtendedRequest( codecMessage, messageId );
break;
-
+
case ( LdapConstants.BIND_RESPONSE ):
internalMessage = transformBindResponse( codecMessage, messageId );
break;
@@ -901,165 +882,13 @@
// Nothing to do !
break;
+
default:
throw new IllegalStateException( "shouldn't happen - if it does then we have issues" );
}
// Transform the controls, too
- List<ControlCodec> codecControls = codecMessage.getControls();
-
- if ( codecControls != null )
- {
- for ( final ControlCodec codecControl:codecControls )
- {
- Control neutralControl = null;
-
- if ( codecControl.getControlValue() instanceof CascadeControlCodec )
- {
- neutralControl = new CascadeControl();
- neutralControl.setCritical( codecControl.getCriticality() );
- }
- else if ( codecControl.getControlValue() instanceof PSearchControlCodec )
- {
- PersistentSearchControl neutralPsearch = new PersistentSearchControl();
- neutralControl = neutralPsearch;
- PSearchControlCodec codecPsearch = ( PSearchControlCodec ) codecControl.getControlValue();
- neutralPsearch.setChangeTypes( codecPsearch.getChangeTypes() );
- neutralPsearch.setChangesOnly( codecPsearch.isChangesOnly() );
- neutralPsearch.setReturnECs( codecPsearch.isReturnECs() );
- neutralPsearch.setCritical( codecControl.getCriticality() );
- }
- else if ( codecControl.getControlValue() instanceof SubEntryControlCodec )
- {
- SubentriesControl neutralSubentriesControl = new SubentriesControl();
- SubEntryControlCodec codecSubentriesControl = ( SubEntryControlCodec ) codecControl.getControlValue();
- neutralControl = neutralSubentriesControl;
- neutralSubentriesControl.setVisibility( codecSubentriesControl.isVisible() );
- neutralSubentriesControl.setCritical( codecControl.getCriticality() );
- }
- else if ( codecControl.getControlValue() instanceof PagedSearchControlCodec )
- {
- PagedSearchControl neutralPagedSearchControl = new PagedSearchControl();
- neutralControl = neutralPagedSearchControl;
- PagedSearchControlCodec codecPagedSearchControl = (PagedSearchControlCodec)codecControl.getControlValue();
- neutralPagedSearchControl.setCookie( codecPagedSearchControl.getCookie() );
- neutralPagedSearchControl.setSize( codecPagedSearchControl.getSize() );
- neutralPagedSearchControl.setCritical( codecControl.getCriticality() );
- }
- else if ( codecControl.getControlValue() instanceof SyncDoneValueControlCodec )
- {
- SyncDoneValueControl neutralSyncDoneValueControl = new SyncDoneValueControl();
- SyncDoneValueControlCodec codecSyncDoneValueControl = (SyncDoneValueControlCodec)codecControl.getControlValue();
- neutralControl = neutralSyncDoneValueControl;
- neutralSyncDoneValueControl.setCritical( codecControl.getCriticality() );
- neutralSyncDoneValueControl.setCookie( codecSyncDoneValueControl.getCookie() );
- neutralSyncDoneValueControl.setRefreshDeletes( codecSyncDoneValueControl.isRefreshDeletes() );
- }
- else if ( codecControl.getControlValue() instanceof SyncInfoValueControlCodec )
- {
- SyncInfoValueControlCodec codecSyncInfoValueControlCodec = (SyncInfoValueControlCodec)codecControl.getControlValue();
-
- switch ( codecSyncInfoValueControlCodec.getType() )
- {
- case NEW_COOKIE :
- SyncInfoValueNewCookieControl neutralSyncInfoValueNewCookieControl = new SyncInfoValueNewCookieControl();
- neutralControl = neutralSyncInfoValueNewCookieControl;
- neutralSyncInfoValueNewCookieControl.setCritical( codecControl.getCriticality() );
- neutralSyncInfoValueNewCookieControl.setCookie( codecSyncInfoValueControlCodec.getCookie() );
-
- break;
-
- case REFRESH_DELETE :
- SyncInfoValueRefreshDeleteControl neutralSyncInfoValueRefreshDeleteControl = new SyncInfoValueRefreshDeleteControl();
- neutralControl = neutralSyncInfoValueRefreshDeleteControl;
- neutralSyncInfoValueRefreshDeleteControl.setCritical( codecControl.getCriticality() );
- neutralSyncInfoValueRefreshDeleteControl.setCookie( codecSyncInfoValueControlCodec.getCookie() );
- neutralSyncInfoValueRefreshDeleteControl.setRefreshDone( codecSyncInfoValueControlCodec.isRefreshDone() );
-
- break;
-
- case REFRESH_PRESENT :
- SyncInfoValueRefreshPresentControl neutralSyncInfoValueRefreshPresentControl = new SyncInfoValueRefreshPresentControl();
- neutralControl = neutralSyncInfoValueRefreshPresentControl;
- neutralSyncInfoValueRefreshPresentControl.setCritical( codecControl.getCriticality() );
- neutralSyncInfoValueRefreshPresentControl.setCookie( codecSyncInfoValueControlCodec.getCookie() );
- neutralSyncInfoValueRefreshPresentControl.setRefreshDone( codecSyncInfoValueControlCodec.isRefreshDone() );
-
- break;
-
- case SYNC_ID_SET :
- SyncInfoValueSyncIdSetControl neutralSyncInfoValueSyncIdSetControl = new SyncInfoValueSyncIdSetControl();
- neutralControl = neutralSyncInfoValueSyncIdSetControl;
- neutralSyncInfoValueSyncIdSetControl.setCritical( codecControl.getCriticality() );
- neutralSyncInfoValueSyncIdSetControl.setCookie( codecSyncInfoValueControlCodec.getCookie() );
- neutralSyncInfoValueSyncIdSetControl.setRefreshDeletes( codecSyncInfoValueControlCodec.isRefreshDeletes() );
-
- List<byte[]> uuids = codecSyncInfoValueControlCodec.getSyncUUIDs();
-
- if ( uuids != null )
- {
- for ( byte[] uuid:uuids )
- {
- neutralSyncInfoValueSyncIdSetControl.addSyncUUID( uuid );
- }
- }
-
- break;
- }
- }
- else if ( codecControl.getControlValue() instanceof SyncRequestValueControlCodec )
- {
- SyncRequestValueControl neutralSyncRequestValueControl = new SyncRequestValueControl();
- SyncRequestValueControlCodec codecSyncDoneValueControlCodec = (SyncRequestValueControlCodec)codecControl.getControlValue();
- neutralControl = neutralSyncRequestValueControl;
- neutralSyncRequestValueControl.setCritical( codecControl.getCriticality() );
- neutralSyncRequestValueControl.setMode( codecSyncDoneValueControlCodec.getMode() );
- neutralSyncRequestValueControl.setCookie( codecSyncDoneValueControlCodec.getCookie() );
- neutralSyncRequestValueControl.setReloadHint( codecSyncDoneValueControlCodec.isReloadHint() );
- }
- else if ( codecControl.getControlValue() instanceof SyncStateValueControl )
- {
- SyncStateValueControl neutralSyncStateValueControl = new SyncStateValueControl();
- SyncStateValueControlCodec codecSyncStateValueControlCodec = (SyncStateValueControlCodec)codecControl.getControlValue();
- neutralControl = neutralSyncStateValueControl;
- neutralSyncStateValueControl.setCritical( codecControl.getCriticality() );
- neutralSyncStateValueControl.setSyncStateType( codecSyncStateValueControlCodec.getSyncStateType() );
- neutralSyncStateValueControl.setEntryUUID( codecSyncStateValueControlCodec.getEntryUUID() );
- neutralSyncStateValueControl.setCookie( codecSyncStateValueControlCodec.getCookie() );
- }
- else if ( codecControl.getControlValue() instanceof byte[] )
- {
- neutralControl = new ControlImpl( codecControl.getControlType() )
- {
- public byte[] getValue()
- {
- return ( byte[] ) codecControl.getControlValue();
- }
- };
-
- // Codec : boolean criticality -> Internal : boolean
- // m_isCritical
- neutralControl.setCritical( codecControl.getCriticality() );
- }
- else if ( codecControl.getControlValue() == null )
- {
- neutralControl = new ControlImpl( codecControl.getControlType() )
- {
- public byte[] getValue()
- {
- return ( byte[] ) codecControl.getControlValue();
- }
- };
-
- // Codec : boolean criticality -> Internal : boolean
- // m_isCritical
- neutralControl.setCritical( codecControl.getCriticality() );
- }
-
-
- internalMessage.add( neutralControl );
- }
- }
+ transformControlsCodecToInternal( codecMessage, internalMessage );
return internalMessage;
}
@@ -1460,12 +1289,15 @@
transformExtendedResponse( codecMessage, msg );
break;
+ case INTERMEDIATE_RESP :
+ //transformIntermediateResponse( codecMessage, msg );
+ break;
}
// We also have to transform the controls...
if ( !msg.getControls().isEmpty() )
{
- transformControls( codecMessage, msg );
+ transformControlsInternalToCodec( codecMessage, msg );
}
if ( IS_DEBUG )
@@ -1478,22 +1310,22 @@
/**
- * TODO finish this implementation. Takes Codec Controls, transforming
+ * TODO finish this implementation. Takes Codec Controls, transforming
* them to Internal Controls and populates the Internal message with them.
*
* @param codecMessage the Codec message
* @param msg the Internal message
*/
- private static void transformControlsCodecToInternal( LdapMessageCodec codecMessage, InternalMessage msg )
+ private static void transformControlsCodecToInternal( LdapMessageCodec codecMessage, InternalMessage internalMessage )
{
if ( codecMessage.getControls() == null )
{
return;
}
- for ( ControlCodec control:codecMessage.getControls() )
+ for ( final CodecControl codecControl:codecMessage.getControls() )
{
- LOG.debug( "Not decoding response control: {}", control );
+ internalMessage.add( codecControl );
}
}
@@ -1501,21 +1333,18 @@
/**
* Transforms the controls
* @param codecMessage The Codec SearchResultReference to produce
- * @param msg The incoming Internal SearchResponseReference
+ * @param msg The incoming Internal Message
*/
- private static void transformControls( LdapMessageCodec codecMessage, InternalMessage msg )
+ private static void transformControlsInternalToCodec( LdapMessageCodec codecMessage, InternalMessage internalMessage )
{
- for ( Control control:msg.getControls().values() )
+ if ( internalMessage.getControls() == null )
{
- ControlCodec codecControl = new ControlCodec();
- codecMessage.addControl( codecControl );
- codecControl.setCriticality( control.isCritical() );
-
- byte[] encodedValue = control.getValue();
- codecControl.setControlValue( encodedValue );
- codecControl.setEncodedValue( encodedValue );
- codecControl.setControlType( control.getOid() );
- codecControl.setParent( codecMessage );
+ return;
+ }
+
+ for ( Control control:internalMessage.getControls().values() )
+ {
+ codecMessage.addControl( (CodecControl)control );
}
}
}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java Mon Feb 1 15:04:10 2010
@@ -20,28 +20,16 @@
package org.apache.directory.shared.ldap.codec.actions;
-import java.util.HashMap;
-import java.util.Map;
-
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.ControlCodec;
-import org.apache.directory.shared.ldap.codec.ControlDecoder;
import org.apache.directory.shared.ldap.codec.LdapMessageCodec;
import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
-import org.apache.directory.shared.ldap.codec.controls.ManageDsaITControlDecoder;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncDoneValue.SyncDoneValueControlDecoder;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncInfoValue.SyncInfoValueControlDecoder;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncRequestValue.SyncRequestValueControlDecoder;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncStateValue.SyncStateValueControlDecoder;
-import org.apache.directory.shared.ldap.codec.search.controls.pSearch.PSearchControlDecoder;
-import org.apache.directory.shared.ldap.codec.search.controls.pagedSearch.PagedSearchControlDecoder;
-import org.apache.directory.shared.ldap.codec.search.controls.subEntry.SubEntryControlDecoder;
+import org.apache.directory.shared.ldap.codec.controls.CodecControl;
+import org.apache.directory.shared.ldap.codec.controls.ControlDecoder;
import org.apache.directory.shared.ldap.util.StringTools;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,39 +50,6 @@
/** Speedup for logs */
private static final boolean IS_DEBUG = log.isDebugEnabled();
- private static Map<String, ControlDecoder> controlDecoders = new HashMap<String, ControlDecoder>();
-
-
- 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 );
-
- decoder = new PagedSearchControlDecoder();
- controlDecoders.put( decoder.getControlType(), decoder );
-
- decoder = new SyncDoneValueControlDecoder();
- controlDecoders.put( decoder.getControlType(), decoder );
-
- decoder = new SyncInfoValueControlDecoder();
- controlDecoders.put( decoder.getControlType(), decoder );
-
- decoder = new SyncRequestValueControlDecoder();
- controlDecoders.put( decoder.getControlType(), decoder );
-
- decoder = new SyncStateValueControlDecoder();
- controlDecoders.put( decoder.getControlType(), decoder );
- }
-
public void action( IAsn1Container container ) throws DecoderException
{
@@ -103,32 +58,27 @@
LdapMessageCodec message = ldapMessageContainer.getLdapMessage();
// Get the current control
- ControlCodec control = message.getCurrentControl();
+ CodecControl control = message.getCurrentControl();
Value value = tlv.getValue();
- ControlDecoder decoder = controlDecoders.get( control.getControlType() );
+ ControlDecoder decoder = control.getDecoder();
// Store the value - have to handle the special case of a 0 length value
if ( tlv.getLength() == 0 )
{
- control.setControlValue( new byte[]
- {} );
+ control.setValue( StringTools.EMPTY_BYTES );
}
else
{
- Object decoded;
-
- if ( decoder != null )
+ if ( decoder == null )
{
- decoded = decoder.decode( value.getData() );
+ // No decoder : store the raw value
+ control.setValue( value.getData() );
}
else
{
- decoded = value.getData();
+ decoder.decode( value.getData(), control );
}
-
- control.setEncodedValue( value.getData() );
- control.setControlValue( decoded );
}
// We can have an END transition
@@ -136,18 +86,7 @@
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() );
- }
+ log.debug( "Control value : " + StringTools.dumpBytes( ( byte[] ) control.getValue() ) );
}
}
}
Copied: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/AbstractControlCodec.java (from r903704, directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/ControlCodec.java)
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/AbstractControlCodec.java?p2=directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/AbstractControlCodec.java&p1=directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/ControlCodec.java&r1=903704&r2=905297&rev=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/ControlCodec.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/AbstractControlCodec.java Mon Feb 1 15:04:10 2010
@@ -17,14 +17,13 @@
* under the License.
*
*/
-package org.apache.directory.shared.ldap.codec;
+package org.apache.directory.shared.ldap.codec.controls;
import java.nio.BufferOverflowException;
import java.nio.ByteBuffer;
import org.apache.directory.shared.asn1.AbstractAsn1Object;
-import org.apache.directory.shared.asn1.Asn1Object;
import org.apache.directory.shared.asn1.ber.tlv.TLV;
import org.apache.directory.shared.asn1.ber.tlv.UniversalTag;
import org.apache.directory.shared.asn1.ber.tlv.Value;
@@ -38,25 +37,26 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$, $Date$,
*/
-public class ControlCodec extends AbstractAsn1Object
+public abstract class AbstractControlCodec extends AbstractAsn1Object implements CodecControl
{
// ~ Instance fields
// ----------------------------------------------------------------------------
-
/** The control type */
- private String controlType;
+ private String oid;
/** The criticality (default value is false) */
private boolean criticality = false;
- /** Optionnal control value */
- private Object controlValue;
-
- /** Optionnal control value in encoded form */
- private byte[] encodedValue;
+ /** Optional control value */
+ protected byte[] value;
+
+ /** The encoded value length */
+ protected int valueLength;
/** The control length */
private int controlLength;
+
+ protected ControlDecoder decoder;
// ~ Methods
// ------------------------------------------------------------------------------------
@@ -64,30 +64,19 @@
/**
* Default constructor.
*/
- public ControlCodec()
- {
- super();
- }
-
- /**
- * Get the control type
- *
- * @return A string which represent the control type
- */
- public String getControlType()
+ public AbstractControlCodec( String oid )
{
- return controlType == null ? "" : controlType;
+ this.oid = oid;
}
-
/**
- * Set the control type
+ * Get the OID
*
- * @param controlType The OID to be stored
+ * @return A string which represent the control oid
*/
- public void setControlType( String controlType )
+ public String getOid()
{
- this.controlType = controlType;
+ return oid == null ? "" : oid;
}
@@ -96,20 +85,9 @@
*
* @return The control value
*/
- public Object getControlValue()
+ public byte[] getValue()
{
- if ( controlValue == null )
- {
- return StringTools.EMPTY_BYTES;
- }
- else if ( controlValue instanceof String )
- {
- return StringTools.getBytesUtf8( ( String ) controlValue );
- }
- else
- {
- return controlValue;
- }
+ return value;
}
@@ -118,44 +96,17 @@
*
* @param encodedValue The encoded control value to store
*/
- public void setEncodedValue( byte[] encodedValue )
+ public void setValue( byte[] value )
{
- if ( encodedValue != null )
+ if ( value != null )
{
- this.encodedValue = new byte[ encodedValue.length ];
- System.arraycopy( encodedValue, 0, this.encodedValue, 0, encodedValue.length );
- } else {
- this.encodedValue = null;
- }
- }
-
-
- /**
- * Get the raw control encoded bytes
- *
- * @return the encoded bytes for the control
- */
- public byte[] getEncodedValue()
- {
- if ( encodedValue == null )
+ this.value = new byte[ value.length ];
+ System.arraycopy( value, 0, this.value, 0, value.length );
+ }
+ else
{
- return StringTools.EMPTY_BYTES;
+ this.value = null;
}
-
- final byte[] copy = new byte[ encodedValue.length ];
- System.arraycopy( encodedValue, 0, copy, 0, encodedValue.length );
- return copy;
- }
-
-
- /**
- * Set the control value
- *
- * @param controlValue The control value to store
- */
- public void setControlValue( Object controlValue )
- {
- this.controlValue = controlValue;
}
@@ -164,7 +115,7 @@
*
* @return <code>true</code> if the criticality flag is true.
*/
- public boolean getCriticality()
+ public boolean isCritical()
{
return criticality;
}
@@ -175,32 +126,29 @@
*
* @param criticality The criticality value
*/
- public void setCriticality( boolean criticality )
+ public void setCritical( boolean criticality )
{
this.criticality = criticality;
}
-
+
/**
- * Compute the Control length
- * Control :
- *
- * 0x30 L1
- * |
- * +--> 0x04 L2 controlType
- * [+--> 0x01 0x01 criticality]
- * [+--> 0x04 L3 controlValue]
- *
- * Control length = Length(0x30) + length(L1)
- * + Length(0x04) + Length(L2) + L2
- * [+ Length(0x01) + 1 + 1]
- * [+ Length(0x04) + Length(L3) + L3]
+ * {@inheritDoc}
*/
public int computeLength()
{
- // The controlType
- int controlTypeLengh = StringTools.getBytesUtf8( controlType ).length;
- controlLength = 1 + TLV.getNbBytes( controlTypeLengh ) + controlTypeLengh;
+ return 0;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public int computeLength( int valueLength )
+ {
+ // The OID
+ int oidLengh = StringTools.getBytesUtf8( oid ).length;
+ controlLength = 1 + TLV.getNbBytes( oidLengh ) + oidLengh;
// The criticality, only if true
if ( criticality )
@@ -208,50 +156,27 @@
controlLength += 1 + 1 + 1; // Always 3 for a boolean
}
- // The control value, if any
- if ( controlValue != null )
+ this.valueLength = valueLength;
+
+ if ( valueLength != 0 )
{
- byte[] controlBytes;
- if ( controlValue instanceof byte[] )
- {
- controlBytes = ( byte[] ) controlValue;
- controlLength += 1 + TLV.getNbBytes( controlBytes.length ) + controlBytes.length;
- }
- else if ( controlValue instanceof String )
- {
- controlBytes = StringTools.getBytesUtf8( ( String ) controlValue );
- controlLength += 1 + TLV.getNbBytes( controlBytes.length ) + controlBytes.length;
- }
- else if ( controlValue instanceof Asn1Object )
- {
- int length = ( ( Asn1Object ) controlValue ).computeLength();
- controlLength += 1 + TLV.getNbBytes( length ) + length;
- }
- else
- {
- throw new IllegalStateException( "Don't know how to handle control value class "
- + controlValue.getClass() );
- }
+ controlLength += 1 + TLV.getNbBytes( valueLength ) + valueLength;
}
-
+
return 1 + TLV.getNbBytes( controlLength ) + controlLength;
}
/**
- * Generate the PDU which contains the Control.
- * Control :
- * 0x30 LL
- * 0x04 LL type
- * [0x01 0x01 criticality]
- * [0x04 LL value]
- *
- * @param buffer The encoded PDU
- * @return A ByteBuffer that contaons the PDU
- * @throws EncoderException If anything goes wrong.
+ * {@inheritDoc}
*/
public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
{
+ if ( buffer == null )
+ {
+ throw new EncoderException( "Cannot put a PDU in a null buffer !" );
+ }
+
try
{
// The LdapMessage Sequence
@@ -266,7 +191,7 @@
}
// The control type
- Value.encode( buffer, getControlType().getBytes() );
+ Value.encode( buffer, getOid().getBytes() );
// The control criticality, if true
if ( criticality )
@@ -274,36 +199,23 @@
Value.encode( buffer, criticality );
}
- // The control value, if any
- if ( controlValue != null )
- {
- 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;
}
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean hasValue()
+ {
+ return value != null;
+ }
+
+
+ public ControlDecoder getDecoder()
+ {
+ return decoder;
+ }
/**
@@ -314,21 +226,14 @@
StringBuffer sb = new StringBuffer();
sb.append( " Control\n" );
- sb.append( " Control type : '" ).append( controlType ).append(
+ sb.append( " Control oid : '" ).append( oid ).append(
"'\n" );
sb.append( " Criticality : '" ).append( criticality ).append( "'\n" );
- if ( controlValue != null )
+ if ( value != null )
{
- if ( controlValue instanceof byte[] )
- {
- sb.append( " Control value : '" ).append( StringTools.dumpBytes( ( byte[] ) controlValue ) )
- .append( "'\n" );
- }
- else
- {
- sb.append( " Control value : '" ).append( controlValue ).append( "'\n" );
- }
+ sb.append( " Control value : '" ).append( StringTools.dumpBytes( value ) )
+ .append( "'\n" );
}
return sb.toString();
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CascadeControlCodec.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CascadeControlCodec.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CascadeControlCodec.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CascadeControlCodec.java Mon Feb 1 15:04:10 2010
@@ -20,10 +20,6 @@
package org.apache.directory.shared.ldap.codec.controls;
-import java.nio.ByteBuffer;
-
-import org.apache.directory.shared.asn1.AbstractAsn1Object;
-import org.apache.directory.shared.asn1.codec.EncoderException;
/**
@@ -31,9 +27,10 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class CascadeControlCodec extends AbstractAsn1Object
+public class CascadeControlCodec extends AbstractControlCodec
{
- private static final ByteBuffer EMPTY_BUFFER = ByteBuffer.allocate( 0 );
+ /** The cascade control OID */
+ public static final String CONTROL_OID = "1.3.6.1.4.1.18060.0.0.1";
/**
* Default constructor
@@ -41,23 +38,33 @@
*/
public CascadeControlCodec()
{
- super();
+ super( CONTROL_OID );
+
+ decoder = new CascadeControlDecoder();
}
+
/**
- * Returns 0 everytime.
+ * Returns the default control length.
*/
public int computeLength()
{
- return 0;
+ // Call the super class to compute the global control length
+ return super.computeLength( 0 );
}
-
+
/**
- * Encodes the control: does nothing but returns an empty buffer.
+ * Return a String representing this Cascade Control.
*/
- public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
+ public String toString()
{
- return EMPTY_BUFFER;
+ StringBuffer sb = new StringBuffer();
+
+ sb.append( " Cascade Control\n" );
+ sb.append( " oid : " ).append( getOid() ).append( '\n' );
+ sb.append( " critical : " ).append( isCritical() ).append( '\n' );
+
+ return sb.toString();
}
}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CascadeControlDecoder.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CascadeControlDecoder.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CascadeControlDecoder.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CascadeControlDecoder.java Mon Feb 1 15:04:10 2010
@@ -22,8 +22,6 @@
import org.apache.directory.shared.asn1.Asn1Object;
import org.apache.directory.shared.asn1.codec.DecoderException;
-import org.apache.directory.shared.ldap.codec.ControlDecoder;
-import org.apache.directory.shared.ldap.message.control.CascadeControl;
/**
@@ -34,13 +32,7 @@
*/
public class CascadeControlDecoder implements ControlDecoder
{
- public String getControlType()
- {
- return CascadeControl.CONTROL_OID;
- }
-
-
- public Asn1Object decode( byte[] controlBytes ) throws DecoderException
+ public Asn1Object decode( byte[] controlBytes, CodecControl control ) throws DecoderException
{
return new CascadeControlCodec();
}
Added: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CodecControl.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CodecControl.java?rev=905297&view=auto
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CodecControl.java (added)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CodecControl.java Mon Feb 1 15:04:10 2010
@@ -0,0 +1,77 @@
+/*
+ * 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.controls;
+
+import java.nio.ByteBuffer;
+
+import org.apache.directory.shared.asn1.codec.EncoderException;
+import org.apache.directory.shared.ldap.message.control.Control;
+
+/**
+ * Define the transform method to be implemented by all the codec Controls
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public interface CodecControl extends Control
+{
+ /**
+ * Generate the PDU which contains the Control.
+ * <pre>
+ * Control :
+ *
+ * 0x30 LL
+ * 0x04 LL type
+ * [0x01 0x01 criticality]
+ * [0x04 LL value]
+ * </pre>
+ * @param buffer The encoded PDU
+ * @return A ByteBuffer that contaons the PDU
+ * @throws EncoderException If anything goes wrong.
+ */
+ ByteBuffer encode( ByteBuffer buffer ) throws EncoderException;
+
+
+ /**
+ * Compute the Control length
+ * <pre>
+ * Control :
+ *
+ * 0x30 L1
+ * |
+ * +--> 0x04 L2 controlType
+ * [+--> 0x01 0x01 criticality]
+ * [+--> 0x04 L3 controlValue]
+ *
+ * Control length = Length(0x30) + length(L1)
+ * + Length(0x04) + Length(L2) + L2
+ * [+ Length(0x01) + 1 + 1]
+ * [+ Length(0x04) + Length(L3) + L3]
+ * </pre>
+ */
+ int computeLength();
+
+ /**
+ * Get the associated decoder
+ *
+ * @return The Control decoder
+ */
+ ControlDecoder getDecoder();
+}
Added: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CodecControlImpl.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CodecControlImpl.java?rev=905297&view=auto
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CodecControlImpl.java (added)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/CodecControlImpl.java Mon Feb 1 15:04:10 2010
@@ -0,0 +1,124 @@
+/*
+ * 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.controls;
+
+
+import java.nio.ByteBuffer;
+
+import org.apache.directory.shared.asn1.ber.tlv.Value;
+import org.apache.directory.shared.asn1.codec.EncoderException;
+import org.apache.directory.shared.ldap.util.StringTools;
+
+
+/**
+ * A genericcodec Control.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev: 764131 $, $Date: 2009-04-11 03:03:00 +0200 (Sat, 11 Apr 2009) $,
+ */
+public class CodecControlImpl extends AbstractControlCodec
+{
+ /**
+ * Default constructor.
+ */
+ public CodecControlImpl( String oid )
+ {
+ super( oid );
+
+ decoder = null;
+ }
+
+
+ /**
+ * Set the encoded control value
+ *
+ * @param encodedValue The encoded control value to store
+ */
+ public void setValue( byte[] value )
+ {
+ if ( value != null )
+ {
+ this.value = new byte[ value.length ];
+ System.arraycopy( value, 0, this.value, 0, value.length );
+ }
+ else
+ {
+ this.value = null;
+ }
+ }
+
+
+ /**
+ * Get the raw control encoded bytes
+ *
+ * @return the encoded bytes for the control
+ */
+ public byte[] getValue()
+ {
+ if ( value == null )
+ {
+ return StringTools.EMPTY_BYTES;
+ }
+
+ final byte[] copy = new byte[ value.length ];
+ System.arraycopy( value, 0, copy, 0, value.length );
+ return copy;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int computeLength()
+ {
+ if ( value != null )
+ {
+ return super.computeLength( value.length );
+ }
+ else
+ {
+ return super.computeLength( 0 );
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
+ {
+ if ( buffer == null )
+ {
+ throw new EncoderException( "Cannot put a PDU in a null buffer !" );
+ }
+
+ // Encode the Control envelop
+ super.encode( buffer );
+
+ // If we have a value, encode it
+ if ( value != null )
+ {
+ Value.encode( buffer, value );
+ }
+
+ return buffer;
+ }
+}
Copied: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ControlDecoder.java (from r903704, directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/ControlDecoder.java)
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ControlDecoder.java?p2=directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ControlDecoder.java&p1=directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/ControlDecoder.java&r1=903704&r2=905297&rev=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/ControlDecoder.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ControlDecoder.java Mon Feb 1 15:04:10 2010
@@ -17,7 +17,7 @@
* under the License.
*
*/
-package org.apache.directory.shared.ldap.codec;
+package org.apache.directory.shared.ldap.codec.controls;
import org.apache.directory.shared.asn1.Asn1Object;
@@ -33,19 +33,12 @@
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
+ * @param control The control to feed
* @return the decoded Asn1Object for the control
* @throws DecoderException if anything goes wrong
*/
- Asn1Object decode( byte[] controlBytes ) throws DecoderException;
+ Asn1Object decode( byte[] controlBytes, CodecControl control ) throws DecoderException;
}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ManageDsaITControlCodec.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ManageDsaITControlCodec.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ManageDsaITControlCodec.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ManageDsaITControlCodec.java Mon Feb 1 15:04:10 2010
@@ -20,10 +20,6 @@
package org.apache.directory.shared.ldap.codec.controls;
-import java.nio.ByteBuffer;
-
-import org.apache.directory.shared.asn1.AbstractAsn1Object;
-import org.apache.directory.shared.asn1.codec.EncoderException;
/**
@@ -64,9 +60,10 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class ManageDsaITControlCodec extends AbstractAsn1Object
+public class ManageDsaITControlCodec extends AbstractControlCodec
{
- private static final ByteBuffer EMPTY_BUFFER = ByteBuffer.allocate( 0 );
+ /** This control OID */
+ public static final String CONTROL_OID = "2.16.840.1.113730.3.4.2";
/**
* Default constructor
@@ -74,23 +71,32 @@
*/
public ManageDsaITControlCodec()
{
- super();
+ super( CONTROL_OID );
+
+ decoder = new ManageDsaITControlDecoder();
}
/**
- * Returns 0 everytime.
+ * Returns 0 every time.
*/
public int computeLength()
{
- return 0;
+ // Call the super class to compute the global control length
+ return super.computeLength( 0 );
}
/**
- * Encodes the control: does nothing but returns an empty buffer.
+ * Return a String representing this ManageDsaIt Control.
*/
- public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
+ public String toString()
{
- return EMPTY_BUFFER;
+ StringBuffer sb = new StringBuffer();
+
+ sb.append( " ManageDsaIt Control\n" );
+ sb.append( " oid : " ).append( getOid() ).append( '\n' );
+ sb.append( " critical : " ).append( isCritical() ).append( '\n' );
+
+ return sb.toString();
}
}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ManageDsaITControlDecoder.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ManageDsaITControlDecoder.java?rev=905297&r1=905296&r2=905297&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ManageDsaITControlDecoder.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ManageDsaITControlDecoder.java Mon Feb 1 15:04:10 2010
@@ -22,8 +22,6 @@
import org.apache.directory.shared.asn1.Asn1Object;
import org.apache.directory.shared.asn1.codec.DecoderException;
-import org.apache.directory.shared.ldap.codec.ControlDecoder;
-import org.apache.directory.shared.ldap.message.control.ManageDsaITControl;
/**
@@ -34,13 +32,7 @@
*/
public class ManageDsaITControlDecoder implements ControlDecoder
{
- public String getControlType()
- {
- return ManageDsaITControl.CONTROL_OID;
- }
-
-
- public Asn1Object decode( byte[] controlBytes ) throws DecoderException
+ public Asn1Object decode( byte[] controlBytes, CodecControl control ) throws DecoderException
{
return new ManageDsaITControlCodec();
}