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 2011/01/31 21:04:55 UTC

svn commit: r1065736 - /directory/apacheds/trunk/core-jndi/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java

Author: elecharny
Date: Mon Jan 31 20:04:54 2011
New Revision: 1065736

URL: http://svn.apache.org/viewvc?rev=1065736&view=rev
Log:
Fix the way we convert controls

Modified:
    directory/apacheds/trunk/core-jndi/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java

Modified: directory/apacheds/trunk/core-jndi/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-jndi/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java?rev=1065736&r1=1065735&r2=1065736&view=diff
==============================================================================
--- directory/apacheds/trunk/core-jndi/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java (original)
+++ directory/apacheds/trunk/core-jndi/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java Mon Jan 31 20:04:54 2011
@@ -21,7 +21,6 @@ package org.apache.directory.server.core
 
 
 import java.io.Serializable;
-import java.nio.ByteBuffer;
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.List;
@@ -73,48 +72,36 @@ import org.apache.directory.server.core.
 import org.apache.directory.server.core.interceptor.context.SearchOperationContext;
 import org.apache.directory.server.i18n.I18n;
 import org.apache.directory.shared.asn1.DecoderException;
-import org.apache.directory.shared.ldap.model.message.controls.Cascade;
-import org.apache.directory.shared.ldap.model.message.controls.CascadeImpl;
-import org.apache.directory.shared.ldap.model.message.controls.ManageDsaITImpl;
 import org.apache.directory.shared.ldap.codec.ICodecControl;
 import org.apache.directory.shared.ldap.codec.controls.CascadeDecorator;
-import org.apache.directory.shared.ldap.model.message.controls.ManageDsaIT;
 import org.apache.directory.shared.ldap.codec.controls.ManageDsaITDecorator;
 import org.apache.directory.shared.ldap.codec.controls.ppolicy.IPasswordPolicyRequest;
 import org.apache.directory.shared.ldap.codec.controls.ppolicy.PasswordPolicyRequest;
 import org.apache.directory.shared.ldap.codec.controls.ppolicy.PasswordPolicyRequestDecorator;
 import org.apache.directory.shared.ldap.codec.controls.ppolicy.PasswordPolicyResponseDecorator;
-import org.apache.directory.shared.ldap.codec.controls.ppolicy.PasswordPolicyResponseContainer;
 import org.apache.directory.shared.ldap.codec.controls.replication.syncDoneValue.ISyncDoneValue;
 import org.apache.directory.shared.ldap.codec.controls.replication.syncDoneValue.SyncDoneValueDecorator;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncDoneValue.SyncDoneValueContainer;
 import org.apache.directory.shared.ldap.codec.controls.replication.syncInfoValue.ISyncInfoValue;
 import org.apache.directory.shared.ldap.codec.controls.replication.syncInfoValue.SyncInfoValueDecorator;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncInfoValue.SyncInfoValueContainer;
 import org.apache.directory.shared.ldap.codec.controls.replication.syncRequestValue.ISyncRequestValue;
 import org.apache.directory.shared.ldap.codec.controls.replication.syncRequestValue.SyncRequestValueDecorator;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncRequestValue.SyncRequestValueContainer;
 import org.apache.directory.shared.ldap.codec.controls.replication.syncStateValue.ISyncStateValue;
 import org.apache.directory.shared.ldap.codec.controls.replication.syncStateValue.SyncStateValueDecorator;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncStateValue.SyncStateValueContainer;
 import org.apache.directory.shared.ldap.codec.controls.replication.syncmodifydn.ISyncModifyDn;
 import org.apache.directory.shared.ldap.codec.controls.replication.syncmodifydn.SyncModifyDnDecorator;
-import org.apache.directory.shared.ldap.codec.controls.replication.syncmodifydn.SyncModifyDnContainer;
-import org.apache.directory.shared.ldap.codec.search.controls.entryChange.*;
-import org.apache.directory.shared.ldap.model.message.controls.PagedResults;
-import org.apache.directory.shared.ldap.codec.search.controls.pagedSearch.PagedResultsContainer;
+import org.apache.directory.shared.ldap.codec.search.controls.entryChange.EntryChangeDecorator;
 import org.apache.directory.shared.ldap.codec.search.controls.pagedSearch.PagedResultsDecorator;
-import org.apache.directory.shared.ldap.model.message.controls.PersistentSearch;
-import org.apache.directory.shared.ldap.codec.search.controls.persistentSearch.PersistentSearchContainer;
 import org.apache.directory.shared.ldap.codec.search.controls.persistentSearch.PersistentSearchDecorator;
-import org.apache.directory.shared.ldap.model.message.controls.Subentries;
 import org.apache.directory.shared.ldap.codec.search.controls.subentries.SubentriesDecorator;
-import org.apache.directory.shared.ldap.codec.search.controls.subentries.SubentriesContainer;
 import org.apache.directory.shared.ldap.model.constants.JndiPropertyConstants;
 import org.apache.directory.shared.ldap.model.constants.SchemaConstants;
 import org.apache.directory.shared.ldap.model.cursor.EmptyCursor;
 import org.apache.directory.shared.ldap.model.cursor.SingletonCursor;
-import org.apache.directory.shared.ldap.model.entry.*;
+import org.apache.directory.shared.ldap.model.entry.AttributeUtils;
+import org.apache.directory.shared.ldap.model.entry.DefaultEntry;
+import org.apache.directory.shared.ldap.model.entry.Entry;
+import org.apache.directory.shared.ldap.model.entry.EntryAttribute;
+import org.apache.directory.shared.ldap.model.entry.Modification;
 import org.apache.directory.shared.ldap.model.exception.LdapException;
 import org.apache.directory.shared.ldap.model.exception.LdapInvalidAttributeTypeException;
 import org.apache.directory.shared.ldap.model.exception.LdapInvalidDnException;
@@ -123,10 +110,17 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.model.filter.PresenceNode;
 import org.apache.directory.shared.ldap.model.filter.SearchScope;
 import org.apache.directory.shared.ldap.model.message.AliasDerefMode;
+import org.apache.directory.shared.ldap.model.message.controls.Cascade;
+import org.apache.directory.shared.ldap.model.message.controls.CascadeImpl;
 import org.apache.directory.shared.ldap.model.message.controls.EntryChange;
+import org.apache.directory.shared.ldap.model.message.controls.ManageDsaIT;
+import org.apache.directory.shared.ldap.model.message.controls.ManageDsaITImpl;
+import org.apache.directory.shared.ldap.model.message.controls.PagedResults;
+import org.apache.directory.shared.ldap.model.message.controls.PersistentSearch;
+import org.apache.directory.shared.ldap.model.message.controls.Subentries;
+import org.apache.directory.shared.ldap.model.name.Ava;
 import org.apache.directory.shared.ldap.model.name.Dn;
 import org.apache.directory.shared.ldap.model.name.Rdn;
-import org.apache.directory.shared.ldap.model.name.Ava;
 import org.apache.directory.shared.ldap.model.schema.AttributeType;
 import org.apache.directory.shared.ldap.model.schema.SchemaManager;
 import org.apache.directory.shared.ldap.util.JndiUtils;
@@ -396,11 +390,6 @@ public abstract class ServerContext impl
 
             case ENTRY_CHANGE_CONTROL:
                 control = new EntryChangeDecorator( getDirectoryService().getLdapCodecService() );
-                EntryChangeContainer entryChangeContainer = new EntryChangeContainer( getDirectoryService().getLdapCodecService() );
-                entryChangeContainer.setEntryChangeDecorator( ( EntryChangeDecorator ) control );
-                ByteBuffer bb = ByteBuffer.allocate( jndiControl.getEncodedValue().length );
-                bb.put( jndiControl.getEncodedValue() ).flip();
-                control.decode( bb.array() );
                 
                 break;
 
@@ -411,11 +400,6 @@ public abstract class ServerContext impl
 
             case PAGED_RESULTS_CONTROL:
                 control = new PagedResultsDecorator( getDirectoryService().getLdapCodecService() );
-                PagedResultsContainer pagedSearchContainer = new PagedResultsContainer( getDirectoryService().getLdapCodecService() );
-                pagedSearchContainer.setPagedSearchControl( ( PagedResultsDecorator ) control );
-                bb = ByteBuffer.allocate( jndiControl.getEncodedValue().length );
-                bb.put( jndiControl.getEncodedValue() ).flip();
-                control.decode( bb.array() );
 
                 break;
 
@@ -428,89 +412,55 @@ public abstract class ServerContext impl
                 else
                 {
                     control = new PasswordPolicyResponseDecorator( getDirectoryService().getLdapCodecService() );
-                    PasswordPolicyResponseContainer passwordPolicyResponseContainer = new PasswordPolicyResponseContainer( getDirectoryService().getLdapCodecService() );
-                    passwordPolicyResponseContainer
-                        .setPasswordPolicyResponseControl( ( PasswordPolicyResponseDecorator ) control );
-                    bb = ByteBuffer.allocate( jndiControl.getEncodedValue().length );
-                    bb.put( jndiControl.getEncodedValue() ).flip();
-                    control.decode( bb.array() );
                 }
 
                 break;
 
             case PERSISTENT_SEARCH_CONTROL:
                 control = new PersistentSearchDecorator( getDirectoryService().getLdapCodecService() );
-                PersistentSearchContainer persistentSearchContainer = new PersistentSearchContainer( getDirectoryService().getLdapCodecService() );
-                persistentSearchContainer.setPersistentSearchDecorator( ( PersistentSearchDecorator ) control );
-                bb = ByteBuffer.allocate( jndiControl.getEncodedValue().length );
-                bb.put( jndiControl.getEncodedValue() ).flip();
-                control.decode( bb.array() );
 
                 break;
 
             case SUBENTRIES_CONTROL:
                 control = new SubentriesDecorator( getDirectoryService().getLdapCodecService() );
-                SubentriesContainer subentriesContainer = new SubentriesContainer();
-                subentriesContainer.setSubentriesDecorator( ( SubentriesDecorator ) control );
-                bb = ByteBuffer.allocate( jndiControl.getEncodedValue().length );
-                bb.put( jndiControl.getEncodedValue() ).flip();
-                control.decode( bb.array() );
-
+                
                 break;
 
             case SYNC_DONE_VALUE_CONTROL:
                 control = new SyncDoneValueDecorator( getDirectoryService().getLdapCodecService() );
-                SyncDoneValueContainer syncDoneValueContainer = new SyncDoneValueContainer( getDirectoryService().getLdapCodecService() );
-                syncDoneValueContainer.setSyncDoneValueControl( ( SyncDoneValueDecorator ) control );
-                bb = ByteBuffer.allocate( jndiControl.getEncodedValue().length );
-                bb.put( jndiControl.getEncodedValue() ).flip();
-                control.decode( bb.array() );
                 
                 break;
 
             case SYNC_INFO_VALUE_CONTROL:
                 control = new SyncInfoValueDecorator( getDirectoryService().getLdapCodecService() );
-                SyncInfoValueContainer syncInfoValueControlContainer = new SyncInfoValueContainer( getDirectoryService().getLdapCodecService() );
-                syncInfoValueControlContainer.setSyncInfoValueControl( ( SyncInfoValueDecorator ) control );
-                bb = ByteBuffer.allocate( jndiControl.getEncodedValue().length );
-                bb.put( jndiControl.getEncodedValue() ).flip();
-                control.decode( bb.array() );
 
                 break;
 
             case SYNC_MODIFY_DN_CONTROL:
                 control = new SyncModifyDnDecorator( getDirectoryService().getLdapCodecService() );
-                SyncModifyDnContainer syncModifyDnControlContainer = new SyncModifyDnContainer( getDirectoryService().getLdapCodecService() );
-                syncModifyDnControlContainer.setSyncModifyDnDecorator( ( SyncModifyDnDecorator ) control );
-                bb = ByteBuffer.allocate( jndiControl.getEncodedValue().length );
-                bb.put( jndiControl.getEncodedValue() ).flip();
-                control.decode( bb.array() );
 
                 break;
 
             case SYNC_REQUEST_VALUE_CONTROL:
                 control = new SyncRequestValueDecorator( getDirectoryService().getLdapCodecService() );
-                SyncRequestValueContainer syncRequestValueControlContainer = new SyncRequestValueContainer();
-                syncRequestValueControlContainer.setSyncRequestValueControl( ( SyncRequestValueDecorator ) control );
-                bb = ByteBuffer.allocate( jndiControl.getEncodedValue().length );
-                bb.put( jndiControl.getEncodedValue() ).flip();
-                control.decode( bb.array() );
 
                 break;
 
             case SYNC_STATE_VALUE_CONTROL:
                 control = new SyncStateValueDecorator( getDirectoryService().getLdapCodecService() );
-                SyncStateValueContainer syncStateValueControlContainer = new SyncStateValueContainer();
-                syncStateValueControlContainer.setSyncStateValueControl( ( SyncStateValueDecorator ) control );
-                bb = ByteBuffer.allocate( jndiControl.getEncodedValue().length );
-                bb.put( jndiControl.getEncodedValue() ).flip();
-                control.decode( bb.array() );
 
                 break;
         }
 
         control.setCritical( jndiControl.isCritical() );
         control.setValue( jndiControl.getEncodedValue() );
+        
+        byte[] value = jndiControl.getEncodedValue();
+        
+        if ( !Strings.isEmpty( value ) )
+        {
+            control.decode( value );
+        }
 
         return control;
     }