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 2007/10/08 07:54:47 UTC
svn commit: r582712 [2/3] - in /directory:
apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/
apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/
apacheds/branches/bigbang...
Copied: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultModifyHandler.java (from r582695, directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ModifyHandler.java)
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultModifyHandler.java?p2=directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultModifyHandler.java&p1=directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ModifyHandler.java&r1=582695&r2=582712&rev=582712&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ModifyHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultModifyHandler.java Sun Oct 7 22:54:38 2007
@@ -36,27 +36,25 @@
import org.apache.directory.shared.ldap.name.LdapDN;
import org.apache.directory.shared.ldap.util.ExceptionUtils;
import org.apache.mina.common.IoSession;
-import org.apache.mina.handler.demux.MessageHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * A single reply handler for {@link org.apache.directory.shared.ldap.message.ModifyRequest}s.
+ * A single reply handler for {@link ModifyRequest}s.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class ModifyHandler extends AbstractLdapHandler implements MessageHandler
+public class DefaultModifyHandler extends ModifyHandler
{
- private static final Logger log = LoggerFactory.getLogger( ModifyHandler.class );
+ private static final Logger LOG = LoggerFactory.getLogger( ModifyHandler.class );
/** Speedup for logs */
- private static final boolean IS_DEBUG = log.isDebugEnabled();
+ private static final boolean IS_DEBUG = LOG.isDebugEnabled();
- public void messageReceived( IoSession session, Object request ) throws Exception
+ public void modifyMessageReceived( IoSession session, ModifyRequest req ) throws Exception
{
- ModifyRequest req = ( ModifyRequest ) request;
LdapResult result = req.getResultResponse().getLdapResult();
try
@@ -70,7 +68,7 @@
{
ctx.addToEnvironment( Context.REFERRAL, "throw" );
}
-
+
// Inject controls into the context
setRequestControls( ctx, req );
@@ -78,11 +76,12 @@
if ( req.getModificationItems() != null )
{
int nbItems = req.getModificationItems().size();
-
+
if ( nbItems != 0 )
{
ModificationItemImpl[] mods = new ModificationItemImpl[nbItems];
- ctx.modifyAttributes( req.getName(), req.getModificationItems().toArray( mods ) );
+ //noinspection SuspiciousToArrayCall
+ ctx.modifyAttributes( req.getName(), req.getModificationItems().toArray( mods ) );
}
else
{
@@ -93,7 +92,7 @@
{
// What should we do if we don't have any modification ???
}
-
+
result.setResultCode( ResultCodeEnum.SUCCESS );
req.getResultResponse().addAll( ctx.getResponseControls() );
session.write( req.getResultResponse() );
@@ -116,7 +115,7 @@
catch ( NamingException e )
{
String msg = "failed to modify entry " + req.getName() + ": " + e.getMessage();
-
+
if ( IS_DEBUG )
{
msg += ":\n" + ExceptionUtils.getStackTrace( e );
@@ -134,7 +133,7 @@
result.setResultCode( code );
result.setErrorMessage( msg );
-
+
if ( ( e.getResolvedName() != null )
&& ( ( code == ResultCodeEnum.NO_SUCH_OBJECT ) || ( code == ResultCodeEnum.ALIAS_PROBLEM )
|| ( code == ResultCodeEnum.INVALID_DN_SYNTAX ) || ( code == ResultCodeEnum.ALIAS_DEREFERENCING_PROBLEM ) ) )
@@ -145,4 +144,4 @@
session.write( req.getResultResponse() );
}
}
-}
+}
\ No newline at end of file
Propchange: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultModifyHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultModifyHandler.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Sun Oct 7 22:54:38 2007
@@ -0,0 +1,4 @@
+Rev
+Revision
+Date
+Id
Copied: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultSearchHandler.java (from r582695, directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/SearchHandler.java)
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultSearchHandler.java?p2=directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultSearchHandler.java&p1=directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/SearchHandler.java&r1=582695&r2=582712&rev=582712&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/SearchHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultSearchHandler.java Sun Oct 7 22:54:38 2007
@@ -41,21 +41,11 @@
import org.apache.directory.shared.ldap.exception.LdapException;
import org.apache.directory.shared.ldap.exception.OperationAbandonedException;
import org.apache.directory.shared.ldap.filter.PresenceNode;
-import org.apache.directory.shared.ldap.message.AbandonListener;
-import org.apache.directory.shared.ldap.message.LdapResult;
-import org.apache.directory.shared.ldap.message.ManageDsaITControl;
-import org.apache.directory.shared.ldap.message.PersistentSearchControl;
-import org.apache.directory.shared.ldap.message.ReferralImpl;
-import org.apache.directory.shared.ldap.message.Response;
-import org.apache.directory.shared.ldap.message.ResultCodeEnum;
-import org.apache.directory.shared.ldap.message.ScopeEnum;
-import org.apache.directory.shared.ldap.message.SearchRequest;
-import org.apache.directory.shared.ldap.message.SearchResponseDone;
+import org.apache.directory.shared.ldap.message.*;
import org.apache.directory.shared.ldap.name.LdapDN;
import org.apache.directory.shared.ldap.util.ArrayUtils;
import org.apache.directory.shared.ldap.util.ExceptionUtils;
import org.apache.mina.common.IoSession;
-import org.apache.mina.handler.demux.MessageHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -66,45 +56,44 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class SearchHandler extends AbstractLdapHandler implements MessageHandler
+public class DefaultSearchHandler extends SearchHandler
{
- //TM private static long cumul = 0L;
- //TM private static long count = 0;
- //TM private static Object lock = new Object();
-
- private static final Logger log = LoggerFactory.getLogger( SearchHandler.class );
+ private static final Logger LOG = LoggerFactory.getLogger( SearchHandler.class );
private static final String DEREFALIASES_KEY = JndiPropertyConstants.JNDI_LDAP_DAP_DEREF_ALIASES;
/** Speedup for logs */
- private static final boolean IS_DEBUG = log.isDebugEnabled();
+ private static final boolean IS_DEBUG = LOG.isDebugEnabled();
/**
* Builds the JNDI search controls for a SearchRequest.
- *
+ *
* @param req the search request.
* @param ids the ids to return
* @return the SearchControls to use with the ApacheDS server side JNDI provider
+ * @param isAdmin whether or not user is an admin
+ * @param maxSize the maximum size for the search in # of entries returned
+ * @param maxTime the maximum length of time for the search in seconds
*/
private SearchControls getSearchControls( SearchRequest req, String[] ids, boolean isAdmin, int maxSize, int maxTime )
{
// prepare all the search controls
SearchControls controls = new SearchControls();
-
+
// take the minimum of system limit with request specified value
if ( isAdmin )
{
controls.setCountLimit( req.getSizeLimit() );
-
+
// The setTimeLimit needs a number of milliseconds
// when the search control is expressed in seconds
int timeLimit = req.getTimeLimit();
-
- // Just check that we are not exceeding the maximum for a long
+
+ // Just check that we are not exceeding the maximum for a long
if ( timeLimit > Integer.MAX_VALUE / 1000 )
{
timeLimit = 0;
}
-
+
// The maximum time we can wait is around 24 days ...
// Is it enough ? ;)
controls.setTimeLimit( timeLimit * 1000 );
@@ -114,7 +103,7 @@
controls.setCountLimit( Math.min( req.getSizeLimit(), maxSize ) );
controls.setTimeLimit( Math.min( req.getTimeLimit(), maxTime ) );
}
-
+
controls.setSearchScope( req.getScope().getValue() );
controls.setReturningObjFlag( req.getTypesOnly() );
controls.setReturningAttributes( ids );
@@ -125,7 +114,7 @@
/**
* Determines if a search request is on the RootDSE of the server.
- *
+ *
* @param req the request issued
* @return true if the search is on the RootDSE false otherwise
*/
@@ -145,17 +134,16 @@
/**
* Main message handing method for search requests.
*/
- public void messageReceived( IoSession session, Object request ) throws Exception
+ public void searchMessageReceived( IoSession session, SearchRequest req ) throws Exception
{
LdapConfiguration cfg = ( LdapConfiguration ) session.getAttribute( LdapConfiguration.class.toString() );
if ( IS_DEBUG )
{
- log.debug( "Message received: {}", request.toString() );
+ LOG.debug( "Message received: {}", req.toString() );
}
ServerLdapContext ctx;
- SearchRequest req = ( SearchRequest ) request;
NamingEnumeration list = null;
String[] ids = null;
Collection<String> retAttrs = new HashSet<String>();
@@ -182,12 +170,12 @@
// ===============================================================
boolean isRootDSESearch = isRootDSESearch( req );
-
+
// bypass checks to disallow anonymous binds for search on RootDSE with base obj scope
if ( isRootDSESearch )
{
LdapContext unknown = SessionRegistry.getSingleton().getLdapContextOnRootDSEAccess( session, null );
-
+
if ( !( unknown instanceof ServerLdapContext ) )
{
ctx = ( ServerLdapContext ) unknown.lookup( "" );
@@ -201,7 +189,7 @@
else
{
LdapContext unknown = SessionRegistry.getSingleton().getLdapContext( session, null, true );
-
+
if ( !( unknown instanceof ServerLdapContext ) )
{
ctx = ( ServerLdapContext ) unknown.lookup( "" );
@@ -211,12 +199,12 @@
ctx = ( ServerLdapContext ) unknown;
}
}
-
+
// Inject controls into the context
setRequestControls( ctx, req );
ctx.addToEnvironment( DEREFALIASES_KEY, req.getDerefAliases() );
-
+
if ( req.getControls().containsKey( ManageDsaITControl.CONTROL_OID ) )
{
ctx.addToEnvironment( Context.REFERRAL, "ignore" );
@@ -246,7 +234,7 @@
//TM {
//TM cumul += (t1 - t0);
//TM count++;
- //TM
+ //TM
//TM if ( count % 1000L == 0)
//TM {
//TM System.out.println( "Search cost : " + (cumul/count) );
@@ -264,7 +252,7 @@
int maxSize = cfg.getMaxSizeLimit();
int maxTime = cfg.getMaxTimeLimit();
- SearchControls controls = null;
+ SearchControls controls;
if ( isAnonymousUser )
{
controls = getSearchControls( req, ids, false, maxSize, maxTime );
@@ -278,8 +266,8 @@
{
controls = getSearchControls( req, ids, false, maxSize, maxTime );
}
-
-
+
+
// ===============================================================
// Handle psearch differently
// ===============================================================
@@ -310,29 +298,29 @@
{
// ok if normal search beforehand failed somehow quickly abandon psearch
ResultCodeEnum rcode = ( ( SearchResponseDone ) resp ).getLdapResult().getResultCode();
-
+
if ( rcode != ResultCodeEnum.SUCCESS )
{
session.write( resp );
//TM long t1 = System.nanoTime();
- //TM
+ //TM
//TM synchronized( lock )
//TM {
//TM cumul += (t1 - t0);
//TM count++;
- //TM
+ //TM
//TM if ( count % 1000L == 0)
//TM {
//TM System.out.println( "Search cost : " + (cumul/count) );
//TM cumul = 0L;
//TM }
//TM }
-
+
return;
}
// if search was fine then we returned all entries so now
// instead of returning the DONE response we break from the
- // loop and user the notification listener to send back
+ // loop and user the notification listener to send back
// notificationss to the client in never ending search
else
break;
@@ -345,7 +333,7 @@
}
}
- // now we process entries for ever as they change
+ // now we process entries for ever as they change
PersistentSearchListener handler = new PersistentSearchListener( ctx, session, req );
ctx.addNamingListener( req.getBase(), req.getFilter().toString(), controls, handler );
//TM long t1 = System.nanoTime();
@@ -353,7 +341,7 @@
//TM {
//TM cumul += (t1 - t0);
//TM count++;
- //TM
+ //TM
//TM if ( count % 1000L == 0)
//TM {
//TM System.out.println( "Search cost : " + (cumul/count) );
@@ -368,8 +356,8 @@
// ===============================================================
/*
- * Iterate through all search results building and sending back responses
- * for each search result returned.
+ * Iterate through all search results building and sending back responses
+ * for each search result returned.
*/
list = ctx.search( req.getBase(), req.getFilter(), controls );
if ( list instanceof AbandonListener )
@@ -384,44 +372,15 @@
{
session.write( it.next() );
}
- //TM long t1 = System.nanoTime();
- //TM synchronized( lock )
- //TM {
- //TM cumul += (t1 - t0);
- //TM count++;
- //TM
- //TM if ( count % 1000L == 0)
- //TM {
- //TM System.out.println( "Search cost : " + (cumul/count) );
- //TM cumul = 0L;
- //TM }
- //TM }
-
- return;
}
else
{
list.close();
req.getResultResponse().getLdapResult().setResultCode( ResultCodeEnum.SUCCESS );
- Iterator it = Collections.singleton( req.getResultResponse() ).iterator();
- while ( it.hasNext() )
+ for ( ResultResponse resultResponse : Collections.singleton( req.getResultResponse() ) )
{
- session.write( it.next() );
+ session.write( resultResponse );
}
- //TM long t1 = System.nanoTime();
- //TM synchronized( lock )
- //TM {
- //TM cumul += (t1 - t0);
- //TM count++;
- //TM
- //TM if ( count % 1000L == 0)
- //TM {
- //TM System.out.println( "Search cost : " + (cumul/count) );
- //TM cumul = 0L;
- //TM }
- //TM }
-
- return;
}
}
catch ( ReferralException e )
@@ -440,60 +399,33 @@
while ( e.skipReferral() );
session.write( req.getResultResponse() );
SessionRegistry.getSingleton().removeOutstandingRequest( session, req.getMessageId() );
- //TM long t1 = System.nanoTime();
- //TM synchronized( lock )
- //TM {
- //TM cumul += (t1 - t0);
- //TM count++;
- //TM
- //TM if ( count % 1000L == 0)
- //TM {
- //TM System.out.println( "Search cost : " + (cumul/count) );
- //TM cumul = 0L;
- //TM }
- //TM }
-
- return;
}
catch ( NamingException e )
{
/*
* From RFC 2251 Section 4.11:
- *
- * In the event that a server receives an Abandon Request on a Search
+ *
+ * In the event that a server receives an Abandon Request on a Search
* operation in the midst of transmitting responses to the Search, that
* server MUST cease transmitting entry responses to the abandoned
* request immediately, and MUST NOT send the SearchResultDone. Of
* course, the server MUST ensure that only properly encoded LDAPMessage
- * PDUs are transmitted.
- *
+ * PDUs are transmitted.
+ *
* SO DON'T SEND BACK ANYTHING!!!!!
*/
if ( e instanceof OperationAbandonedException )
{
- //TM long t1 = System.nanoTime();
- //TM synchronized( lock )
- //TM {
- //TM cumul += (t1 - t0);
- //TM count++;
- //TM
- //TM if ( count % 1000L == 0)
- //TM {
- //TM System.out.println( "Search cost : " + (cumul/count) );
- //TM cumul = 0L;
- //TM }
- //TM }
-
return;
}
String msg = "failed on search operation: " + e.getMessage();
- if ( log.isDebugEnabled() )
+ if ( LOG.isDebugEnabled() )
{
msg += ":\n" + req + ":\n" + ExceptionUtils.getStackTrace( e );
}
- ResultCodeEnum code = null;
+ ResultCodeEnum code;
if ( e instanceof LdapException )
{
code = ( ( LdapException ) e ).getResultCode();
@@ -514,10 +446,9 @@
result.setMatchedDn( (LdapDN)e.getResolvedName() );
}
- Iterator it = Collections.singleton( req.getResultResponse() ).iterator();
- while ( it.hasNext() )
+ for ( ResultResponse resultResponse : Collections.singleton( req.getResultResponse() ) )
{
- session.write( it.next() );
+ session.write( resultResponse );
}
SessionRegistry.getSingleton().removeOutstandingRequest( session, req.getMessageId() );
}
@@ -531,9 +462,9 @@
}
catch ( NamingException e )
{
- log.error( "failed on list.close()", e );
+ LOG.error( "failed on list.close()", e );
}
}
}
}
-}
+}
\ No newline at end of file
Propchange: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultSearchHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultSearchHandler.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Sun Oct 7 22:54:38 2007
@@ -0,0 +1,4 @@
+Rev
+Revision
+Date
+Id
Copied: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultUnbindHandler.java (from r582695, directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/UnbindHandler.java)
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultUnbindHandler.java?p2=directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultUnbindHandler.java&p1=directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/UnbindHandler.java&r1=582695&r2=582712&rev=582712&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/UnbindHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultUnbindHandler.java Sun Oct 7 22:54:38 2007
@@ -20,16 +20,16 @@
package org.apache.directory.server.ldap.support;
-import javax.naming.NamingException;
-import javax.naming.ldap.LdapContext;
-
import org.apache.directory.server.core.jndi.ServerLdapContext;
import org.apache.directory.server.ldap.SessionRegistry;
+import org.apache.directory.shared.ldap.message.UnbindRequest;
import org.apache.mina.common.IoSession;
-import org.apache.mina.handler.demux.MessageHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.naming.NamingException;
+import javax.naming.ldap.LdapContext;
+
/**
* A no reply protocol handler implementation for LDAP {@link
@@ -38,12 +38,12 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class UnbindHandler implements MessageHandler
+public class DefaultUnbindHandler extends UnbindHandler
{
- private static final Logger log = LoggerFactory.getLogger( UnbindHandler.class );
+ private static final Logger LOG = LoggerFactory.getLogger( UnbindHandler.class );
- public void messageReceived( IoSession session, Object request ) throws Exception
+ public void unbindMessageReceived( IoSession session, UnbindRequest request ) throws Exception
{
SessionRegistry registry = SessionRegistry.getSingleton();
@@ -64,7 +64,7 @@
}
catch ( NamingException e )
{
- log.error( "failed to unbind session properly", e );
+ LOG.error( "failed to unbind session properly", e );
}
}
-}
+}
\ No newline at end of file
Propchange: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultUnbindHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultUnbindHandler.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Sun Oct 7 22:54:38 2007
@@ -0,0 +1,4 @@
+Rev
+Revision
+Date
+Id
Modified: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DeleteHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DeleteHandler.java?rev=582712&r1=582711&r2=582712&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DeleteHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DeleteHandler.java Sun Oct 7 22:54:38 2007
@@ -20,24 +20,9 @@
package org.apache.directory.server.ldap.support;
-import javax.naming.Context;
-import javax.naming.NamingException;
-import javax.naming.ReferralException;
-import javax.naming.ldap.LdapContext;
-
-import org.apache.directory.server.ldap.SessionRegistry;
-import org.apache.directory.shared.ldap.exception.LdapException;
import org.apache.directory.shared.ldap.message.DeleteRequest;
-import org.apache.directory.shared.ldap.message.LdapResult;
-import org.apache.directory.shared.ldap.message.ManageDsaITControl;
-import org.apache.directory.shared.ldap.message.ReferralImpl;
-import org.apache.directory.shared.ldap.message.ResultCodeEnum;
-import org.apache.directory.shared.ldap.name.LdapDN;
-import org.apache.directory.shared.ldap.util.ExceptionUtils;
import org.apache.mina.common.IoSession;
import org.apache.mina.handler.demux.MessageHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
@@ -46,82 +31,13 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class DeleteHandler extends AbstractLdapHandler implements MessageHandler
+public abstract class DeleteHandler extends AbstractLdapHandler implements MessageHandler
{
- private static final Logger log = LoggerFactory.getLogger( DeleteHandler.class );
+ protected abstract void deleteMessageReceived( IoSession session, DeleteRequest deleteRequest ) throws Exception;
- /** Speedup for logs */
- private static final boolean IS_DEBUG = log.isDebugEnabled();
- public void messageReceived( IoSession session, Object request ) throws Exception
+ public final void messageReceived( IoSession ioSession, Object o ) throws Exception
{
- DeleteRequest req = ( DeleteRequest ) request;
- LdapResult result = req.getResultResponse().getLdapResult();
-
- try
- {
- LdapContext ctx = SessionRegistry.getSingleton().getLdapContext( session, null, true );
- if ( req.getControls().containsKey( ManageDsaITControl.CONTROL_OID ) )
- {
- ctx.addToEnvironment( Context.REFERRAL, "ignore" );
- }
- else
- {
- ctx.addToEnvironment( Context.REFERRAL, "throw" );
- }
-
- // Inject controls into the context
- setRequestControls( ctx, req );
-
- ctx.destroySubcontext( req.getName() );
- result.setResultCode( ResultCodeEnum.SUCCESS );
- req.getResultResponse().addAll( ctx.getResponseControls() );
- session.write( req.getResultResponse() );
- }
- catch ( ReferralException e )
- {
- ReferralImpl refs = new ReferralImpl();
- result.setReferral( refs );
- result.setResultCode( ResultCodeEnum.REFERRAL );
- result.setErrorMessage( "Encountered referral attempting to handle delete request." );
- /* coming up null causing a NPE */
- // result.setMatchedDn( e.getResolvedName().toString() );
- do
- {
- refs.addLdapUrl( ( String ) e.getReferralInfo() );
- }
- while ( e.skipReferral() );
- session.write( req.getResultResponse() );
- }
- catch ( NamingException e )
- {
- String msg = "failed to delete entry " + req.getName() + ": " + e.getMessage();
-
- if ( IS_DEBUG )
- {
- msg += ":\n" + ExceptionUtils.getStackTrace( e );
- }
-
- ResultCodeEnum code;
- if ( e instanceof LdapException )
- {
- code = ( ( LdapException ) e ).getResultCode();
- }
- else
- {
- code = ResultCodeEnum.getBestEstimate( e, req.getType() );
- }
-
- result.setResultCode( code );
- result.setErrorMessage( msg );
- if ( ( e.getResolvedName() != null )
- && ( ( code == ResultCodeEnum.NO_SUCH_OBJECT ) || ( code == ResultCodeEnum.ALIAS_PROBLEM )
- || ( code == ResultCodeEnum.INVALID_DN_SYNTAX ) || ( code == ResultCodeEnum.ALIAS_DEREFERENCING_PROBLEM ) ) )
- {
- result.setMatchedDn( (LdapDN)e.getResolvedName() );
- }
-
- session.write( req.getResultResponse() );
- }
+ deleteMessageReceived( ioSession, ( DeleteRequest ) o );
}
}
Modified: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ExtendedHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ExtendedHandler.java?rev=582712&r1=582711&r2=582712&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ExtendedHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ExtendedHandler.java Sun Oct 7 22:54:38 2007
@@ -25,12 +25,7 @@
import java.util.Map;
import org.apache.directory.server.ldap.ExtendedOperationHandler;
-import org.apache.directory.server.ldap.SessionRegistry;
import org.apache.directory.shared.ldap.message.ExtendedRequest;
-import org.apache.directory.shared.ldap.message.ExtendedResponse;
-import org.apache.directory.shared.ldap.message.LdapResult;
-import org.apache.directory.shared.ldap.message.ResultCodeEnum;
-import org.apache.directory.shared.ldap.util.ExceptionUtils;
import org.apache.mina.common.IoSession;
import org.apache.mina.handler.demux.MessageHandler;
@@ -41,12 +36,12 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class ExtendedHandler extends AbstractLdapHandler implements MessageHandler
+public abstract class ExtendedHandler extends AbstractLdapHandler implements MessageHandler
{
- private Map<String, ExtendedOperationHandler> handlers = new HashMap<String, ExtendedOperationHandler>();
+ private final Map<String, ExtendedOperationHandler> handlers = new HashMap<String, ExtendedOperationHandler>();
- public ExtendedOperationHandler addHandler( ExtendedOperationHandler eoh )
+ public final ExtendedOperationHandler addHandler( ExtendedOperationHandler eoh )
{
synchronized ( handlers )
{
@@ -55,7 +50,7 @@
}
- public ExtendedOperationHandler removeHandler( String oid )
+ public final ExtendedOperationHandler removeHandler( String oid )
{
synchronized ( handlers )
{
@@ -64,49 +59,24 @@
}
- public ExtendedOperationHandler getHandler( String oid )
+ public final ExtendedOperationHandler getHandler( String oid )
{
return handlers.get( oid );
}
- public Map getHandlerMap()
+ public final Map<String,ExtendedOperationHandler> getHandlerMap()
{
return Collections.unmodifiableMap( handlers );
}
- public void messageReceived( IoSession session, Object request ) throws Exception
+ public final void messageReceived( IoSession session, Object request ) throws Exception
{
- ExtendedRequest req = ( ExtendedRequest ) request;
- ExtendedOperationHandler handler = handlers.get( req.getOid() );
-
- if ( handler == null )
- {
- // As long as no extended operations are implemented, send appropriate
- // error back to the client.
- String msg = "Unrecognized extended operation EXTENSION_OID: " + req.getOid();
- LdapResult result = req.getResultResponse().getLdapResult();
- result.setResultCode( ResultCodeEnum.PROTOCOL_ERROR );
- result.setErrorMessage( msg );
- session.write( req.getResultResponse() );
- }
- else
- {
- try
- {
- handler.handleExtendedOperation( session, SessionRegistry.getSingleton(), req );
- }
- catch ( Exception e )
- {
- LdapResult result = req.getResultResponse().getLdapResult();
- result.setResultCode( ResultCodeEnum.OTHER );
- result.setErrorMessage( "Extended operation handler for the specified EXTENSION_OID (" + req.getOid()
- + ") has failed to process your request:\n" + ExceptionUtils.getStackTrace( e ) );
- ExtendedResponse resp = ( ExtendedResponse ) req.getResultResponse();
- resp.setResponse( new byte[0] );
- session.write( req.getResultResponse() );
- }
- }
+ extendedMessageReceived( session, ( ExtendedRequest ) request );
}
+
+
+ protected abstract void extendedMessageReceived( IoSession session, ExtendedRequest extendedRequest )
+ throws Exception;
}
Modified: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ModifyDnHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ModifyDnHandler.java?rev=582712&r1=582711&r2=582712&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ModifyDnHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ModifyDnHandler.java Sun Oct 7 22:54:38 2007
@@ -20,25 +20,9 @@
package org.apache.directory.server.ldap.support;
-import javax.naming.Context;
-import javax.naming.NamingException;
-import javax.naming.ReferralException;
-import javax.naming.ldap.LdapContext;
-
-import org.apache.directory.server.ldap.SessionRegistry;
-import org.apache.directory.shared.ldap.constants.JndiPropertyConstants;
-import org.apache.directory.shared.ldap.exception.LdapException;
-import org.apache.directory.shared.ldap.message.LdapResult;
-import org.apache.directory.shared.ldap.message.ManageDsaITControl;
import org.apache.directory.shared.ldap.message.ModifyDnRequest;
-import org.apache.directory.shared.ldap.message.ReferralImpl;
-import org.apache.directory.shared.ldap.message.ResultCodeEnum;
-import org.apache.directory.shared.ldap.name.LdapDN;
-import org.apache.directory.shared.ldap.util.ExceptionUtils;
import org.apache.mina.common.IoSession;
import org.apache.mina.handler.demux.MessageHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
@@ -47,13 +31,8 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class ModifyDnHandler extends AbstractLdapHandler implements MessageHandler
+public abstract class ModifyDnHandler extends AbstractLdapHandler implements MessageHandler
{
- private static final Logger log = LoggerFactory.getLogger( ModifyDnHandler.class );
-
- /** Speedup for logs */
- private static final boolean IS_DEBUG = log.isDebugEnabled();
-
/**
* Deal with a ModifyDN request received from a client.
*
@@ -70,125 +49,11 @@
* - newSuperior : this is a move operation. The entry is removed from its
* current location, and created in the new one.
*/
- public void messageReceived( IoSession session, Object request ) throws Exception
+ public final void messageReceived( IoSession session, Object request ) throws Exception
{
- ModifyDnRequest req = ( ModifyDnRequest ) request;
- LdapResult result = req.getResultResponse().getLdapResult();
-
- if ( IS_DEBUG )
- {
- log.debug( "req.getName() == [{}]", req.getName() );
- }
-
- if ( req.getName().isEmpty() )
- {
- // it is not allowed to modify the name of the Root DSE
- String msg = "Modify DN is not allowed on Root DSE.";
- result.setResultCode( ResultCodeEnum.PROTOCOL_ERROR );
- result.setErrorMessage( msg );
- session.write( req.getResultResponse() );
- }
- else
- {
- try
- {
- LdapContext ctx = SessionRegistry.getSingleton().getLdapContext( session, null, true );
-
- if ( req.getControls().containsKey( ManageDsaITControl.CONTROL_OID ) )
- {
- ctx.addToEnvironment( Context.REFERRAL, "ignore" );
- }
- else
- {
- ctx.addToEnvironment( Context.REFERRAL, "throw" );
- }
-
- // Inject controls into the context
- setRequestControls( ctx, req );
-
- String deleteRDN = String.valueOf( req.getDeleteOldRdn() );
- ctx.addToEnvironment( JndiPropertyConstants.JNDI_LDAP_DELETE_RDN, deleteRDN );
-
- LdapDN newSuperior = req.getNewSuperior();
-
- if ( ( newSuperior != null ) && ( !newSuperior.isEmpty() ) )
- {
- LdapDN oldDn = req.getName();
- LdapDN newDn = null;
-
- newDn = newSuperior;
-
- if ( req.getNewRdn() != null )
- {
- newDn.add( req.getNewRdn() );
- }
- else
- {
- newDn.add( oldDn.getRdn() );
- }
-
- ctx.rename( req.getName(), newDn );
- }
- else
- {
- LdapDN newDn = ( LdapDN ) req.getName().clone();
- newDn.remove( newDn.size() - 1 );
- newDn.add( req.getNewRdn() );
- ctx.rename( req.getName(), newDn );
- }
-
- req.getResultResponse().addAll( ctx.getResponseControls() );
- result.setResultCode( ResultCodeEnum.SUCCESS );
- session.write( req.getResultResponse() );
- }
- catch ( ReferralException e )
- {
- ReferralImpl refs = new ReferralImpl();
- result.setReferral( refs );
- result.setResultCode( ResultCodeEnum.REFERRAL );
- result.setErrorMessage( "Encountered referral attempting to handle modifyDn request." );
- result.setMatchedDn( (LdapDN)e.getResolvedName() );
-
- do
- {
- refs.addLdapUrl( ( String ) e.getReferralInfo() );
- }
- while ( e.skipReferral() );
-
- session.write( req.getResultResponse() );
- }
- catch ( NamingException e )
- {
- String msg = "failed to modify DN of entry " + req.getName() + ": " + e.getMessage();
-
- if ( IS_DEBUG )
- {
- msg += ":\n" + ExceptionUtils.getStackTrace( e );
- }
-
- ResultCodeEnum code;
-
- if ( e instanceof LdapException )
- {
- code = ( ( LdapException ) e ).getResultCode();
- }
- else
- {
- code = ResultCodeEnum.getBestEstimate( e, req.getType() );
- }
+ modifyDnMessageReceived( session, ( ModifyDnRequest ) request );
+ }
- result.setResultCode( code );
- result.setErrorMessage( msg );
-
- if ( ( e.getResolvedName() != null )
- && ( ( code == ResultCodeEnum.NO_SUCH_OBJECT ) || ( code == ResultCodeEnum.ALIAS_PROBLEM )
- || ( code == ResultCodeEnum.INVALID_DN_SYNTAX ) || ( code == ResultCodeEnum.ALIAS_DEREFERENCING_PROBLEM ) ) )
- {
- result.setMatchedDn( (LdapDN)e.getResolvedName() );
- }
- session.write( req.getResultResponse() );
- }
- }
- }
+ protected abstract void modifyDnMessageReceived( IoSession session, ModifyDnRequest modifyDnRequest ) throws Exception;
}
Modified: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ModifyHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ModifyHandler.java?rev=582712&r1=582711&r2=582712&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ModifyHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/ModifyHandler.java Sun Oct 7 22:54:38 2007
@@ -20,25 +20,9 @@
package org.apache.directory.server.ldap.support;
-import javax.naming.Context;
-import javax.naming.NamingException;
-import javax.naming.ReferralException;
-import javax.naming.ldap.LdapContext;
-
-import org.apache.directory.server.ldap.SessionRegistry;
-import org.apache.directory.shared.ldap.exception.LdapException;
-import org.apache.directory.shared.ldap.message.LdapResult;
-import org.apache.directory.shared.ldap.message.ManageDsaITControl;
-import org.apache.directory.shared.ldap.message.ModificationItemImpl;
import org.apache.directory.shared.ldap.message.ModifyRequest;
-import org.apache.directory.shared.ldap.message.ReferralImpl;
-import org.apache.directory.shared.ldap.message.ResultCodeEnum;
-import org.apache.directory.shared.ldap.name.LdapDN;
-import org.apache.directory.shared.ldap.util.ExceptionUtils;
import org.apache.mina.common.IoSession;
import org.apache.mina.handler.demux.MessageHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
@@ -47,102 +31,13 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class ModifyHandler extends AbstractLdapHandler implements MessageHandler
+public abstract class ModifyHandler extends AbstractLdapHandler implements MessageHandler
{
- private static final Logger log = LoggerFactory.getLogger( ModifyHandler.class );
-
- /** Speedup for logs */
- private static final boolean IS_DEBUG = log.isDebugEnabled();
-
- public void messageReceived( IoSession session, Object request ) throws Exception
+ public final void messageReceived( IoSession session, Object request ) throws Exception
{
- ModifyRequest req = ( ModifyRequest ) request;
- LdapResult result = req.getResultResponse().getLdapResult();
-
- try
- {
- LdapContext ctx = SessionRegistry.getSingleton().getLdapContext( session, null, true );
- if ( req.getControls().containsKey( ManageDsaITControl.CONTROL_OID ) )
- {
- ctx.addToEnvironment( Context.REFERRAL, "ignore" );
- }
- else
- {
- ctx.addToEnvironment( Context.REFERRAL, "throw" );
- }
-
- // Inject controls into the context
- setRequestControls( ctx, req );
-
- // Process the modifications
- if ( req.getModificationItems() != null )
- {
- int nbItems = req.getModificationItems().size();
-
- if ( nbItems != 0 )
- {
- ModificationItemImpl[] mods = new ModificationItemImpl[nbItems];
- ctx.modifyAttributes( req.getName(), req.getModificationItems().toArray( mods ) );
- }
- else
- {
- // What should we do if we don't have any modification ???
- }
- }
- else
- {
- // What should we do if we don't have any modification ???
- }
-
- result.setResultCode( ResultCodeEnum.SUCCESS );
- req.getResultResponse().addAll( ctx.getResponseControls() );
- session.write( req.getResultResponse() );
- }
- catch ( ReferralException e )
- {
- ReferralImpl refs = new ReferralImpl();
- result.setReferral( refs );
- result.setResultCode( ResultCodeEnum.REFERRAL );
- result.setErrorMessage( "Encountered referral attempting to handle modify request." );
- /* coming up null causing a NPE */
- // result.setMatchedDn( e.getResolvedName().toString() );
- do
- {
- refs.addLdapUrl( ( String ) e.getReferralInfo() );
- }
- while ( e.skipReferral() );
- session.write( req.getResultResponse() );
- }
- catch ( NamingException e )
- {
- String msg = "failed to modify entry " + req.getName() + ": " + e.getMessage();
-
- if ( IS_DEBUG )
- {
- msg += ":\n" + ExceptionUtils.getStackTrace( e );
- }
-
- ResultCodeEnum code;
- if ( e instanceof LdapException )
- {
- code = ( ( LdapException ) e ).getResultCode();
- }
- else
- {
- code = ResultCodeEnum.getBestEstimate( e, req.getType() );
- }
+ modifyMessageReceived( session, ( ModifyRequest ) request );
+ }
- result.setResultCode( code );
- result.setErrorMessage( msg );
-
- if ( ( e.getResolvedName() != null )
- && ( ( code == ResultCodeEnum.NO_SUCH_OBJECT ) || ( code == ResultCodeEnum.ALIAS_PROBLEM )
- || ( code == ResultCodeEnum.INVALID_DN_SYNTAX ) || ( code == ResultCodeEnum.ALIAS_DEREFERENCING_PROBLEM ) ) )
- {
- result.setMatchedDn( (LdapDN)e.getResolvedName() );
- }
- session.write( req.getResultResponse() );
- }
- }
+ protected abstract void modifyMessageReceived( IoSession session, ModifyRequest modifyRequest ) throws Exception;
}
Modified: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/SearchHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/SearchHandler.java?rev=582712&r1=582711&r2=582712&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/SearchHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/SearchHandler.java Sun Oct 7 22:54:38 2007
@@ -20,44 +20,9 @@
package org.apache.directory.server.ldap.support;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import javax.naming.Context;
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
-import javax.naming.ReferralException;
-import javax.naming.directory.SearchControls;
-import javax.naming.ldap.LdapContext;
-
-import org.apache.directory.server.core.jndi.ServerLdapContext;
-import org.apache.directory.server.core.partition.PartitionNexus;
-import org.apache.directory.server.ldap.LdapConfiguration;
-import org.apache.directory.server.ldap.SessionRegistry;
-import org.apache.directory.shared.ldap.constants.JndiPropertyConstants;
-import org.apache.directory.shared.ldap.constants.SchemaConstants;
-import org.apache.directory.shared.ldap.exception.LdapException;
-import org.apache.directory.shared.ldap.exception.OperationAbandonedException;
-import org.apache.directory.shared.ldap.filter.PresenceNode;
-import org.apache.directory.shared.ldap.message.AbandonListener;
-import org.apache.directory.shared.ldap.message.LdapResult;
-import org.apache.directory.shared.ldap.message.ManageDsaITControl;
-import org.apache.directory.shared.ldap.message.PersistentSearchControl;
-import org.apache.directory.shared.ldap.message.ReferralImpl;
-import org.apache.directory.shared.ldap.message.Response;
-import org.apache.directory.shared.ldap.message.ResultCodeEnum;
-import org.apache.directory.shared.ldap.message.ScopeEnum;
import org.apache.directory.shared.ldap.message.SearchRequest;
-import org.apache.directory.shared.ldap.message.SearchResponseDone;
-import org.apache.directory.shared.ldap.name.LdapDN;
-import org.apache.directory.shared.ldap.util.ArrayUtils;
-import org.apache.directory.shared.ldap.util.ExceptionUtils;
import org.apache.mina.common.IoSession;
import org.apache.mina.handler.demux.MessageHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
@@ -66,474 +31,16 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class SearchHandler extends AbstractLdapHandler implements MessageHandler
+public abstract class SearchHandler extends AbstractLdapHandler implements MessageHandler
{
- //TM private static long cumul = 0L;
- //TM private static long count = 0;
- //TM private static Object lock = new Object();
-
- private static final Logger log = LoggerFactory.getLogger( SearchHandler.class );
- private static final String DEREFALIASES_KEY = JndiPropertyConstants.JNDI_LDAP_DAP_DEREF_ALIASES;
-
- /** Speedup for logs */
- private static final boolean IS_DEBUG = log.isDebugEnabled();
-
- /**
- * Builds the JNDI search controls for a SearchRequest.
- *
- * @param req the search request.
- * @param ids the ids to return
- * @return the SearchControls to use with the ApacheDS server side JNDI provider
- */
- private SearchControls getSearchControls( SearchRequest req, String[] ids, boolean isAdmin, int maxSize, int maxTime )
- {
- // prepare all the search controls
- SearchControls controls = new SearchControls();
-
- // take the minimum of system limit with request specified value
- if ( isAdmin )
- {
- controls.setCountLimit( req.getSizeLimit() );
-
- // The setTimeLimit needs a number of milliseconds
- // when the search control is expressed in seconds
- int timeLimit = req.getTimeLimit();
-
- // Just check that we are not exceeding the maximum for a long
- if ( timeLimit > Integer.MAX_VALUE / 1000 )
- {
- timeLimit = 0;
- }
-
- // The maximum time we can wait is around 24 days ...
- // Is it enough ? ;)
- controls.setTimeLimit( timeLimit * 1000 );
- }
- else
- {
- controls.setCountLimit( Math.min( req.getSizeLimit(), maxSize ) );
- controls.setTimeLimit( Math.min( req.getTimeLimit(), maxTime ) );
- }
-
- controls.setSearchScope( req.getScope().getValue() );
- controls.setReturningObjFlag( req.getTypesOnly() );
- controls.setReturningAttributes( ids );
- controls.setDerefLinkFlag( true );
- return controls;
- }
-
-
- /**
- * Determines if a search request is on the RootDSE of the server.
- *
- * @param req the request issued
- * @return true if the search is on the RootDSE false otherwise
- */
- private static boolean isRootDSESearch( SearchRequest req )
- {
- boolean isBaseIsRoot = req.getBase().isEmpty();
- boolean isBaseScope = req.getScope() == ScopeEnum.BASE_OBJECT;
- boolean isRootDSEFilter = false;
- if ( req.getFilter() instanceof PresenceNode )
- {
- isRootDSEFilter = ( ( PresenceNode ) req.getFilter() ).getAttribute().equalsIgnoreCase( SchemaConstants.OBJECT_CLASS_AT );
- }
- return isBaseIsRoot && isBaseScope && isRootDSEFilter;
- }
-
-
/**
* Main message handing method for search requests.
*/
- public void messageReceived( IoSession session, Object request ) throws Exception
+ public final void messageReceived( IoSession session, Object request ) throws Exception
{
- LdapConfiguration cfg = ( LdapConfiguration ) session.getAttribute( LdapConfiguration.class.toString() );
-
- if ( IS_DEBUG )
- {
- log.debug( "Message received: {}", request.toString() );
- }
-
- ServerLdapContext ctx;
- SearchRequest req = ( SearchRequest ) request;
- NamingEnumeration list = null;
- String[] ids = null;
- Collection<String> retAttrs = new HashSet<String>();
- retAttrs.addAll( req.getAttributes() );
-
- // add the search request to the registry of outstanding requests for this session
- SessionRegistry.getSingleton().addOutstandingRequest( session, req );
-
- // check the attributes to see if a referral's ref attribute is included
- if ( retAttrs.size() > 0 && !retAttrs.contains( SchemaConstants.REF_AT ) )
- {
- retAttrs.add( SchemaConstants.REF_AT );
- ids = retAttrs.toArray( ArrayUtils.EMPTY_STRING_ARRAY );
- }
- else if ( retAttrs.size() > 0 )
- {
- ids = retAttrs.toArray( ArrayUtils.EMPTY_STRING_ARRAY );
- }
-
- try
- {
- // ===============================================================
- // Find session context
- // ===============================================================
-
- boolean isRootDSESearch = isRootDSESearch( req );
-
- // bypass checks to disallow anonymous binds for search on RootDSE with base obj scope
- if ( isRootDSESearch )
- {
- LdapContext unknown = SessionRegistry.getSingleton().getLdapContextOnRootDSEAccess( session, null );
-
- if ( !( unknown instanceof ServerLdapContext ) )
- {
- ctx = ( ServerLdapContext ) unknown.lookup( "" );
- }
- else
- {
- ctx = ( ServerLdapContext ) unknown;
- }
- }
- // all those search operations are subject to anonymous bind checks when anonymous binda are disallowed
- else
- {
- LdapContext unknown = SessionRegistry.getSingleton().getLdapContext( session, null, true );
-
- if ( !( unknown instanceof ServerLdapContext ) )
- {
- ctx = ( ServerLdapContext ) unknown.lookup( "" );
- }
- else
- {
- ctx = ( ServerLdapContext ) unknown;
- }
- }
-
- // Inject controls into the context
- setRequestControls( ctx, req );
-
- ctx.addToEnvironment( DEREFALIASES_KEY, req.getDerefAliases() );
-
- if ( req.getControls().containsKey( ManageDsaITControl.CONTROL_OID ) )
- {
- ctx.addToEnvironment( Context.REFERRAL, "ignore" );
- }
- else
- {
- ctx.addToEnvironment( Context.REFERRAL, "throw-finding-base" );
- }
-
- // ===============================================================
- // Handle annonymous binds
- // ===============================================================
-
- boolean allowAnonymousBinds = cfg.isAllowAnonymousAccess();
- boolean isAnonymousUser = ctx.getPrincipal().getName().trim().equals( "" );
-
- if ( isAnonymousUser && !allowAnonymousBinds && !isRootDSESearch )
- {
- LdapResult result = req.getResultResponse().getLdapResult();
- result.setResultCode( ResultCodeEnum.INSUFFICIENT_ACCESS_RIGHTS );
- String msg = "Bind failure: Anonymous binds have been disabled!";
- result.setErrorMessage( msg );
- session.write( req.getResultResponse() );
- //TM long t1 = System.nanoTime();
- //TM
- //TM synchronized (lock)
- //TM {
- //TM cumul += (t1 - t0);
- //TM count++;
- //TM
- //TM if ( count % 1000L == 0)
- //TM {
- //TM System.out.println( "Search cost : " + (cumul/count) );
- //TM cumul = 0L;
- //TM }
- //TM }
- return;
- }
-
-
- // ===============================================================
- // Set search limits differently based on user's identity
- // ===============================================================
-
- int maxSize = cfg.getMaxSizeLimit();
- int maxTime = cfg.getMaxTimeLimit();
-
- SearchControls controls = null;
- if ( isAnonymousUser )
- {
- controls = getSearchControls( req, ids, false, maxSize, maxTime );
- }
- else if ( ctx.getPrincipal().getName()
- .trim().equals( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
- {
- controls = getSearchControls( req, ids, true, maxSize, maxTime );
- }
- else
- {
- controls = getSearchControls( req, ids, false, maxSize, maxTime );
- }
-
-
- // ===============================================================
- // Handle psearch differently
- // ===============================================================
-
- PersistentSearchControl psearchControl = ( PersistentSearchControl ) req.getControls().get(
- PersistentSearchControl.CONTROL_OID );
- if ( psearchControl != null )
- {
- // there are no limits for psearch processing
- controls.setCountLimit( 0 );
- controls.setTimeLimit( 0 );
-
- if ( !psearchControl.isChangesOnly() )
- {
- list = ctx.search( req.getBase(), req.getFilter(),
- controls );
- if ( list instanceof AbandonListener )
- {
- req.addAbandonListener( ( AbandonListener ) list );
- }
- if ( list.hasMore() )
- {
- Iterator it = new SearchResponseIterator( req, ctx, list, controls.getSearchScope(), session );
- while ( it.hasNext() )
- {
- Response resp = ( Response ) it.next();
- if ( resp instanceof SearchResponseDone )
- {
- // ok if normal search beforehand failed somehow quickly abandon psearch
- ResultCodeEnum rcode = ( ( SearchResponseDone ) resp ).getLdapResult().getResultCode();
-
- if ( rcode != ResultCodeEnum.SUCCESS )
- {
- session.write( resp );
- //TM long t1 = System.nanoTime();
- //TM
- //TM synchronized( lock )
- //TM {
- //TM cumul += (t1 - t0);
- //TM count++;
- //TM
- //TM if ( count % 1000L == 0)
- //TM {
- //TM System.out.println( "Search cost : " + (cumul/count) );
- //TM cumul = 0L;
- //TM }
- //TM }
-
- return;
- }
- // if search was fine then we returned all entries so now
- // instead of returning the DONE response we break from the
- // loop and user the notification listener to send back
- // notificationss to the client in never ending search
- else
- break;
- }
- else
- {
- session.write( resp );
- }
- }
- }
- }
-
- // now we process entries for ever as they change
- PersistentSearchListener handler = new PersistentSearchListener( ctx, session, req );
- ctx.addNamingListener( req.getBase(), req.getFilter().toString(), controls, handler );
- //TM long t1 = System.nanoTime();
- //TM synchronized( lock )
- //TM {
- //TM cumul += (t1 - t0);
- //TM count++;
- //TM
- //TM if ( count % 1000L == 0)
- //TM {
- //TM System.out.println( "Search cost : " + (cumul/count) );
- //TM cumul = 0L;
- //TM }
- //TM }
- return;
- }
-
- // ===============================================================
- // Handle regular search requests from here down
- // ===============================================================
-
- /*
- * Iterate through all search results building and sending back responses
- * for each search result returned.
- */
- list = ctx.search( req.getBase(), req.getFilter(), controls );
- if ( list instanceof AbandonListener )
- {
- req.addAbandonListener( ( AbandonListener ) list );
- }
-
- if ( list.hasMore() )
- {
- Iterator it = new SearchResponseIterator( req, ctx, list, controls.getSearchScope(), session );
- while ( it.hasNext() )
- {
- session.write( it.next() );
- }
- //TM long t1 = System.nanoTime();
- //TM synchronized( lock )
- //TM {
- //TM cumul += (t1 - t0);
- //TM count++;
- //TM
- //TM if ( count % 1000L == 0)
- //TM {
- //TM System.out.println( "Search cost : " + (cumul/count) );
- //TM cumul = 0L;
- //TM }
- //TM }
-
- return;
- }
- else
- {
- list.close();
- req.getResultResponse().getLdapResult().setResultCode( ResultCodeEnum.SUCCESS );
- Iterator it = Collections.singleton( req.getResultResponse() ).iterator();
- while ( it.hasNext() )
- {
- session.write( it.next() );
- }
- //TM long t1 = System.nanoTime();
- //TM synchronized( lock )
- //TM {
- //TM cumul += (t1 - t0);
- //TM count++;
- //TM
- //TM if ( count % 1000L == 0)
- //TM {
- //TM System.out.println( "Search cost : " + (cumul/count) );
- //TM cumul = 0L;
- //TM }
- //TM }
-
- return;
- }
- }
- catch ( ReferralException e )
- {
- LdapResult result = req.getResultResponse().getLdapResult();
- ReferralImpl refs = new ReferralImpl();
- result.setReferral( refs );
- result.setResultCode( ResultCodeEnum.REFERRAL );
- result.setErrorMessage( "Encountered referral attempting to handle add request." );
- /* coming up null causing a NPE */
- // result.setMatchedDn( e.getResolvedName().toString() );
- do
- {
- refs.addLdapUrl( ( String ) e.getReferralInfo() );
- }
- while ( e.skipReferral() );
- session.write( req.getResultResponse() );
- SessionRegistry.getSingleton().removeOutstandingRequest( session, req.getMessageId() );
- //TM long t1 = System.nanoTime();
- //TM synchronized( lock )
- //TM {
- //TM cumul += (t1 - t0);
- //TM count++;
- //TM
- //TM if ( count % 1000L == 0)
- //TM {
- //TM System.out.println( "Search cost : " + (cumul/count) );
- //TM cumul = 0L;
- //TM }
- //TM }
-
- return;
- }
- catch ( NamingException e )
- {
- /*
- * From RFC 2251 Section 4.11:
- *
- * In the event that a server receives an Abandon Request on a Search
- * operation in the midst of transmitting responses to the Search, that
- * server MUST cease transmitting entry responses to the abandoned
- * request immediately, and MUST NOT send the SearchResultDone. Of
- * course, the server MUST ensure that only properly encoded LDAPMessage
- * PDUs are transmitted.
- *
- * SO DON'T SEND BACK ANYTHING!!!!!
- */
- if ( e instanceof OperationAbandonedException )
- {
- //TM long t1 = System.nanoTime();
- //TM synchronized( lock )
- //TM {
- //TM cumul += (t1 - t0);
- //TM count++;
- //TM
- //TM if ( count % 1000L == 0)
- //TM {
- //TM System.out.println( "Search cost : " + (cumul/count) );
- //TM cumul = 0L;
- //TM }
- //TM }
-
- return;
- }
-
- String msg = "failed on search operation: " + e.getMessage();
- if ( log.isDebugEnabled() )
- {
- msg += ":\n" + req + ":\n" + ExceptionUtils.getStackTrace( e );
- }
-
- ResultCodeEnum code = null;
- if ( e instanceof LdapException )
- {
- code = ( ( LdapException ) e ).getResultCode();
- }
- else
- {
- code = ResultCodeEnum.getBestEstimate( e, req.getType() );
- }
-
- LdapResult result = req.getResultResponse().getLdapResult();
- result.setResultCode( code );
- result.setErrorMessage( msg );
+ searchMessageReceived( session, ( SearchRequest ) request );
+ }
- if ( ( e.getResolvedName() != null )
- && ( ( code == ResultCodeEnum.NO_SUCH_OBJECT ) || ( code == ResultCodeEnum.ALIAS_PROBLEM )
- || ( code == ResultCodeEnum.INVALID_DN_SYNTAX ) || ( code == ResultCodeEnum.ALIAS_DEREFERENCING_PROBLEM ) ) )
- {
- result.setMatchedDn( (LdapDN)e.getResolvedName() );
- }
- Iterator it = Collections.singleton( req.getResultResponse() ).iterator();
- while ( it.hasNext() )
- {
- session.write( it.next() );
- }
- SessionRegistry.getSingleton().removeOutstandingRequest( session, req.getMessageId() );
- }
- finally
- {
- if ( list != null )
- {
- try
- {
- list.close();
- }
- catch ( NamingException e )
- {
- log.error( "failed on list.close()", e );
- }
- }
- }
- }
+ public abstract void searchMessageReceived( IoSession session, SearchRequest searchRequest ) throws Exception;
}
Modified: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/UnbindHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/UnbindHandler.java?rev=582712&r1=582711&r2=582712&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/UnbindHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/UnbindHandler.java Sun Oct 7 22:54:38 2007
@@ -20,15 +20,9 @@
package org.apache.directory.server.ldap.support;
-import javax.naming.NamingException;
-import javax.naming.ldap.LdapContext;
-
-import org.apache.directory.server.core.jndi.ServerLdapContext;
-import org.apache.directory.server.ldap.SessionRegistry;
+import org.apache.directory.shared.ldap.message.UnbindRequest;
import org.apache.mina.common.IoSession;
import org.apache.mina.handler.demux.MessageHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
@@ -38,33 +32,13 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class UnbindHandler implements MessageHandler
+public abstract class UnbindHandler implements MessageHandler
{
- private static final Logger log = LoggerFactory.getLogger( UnbindHandler.class );
-
-
- public void messageReceived( IoSession session, Object request ) throws Exception
+ public final void messageReceived( IoSession session, Object request ) throws Exception
{
- SessionRegistry registry = SessionRegistry.getSingleton();
+ unbindMessageReceived( session, ( UnbindRequest ) request );
+ }
- try
- {
- LdapContext ctx = SessionRegistry.getSingleton().getLdapContext( session, null, false );
- if ( ctx != null )
- {
- if ( ctx instanceof ServerLdapContext && ( ( ServerLdapContext ) ctx ).getService().isStarted() )
- {
- ( ( ServerLdapContext ) ctx ).ldapUnbind();
- }
- ctx.close();
- }
- registry.terminateSession( session );
- registry.remove( session );
- }
- catch ( NamingException e )
- {
- log.error( "failed to unbind session properly", e );
- }
- }
+ protected abstract void unbindMessageReceived( IoSession session, UnbindRequest unbindRequest ) throws Exception;
}
Modified: directory/apacheds/branches/bigbang/protocol-ldap/src/test/java/org/apache/directory/server/ldap/LdapProtocolProviderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-ldap/src/test/java/org/apache/directory/server/ldap/LdapProtocolProviderTest.java?rev=582712&r1=582711&r2=582712&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-ldap/src/test/java/org/apache/directory/server/ldap/LdapProtocolProviderTest.java (original)
+++ directory/apacheds/branches/bigbang/protocol-ldap/src/test/java/org/apache/directory/server/ldap/LdapProtocolProviderTest.java Sun Oct 7 22:54:38 2007
@@ -23,14 +23,11 @@
import junit.framework.TestCase;
import org.apache.directory.server.core.DefaultDirectoryService;
import org.apache.directory.server.core.DirectoryService;
-import org.apache.directory.server.ldap.support.ExtendedHandler;
+import org.apache.directory.server.ldap.support.*;
import org.apache.directory.shared.ldap.NotImplementedException;
import org.apache.directory.shared.ldap.exception.LdapNamingException;
import org.apache.directory.shared.ldap.message.*;
import org.apache.mina.common.IoSession;
-import org.apache.mina.handler.demux.MessageHandler;
-
-import java.util.Hashtable;
/**
@@ -52,8 +49,7 @@
public void testDefaultOperation() throws LdapNamingException
{
DirectoryService directoryService = new DefaultDirectoryService();
- LdapProtocolProvider provider = new LdapProtocolProvider( directoryService,
- new LdapConfiguration(), new Hashtable<String,Object>() );
+ LdapProtocolProvider provider = new LdapProtocolProvider( directoryService, new LdapConfiguration() );
assertNotNull( provider.getCodecFactory() );
assertEquals( provider.getName(), LdapProtocolProvider.SERVICE_NAME );
}
@@ -68,111 +64,94 @@
*/
public void testAlternativeConfiguration() throws LdapNamingException
{
- Hashtable<String,Object> props = new Hashtable<String,Object>();
-
- props.put( AbandonRequest.class.getName(), BogusAbandonHandler.class.getName() );
- props.put( AbandonRequestImpl.class.getName(), BogusAbandonHandler.class.getName() );
-
- props.put( AddRequest.class.getName(), BogusAddHandler.class.getName() );
- props.put( AddRequestImpl.class.getName(), BogusAddHandler.class.getName() );
-
- props.put( BindRequest.class.getName(), BogusBindHandler.class.getName() );
- props.put( BindRequestImpl.class.getName(), BogusBindHandler.class.getName() );
-
- props.put( CompareRequest.class.getName(), BogusCompareHandler.class.getName() );
- props.put( CompareRequestImpl.class.getName(), BogusCompareHandler.class.getName() );
-
- props.put( DeleteRequest.class.getName(), BogusDeleteHandler.class.getName() );
- props.put( DeleteRequestImpl.class.getName(), BogusDeleteHandler.class.getName() );
-
- props.put( ExtendedRequest.class.getName(), ExtendedHandler.class.getName() );
- props.put( ExtendedRequestImpl.class.getName(), ExtendedHandler.class.getName() );
-
- props.put( ModifyRequest.class.getName(), BogusModifyHandler.class.getName() );
- props.put( ModifyRequestImpl.class.getName(), BogusModifyHandler.class.getName() );
-
- props.put( ModifyDnRequest.class.getName(), BogusModifyDnHandler.class.getName() );
- props.put( ModifyDnRequestImpl.class.getName(), BogusModifyDnHandler.class.getName() );
-
- props.put( SearchRequest.class.getName(), BogusSearchHandler.class.getName() );
- props.put( SearchRequestImpl.class.getName(), BogusSearchHandler.class.getName() );
-
- props.put( UnbindRequest.class.getName(), BogusUnbindHandler.class.getName() );
- props.put( UnbindRequestImpl.class.getName(), BogusUnbindHandler.class.getName() );
-
DirectoryService directoryService = new DefaultDirectoryService();
- LdapProtocolProvider provider = new LdapProtocolProvider( directoryService, new LdapConfiguration(), props );
+ LdapProtocolProvider provider = new LdapProtocolProvider( directoryService, new LdapConfiguration() );
+ provider.setAbandonHandler( new BogusAbandonHandler() );
+ provider.setAddHandler( new BogusAddHandler() );
+ provider.setBindHandler( new BogusBindHandler() );
+ provider.setCompareHandler( new BogusCompareHandler() );
+ provider.setDeleteHandler( new BogusDeleteHandler() );
+ provider.setModifyDnHandler( new BogusModifyDnHandler() );
+ provider.setModifyHandler( new BogusModifyHandler() );
+ provider.setSearchHandler( new BogusSearchHandler() );
+ provider.setUnbindHandler( new BogusUnbindHandler() );
+
assertNotNull( provider.getCodecFactory() );
assertEquals( provider.getName(), LdapProtocolProvider.SERVICE_NAME );
}
- public static class BogusAbandonHandler implements MessageHandler
+ public static class BogusAbandonHandler extends AbandonHandler
{
- public void messageReceived( IoSession session, Object request )
+ public void abandonMessageReceived( IoSession session, AbandonRequest request )
{
throw new NotImplementedException( "handler not implemented!" );
}
}
- public static class BogusUnbindHandler implements MessageHandler
+ public static class BogusUnbindHandler extends UnbindHandler
{
- public void messageReceived( IoSession session, Object request )
+ public void unbindMessageReceived( IoSession session, UnbindRequest request )
{
throw new NotImplementedException( "handler not implemented!" );
}
}
- public static class BogusAddHandler implements MessageHandler
+ public static class BogusAddHandler extends AddHandler
{
- public void messageReceived( IoSession session, Object request )
+ public void addMessageReceived( IoSession session, AddRequest request )
{
throw new NotImplementedException( "handler not implemented!" );
}
}
- public static class BogusBindHandler implements MessageHandler
+ public static class BogusBindHandler extends BindHandler
{
- public void messageReceived( IoSession session, Object request )
+ public void setDirectoryService( DirectoryService directoryService )
+ {
+ }
+
+
+ public void bindMessageReceived( IoSession session, BindRequest request )
{
throw new NotImplementedException( "handler not implemented!" );
}
}
- public static class BogusCompareHandler implements MessageHandler
+ public static class BogusCompareHandler extends CompareHandler
{
- public void messageReceived( IoSession session, Object request )
+ public void compareMessageReceived( IoSession session, CompareRequest request )
{
throw new NotImplementedException( "handler not implemented!" );
}
}
- public static class BogusDeleteHandler implements MessageHandler
+ public static class BogusDeleteHandler extends DeleteHandler
{
- public void messageReceived( IoSession session, Object request )
+ public void deleteMessageReceived( IoSession session, DeleteRequest request )
{
throw new NotImplementedException( "handler not implemented!" );
}
}
- public static class BogusModifyDnHandler implements MessageHandler
+ public static class BogusModifyDnHandler extends ModifyDnHandler
{
- public void messageReceived( IoSession session, Object request )
+ public void modifyDnMessageReceived( IoSession session, ModifyDnRequest request )
{
throw new NotImplementedException( "handler not implemented!" );
}
}
- public static class BogusModifyHandler implements MessageHandler
+ public static class BogusModifyHandler extends ModifyHandler
{
- public void messageReceived( IoSession session, Object request )
+ public void modifyMessageReceived( IoSession session, ModifyRequest request )
{
throw new NotImplementedException( "handler not implemented!" );
}
}
- public static class BogusSearchHandler implements MessageHandler
+ public static class BogusSearchHandler extends SearchHandler
{
- public void messageReceived( IoSession session, Object request )
+ public void searchMessageReceived( IoSession session, SearchRequest request )
{
throw new NotImplementedException( "handler not implemented!" );
}
Modified: directory/apacheds/branches/bigbang/server-jndi/src/main/java/org/apache/directory/server/configuration/ApacheDS.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/server-jndi/src/main/java/org/apache/directory/server/configuration/ApacheDS.java?rev=582712&r1=582711&r2=582712&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/server-jndi/src/main/java/org/apache/directory/server/configuration/ApacheDS.java (original)
+++ directory/apacheds/branches/bigbang/server-jndi/src/main/java/org/apache/directory/server/configuration/ApacheDS.java Sun Oct 7 22:54:38 2007
@@ -160,8 +160,8 @@
if ( enableNetworking )
{
- startLDAP( environment );
- startLDAPS( environment );
+ startLDAP();
+ startLDAPS();
startKerberos();
startChangePassword();
startNTP();
@@ -656,9 +656,8 @@
* Starts up the LDAP protocol provider to service LDAP requests
*
* @throws NamingException if there are problems starting the LDAP provider
- * @param env the environment
*/
- private void startLDAP( Hashtable<String,Object> env ) throws NamingException
+ private void startLDAP() throws NamingException
{
// Skip if disabled
if ( ! ldapConfiguration.isEnabled() )
@@ -667,7 +666,7 @@
}
DefaultIoFilterChainBuilder chain = new DefaultIoFilterChainBuilder();
- startLDAP0( ldapConfiguration, env, ldapConfiguration.getIpPort(), chain );
+ startLDAP0( ldapConfiguration, ldapConfiguration.getIpPort(), chain );
}
@@ -675,9 +674,8 @@
* Starts up the LDAPS protocol provider to service LDAPS requests
*
* @throws NamingException if there are problems starting the LDAPS provider
- * @param env the JNDI environment
*/
- private void startLDAPS( Hashtable<String,Object> env ) throws NamingException
+ private void startLDAPS() throws NamingException
{
// Skip if disabled
if ( !( ldapsConfiguration.isEnabled() && ldapsConfiguration.isEnableLdaps() ) )
@@ -691,15 +689,15 @@
IoFilterChainBuilder chain = LdapsInitializer.init( certPasswordChars, storePath );
ldapsStarted = true;
- startLDAP0( ldapsConfiguration, env, ldapsConfiguration.getIpPort(), chain );
+ startLDAP0( ldapsConfiguration, ldapsConfiguration.getIpPort(), chain );
}
- private void startLDAP0( LdapConfiguration ldapConfig, Hashtable<String,Object> env, int port, IoFilterChainBuilder chainBuilder )
+ private void startLDAP0( LdapConfiguration ldapConfig, int port, IoFilterChainBuilder chainBuilder )
throws LdapNamingException, LdapConfigurationException
{
// Register all extended operation handlers.
- LdapProtocolProvider protocolProvider = new LdapProtocolProvider( directoryService, ldapConfig, env );
+ LdapProtocolProvider protocolProvider = new LdapProtocolProvider( directoryService, ldapConfig );
for ( ExtendedOperationHandler h : ldapConfig.getExtendedOperationHandlers() )
{
Modified: directory/shared/branches/bigbang/asn1-codec/src/main/java/org/apache/directory/shared/asn1/codec/Asn1CodecDecoder.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/asn1-codec/src/main/java/org/apache/directory/shared/asn1/codec/Asn1CodecDecoder.java?rev=582712&r1=582711&r2=582712&view=diff
==============================================================================
--- directory/shared/branches/bigbang/asn1-codec/src/main/java/org/apache/directory/shared/asn1/codec/Asn1CodecDecoder.java (original)
+++ directory/shared/branches/bigbang/asn1-codec/src/main/java/org/apache/directory/shared/asn1/codec/Asn1CodecDecoder.java Sun Oct 7 22:54:38 2007
@@ -19,7 +19,7 @@
*/
package org.apache.directory.shared.asn1.codec;
-import org.apache.directory.shared.asn1.codec.DecoderException;
+
import org.apache.directory.shared.asn1.codec.stateful.DecoderCallback;
import org.apache.directory.shared.asn1.codec.stateful.StatefulDecoder;
import org.apache.mina.common.ByteBuffer;
@@ -27,6 +27,7 @@
import org.apache.mina.filter.codec.ProtocolDecoderAdapter;
import org.apache.mina.filter.codec.ProtocolDecoderOutput;
+
/**
* Adapts {@link StatefulDecoder} to MINA <tt>ProtocolDecoder</tt>
*
@@ -35,23 +36,23 @@
*/
public class Asn1CodecDecoder extends ProtocolDecoderAdapter
{
-
private final StatefulDecoder decoder;
-
private final DecoderCallbackImpl callback = new DecoderCallbackImpl();
+
public Asn1CodecDecoder( StatefulDecoder decoder )
{
decoder.setCallback( callback );
this.decoder = decoder;
}
- public void decode( IoSession session, ByteBuffer in,
- ProtocolDecoderOutput out ) throws DecoderException
+
+ public void decode( IoSession session, ByteBuffer in, ProtocolDecoderOutput out ) throws DecoderException
{
callback.decOut = out;
decoder.decode( in.buf() );
}
+
private class DecoderCallbackImpl implements DecoderCallback
{