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 2008/05/21 22:36:49 UTC

svn commit: r658851 - in /directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core: ./ authn/ authz/ changelog/ collective/ enumeration/ exception/ jndi/

Author: akarasulu
Date: Wed May 21 13:36:48 2008
New Revision: 658851

URL: http://svn.apache.org/viewvc?rev=658851&view=rev
Log:
fixing compilation issues associated with NamingExceptions and NamingEnumerations

Added:
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/JndiUtils.java
Modified:
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationInterceptor.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/changelog/ChangeLogInterceptor.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/changelog/OriginalChangeLogInterceptor.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeInterceptor.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/enumeration/ReferralHandlingEnumeration.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/enumeration/SearchResultFilteringEnumeration.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/exception/ExceptionInterceptor.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/CoreContextFactory.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerDirContext.java
    directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerLdapContext.java

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java Wed May 21 13:36:48 2008
@@ -566,13 +566,13 @@
     }
 
 
-    public LdapContext getJndiContext() throws NamingException
+    public LdapContext getJndiContext() throws Exception
     {
         return this.getJndiContext( null, null, null, AuthenticationLevel.NONE.toString(), "" );
     }
 
 
-    public LdapContext getJndiContext( String dn ) throws NamingException
+    public LdapContext getJndiContext( String dn ) throws Exception
     {
         return this.getJndiContext( null, null, null, AuthenticationLevel.NONE.toString(), dn );
     }
@@ -591,7 +591,7 @@
 
 
     public synchronized LdapContext getJndiContext( LdapDN principalDn, String principal, byte[] credential,
-        String authentication, String rootDN ) throws NamingException
+        String authentication, String rootDN ) throws Exception
     {
         checkSecuritySettings( principal, credential, authentication );
 
@@ -961,7 +961,7 @@
      * @return true if the bootstrap entries had to be created, false otherwise
      * @throws javax.naming.NamingException if entries cannot be created
      */
-    private boolean createBootstrapEntries() throws NamingException
+    private boolean createBootstrapEntries() throws Exception
     {
         boolean firstStart = false;
         

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java Wed May 21 13:36:48 2008
@@ -30,8 +30,8 @@
 import java.util.Set;
 
 import org.apache.directory.server.core.DirectoryService;
+import org.apache.directory.server.core.cursor.Cursor;
 import org.apache.directory.server.core.entry.ServerEntry;
-import org.apache.directory.server.core.entry.ServerSearchResult;
 import org.apache.directory.server.core.interceptor.BaseInterceptor;
 import org.apache.directory.server.core.interceptor.Interceptor;
 import org.apache.directory.server.core.interceptor.NextInterceptor;
@@ -61,8 +61,6 @@
 import org.slf4j.LoggerFactory;
 
 import javax.naming.Context;
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
 
 
 /**
@@ -94,7 +92,7 @@
     /**
      * Registers and initializes all {@link Authenticator}s to this service.
      */
-    public void init( DirectoryService directoryService ) throws NamingException
+    public void init( DirectoryService directoryService ) throws Exception
     {
 
         if ( authenticators == null )
@@ -153,9 +151,9 @@
      *
      * @param authenticator Authenticator to initialize and register by type
      * @param directoryService configuration info to supply to the Authenticator during initialization
-     * @throws javax.naming.NamingException if initialization fails.
+     * @throws javax.naming.Exception if initialization fails.
      */
-    private void register( Authenticator authenticator, DirectoryService directoryService ) throws NamingException
+    private void register( Authenticator authenticator, DirectoryService directoryService ) throws Exception
     {
         authenticator.init( directoryService );
 
@@ -191,7 +189,7 @@
     }
 
 
-    public void add( NextInterceptor next, AddOperationContext opContext ) throws NamingException
+    public void add( NextInterceptor next, AddOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -205,7 +203,7 @@
     }
 
 
-    public void delete( NextInterceptor next, DeleteOperationContext opContext ) throws NamingException
+    public void delete( NextInterceptor next, DeleteOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -218,7 +216,7 @@
     }
 
 
-    public LdapDN getMatchedName( NextInterceptor next, GetMatchedNameOperationContext opContext ) throws NamingException
+    public LdapDN getMatchedName( NextInterceptor next, GetMatchedNameOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -230,7 +228,7 @@
     }
 
 
-    public ServerEntry getRootDSE( NextInterceptor next, GetRootDSEOperationContext opContext ) throws NamingException
+    public ServerEntry getRootDSE( NextInterceptor next, GetRootDSEOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -242,7 +240,7 @@
     }
 
 
-    public LdapDN getSuffix( NextInterceptor next, GetSuffixOperationContext opContext ) throws NamingException
+    public LdapDN getSuffix( NextInterceptor next, GetSuffixOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -254,7 +252,7 @@
     }
 
 
-    public boolean hasEntry( NextInterceptor next, EntryOperationContext opContext ) throws NamingException
+    public boolean hasEntry( NextInterceptor next, EntryOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -266,7 +264,7 @@
     }
 
 
-    public NamingEnumeration<ServerSearchResult> list( NextInterceptor next, ListOperationContext opContext ) throws NamingException
+    public Cursor<ServerEntry> list( NextInterceptor next, ListOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -278,7 +276,7 @@
     }
 
 
-    public Iterator<String> listSuffixes( NextInterceptor next, ListSuffixOperationContext opContext ) throws NamingException
+    public Iterator<String> listSuffixes( NextInterceptor next, ListSuffixOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -290,7 +288,7 @@
     }
 
 
-    public ServerEntry lookup( NextInterceptor next, LookupOperationContext opContext ) throws NamingException
+    public ServerEntry lookup( NextInterceptor next, LookupOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -325,7 +323,7 @@
     }
 
 
-    public void modify( NextInterceptor next, ModifyOperationContext opContext ) throws NamingException
+    public void modify( NextInterceptor next, ModifyOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -338,7 +336,7 @@
     }
 
 
-    public void rename( NextInterceptor next, RenameOperationContext opContext ) throws NamingException
+    public void rename( NextInterceptor next, RenameOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -354,7 +352,7 @@
 
 
     public void moveAndRename( NextInterceptor next, MoveAndRenameOperationContext opContext )
-            throws NamingException
+            throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -370,7 +368,7 @@
     }
 
 
-    public void move( NextInterceptor next, MoveOperationContext opContext ) throws NamingException
+    public void move( NextInterceptor next, MoveOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -384,7 +382,7 @@
     }
 
 
-    public NamingEnumeration<ServerSearchResult> search( NextInterceptor next, SearchOperationContext opContext ) throws NamingException
+    public Cursor<ServerEntry> search( NextInterceptor next, SearchOperationContext opContext ) throws Exception
     {
         if ( IS_DEBUG )
         {
@@ -396,7 +394,7 @@
     }
 
 
-    private void checkAuthenticated( MessageTypeEnum operation ) throws NamingException
+    private void checkAuthenticated( MessageTypeEnum operation ) throws Exception
     {
         try
         {
@@ -410,7 +408,7 @@
         }
     }
 
-    private void checkAuthenticated() throws NamingException
+    private void checkAuthenticated() throws Exception
     {
         ServerContext ctx = ( ServerContext ) InvocationStack.getInstance().peek().getCaller();
 
@@ -428,8 +426,7 @@
     }
 
 
-    public void bind( NextInterceptor next, BindOperationContext opContext )
-            throws NamingException
+    public void bind( NextInterceptor next, BindOperationContext opContext ) throws Exception
     {
         // The DN is always normalized here
         LdapDN normBindDn = opContext.getDn();

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java Wed May 21 13:36:48 2008
@@ -20,16 +20,17 @@
 package org.apache.directory.server.core.authz;
 
 
+import org.apache.commons.lang.NotImplementedException;
 import org.apache.directory.server.constants.ServerDNConstants;
 import org.apache.directory.server.core.DirectoryService;
 import org.apache.directory.server.core.authn.LdapPrincipal;
 import org.apache.directory.server.core.authz.support.ACDFEngine;
+import org.apache.directory.server.core.cursor.Cursor;
 import org.apache.directory.server.core.entry.ServerAttribute;
 import org.apache.directory.server.core.entry.ServerEntry;
 import org.apache.directory.server.core.entry.ServerEntryUtils;
 import org.apache.directory.server.core.entry.ServerSearchResult;
 import org.apache.directory.server.core.enumeration.SearchResultFilter;
-import org.apache.directory.server.core.enumeration.SearchResultFilteringEnumeration;
 import org.apache.directory.server.core.interceptor.BaseInterceptor;
 import org.apache.directory.server.core.interceptor.InterceptorChain;
 import org.apache.directory.server.core.interceptor.NextInterceptor;
@@ -71,8 +72,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
 import javax.naming.directory.SearchControls;
 
 import java.text.ParseException;
@@ -197,7 +196,7 @@
      * the tupe and group membership caches and the ACIItem parser and the ACDF engine.
      *
      * @param directoryService the directory service core
-     * @throws NamingException if there are problems during initialization
+     * @throws Exception if there are problems during initialization
      */
     public void init( DirectoryService directoryService ) throws Exception
     {
@@ -233,7 +232,7 @@
     }
 
 
-    private void protectCriticalEntries( LdapDN dn ) throws NamingException
+    private void protectCriticalEntries( LdapDN dn ) throws Exception
     {
         LdapDN principalDn = getPrincipal().getJndiName();
 
@@ -267,11 +266,11 @@
      * @param tuples the collection of tuples to add to
      * @param dn the normalized distinguished name of the protected entry
      * @param entry the target entry that access to is being controled
-     * @throws NamingException if there are problems accessing attribute values
+     * @throws Exception if there are problems accessing attribute values
      * @param proxy the partition nexus proxy object
      */
     private void addPerscriptiveAciTuples( PartitionNexusProxy proxy, Collection<ACITuple> tuples, LdapDN dn,
-        ServerEntry entry ) throws NamingException
+        ServerEntry entry ) throws Exception
     {
         EntryAttribute oc = entry.get( objectClassType );
         
@@ -312,9 +311,9 @@
      *
      * @param tuples the collection of tuples to add to
      * @param entry the target entry that access to is being regulated
-     * @throws NamingException if there are problems accessing attribute values
+     * @throws Exception if there are problems accessing attribute values
      */
-    private void addEntryAciTuples( Collection<ACITuple> tuples, ServerEntry entry ) throws NamingException
+    private void addEntryAciTuples( Collection<ACITuple> tuples, ServerEntry entry ) throws Exception
     {
         EntryAttribute entryAci = entry.get( entryAciType );
         
@@ -351,11 +350,11 @@
      * @param tuples the collection of tuples to add to
      * @param dn the normalized distinguished name of the protected entry
      * @param entry the target entry that access to is being regulated
-     * @throws NamingException if there are problems accessing attribute values
+     * @throws Exception if there are problems accessing attribute values
      * @param proxy the partition nexus proxy object
      */
     private void addSubentryAciTuples( PartitionNexusProxy proxy, Collection<ACITuple> tuples, LdapDN dn, ServerEntry entry )
-        throws NamingException
+        throws Exception
     {
         // only perform this for subentries
         if ( !entry.contains( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.SUBENTRY_OC ) )
@@ -425,7 +424,7 @@
      * -------------------------------------------------------------------------------
      */
 
-    public void add( NextInterceptor next, AddOperationContext addContext ) throws NamingException
+    public void add( NextInterceptor next, AddOperationContext addContext ) throws Exception
     {
         // Access the principal requesting the operation, and bypass checks if it is the admin
         Invocation invocation = InvocationStack.getInstance().peek();
@@ -502,7 +501,7 @@
     }
 
 
-    public void delete( NextInterceptor next, DeleteOperationContext deleteContext ) throws NamingException
+    public void delete( NextInterceptor next, DeleteOperationContext deleteContext ) throws Exception
     {
     	LdapDN name = deleteContext.getDn();
     	
@@ -548,7 +547,7 @@
     }
 
 
-    public void modify( NextInterceptor next, ModifyOperationContext opContext ) throws NamingException
+    public void modify( NextInterceptor next, ModifyOperationContext opContext ) throws Exception
     {
         // Access the principal requesting the operation, and bypass checks if it is the admin
         Invocation invocation = InvocationStack.getInstance().peek();
@@ -669,7 +668,7 @@
         groupCache.groupModified( name, mods, entry, registries );
     }
 
-    public boolean hasEntry( NextInterceptor next, EntryOperationContext entryContext ) throws NamingException
+    public boolean hasEntry( NextInterceptor next, EntryOperationContext entryContext ) throws Exception
     {
         LdapDN name = entryContext.getDn();
         Invocation invocation = InvocationStack.getInstance().peek();
@@ -714,9 +713,9 @@
      * @param principal the user associated with the call
      * @param dn the name of the entry being looked up
      * @param entry the raw entry pulled from the nexus
-     * @throws NamingException if undlying access to the DIT fails
+     * @throws Exception if undlying access to the DIT fails
      */
-    private void checkLookupAccess( LdapPrincipal principal, LdapDN dn, ServerEntry entry ) throws NamingException
+    private void checkLookupAccess( LdapPrincipal principal, LdapDN dn, ServerEntry entry ) throws Exception
     {
         // no permissions checks on the RootDSE
         if ( dn.toString().trim().equals( "" ) )
@@ -760,7 +759,7 @@
     }
 
 
-    public ServerEntry lookup( NextInterceptor next, LookupOperationContext lookupContext ) throws NamingException
+    public ServerEntry lookup( NextInterceptor next, LookupOperationContext lookupContext ) throws Exception
     {
         Invocation invocation = InvocationStack.getInstance().peek();
         LdapPrincipal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
@@ -783,7 +782,7 @@
         return next.lookup( lookupContext );
     }
 
-    public void rename( NextInterceptor next, RenameOperationContext renameContext ) throws NamingException
+    public void rename( NextInterceptor next, RenameOperationContext renameContext ) throws Exception
     {
         LdapDN name = renameContext.getDn();
 
@@ -837,7 +836,7 @@
 
 
     public void moveAndRename( NextInterceptor next, MoveAndRenameOperationContext moveAndRenameContext )
-        throws NamingException
+        throws Exception
     {
         LdapDN oriChildName = moveAndRenameContext.getDn();
         LdapDN newParentName = moveAndRenameContext.getParent();
@@ -918,7 +917,7 @@
     }
 
 
-    public void move( NextInterceptor next, MoveOperationContext moveContext ) throws NamingException
+    public void move( NextInterceptor next, MoveOperationContext moveContext ) throws Exception
     {
         LdapDN oriChildName = moveContext.getDn();
         LdapDN newParentName = moveContext.getParent();
@@ -996,12 +995,12 @@
     }
 
     
-    public NamingEnumeration<ServerSearchResult> list( NextInterceptor next, ListOperationContext opContext ) throws NamingException
+    public Cursor<ServerEntry> list( NextInterceptor next, ListOperationContext opContext ) throws Exception
     {
         Invocation invocation = InvocationStack.getInstance().peek();
         ServerLdapContext ctx = ( ServerLdapContext ) invocation.getCaller();
         LdapPrincipal user = ctx.getPrincipal();
-        NamingEnumeration<ServerSearchResult> e = next.list( opContext );
+        Cursor<ServerEntry> e = next.list( opContext );
         
         if ( isPrincipalAnAdministrator( user.getJndiName() ) || !enabled )
         {
@@ -1009,17 +1008,19 @@
         }
         
         AuthorizationFilter authzFilter = new AuthorizationFilter();
-        return new SearchResultFilteringEnumeration( e, DEFAULT_SEARCH_CONTROLS, invocation, authzFilter, "List authorization Filter" );
+//        return new SearchResultFilteringEnumeration( e, DEFAULT_SEARCH_CONTROLS, invocation, authzFilter, "List authorization Filter" );
+        // TODO NotImplementedException
+        throw new NotImplementedException();
     }
 
 
-    public NamingEnumeration<ServerSearchResult> search( NextInterceptor next, SearchOperationContext opContext ) throws NamingException
+    public Cursor<ServerEntry> search( NextInterceptor next, SearchOperationContext opContext ) throws Exception
     {
         Invocation invocation = InvocationStack.getInstance().peek();
         ServerLdapContext ctx = ( ServerLdapContext ) invocation.getCaller();
         LdapPrincipal user = ctx.getPrincipal();
         LdapDN principalDn = user.getJndiName();
-        NamingEnumeration<ServerSearchResult> e = next.search( opContext );
+        Cursor<ServerEntry> e = next.search( opContext );
 
         boolean isSubschemaSubentryLookup = subschemaSubentryDn.equals( opContext.getDn().getNormName() );
         SearchControls searchCtls = opContext.getSearchControls();
@@ -1031,7 +1032,9 @@
         }
         
         AuthorizationFilter authzFilter = new AuthorizationFilter();
-        return new SearchResultFilteringEnumeration( e, searchCtls, invocation, authzFilter, "Search authorization Filter" );
+//        return new SearchResultFilteringEnumeration( e, searchCtls, invocation, authzFilter, "Search authorization Filter" );
+        // TODO NotImplementedException
+        throw new NotImplementedException();
     }
 
     
@@ -1041,7 +1044,7 @@
     }
     
 
-    public boolean compare( NextInterceptor next, CompareOperationContext opContext ) throws NamingException
+    public boolean compare( NextInterceptor next, CompareOperationContext opContext ) throws Exception
     {
     	LdapDN name = opContext.getDn();
     	String oid = opContext.getOid();
@@ -1077,7 +1080,7 @@
     }
 
 
-    public LdapDN getMatchedName ( NextInterceptor next, GetMatchedNameOperationContext opContext ) throws NamingException
+    public LdapDN getMatchedName ( NextInterceptor next, GetMatchedNameOperationContext opContext ) throws Exception
     {
         // Access the principal requesting the operation, and bypass checks if it is the admin
         Invocation invocation = InvocationStack.getInstance().peek();
@@ -1120,13 +1123,13 @@
     }
 
 
-    public void cacheNewGroup( LdapDN name, ServerEntry entry ) throws NamingException
+    public void cacheNewGroup( LdapDN name, ServerEntry entry ) throws Exception
     {
         groupCache.groupAdded( name, entry );
     }
 
 
-    private boolean filter( Invocation invocation, LdapDN normName, ServerSearchResult result ) throws NamingException
+    private boolean filter( Invocation invocation, LdapDN normName, ServerSearchResult result ) throws Exception
     {
         ServerEntry resultEntry = result.getServerEntry();
 
@@ -1246,8 +1249,8 @@
      */
     class AuthorizationFilter implements SearchResultFilter
     {
-        public boolean accept( Invocation invocation, ServerSearchResult result, SearchControls controls )
-            throws NamingException
+        public boolean accept( Invocation invocation, ServerSearchResult result, SearchControls controls ) 
+            throws Exception
         {
             LdapDN normName = result.getDn().normalize( atRegistry.getNormalizerMapping() );
             return filter( invocation, normName, result );

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationInterceptor.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationInterceptor.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationInterceptor.java Wed May 21 13:36:48 2008
@@ -20,12 +20,12 @@
 package org.apache.directory.server.core.authz;
 
 
+import org.apache.commons.lang.NotImplementedException;
 import org.apache.directory.server.constants.ServerDNConstants;
 import org.apache.directory.server.core.DirectoryService;
+import org.apache.directory.server.core.cursor.Cursor;
 import org.apache.directory.server.core.entry.ServerEntry;
 import org.apache.directory.server.core.entry.ServerSearchResult;
-import org.apache.directory.server.core.enumeration.SearchResultFilter;
-import org.apache.directory.server.core.enumeration.SearchResultFilteringEnumeration;
 import org.apache.directory.server.core.interceptor.BaseInterceptor;
 import org.apache.directory.server.core.interceptor.Interceptor;
 import org.apache.directory.server.core.interceptor.NextInterceptor;
@@ -53,10 +53,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
 import javax.naming.NoPermissionException;
-import javax.naming.directory.SearchControls;
 import javax.naming.ldap.LdapContext;
 import java.util.HashSet;
 import java.util.Map;
@@ -171,7 +168,7 @@
     //    Lookup, search and list operations need to be handled using a filter
     // and so we need access to the filter service.
 
-    public void delete( NextInterceptor nextInterceptor, DeleteOperationContext opContext ) throws NamingException
+    public void delete( NextInterceptor nextInterceptor, DeleteOperationContext opContext ) throws Exception
     {
     	LdapDN name = opContext.getDn();
     	
@@ -280,7 +277,7 @@
     }
 
 
-    private void protectModifyAlterations( LdapDN dn ) throws NamingException
+    private void protectModifyAlterations( LdapDN dn ) throws Exception
     {
         LdapDN principalDn = getPrincipal().getJndiName();
 
@@ -344,7 +341,7 @@
     // ------------------------------------------------------------------------
 
     public void rename( NextInterceptor nextInterceptor, RenameOperationContext opContext )
-        throws NamingException
+        throws Exception
     {
         if ( enabled )
         {
@@ -355,7 +352,7 @@
     }
 
 
-    public void move( NextInterceptor nextInterceptor, MoveOperationContext opContext ) throws NamingException
+    public void move( NextInterceptor nextInterceptor, MoveOperationContext opContext ) throws Exception
     {
         if ( enabled )
         {
@@ -366,7 +363,7 @@
     }
 
 
-    public void moveAndRename( NextInterceptor nextInterceptor, MoveAndRenameOperationContext opContext ) throws NamingException
+    public void moveAndRename( NextInterceptor nextInterceptor, MoveAndRenameOperationContext opContext ) throws Exception
     {
         if ( enabled )
         {
@@ -377,7 +374,7 @@
     }
 
 
-    private void protectDnAlterations( LdapDN dn ) throws NamingException
+    private void protectDnAlterations( LdapDN dn ) throws Exception
     {
         LdapDN principalDn = getPrincipal().getJndiName();
 
@@ -425,7 +422,7 @@
     }
 
 
-    public ServerEntry lookup( NextInterceptor nextInterceptor, LookupOperationContext opContext ) throws NamingException
+    public ServerEntry lookup( NextInterceptor nextInterceptor, LookupOperationContext opContext ) throws Exception
     {
         ServerEntry serverEntry = nextInterceptor.lookup( opContext );
         
@@ -439,7 +436,7 @@
     }
 
 
-    private void protectLookUp( LdapDN normalizedDn ) throws NamingException
+    private void protectLookUp( LdapDN normalizedDn ) throws Exception
     {
         LdapContext ctx = ( LdapContext ) InvocationStack.getInstance().peek().getCaller();
         LdapDN principalDn = ( ( ServerContext ) ctx ).getPrincipal().getJndiName();
@@ -497,9 +494,9 @@
     }
 
 
-    public NamingEnumeration<ServerSearchResult> search( NextInterceptor nextInterceptor, SearchOperationContext opContext ) throws NamingException
+    public Cursor<ServerEntry> search( NextInterceptor nextInterceptor, SearchOperationContext opContext ) throws Exception
     {
-        NamingEnumeration<ServerSearchResult> e = nextInterceptor.search( opContext );
+        Cursor<ServerEntry> e = nextInterceptor.search( opContext );
 
         if ( !enabled )
         {
@@ -508,21 +505,23 @@
 
         Invocation invocation = InvocationStack.getInstance().peek();
 
-        return new SearchResultFilteringEnumeration( e, opContext.getSearchControls(), invocation, 
-            new SearchResultFilter()
-        {
-            public boolean accept( Invocation invocation, ServerSearchResult result, SearchControls controls )
-                throws NamingException
-            {
-                return DefaultAuthorizationInterceptor.this.isSearchable( invocation, result );
-            }
-        }, "Search Default Authorization filter" );
+//        return new SearchResultFilteringEnumeration( e, opContext.getSearchControls(), invocation, 
+//            new SearchResultFilter()
+//        {
+//            public boolean accept( Invocation invocation, ServerSearchResult result, SearchControls controls )
+//                throws Exception
+//            {
+//                return DefaultAuthorizationInterceptor.this.isSearchable( invocation, result );
+//            }
+//        }, "Search Default Authorization filter" );
+        // TODO not implemented
+        throw new NotImplementedException();
     }
 
 
-    public NamingEnumeration<ServerSearchResult> list( NextInterceptor nextInterceptor, ListOperationContext opContext ) throws NamingException
+    public Cursor<ServerEntry> list( NextInterceptor nextInterceptor, ListOperationContext opContext ) throws Exception
     {
-        NamingEnumeration<ServerSearchResult> result = nextInterceptor.list( opContext );
+        Cursor<ServerEntry> result = nextInterceptor.list( opContext );
         
         if ( !enabled )
         {
@@ -531,18 +530,21 @@
 
         Invocation invocation = InvocationStack.getInstance().peek();
         
-        return new SearchResultFilteringEnumeration( result, null, invocation, new SearchResultFilter()
-        {
-            public boolean accept( Invocation invocation, ServerSearchResult result, SearchControls controls )
-                throws NamingException
-            {
-                return DefaultAuthorizationInterceptor.this.isSearchable( invocation, result );
-            }
-        }, "List Default Authorization filter" );
+//        return new SearchResultFilteringEnumeration( result, null, invocation, new SearchResultFilter()
+//        {
+//            public boolean accept( Invocation invocation, ServerSearchResult result, SearchControls controls )
+//                throws Exception
+//            {
+//                return DefaultAuthorizationInterceptor.this.isSearchable( invocation, result );
+//            }
+//        }, "List Default Authorization filter" );
+        
+        // TODO not implemented
+        throw new NotImplementedException();
     }
 
 
-    private boolean isSearchable( Invocation invocation, ServerSearchResult result ) throws NamingException
+    private boolean isSearchable( Invocation invocation, ServerSearchResult result ) throws Exception
     {
         LdapDN principalDn = ( ( ServerContext ) invocation.getCaller() ).getPrincipal().getJndiName();
         LdapDN dn = result.getDn();

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/changelog/ChangeLogInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/changelog/ChangeLogInterceptor.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/changelog/ChangeLogInterceptor.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/changelog/ChangeLogInterceptor.java Wed May 21 13:36:48 2008
@@ -49,8 +49,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.naming.NamingException;
-
 
 /**
  * An interceptor which intercepts write operations to the directory and
@@ -90,7 +88,7 @@
     // Overridden (only change inducing) intercepted methods
     // -----------------------------------------------------------------------
 
-    public void add( NextInterceptor next, AddOperationContext opContext ) throws NamingException
+    public void add( NextInterceptor next, AddOperationContext opContext ) throws Exception
     {
         next.add( opContext );
 
@@ -121,7 +119,7 @@
      * The delete operation has to be stored with a way to restore the deleted element.
      * There is no way to do that but reading the entry and dump it into the LOG.
      */
-    public void delete( NextInterceptor next, DeleteOperationContext opContext ) throws NamingException
+    public void delete( NextInterceptor next, DeleteOperationContext opContext ) throws Exception
     {
         // @todo make sure we're not putting in operational attributes that cannot be user modified
         // must save the entry if change log is enabled
@@ -152,9 +150,9 @@
      *
      * @param dn the dn of the entry to get
      * @return the entry's attributes (may be immutable if the schema subentry)
-     * @throws NamingException on error accessing the entry's attributes
+     * @throws Exception on error accessing the entry's attributes
      */
-    private ServerEntry getAttributes( OperationContext opContext ) throws NamingException
+    private ServerEntry getAttributes( OperationContext opContext ) throws Exception
     {
         LdapDN dn = opContext.getDn();
         ServerEntry serverEntry;
@@ -176,7 +174,7 @@
     }
 
 
-    public void modify( NextInterceptor next, ModifyOperationContext opContext ) throws NamingException
+    public void modify( NextInterceptor next, ModifyOperationContext opContext ) throws Exception
     {
         ServerEntry serverEntry = null;
         Modification modification = ServerEntryUtils.getModificationItem( opContext.getModItems(), entryDeleted );
@@ -224,7 +222,7 @@
     // -----------------------------------------------------------------------
 
 
-    public void rename ( NextInterceptor next, RenameOperationContext renameContext ) throws NamingException
+    public void rename ( NextInterceptor next, RenameOperationContext renameContext ) throws Exception
     {
         ServerEntry serverEntry = null;
         
@@ -254,7 +252,7 @@
 
 
     public void moveAndRename( NextInterceptor next, MoveAndRenameOperationContext opCtx )
-        throws NamingException
+        throws Exception
     {
         ServerEntry serverEntry = null;
         
@@ -287,7 +285,7 @@
     }
 
 
-    public void move ( NextInterceptor next, MoveOperationContext opCtx ) throws NamingException
+    public void move ( NextInterceptor next, MoveOperationContext opCtx ) throws Exception
     {
         next.move( opCtx );
 

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/changelog/OriginalChangeLogInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/changelog/OriginalChangeLogInterceptor.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/changelog/OriginalChangeLogInterceptor.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/changelog/OriginalChangeLogInterceptor.java Wed May 21 13:36:48 2008
@@ -18,6 +18,7 @@
  */
 package org.apache.directory.server.core.changelog;
 
+
 import org.apache.directory.server.core.DirectoryService;
 import org.apache.directory.server.core.entry.ServerAttribute;
 import org.apache.directory.server.core.entry.ServerEntryUtils;
@@ -42,7 +43,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.naming.NamingException;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.PrintWriter;
@@ -215,7 +215,7 @@
     // Overridden (only change inducing) intercepted methods
     // -----------------------------------------------------------------------
 
-    public void add( NextInterceptor next, AddOperationContext opContext ) throws NamingException
+    public void add( NextInterceptor next, AddOperationContext opContext ) throws Exception
     {
         StringBuilder buf;
         next.add( opContext );
@@ -247,7 +247,7 @@
      * The delete operation has to be stored with a way to restore the deleted element.
      * There is no way to do that but reading the entry and dump it into the LOG.
      */
-    public void delete( NextInterceptor next, DeleteOperationContext opContext ) throws NamingException
+    public void delete( NextInterceptor next, DeleteOperationContext opContext ) throws Exception
     {
         next.delete( opContext );
 
@@ -278,7 +278,7 @@
     }
 
     
-    public void modify( NextInterceptor next, ModifyOperationContext opContext ) throws NamingException
+    public void modify( NextInterceptor next, ModifyOperationContext opContext ) throws Exception
     {
         StringBuilder buf;
         next.modify( opContext );
@@ -323,7 +323,7 @@
     // -----------------------------------------------------------------------
 
     
-    public void rename ( NextInterceptor next, RenameOperationContext renameContext ) throws NamingException
+    public void rename ( NextInterceptor next, RenameOperationContext renameContext ) throws Exception
     {
         next.rename( renameContext );
         
@@ -360,7 +360,7 @@
 
     
     public void moveAndRename( NextInterceptor next, MoveAndRenameOperationContext moveAndRenameOperationContext )
-        throws NamingException
+        throws Exception
     {
         next.moveAndRename( moveAndRenameOperationContext );
         
@@ -397,7 +397,7 @@
     }
 
     
-    public void move ( NextInterceptor next, MoveOperationContext moveOperationContext ) throws NamingException
+    public void move ( NextInterceptor next, MoveOperationContext moveOperationContext ) throws Exception
     {
         next.move( moveOperationContext );
         
@@ -444,9 +444,9 @@
      * @param buf the buffer written to and returned (for chaining)
      * @param attr the attribute written to the buffer
      * @return the buffer argument to allow for call chaining.
-     * @throws NamingException if the attribute is not identified by the registry
+     * @throws Exception if the attribute is not identified by the registry
      */
-    private StringBuilder append( StringBuilder buf, ServerAttribute attr ) throws NamingException
+    private StringBuilder append( StringBuilder buf, ServerAttribute attr ) throws Exception
     {
         String id = attr.getId();
         boolean isBinary = ! atRegistry.lookup( id ).getSyntax().isHumanReadable();
@@ -500,9 +500,9 @@
      * the user is anonymous "" is returned.
      * 
      * @return the DN of the user executing the current intercepted operation
-     * @throws NamingException if we cannot access the interceptor stack
+     * @throws Exception if we cannot access the interceptor stack
      */
-    private String getPrincipalName() throws NamingException
+    private String getPrincipalName() throws Exception
     {
         ServerContext ctx = ( ServerContext ) InvocationStack.getInstance().peek().getCaller();
         return ctx.getPrincipal().getName();
@@ -522,9 +522,9 @@
      * @param mod the modified values if any for that attribute
      * @param modOp the modification operation as a string followd by ": "
      * @return the buffer argument provided for chaining
-     * @throws NamingException if the modification attribute id is undefined
+     * @throws Exception if the modification attribute id is undefined
      */
-    private StringBuilder append( StringBuilder buf, ServerAttribute mod, String modOp ) throws NamingException
+    private StringBuilder append( StringBuilder buf, ServerAttribute mod, String modOp ) throws Exception
     {
         buf.append( "\n" );
         buf.append( modOp );

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeInterceptor.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeInterceptor.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeInterceptor.java Wed May 21 13:36:48 2008
@@ -20,12 +20,13 @@
 package org.apache.directory.server.core.collective;
 
 
+import org.apache.commons.lang.NotImplementedException;
 import org.apache.directory.server.core.DirectoryService;
+import org.apache.directory.server.core.cursor.Cursor;
 import org.apache.directory.server.core.entry.DefaultServerAttribute;
 import org.apache.directory.server.core.entry.ServerEntry;
 import org.apache.directory.server.core.entry.ServerSearchResult;
 import org.apache.directory.server.core.enumeration.SearchResultFilter;
-import org.apache.directory.server.core.enumeration.SearchResultFilteringEnumeration;
 import org.apache.directory.server.core.interceptor.BaseInterceptor;
 import org.apache.directory.server.core.interceptor.NextInterceptor;
 import org.apache.directory.server.core.interceptor.context.AddOperationContext;
@@ -44,7 +45,6 @@
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.shared.ldap.schema.AttributeType;
 
-import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
 import javax.naming.directory.SearchControls;
 import java.util.HashSet;
@@ -329,22 +329,28 @@
     }
 
 
-    public NamingEnumeration<ServerSearchResult> list( NextInterceptor nextInterceptor, ListOperationContext opContext ) throws NamingException
+    public Cursor<ServerEntry> list( NextInterceptor nextInterceptor, ListOperationContext opContext ) throws Exception
     {
-        NamingEnumeration<ServerSearchResult> result = nextInterceptor.list( opContext );
+        Cursor<ServerEntry> result = nextInterceptor.list( opContext );
         Invocation invocation = InvocationStack.getInstance().peek();
         
-        return new SearchResultFilteringEnumeration( result, new SearchControls(), invocation, SEARCH_FILTER, "List collective Filter" );
+//        return new SearchResultFilteringEnumeration( result, new SearchControls(), invocation, SEARCH_FILTER, "List collective Filter" );
+        
+        // TODO not implemented
+        throw new NotImplementedException();
     }
 
 
-    public NamingEnumeration<ServerSearchResult> search( NextInterceptor nextInterceptor, SearchOperationContext opContext ) throws NamingException
+    public Cursor<ServerEntry> search( NextInterceptor nextInterceptor, SearchOperationContext opContext ) throws Exception
     {
-        NamingEnumeration<ServerSearchResult> result = nextInterceptor.search( opContext );
+        Cursor<ServerEntry> result = nextInterceptor.search( opContext );
         Invocation invocation = InvocationStack.getInstance().peek();
         
-        return new SearchResultFilteringEnumeration( 
-            result, opContext.getSearchControls(), invocation, SEARCH_FILTER, "Search collective Filter" );
+//        return new SearchResultFilteringEnumeration( 
+//            result, opContext.getSearchControls(), invocation, SEARCH_FILTER, "Search collective Filter" );
+        
+        // TODO not implemented
+        throw new NotImplementedException();
     }
     
     // ------------------------------------------------------------------------

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/enumeration/ReferralHandlingEnumeration.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/enumeration/ReferralHandlingEnumeration.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/enumeration/ReferralHandlingEnumeration.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/enumeration/ReferralHandlingEnumeration.java Wed May 21 13:36:48 2008
@@ -31,6 +31,7 @@
 
 import org.apache.directory.server.core.entry.ServerSearchResult;
 import org.apache.directory.server.core.interceptor.context.LookupOperationContext;
+import org.apache.directory.server.core.jndi.JndiUtils;
 import org.apache.directory.server.core.partition.PartitionNexus;
 import org.apache.directory.server.core.referral.ReferralLut;
 import org.apache.directory.server.schema.registries.Registries;
@@ -189,7 +190,14 @@
         {
             LdapDN prefetchedDn = new LdapDN( prefetched.getDn() );
             prefetchedDn.normalize( normalizerMap );
-            refs = nexus.lookup( new LookupOperationContext( registries, prefetchedDn ) ).get( SchemaConstants.REF_AT );
+            try
+            {
+                refs = nexus.lookup( new LookupOperationContext( registries, prefetchedDn ) ).get( SchemaConstants.REF_AT );
+            }
+            catch ( Exception e )
+            {
+                JndiUtils.wrap( e );
+            }
         }
 
         if ( refs == null )

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/enumeration/SearchResultFilteringEnumeration.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/enumeration/SearchResultFilteringEnumeration.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/enumeration/SearchResultFilteringEnumeration.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/enumeration/SearchResultFilteringEnumeration.java Wed May 21 13:36:48 2008
@@ -37,6 +37,7 @@
 import org.apache.directory.server.core.entry.ServerEntryUtils;
 import org.apache.directory.server.core.entry.ServerSearchResult;
 import org.apache.directory.server.core.invocation.Invocation;
+import org.apache.directory.server.core.jndi.JndiUtils;
 import org.apache.directory.shared.ldap.exception.OperationAbandonedException;
 import org.apache.directory.shared.ldap.message.AbandonListener;
 import org.apache.directory.shared.ldap.message.AbandonableRequest;
@@ -313,7 +314,14 @@
             }
             else if ( filters.size() == 1 )
             {
-                accepted = filters.get( 0 ).accept( invocation, tmp, searchControls );
+                try
+                {
+                    accepted = filters.get( 0 ).accept( invocation, tmp, searchControls );
+                }
+                catch ( Exception e )
+                {
+                    JndiUtils.wrap( e );
+                }
                 if ( accepted )
                 {
                     this.prefetched = tmp;
@@ -328,7 +336,14 @@
             for ( int ii = 0; ii < filters.size(); ii++ )
             {
                 SearchResultFilter filter = filters.get( ii );
-                accepted &= filter.accept( invocation, tmp, searchControls );
+                try
+                {
+                    accepted &= filter.accept( invocation, tmp, searchControls );
+                }
+                catch ( Exception e )
+                {
+                    JndiUtils.wrap( e );
+                }
 
                 if ( !accepted )
                 {

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/exception/ExceptionInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/exception/ExceptionInterceptor.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/exception/ExceptionInterceptor.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/exception/ExceptionInterceptor.java Wed May 21 13:36:48 2008
@@ -22,9 +22,10 @@
 
 import org.apache.commons.collections.map.LRUMap;
 import org.apache.directory.server.core.DirectoryService;
+import org.apache.directory.server.core.cursor.Cursor;
+import org.apache.directory.server.core.cursor.EmptyCursor;
 import org.apache.directory.server.core.entry.ServerAttribute;
 import org.apache.directory.server.core.entry.ServerEntry;
-import org.apache.directory.server.core.entry.ServerSearchResult;
 import org.apache.directory.server.core.interceptor.BaseInterceptor;
 import org.apache.directory.server.core.interceptor.NextInterceptor;
 import org.apache.directory.server.core.interceptor.context.AddOperationContext;
@@ -58,10 +59,6 @@
 import org.apache.directory.shared.ldap.message.ResultCodeEnum;
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.shared.ldap.schema.OidNormalizer;
-import org.apache.directory.shared.ldap.util.EmptyEnumeration;
-
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
 
 import java.util.List;
 import java.util.Map;
@@ -156,7 +153,7 @@
         // check if the entry already exists
         if ( nextInterceptor.hasEntry( new EntryOperationContext( registries, name ) ) )
         {
-            NamingException ne = new LdapNameAlreadyBoundException( name.getUpName() + " already exists!" );
+            LdapNameAlreadyBoundException ne = new LdapNameAlreadyBoundException( name.getUpName() + " already exists!" );
             ne.setResolvedName( new LdapDN( name.getUpName() ) );
             throw ne;
         }
@@ -196,7 +193,7 @@
             {
                 String msg = "Attempt to add entry to alias '" + name.getUpName() + "' not allowed.";
                 ResultCodeEnum rc = ResultCodeEnum.ALIAS_PROBLEM;
-                NamingException e = new LdapNamingException( msg, rc );
+                LdapNamingException e = new LdapNamingException( msg, rc );
                 e.setResolvedName( new LdapDN( parentDn.getUpName() ) );
                 throw e;
             }
@@ -235,9 +232,9 @@
 
         // check if entry to delete has children (only leaves can be deleted)
         boolean hasChildren = false;
-        NamingEnumeration<ServerSearchResult> list = nextInterceptor.list( new ListOperationContext( registries, name ) );
+        Cursor<ServerEntry> list = nextInterceptor.list( new ListOperationContext( registries, name ) );
         
-        if ( list.hasMore() )
+        if ( list.next() )
         {
             hasChildren = true;
         }
@@ -266,12 +263,12 @@
     /**
      * Checks to see the base being searched exists, otherwise throws the appropriate LdapException.
      */
-    public NamingEnumeration<ServerSearchResult> list( NextInterceptor nextInterceptor, ListOperationContext opContext ) throws Exception
+    public Cursor<ServerEntry> list( NextInterceptor nextInterceptor, ListOperationContext opContext ) throws Exception
     {
         if ( opContext.getDn().getNormName().equals( subschemSubentryDn.getNormName() ) )
         {
             // there is nothing under the schema subentry
-            return new EmptyEnumeration<ServerSearchResult>();
+            return new EmptyCursor<ServerEntry>();
         }
         
         // check if entry to search exists
@@ -519,15 +516,15 @@
     /**
      * Checks to see the entry being searched exists, otherwise throws the appropriate LdapException.
      */
-    public NamingEnumeration<ServerSearchResult> search( NextInterceptor nextInterceptor, SearchOperationContext opContext ) throws Exception
+    public Cursor<ServerEntry> search( NextInterceptor nextInterceptor, SearchOperationContext opContext ) throws Exception
     {
         LdapDN base = opContext.getDn();
 
         try
         {
-	        NamingEnumeration<ServerSearchResult> result =  nextInterceptor.search( opContext );
+            Cursor<ServerEntry> result =  nextInterceptor.search( opContext );
 	        
-	        if ( ! result.hasMoreElements() )
+	        if ( ! result.next() )
 	        {
 	            if ( !base.isEmpty() && !( subschemSubentryDn.toNormName() ).equalsIgnoreCase( base.toNormName() ) )
 	            {

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/CoreContextFactory.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/CoreContextFactory.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/CoreContextFactory.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/CoreContextFactory.java Wed May 21 13:36:48 2008
@@ -71,8 +71,16 @@
             return new DeadContext();
         }
 
-        ServerLdapContext ctx = ( ServerLdapContext ) service.getJndiContext( principalDn, principal, credential,
-                authentication, providerUrl );
+        ServerLdapContext ctx = null;
+        try
+        {
+            ctx = ( ServerLdapContext ) service.getJndiContext( principalDn, principal, credential,
+                    authentication, providerUrl );
+        }
+        catch ( Exception e )
+        {
+            JndiUtils.wrap( e );
+        }
 
         // check to make sure we have access to the specified dn in provider URL
         ctx.lookup( "" );

Added: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/JndiUtils.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/JndiUtils.java?rev=658851&view=auto
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/JndiUtils.java (added)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/JndiUtils.java Wed May 21 13:36:48 2008
@@ -0,0 +1,44 @@
+/*
+ *   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.server.core.jndi;
+
+import javax.naming.NamingException;
+
+/**
+ * TODO JndiUtils.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class JndiUtils
+{
+    public static void wrap( Throwable t ) throws NamingException
+    {
+        if ( t instanceof NamingException )
+        {
+            throw ( NamingException ) t;
+        }
+        
+        NamingException ne = new NamingException( t.getMessage() );
+        ne.setRootCause( t );
+        throw ne;
+    }
+}

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java Wed May 21 13:36:48 2008
@@ -20,14 +20,15 @@
 package org.apache.directory.server.core.jndi;
 
 
+import org.apache.commons.lang.NotImplementedException;
 import org.apache.directory.server.core.DirectoryService;
 import org.apache.directory.server.core.authn.AuthenticationInterceptor;
 import org.apache.directory.server.core.authn.LdapPrincipal;
+import org.apache.directory.server.core.cursor.Cursor;
 import org.apache.directory.server.core.entry.DefaultServerEntry;
 import org.apache.directory.shared.ldap.entry.EntryAttribute;
 import org.apache.directory.server.core.entry.ServerEntry;
 import org.apache.directory.server.core.entry.ServerEntryUtils;
-import org.apache.directory.server.core.entry.ServerSearchResult;
 import org.apache.directory.server.core.interceptor.context.AddOperationContext;
 import org.apache.directory.server.core.interceptor.context.BindOperationContext;
 import org.apache.directory.server.core.interceptor.context.DeleteOperationContext;
@@ -146,7 +147,7 @@
      */
     @SuppressWarnings(value =
         { "unchecked" })
-    protected ServerContext( DirectoryService service, Hashtable<String, Object> env ) throws NamingException
+    protected ServerContext( DirectoryService service, Hashtable<String, Object> env ) throws Exception
     {
         this.service = service;
 
@@ -209,7 +210,7 @@
      * @param entry
      * @param target
      */
-    protected void doAddOperation( LdapDN target, ServerEntry entry ) throws NamingException
+    protected void doAddOperation( LdapDN target, ServerEntry entry ) throws Exception
     {
         // setup the op context and populate with request controls
         AddOperationContext opCtx = new AddOperationContext( service.getRegistries(), entry );
@@ -229,7 +230,7 @@
      * Used to encapsulate [de]marshalling of controls before and after delete operations.
      * @param target
      */
-    protected void doDeleteOperation( LdapDN target ) throws NamingException
+    protected void doDeleteOperation( LdapDN target ) throws Exception
     {
         // setup the op context and populate with request controls
         DeleteOperationContext opCtx = new DeleteOperationContext( registries, target );
@@ -252,8 +253,8 @@
      * @param searchControls
      * @return NamingEnumeration
      */
-    protected NamingEnumeration<ServerSearchResult> doSearchOperation( LdapDN dn, AliasDerefMode aliasDerefMode,
-        ExprNode filter, SearchControls searchControls ) throws NamingException
+    protected Cursor<ServerEntry> doSearchOperation( LdapDN dn, AliasDerefMode aliasDerefMode,
+        ExprNode filter, SearchControls searchControls ) throws Exception
     {
         // setup the op context and populate with request controls
         SearchOperationContext opCtx = new SearchOperationContext( registries, dn, aliasDerefMode, filter,
@@ -261,7 +262,7 @@
         opCtx.addRequestControls( requestControls );
 
         // execute search operation
-        NamingEnumeration<ServerSearchResult> results = nexusProxy.search( opCtx );
+        Cursor<ServerEntry> results = nexusProxy.search( opCtx );
 
         // clear the request controls and set the response controls 
         requestControls = EMPTY_CONTROLS;
@@ -274,14 +275,14 @@
     /**
      * Used to encapsulate [de]marshalling of controls before and after list operations.
      */
-    protected NamingEnumeration<ServerSearchResult> doListOperation( LdapDN target ) throws NamingException
+    protected Cursor<ServerEntry> doListOperation( LdapDN target ) throws Exception
     {
         // setup the op context and populate with request controls
         ListOperationContext opCtx = new ListOperationContext( registries, target );
         opCtx.addRequestControls( requestControls );
 
         // execute list operation
-        NamingEnumeration<ServerSearchResult> results = nexusProxy.list( opCtx );
+        Cursor<ServerEntry> results = nexusProxy.list( opCtx );
 
         // clear the request controls and set the response controls 
         requestControls = EMPTY_CONTROLS;
@@ -291,7 +292,7 @@
     }
 
 
-    protected ServerEntry doGetRootDSEOperation( LdapDN target ) throws NamingException
+    protected ServerEntry doGetRootDSEOperation( LdapDN target ) throws Exception
     {
         GetRootDSEOperationContext opCtx = new GetRootDSEOperationContext( registries, target );
         opCtx.addRequestControls( requestControls );
@@ -305,7 +306,7 @@
     /**
      * Used to encapsulate [de]marshalling of controls before and after lookup operations.
      */
-    protected ServerEntry doLookupOperation( LdapDN target ) throws NamingException
+    protected ServerEntry doLookupOperation( LdapDN target ) throws Exception
     {
         // setup the op context and populate with request controls
         LookupOperationContext opCtx;
@@ -325,7 +326,7 @@
     /**
      * Used to encapsulate [de]marshalling of controls before and after lookup operations.
      */
-    protected ServerEntry doLookupOperation( LdapDN target, String[] attrIds ) throws NamingException
+    protected ServerEntry doLookupOperation( LdapDN target, String[] attrIds ) throws Exception
     {
         // setup the op context and populate with request controls
         LookupOperationContext opCtx;
@@ -357,7 +358,7 @@
      * Used to encapsulate [de]marshalling of controls before and after bind operations.
      */
     protected void doBindOperation( LdapDN bindDn, byte[] credentials, List<String> mechanisms, String saslAuthId )
-        throws NamingException
+        throws Exception
     {
         // setup the op context and populate with request controls
         BindOperationContext opCtx = new BindOperationContext( registries );
@@ -380,7 +381,7 @@
      * Used to encapsulate [de]marshalling of controls before and after moveAndRename operations.
      */
     protected void doMoveAndRenameOperation( LdapDN oldDn, LdapDN parent, String newRdn, boolean delOldDn )
-        throws NamingException
+        throws Exception
     {
         // setup the op context and populate with request controls
         MoveAndRenameOperationContext opCtx = new MoveAndRenameOperationContext( registries, oldDn, parent, new Rdn(
@@ -399,7 +400,7 @@
     /**
      * Used to encapsulate [de]marshalling of controls before and after modify operations.
      */
-    protected void doModifyOperation( LdapDN dn, List<Modification> modifications ) throws NamingException
+    protected void doModifyOperation( LdapDN dn, List<Modification> modifications ) throws Exception
     {
         // setup the op context and populate with request controls
         ModifyOperationContext opCtx = new ModifyOperationContext( registries, dn, modifications );
@@ -417,7 +418,7 @@
     /**
      * Used to encapsulate [de]marshalling of controls before and after moveAndRename operations.
      */
-    protected void doMove( LdapDN oldDn, LdapDN target ) throws NamingException
+    protected void doMove( LdapDN oldDn, LdapDN target ) throws Exception
     {
         // setup the op context and populate with request controls
         MoveOperationContext opCtx = new MoveOperationContext( registries, oldDn, target );
@@ -435,7 +436,7 @@
     /**
      * Used to encapsulate [de]marshalling of controls before and after rename operations.
      */
-    protected void doRename( LdapDN oldDn, String newRdn, boolean delOldRdn ) throws NamingException
+    protected void doRename( LdapDN oldDn, String newRdn, boolean delOldRdn ) throws Exception
     {
         // setup the op context and populate with request controls
         RenameOperationContext opCtx = new RenameOperationContext( registries, oldDn, new Rdn( newRdn ), delOldRdn );
@@ -630,7 +631,14 @@
          * we need to copy over the controls as well to propagate the complete 
          * environment besides what's in the hashtable for env.
          */
-        doAddOperation( target, serverEntry );
+        try
+        {
+            doAddOperation( target, serverEntry );
+        }
+        catch ( Exception e )
+        {
+            JndiUtils.wrap( e );
+        }
         return new ServerLdapContext( service, principal, target );
     }
 
@@ -656,7 +664,14 @@
             throw new LdapNoPermissionException( "can't delete the rootDSE" );
         }
 
-        doDeleteOperation( target );
+        try
+        {
+            doDeleteOperation( target );
+        }
+        catch ( Exception e )
+        {
+            JndiUtils.wrap( e );
+        }
     }
 
 
@@ -704,13 +719,27 @@
 
         if ( outServerEntry != null )
         {
-            doAddOperation( target, outServerEntry );
+            try
+            {
+                doAddOperation( target, outServerEntry );
+            }
+            catch ( Exception e )
+            {
+                JndiUtils.wrap( e );
+            }
             return;
         }
 
         if ( obj instanceof ServerEntry )
         {
-            doAddOperation( target, ( ServerEntry ) obj );
+            try
+            {
+                doAddOperation( target, ( ServerEntry ) obj );
+            }
+            catch ( Exception e )
+            {
+                JndiUtils.wrap( e );
+            }
         }
         // Check for Referenceable
         else if ( obj instanceof Referenceable )
@@ -741,7 +770,14 @@
 
             // Serialize object into entry attributes and add it.
             JavaLdapSupport.serialize( serverEntry, obj, registries );
-            doAddOperation( target, serverEntry );
+            try
+            {
+                doAddOperation( target, serverEntry );
+            }
+            catch ( Exception e )
+            {
+                JndiUtils.wrap( e );
+            }
         }
         else if ( obj instanceof DirContext )
         {
@@ -758,7 +794,14 @@
             }
 
             injectRdnAttributeValues( target, serverEntry );
-            doAddOperation( target, serverEntry );
+            try
+            {
+                doAddOperation( target, serverEntry );
+            }
+            catch ( Exception e )
+            {
+                JndiUtils.wrap( e );
+            }
         }
         else
         {
@@ -820,7 +863,14 @@
          */
         if ( ( oldName.size() == newName.size() ) && oldBase.equals( newBase ) )
         {
-            doRename( oldDn, newRdn, delOldRdn );
+            try
+            {
+                doRename( oldDn, newRdn, delOldRdn );
+            }
+            catch ( Exception e )
+            {
+                JndiUtils.wrap( e );
+            }
         }
         else
         {
@@ -829,11 +879,25 @@
 
             if ( newRdn.equalsIgnoreCase( oldRdn ) )
             {
-                doMove( oldDn, target );
+                try
+                {
+                    doMove( oldDn, target );
+                }
+                catch ( Exception e )
+                {
+                    JndiUtils.wrap( e );
+                }
             }
             else
             {
-                doMoveAndRenameOperation( oldDn, target, newRdn, delOldRdn );
+                try
+                {
+                    doMoveAndRenameOperation( oldDn, target, newRdn, delOldRdn );
+                }
+                catch ( Exception e )
+                {
+                    JndiUtils.wrap( e );
+                }
             }
         }
     }
@@ -855,9 +919,16 @@
     {
         LdapDN target = buildTarget( name );
 
-        if ( nexusProxy.hasEntry( new EntryOperationContext( registries, target ) ) )
+        try
         {
-            doDeleteOperation( target );
+            if ( nexusProxy.hasEntry( new EntryOperationContext( registries, target ) ) )
+            {
+                doDeleteOperation( target );
+            }
+        }
+        catch ( Exception e )
+        {
+            JndiUtils.wrap( e );
         }
 
         bind( name, obj );
@@ -878,7 +949,14 @@
      */
     public void unbind( Name name ) throws NamingException
     {
-        doDeleteOperation( buildTarget( name ) );
+        try
+        {
+            doDeleteOperation( buildTarget( name ) );
+        }
+        catch ( Exception e )
+        {
+            JndiUtils.wrap( e );
+        }
     }
 
 
@@ -906,15 +984,22 @@
         Object obj;
         LdapDN target = buildTarget( name );
 
-        ServerEntry serverEntry;
+        ServerEntry serverEntry = null;
 
-        if ( name.size() == 0 )
+        try
         {
-            serverEntry = doGetRootDSEOperation( target );
+            if ( name.size() == 0 )
+            {
+                serverEntry = doGetRootDSEOperation( target );
+            }
+            else
+            {
+                serverEntry = doLookupOperation( target );
+            }
         }
-        else
+        catch ( Exception e )
         {
-            serverEntry = doLookupOperation( target );
+            JndiUtils.wrap( e );
         }
 
         try
@@ -1024,7 +1109,9 @@
         { "unchecked" })
     public NamingEnumeration list( Name name ) throws NamingException
     {
-        return ServerEntryUtils.toSearchResultEnum( doListOperation( buildTarget( name ) ) );
+//        return ServerEntryUtils.toSearchResultEnum( doListOperation( buildTarget( name ) ) );
+        // TODO not implemented
+        throw new NotImplementedException();
     }
 
 
@@ -1052,7 +1139,9 @@
         SearchControls ctls = new SearchControls();
         ctls.setSearchScope( SearchControls.ONELEVEL_SCOPE );
         AliasDerefMode aliasDerefMode = AliasDerefMode.getEnum( getEnvironment() );
-        return doSearchOperation( base, aliasDerefMode, filter, ctls );
+//        return doSearchOperation( base, aliasDerefMode, filter, ctls );
+        // TODO not implemented
+        throw new NotImplementedException();
     }
 
 

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerDirContext.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerDirContext.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerDirContext.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerDirContext.java Wed May 21 13:36:48 2008
@@ -20,6 +20,7 @@
 package org.apache.directory.server.core.jndi;
 
 
+import org.apache.commons.lang.NotImplementedException;
 import org.apache.directory.server.core.DirectoryService;
 import org.apache.directory.server.core.authn.LdapPrincipal;
 import org.apache.directory.server.core.entry.ServerEntry;
@@ -90,7 +91,7 @@
      * @param env the environment used for this context
      * @throws NamingException if something goes wrong
      */
-    public ServerDirContext( DirectoryService service, Hashtable<String, Object> env ) throws NamingException
+    public ServerDirContext( DirectoryService service, Hashtable<String, Object> env ) throws Exception
     {
         super( service, env );
     }
@@ -127,7 +128,18 @@
      */
     public Attributes getAttributes( Name name ) throws NamingException
     {
-        return ServerEntryUtils.toAttributesImpl( doLookupOperation( buildTarget( name ) ) );
+        Attributes attrs = null;
+        
+        try
+        {
+            attrs = ServerEntryUtils.toAttributesImpl( doLookupOperation( buildTarget( name ) ) );
+        }
+        catch ( Exception e )
+        {
+            JndiUtils.wrap( e );
+        }
+        
+        return attrs;
     }
 
 
@@ -147,7 +159,17 @@
      */
     public Attributes getAttributes( Name name, String[] attrIds ) throws NamingException
     {
-        return ServerEntryUtils.toAttributesImpl( doLookupOperation( buildTarget( name ), attrIds ) );
+        Attributes attrs = null;
+        try
+        {
+            attrs = ServerEntryUtils.toAttributesImpl( doLookupOperation( buildTarget( name ), attrIds ) );
+        }
+        catch ( Exception e )
+        {
+            JndiUtils.wrap( e );
+        }
+        
+        return attrs;
     }
 
 
@@ -183,13 +205,20 @@
         List<Modification> newMods = ServerEntryUtils.toServerModification( modItems, registries
             .getAttributeTypeRegistry() );
 
-        if ( name instanceof LdapDN )
+        try
         {
-            doModifyOperation( buildTarget( name ), newMods );
+            if ( name instanceof LdapDN )
+            {
+                doModifyOperation( buildTarget( name ), newMods );
+            }
+            else
+            {
+                doModifyOperation( buildTarget( new LdapDN( name ) ), newMods );
+            }
         }
-        else
+        catch( Exception e )
         {
-            doModifyOperation( buildTarget( new LdapDN( name ) ), newMods );
+            JndiUtils.wrap( e );
         }
     }
 
@@ -229,7 +258,14 @@
     {
         List<Modification> newMods = ServerEntryUtils
             .toServerModification( mods, registries.getAttributeTypeRegistry() );
-        doModifyOperation( buildTarget( new LdapDN( name ) ), newMods );
+        try
+        {
+            doModifyOperation( buildTarget( new LdapDN( name ) ), newMods );
+        }
+        catch ( Exception e )
+        {
+            JndiUtils.wrap( e );
+        }
     }
 
 
@@ -241,7 +277,14 @@
     {
         List<Modification> newMods = ServerEntryUtils
             .toServerModification( mods, registries.getAttributeTypeRegistry() );
-        doModifyOperation( buildTarget( new LdapDN( name ) ), newMods );
+        try
+        {
+            doModifyOperation( buildTarget( new LdapDN( name ) ), newMods );
+        }
+        catch ( Exception e )
+        {
+            JndiUtils.wrap( e );
+        }
     }
 
 
@@ -283,7 +326,14 @@
         if ( null == obj )
         {
             ServerEntry clone = ( ServerEntry ) serverEntry.clone();
-            doAddOperation( target, clone );
+            try
+            {
+                doAddOperation( target, clone );
+            }
+            catch ( Exception e )
+            {
+                JndiUtils.wrap( e );
+            }
             return;
         }
 
@@ -303,7 +353,14 @@
                 }
             }
 
-            doAddOperation( target, clone );
+            try
+            {
+                doAddOperation( target, clone );
+            }
+            catch ( Exception e )
+            {
+                JndiUtils.wrap( e );
+            }
             return;
         }
 
@@ -334,7 +391,14 @@
 
             // Serialize object into entry attributes and add it.
             JavaLdapSupport.serialize( serverEntry, obj, registries );
-            doAddOperation( target, clone );
+            try
+            {
+                doAddOperation( target, clone );
+            }
+            catch ( Exception e )
+            {
+                JndiUtils.wrap( e );
+            }
         }
         else if ( obj instanceof DirContext )
         {
@@ -350,7 +414,14 @@
                 }
             }
 
-            doAddOperation( target, entry );
+            try
+            {
+                doAddOperation( target, entry );
+            }
+            catch ( Exception e )
+            {
+                JndiUtils.wrap( e );
+            }
         }
         else
         {
@@ -377,9 +448,16 @@
     {
         LdapDN target = buildTarget( name );
 
-        if ( getNexusProxy().hasEntry( new EntryOperationContext( registries, target ) ) )
+        try
+        {
+            if ( getNexusProxy().hasEntry( new EntryOperationContext( registries, target ) ) )
+            {
+                doDeleteOperation( target );
+            }
+        }
+        catch ( Exception e )
         {
-            doDeleteOperation( target );
+            JndiUtils.wrap( e );
         }
 
         bind( name, obj, AttributeUtils.toCaseInsensitive( attrs ) );
@@ -451,7 +529,14 @@
         }
 
         // Add the new context to the server which as a side effect adds
-        doAddOperation( target, ServerEntryUtils.toServerEntry( attributes, target, registries ) );
+        try
+        {
+            doAddOperation( target, ServerEntryUtils.toServerEntry( attributes, target, registries ) );
+        }
+        catch ( Exception e )
+        {
+            JndiUtils.wrap( e );
+        }
 
         // Initialize the new context
         return new ServerLdapContext( getService(), getPrincipal(), target );
@@ -552,7 +637,9 @@
         {
             PresenceNode filter = new PresenceNode( SchemaConstants.OBJECT_CLASS_AT );
             AliasDerefMode aliasDerefMode = AliasDerefMode.getEnum( getEnvironment() );
-            return ServerEntryUtils.toSearchResultEnum( doSearchOperation( target, aliasDerefMode, filter, ctls ) );
+//            return ServerEntryUtils.toSearchResultEnum( doSearchOperation( target, aliasDerefMode, filter, ctls ) );
+            // TODO not implemented
+            throw new NotImplementedException();
         }
 
         // Handle simple filter expressions without multiple terms
@@ -577,7 +664,9 @@
                 }
 
                 AliasDerefMode aliasDerefMode = AliasDerefMode.getEnum( getEnvironment() );
-                return ServerEntryUtils.toSearchResultEnum( doSearchOperation( target, aliasDerefMode, node, ctls ) );
+//                return ServerEntryUtils.toSearchResultEnum( doSearchOperation( target, aliasDerefMode, node, ctls ) );
+                // TODO not implemented
+                throw new NotImplementedException();
             }
         }
 
@@ -624,7 +713,9 @@
         }
 
         AliasDerefMode aliasDerefMode = AliasDerefMode.getEnum( getEnvironment() );
-        return ServerEntryUtils.toSearchResultEnum( doSearchOperation( target, aliasDerefMode, filter, ctls ) );
+//        return ServerEntryUtils.toSearchResultEnum( doSearchOperation( target, aliasDerefMode, filter, ctls ) );
+        // TODO not implemented
+        throw new NotImplementedException();
     }
 
 
@@ -655,7 +746,9 @@
     {
         LdapDN target = buildTarget( name );
         AliasDerefMode aliasDerefMode = AliasDerefMode.getEnum( getEnvironment() );
-        return ServerEntryUtils.toSearchResultEnum( doSearchOperation( target, aliasDerefMode, filter, cons ) );
+//        return ServerEntryUtils.toSearchResultEnum( doSearchOperation( target, aliasDerefMode, filter, cons ) );
+        // TODO not implemented
+        throw new NotImplementedException();
     }
 
 
@@ -682,7 +775,9 @@
         }
 
         AliasDerefMode aliasDerefMode = AliasDerefMode.getEnum( getEnvironment() );
-        return ServerEntryUtils.toSearchResultEnum( doSearchOperation( target, aliasDerefMode, filterNode, cons ) );
+//        return ServerEntryUtils.toSearchResultEnum( doSearchOperation( target, aliasDerefMode, filterNode, cons ) );
+        // TODO not implemented
+        throw new NotImplementedException();
     }
 
 

Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerLdapContext.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerLdapContext.java?rev=658851&r1=658850&r2=658851&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerLdapContext.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/jndi/ServerLdapContext.java Wed May 21 13:36:48 2008
@@ -61,7 +61,7 @@
      * @param env the JNDI environment parameters
      * @throws NamingException the context cannot be created
      */
-    public ServerLdapContext( DirectoryService service, Hashtable<String, Object> env ) throws NamingException
+    public ServerLdapContext( DirectoryService service, Hashtable<String, Object> env ) throws Exception
     {
         super( service, env );
         refService = ( ( ReferralInterceptor ) service.getInterceptorChain().get( ReferralInterceptor.class.getName() ) );
@@ -234,7 +234,14 @@
         LdapDN principalDn = super.getPrincipal().getJndiName();
         UnbindOperationContext opCtx = new UnbindOperationContext( registries, principalDn );
         opCtx.addRequestControls( requestControls );
-        super.getNexusProxy().unbind( opCtx );
+        try
+        {
+            super.getNexusProxy().unbind( opCtx );
+        }
+        catch ( Exception e )
+        {
+            JndiUtils.wrap( e );
+        }
         responseControls = opCtx.getResponseControls();
         requestControls = EMPTY_CONTROLS;
     }