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 2005/10/18 12:14:07 UTC

svn commit: r326075 - in /directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server: authz/ collective/ enumeration/ jndi/ operational/ schema/ subtree/

Author: akarasulu
Date: Tue Oct 18 03:13:54 2005
New Revision: 326075

URL: http://svn.apache.org/viewcvs?rev=326075&view=rev
Log:
changes ...


 o now passing the Invocation object to the filter instead of the JNDI 
   ServerContext so that we do not need to expose access to the Nexus 
   proxy from the JNDI context
 o ServerContext now does not expose the proxy any longer


Modified:
    directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/authz/AuthorizationService.java
    directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/authz/OldAuthorizationService.java
    directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/collective/CollectiveAttributeService.java
    directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/enumeration/SearchResultFilter.java
    directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/enumeration/SearchResultFilteringEnumeration.java
    directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/ServerContext.java
    directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/operational/OperationalAttributeService.java
    directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/schema/SchemaService.java
    directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/subtree/SubentryService.java

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/authz/AuthorizationService.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/authz/AuthorizationService.java?rev=326075&r1=326074&r2=326075&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/authz/AuthorizationService.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/authz/AuthorizationService.java Tue Oct 18 03:13:54 2005
@@ -49,7 +49,6 @@
 import javax.naming.Name;
 import javax.naming.NamingException;
 import javax.naming.NamingEnumeration;
-import javax.naming.ldap.LdapContext;
 import javax.naming.directory.*;
 import java.util.*;
 import java.text.ParseException;
@@ -756,7 +755,8 @@
 
     public NamingEnumeration list( NextInterceptor next, Name base ) throws NamingException
     {
-        ServerLdapContext ctx = ( ServerLdapContext ) InvocationStack.getInstance().peek().getCaller();
+        Invocation invocation = InvocationStack.getInstance().peek();
+        ServerLdapContext ctx = ( ServerLdapContext ) invocation.getCaller();
         LdapPrincipal user = ctx.getPrincipal();
         NamingEnumeration e = next.list( base );
         if ( user.getName().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL ) || ! enabled )
@@ -764,14 +764,15 @@
             return e;
         }
         AuthorizationFilter authzFilter = new AuthorizationFilter();
-        return new SearchResultFilteringEnumeration( e, DEFUALT_SEARCH_CONTROLS, ctx, authzFilter );
+        return new SearchResultFilteringEnumeration( e, DEFUALT_SEARCH_CONTROLS, invocation, authzFilter );
     }
 
 
     public NamingEnumeration search( NextInterceptor next, Name base, Map env, ExprNode filter,
                                      SearchControls searchCtls ) throws NamingException
     {
-        ServerLdapContext ctx = ( ServerLdapContext ) InvocationStack.getInstance().peek().getCaller();
+        Invocation invocation = InvocationStack.getInstance().peek();
+        ServerLdapContext ctx = ( ServerLdapContext ) invocation.getCaller();
         LdapPrincipal user = ctx.getPrincipal();
         NamingEnumeration e = next.search( base, env, filter, searchCtls );
         if ( user.getName().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL ) || ! enabled )
@@ -779,7 +780,7 @@
             return e;
         }
         AuthorizationFilter authzFilter = new AuthorizationFilter();
-        return new SearchResultFilteringEnumeration( e, searchCtls, ctx, authzFilter );
+        return new SearchResultFilteringEnumeration( e, searchCtls, invocation, authzFilter );
     }
 
 
@@ -829,7 +830,7 @@
         SEARCH_ATTRVAL_PERMS = Collections.singleton( MicroOperation.READ );
     }
 
-    private boolean filter( ServerLdapContext ctx, Name normName, SearchResult result ) throws NamingException
+    private boolean filter( Invocation invocation, Name normName, SearchResult result ) throws NamingException
     {
        /*
         * First call hasPermission() for entry level "Browse" and "ReturnDN" perm
@@ -837,6 +838,7 @@
         * process and return false.
         */
         Attributes entry = nexus.lookup( normName );
+        ServerLdapContext ctx = ( ServerLdapContext ) invocation.getCaller();
         Name userDn = ctx.getPrincipal().getJndiName();
         Set userGroups = groupCache.getGroups( userDn.toString() );
         Collection tuples = new HashSet();
@@ -844,7 +846,7 @@
         addEntryAciTuples( tuples, entry );
         addSubentryAciTuples( tuples, normName, entry );
 
-        if ( ! engine.hasPermission( ctx.getNexusProxy(), userGroups, userDn,
+        if ( ! engine.hasPermission( invocation.getProxy(), userGroups, userDn,
                 ctx.getPrincipal().getAuthenticationLevel(),
                 normName, null, null, SEARCH_ENTRY_PERMS, tuples, entry ) )
         {
@@ -863,7 +865,7 @@
         {
             // if attribute type scope access is not allowed then remove the attribute and continue
             Attribute attr = ( Attribute ) attributeList.next();
-            if ( ! engine.hasPermission( ctx.getNexusProxy(), userGroups, userDn,
+            if ( ! engine.hasPermission( invocation.getProxy(), userGroups, userDn,
                     ctx.getPrincipal().getAuthenticationLevel(),
                     normName, attr.getID(), null, SEARCH_ATTRVAL_PERMS, tuples, entry ) )
             {
@@ -879,7 +881,7 @@
             // attribute type scope is ok now let's determine value level scope
             for ( int ii = 0; ii < attr.size(); ii++ )
             {
-                if ( ! engine.hasPermission( ctx.getNexusProxy(), userGroups, userDn,
+                if ( ! engine.hasPermission( invocation.getProxy(), userGroups, userDn,
                         ctx.getPrincipal().getAuthenticationLevel(), normName,
                         attr.getID(), attr.get( ii ), SEARCH_ATTRVAL_PERMS, tuples, entry ) )
                 {
@@ -911,10 +913,9 @@
         }
 
 
-        public boolean accept( LdapContext ctx, SearchResult result, SearchControls controls ) throws NamingException
+        public boolean accept( Invocation invocation, SearchResult result, SearchControls controls ) throws NamingException
         {
             Name normName = parser.parse( result.getName() );
-            ServerLdapContext srvCtx = ( ServerLdapContext ) ctx;
 
 // looks like isRelative returns true even when the names for results are absolute!!!!
 // @todo this is a big bug in JNDI provider
@@ -925,7 +926,7 @@
 //                normName = base.addAll( normName );
 //            }
 
-            return filter( srvCtx, normName, result );
+            return filter( invocation, normName, result );
         }
     }
 }

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/authz/OldAuthorizationService.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/authz/OldAuthorizationService.java?rev=326075&r1=326074&r2=326075&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/authz/OldAuthorizationService.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/authz/OldAuthorizationService.java Tue Oct 18 03:13:54 2005
@@ -40,6 +40,7 @@
 import org.apache.ldap.server.interceptor.Interceptor;
 import org.apache.ldap.server.interceptor.NextInterceptor;
 import org.apache.ldap.server.invocation.InvocationStack;
+import org.apache.ldap.server.invocation.Invocation;
 import org.apache.ldap.server.jndi.ServerContext;
 import org.apache.ldap.server.partition.DirectoryPartitionNexus;
 import org.apache.ldap.server.schema.AttributeTypeRegistry;
@@ -412,14 +413,14 @@
         //    return null;
         //}
         
-        LdapContext ctx = ( LdapContext ) InvocationStack.getInstance().peek().getCaller();
-        return new SearchResultFilteringEnumeration( e, searchCtls, ctx,
+        Invocation invocation = InvocationStack.getInstance().peek();
+        return new SearchResultFilteringEnumeration( e, searchCtls, invocation,
             new SearchResultFilter()
             {
-                public boolean accept( LdapContext ctx, SearchResult result, SearchControls controls )
+                public boolean accept( Invocation invocation, SearchResult result, SearchControls controls )
                         throws NamingException
                 {
-                    return OldAuthorizationService.this.isSearchable( ctx, result );
+                    return OldAuthorizationService.this.isSearchable( invocation, result );
                 }
             });
     }
@@ -432,22 +433,21 @@
         {
             return e;
         }
-        LdapContext ctx = ( LdapContext ) InvocationStack.getInstance().peek().getCaller();
-        
-        return new SearchResultFilteringEnumeration( e, null, ctx,
+
+        Invocation invocation = InvocationStack.getInstance().peek();
+        return new SearchResultFilteringEnumeration( e, null, invocation,
             new SearchResultFilter()
             {
-                public boolean accept( LdapContext ctx, SearchResult result,
-                                       SearchControls controls )
+                public boolean accept( Invocation invocation, SearchResult result, SearchControls controls )
                         throws NamingException
                 {
-                    return OldAuthorizationService.this.isSearchable( ctx, result );
+                    return OldAuthorizationService.this.isSearchable( invocation, result );
                 }
             } );
     }
 
 
-    private boolean isSearchable( LdapContext ctx, SearchResult result )
+    private boolean isSearchable( Invocation invocataion, SearchResult result )
             throws NamingException
     {
         Name dn;
@@ -457,7 +457,7 @@
             dn = dnParser.parse( result.getName() );
         }
 
-        Name principalDn = ( ( ServerContext ) ctx ).getPrincipal().getJndiName();
+        Name principalDn = ( ( ServerContext ) invocataion.getCaller() ).getPrincipal().getJndiName();
         if ( !principalDn.equals( ADMIN_DN ) )
         {
             if ( dn.size() > 2 )

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/collective/CollectiveAttributeService.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/collective/CollectiveAttributeService.java?rev=326075&r1=326074&r2=326075&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/collective/CollectiveAttributeService.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/collective/CollectiveAttributeService.java Tue Oct 18 03:13:54 2005
@@ -25,6 +25,7 @@
 import org.apache.ldap.server.schema.AttributeTypeRegistry;
 import org.apache.ldap.server.subtree.SubentryService;
 import org.apache.ldap.server.invocation.InvocationStack;
+import org.apache.ldap.server.invocation.Invocation;
 import org.apache.ldap.server.enumeration.SearchResultFilteringEnumeration;
 import org.apache.ldap.server.enumeration.SearchResultFilter;
 import org.apache.ldap.common.filter.ExprNode;
@@ -35,7 +36,6 @@
 import javax.naming.NamingException;
 import javax.naming.NamingEnumeration;
 import javax.naming.Name;
-import javax.naming.ldap.LdapContext;
 import javax.naming.directory.Attributes;
 import javax.naming.directory.SearchControls;
 import javax.naming.directory.Attribute;
@@ -63,7 +63,7 @@
      */
     private final SearchResultFilter SEARCH_FILTER = new SearchResultFilter()
     {
-        public boolean accept( LdapContext ctx, SearchResult result, SearchControls controls )
+        public boolean accept( Invocation invocation, SearchResult result, SearchControls controls )
                 throws NamingException
         {
                 return filter( result.getAttributes() );
@@ -106,7 +106,7 @@
          * may have case variance.
          */
         Attribute collectiveExclusions = entry.get( "collectiveExclusions" );
-        Set exclusions = null;
+        Set exclusions;
         if ( collectiveExclusions != null )
         {
             if ( collectiveExclusions.contains( "2.5.18.0" ) ||
@@ -265,9 +265,8 @@
     public NamingEnumeration list( NextInterceptor nextInterceptor, Name base ) throws NamingException
     {
         NamingEnumeration e = nextInterceptor.list( base );
-        LdapContext ctx =
-            ( LdapContext ) InvocationStack.getInstance().peek().getCaller();
-        return new SearchResultFilteringEnumeration( e, new SearchControls(), ctx, SEARCH_FILTER );
+        Invocation invocation = InvocationStack.getInstance().peek();
+        return new SearchResultFilteringEnumeration( e, new SearchControls(), invocation, SEARCH_FILTER );
     }
 
 
@@ -276,8 +275,7 @@
             SearchControls searchCtls ) throws NamingException
     {
         NamingEnumeration e = nextInterceptor.search( base, env, filter, searchCtls );
-        LdapContext ctx =
-            ( LdapContext ) InvocationStack.getInstance().peek().getCaller();
-        return new SearchResultFilteringEnumeration( e, searchCtls, ctx, SEARCH_FILTER );
+        Invocation invocation = InvocationStack.getInstance().peek();
+        return new SearchResultFilteringEnumeration( e, searchCtls, invocation, SEARCH_FILTER );
     }
 }

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/enumeration/SearchResultFilter.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/enumeration/SearchResultFilter.java?rev=326075&r1=326074&r2=326075&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/enumeration/SearchResultFilter.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/enumeration/SearchResultFilter.java Tue Oct 18 03:13:54 2005
@@ -17,6 +17,8 @@
 package org.apache.ldap.server.enumeration;
 
 
+import org.apache.ldap.server.invocation.Invocation;
+
 import javax.naming.NamingException;
 import javax.naming.directory.SearchControls;
 import javax.naming.directory.SearchResult;
@@ -44,6 +46,6 @@
      * @return true if the result is to be returned, false if it is to be
      * discarded from the result set
      */
-    boolean accept( LdapContext ctx, SearchResult result, SearchControls controls )
+    boolean accept( Invocation invocation, SearchResult result, SearchControls controls )
         throws NamingException;
 }

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/enumeration/SearchResultFilteringEnumeration.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/enumeration/SearchResultFilteringEnumeration.java?rev=326075&r1=326074&r2=326075&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/enumeration/SearchResultFilteringEnumeration.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/enumeration/SearchResultFilteringEnumeration.java Tue Oct 18 03:13:54 2005
@@ -25,10 +25,10 @@
 import javax.naming.NamingException;
 import javax.naming.directory.SearchControls;
 import javax.naming.directory.SearchResult;
-import javax.naming.ldap.LdapContext;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+import org.apache.ldap.server.invocation.Invocation;
 
 
 /**
@@ -41,8 +41,8 @@
  */
 public class SearchResultFilteringEnumeration implements NamingEnumeration
 {
-    private static final Logger log = LoggerFactory.getLogger( SearchResultFilteringEnumeration.class );
-
+//    private static final Logger log = LoggerFactory.getLogger( SearchResultFilteringEnumeration.class );
+//
     /** the list of filters to be applied */
     private final List filters;
     /** the underlying decorated enumeration */
@@ -54,8 +54,8 @@
     private boolean isClosed = false;
     /** the controls associated with the search operation */
     private final SearchControls searchControls;
-    /** the LDAP context that made the search creating this enumeration */
-    private final LdapContext ctx;
+    /** the Invocation that representing the search creating this enumeration */
+    private final Invocation invocation;
 
 
     // ------------------------------------------------------------------------
@@ -70,17 +70,16 @@
      * @param decorated the underlying decorated enumeration
      * @param searchControls the search controls associated with the search
      * creating this enumeration
-     * @param ctx the LDAP context that made the search creating this
-     * enumeration
+     * @param invocation the invocation representing the seach that created this enumeration
      */
     public SearchResultFilteringEnumeration( NamingEnumeration decorated,
-                                       SearchControls searchControls,
-                                       LdapContext ctx,
-                                       SearchResultFilter filter )
+                                             SearchControls searchControls,
+                                             Invocation invocation,
+                                             SearchResultFilter filter )
             throws NamingException
     {
         this.searchControls = searchControls;
-        this.ctx = ctx;
+        this.invocation = invocation;
         this.filters = new ArrayList();
         this.filters.add( filter );
         this.decorated = decorated;
@@ -102,17 +101,16 @@
      * @param decorated the underlying decorated enumeration
      * @param searchControls the search controls associated with the search
      * creating this enumeration
-     * @param ctx the LDAP context that made the search creating this
-     * enumeration
+     * @param invocation the invocation representing the seach that created this enumeration
      */
     public SearchResultFilteringEnumeration( NamingEnumeration decorated,
-                                       SearchControls searchControls,
-                                       LdapContext ctx,
-                                       List filters )
+                                             SearchControls searchControls,
+                                             Invocation invocation,
+                                             List filters )
             throws NamingException
     {
         this.searchControls = searchControls;
-        this.ctx = ctx;
+        this.invocation = invocation;
         this.filters = new ArrayList();
         this.filters.addAll( filters );
         this.decorated = decorated;
@@ -241,8 +239,9 @@
      */
     private void prefetch() throws NamingException
     {
-        SearchResult tmp = null;
+        SearchResult tmp;
 
+        outer:
         while( decorated.hasMore() )
         {
             boolean accepted = true;
@@ -257,7 +256,7 @@
             else if ( filters.size() == 1 )
             {
                 accepted = ( ( SearchResultFilter ) filters.get( 0 ) )
-                        .accept( ctx, tmp, searchControls );
+                        .accept( invocation, tmp, searchControls );
                 if ( accepted )
                 {
                     this.prefetched = tmp;
@@ -271,11 +270,11 @@
             for ( int ii = 0; ii < filters.size(); ii ++ )
             {
                 SearchResultFilter filter = ( SearchResultFilter ) filters.get( ii );
-                accepted &= filter.accept( ctx, tmp, searchControls );
+                accepted &= filter.accept( invocation, tmp, searchControls );
 
                 if ( ! accepted )
                 {
-                    continue;
+                    continue outer;
                 }
             }
 

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/ServerContext.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/ServerContext.java?rev=326075&r1=326074&r2=326075&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/ServerContext.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/ServerContext.java Tue Oct 18 03:13:54 2005
@@ -194,20 +194,20 @@
     }
 
 
+    // ------------------------------------------------------------------------
+    // Protected Accessor Methods
+    // ------------------------------------------------------------------------
+
+
     /**
      * Gets the RootNexus proxy.
      *
      * @return the proxy to the backend nexus.
      */
-    public DirectoryPartitionNexusProxy getNexusProxy()
+    protected DirectoryPartitionNexus getNexusProxy()
     {
-       return ( DirectoryPartitionNexusProxy ) nexusProxy ;
+       return nexusProxy ;
     }
-
-
-    // ------------------------------------------------------------------------
-    // Protected Accessor Methods
-    // ------------------------------------------------------------------------
 
 
     /**

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/operational/OperationalAttributeService.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/operational/OperationalAttributeService.java?rev=326075&r1=326074&r2=326075&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/operational/OperationalAttributeService.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/operational/OperationalAttributeService.java Tue Oct 18 03:13:54 2005
@@ -30,7 +30,6 @@
 import javax.naming.directory.ModificationItem;
 import javax.naming.directory.SearchControls;
 import javax.naming.directory.SearchResult;
-import javax.naming.ldap.LdapContext;
 
 import org.apache.ldap.common.filter.ExprNode;
 import org.apache.ldap.common.schema.AttributeType;
@@ -44,6 +43,7 @@
 import org.apache.ldap.server.interceptor.Interceptor;
 import org.apache.ldap.server.interceptor.NextInterceptor;
 import org.apache.ldap.server.invocation.InvocationStack;
+import org.apache.ldap.server.invocation.Invocation;
 import org.apache.ldap.server.partition.DirectoryPartitionNexus;
 import org.apache.ldap.server.schema.AttributeTypeRegistry;
 
@@ -64,7 +64,7 @@
      */
     private final SearchResultFilter SEARCH_FILTER = new SearchResultFilter()
     {
-        public boolean accept( LdapContext ctx, SearchResult result, SearchControls controls )
+        public boolean accept( Invocation invocation, SearchResult result, SearchControls controls )
                 throws NamingException
         {
             if ( controls.getReturningAttributes() == null )
@@ -242,9 +242,8 @@
     public NamingEnumeration list( NextInterceptor nextInterceptor, Name base ) throws NamingException
     {
         NamingEnumeration e = nextInterceptor.list( base );
-        LdapContext ctx =
-            ( LdapContext ) InvocationStack.getInstance().peek().getCaller();
-        return new SearchResultFilteringEnumeration( e, new SearchControls(), ctx, SEARCH_FILTER );
+        Invocation invocation = InvocationStack.getInstance().peek();
+        return new SearchResultFilteringEnumeration( e, new SearchControls(), invocation, SEARCH_FILTER );
     }
 
 
@@ -252,15 +251,14 @@
             Name base, Map env, ExprNode filter,
             SearchControls searchCtls ) throws NamingException
     {
+        Invocation invocation = InvocationStack.getInstance().peek();
         NamingEnumeration e = nextInterceptor.search( base, env, filter, searchCtls );
         if ( searchCtls.getReturningAttributes() != null )
         {
             return e;
         }
 
-        LdapContext ctx =
-            ( LdapContext ) InvocationStack.getInstance().peek().getCaller();
-        return new SearchResultFilteringEnumeration( e, searchCtls, ctx, SEARCH_FILTER );
+        return new SearchResultFilteringEnumeration( e, searchCtls, invocation, SEARCH_FILTER );
     }
 
 

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/schema/SchemaService.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/schema/SchemaService.java?rev=326075&r1=326074&r2=326075&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/schema/SchemaService.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/schema/SchemaService.java Tue Oct 18 03:13:54 2005
@@ -27,7 +27,6 @@
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
 import javax.naming.directory.*;
-import javax.naming.ldap.LdapContext;
 
 import org.apache.ldap.common.filter.ExprNode;
 import org.apache.ldap.common.filter.PresenceNode;
@@ -52,12 +51,13 @@
 import org.apache.ldap.common.exception.LdapInvalidAttributeIdentifierException;
 import org.apache.ldap.common.exception.LdapNoSuchAttributeException;
 import org.apache.ldap.server.DirectoryServiceConfiguration;
+import org.apache.ldap.server.invocation.Invocation;
+import org.apache.ldap.server.invocation.InvocationStack;
 import org.apache.ldap.server.configuration.InterceptorConfiguration;
 import org.apache.ldap.server.enumeration.SearchResultFilteringEnumeration;
 import org.apache.ldap.server.enumeration.SearchResultFilter;
 import org.apache.ldap.server.interceptor.BaseInterceptor;
 import org.apache.ldap.server.interceptor.NextInterceptor;
-import org.apache.ldap.server.jndi.ServerLdapContext;
 import org.apache.ldap.server.partition.DirectoryPartitionNexus;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -132,8 +132,8 @@
     public NamingEnumeration list( NextInterceptor nextInterceptor, Name base ) throws NamingException
     {
         NamingEnumeration e = nextInterceptor.list( base );
-        LdapContext ctx = getContext();
-        return new SearchResultFilteringEnumeration( e, new SearchControls(), ctx, binaryAttributeFilter );
+        Invocation invocation = InvocationStack.getInstance().peek();
+        return new SearchResultFilteringEnumeration( e, new SearchControls(), invocation, binaryAttributeFilter );
     }
 
 
@@ -184,8 +184,8 @@
             return e;
         }
 
-        LdapContext ctx = getContext();
-        return new SearchResultFilteringEnumeration( e, searchCtls, ctx, binaryAttributeFilter );
+        Invocation invocation = InvocationStack.getInstance().peek();
+        return new SearchResultFilteringEnumeration( e, searchCtls, invocation, binaryAttributeFilter );
     }
 
 
@@ -198,7 +198,7 @@
 
         Set set = new HashSet();
         LockableAttributesImpl attrs = new LockableAttributesImpl();
-        LockableAttributeImpl attr = null;
+        LockableAttributeImpl attr;
 
         for ( int ii = 0; ii < ids.length; ii++ )
         {
@@ -373,9 +373,8 @@
     public Attributes lookup( NextInterceptor nextInterceptor, Name name ) throws NamingException
     {
         Attributes result = nextInterceptor.lookup( name );
-
-        ServerLdapContext ctx = ( ServerLdapContext ) getContext();
-        doFilter( ctx, result );
+        Invocation invocation = InvocationStack.getInstance().peek();
+        doFilter( invocation, result );
         return result;
     }
 
@@ -388,8 +387,8 @@
             return null;
         }
 
-        ServerLdapContext ctx = ( ServerLdapContext ) getContext();
-        doFilter( ctx, result );
+        Invocation invocation = InvocationStack.getInstance().peek();
+        doFilter( invocation, result );
         return result;
     }
 
@@ -458,12 +457,8 @@
         {
             changedEntryAttr.remove( change.get( jj ) );
         }
-        if ( changedEntryAttr.size() == 0 )
-        {
-            return true;
-        }
 
-        return false;
+        return changedEntryAttr.size() == 0;
     }
 
 
@@ -558,12 +553,12 @@
         ModificationItem objectClassMod = null;
         for ( int ii = 0; ii < mods.length; ii++ )
         {
-            if ( ( ( String ) mods[ii].getAttribute().getID() ).equalsIgnoreCase( "objectclass" ) )
+            if ( mods[ii].getAttribute().getID().equalsIgnoreCase( "objectclass" ) )
             {
                 objectClassMod = mods[ii];
             }
         }
-        Attribute objectClass = null;
+        Attribute objectClass;
 
         if ( objectClassMod == null )
         {
@@ -616,14 +611,14 @@
     }
 
 
-    private void doFilter( LdapContext ctx, Attributes entry )
+    private void doFilter( Invocation invocation, Attributes entry )
             throws NamingException
     {
         // set of AttributeType objects that are to behave as binaries
         Set binaries;
 
         // construct the set for fast lookups while filtering
-        String binaryIds = ( String ) ctx.getEnvironment().get( BINARY_KEY );
+        String binaryIds = ( String ) invocation.getCaller().getEnvironment().get( BINARY_KEY );
 
         if ( binaryIds == null )
         {
@@ -712,9 +707,9 @@
         }
 
 
-        public boolean accept( LdapContext ctx, SearchResult result, SearchControls controls ) throws NamingException
+        public boolean accept( Invocation invocation, SearchResult result, SearchControls controls ) throws NamingException
         {
-            doFilter( ctx, result.getAttributes() );
+            doFilter( invocation, result.getAttributes() );
             return true;
         }
     }

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/subtree/SubentryService.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/subtree/SubentryService.java?rev=326075&r1=326074&r2=326075&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/subtree/SubentryService.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/subtree/SubentryService.java Tue Oct 18 03:13:54 2005
@@ -23,6 +23,7 @@
 import org.apache.ldap.server.enumeration.SearchResultFilter;
 import org.apache.ldap.server.enumeration.SearchResultFilteringEnumeration;
 import org.apache.ldap.server.invocation.InvocationStack;
+import org.apache.ldap.server.invocation.Invocation;
 import org.apache.ldap.server.configuration.InterceptorConfiguration;
 import org.apache.ldap.server.partition.DirectoryPartitionNexus;
 import org.apache.ldap.server.schema.ConcreteNameComponentNormalizer;
@@ -41,8 +42,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.naming.ldap.LdapContext;
 import javax.naming.ldap.Control;
+import javax.naming.ldap.LdapContext;
 import javax.naming.directory.*;
 import javax.naming.NamingException;
 import javax.naming.NamingEnumeration;
@@ -93,7 +94,7 @@
      */
     private static final SearchResultFilter SUBENTRY_FILTER = new SearchResultFilter()
     {
-        public boolean accept( LdapContext ctx, SearchResult result, SearchControls controls )
+        public boolean accept( Invocation invocation, SearchResult result, SearchControls controls )
         {
             Attribute objectClasses = result.getAttributes().get( "objectClass" );
 
@@ -172,11 +173,11 @@
     public NamingEnumeration list( NextInterceptor nextInterceptor, Name base ) throws NamingException
     {
         NamingEnumeration e = nextInterceptor.list( base );
-        LdapContext ctx = ( LdapContext ) InvocationStack.getInstance().peek().getCaller();
+        Invocation invocation = InvocationStack.getInstance().peek();
 
-        if ( ! isSubentryVisible( ctx ) )
+        if ( ! isSubentryVisible( invocation ) )
         {
-            return new SearchResultFilteringEnumeration( e, new SearchControls(), ctx, SUBENTRY_FILTER );
+            return new SearchResultFilteringEnumeration( e, new SearchControls(), invocation, SUBENTRY_FILTER );
         }
 
         return e;
@@ -187,7 +188,7 @@
             SearchControls searchCtls ) throws NamingException
     {
         NamingEnumeration e = nextInterceptor.search( base, env, filter, searchCtls );
-        LdapContext ctx = ( LdapContext ) InvocationStack.getInstance().peek().getCaller();
+        Invocation invocation = InvocationStack.getInstance().peek();
 
         // object scope searches by default return subentries
         if ( searchCtls.getSearchScope() == SearchControls.OBJECT_SCOPE )
@@ -196,9 +197,9 @@
         }
 
         // for subtree and one level scope we filter
-        if ( ! isSubentryVisible( ctx ) )
+        if ( ! isSubentryVisible( invocation ) )
         {
-            return new SearchResultFilteringEnumeration( e, searchCtls, ctx, SUBENTRY_FILTER );
+            return new SearchResultFilteringEnumeration( e, searchCtls, invocation, SUBENTRY_FILTER );
         }
 
         return e;
@@ -209,13 +210,13 @@
      * Checks to see if subentries for the search and list operations should be
      * made visible based on the availability of the search request control
      *
-     * @param ctx the ldap context the search operation was invoked on
+     * @param invocation
      * @return true if subentries should be visible, false otherwise
      * @throws NamingException if there are problems accessing request controls
      */
-    private boolean isSubentryVisible( LdapContext ctx ) throws NamingException
+    private boolean isSubentryVisible( Invocation invocation ) throws NamingException
     {
-        Control[] reqControls = ctx.getRequestControls();
+        Control[] reqControls = ( ( LdapContext ) invocation.getCaller() ).getRequestControls();
 
         if ( reqControls == null || reqControls.length <= 0 )
         {