You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2010/07/13 20:46:01 UTC
svn commit: r963813 - in /directory/apacheds/trunk:
core/src/main/java/org/apache/directory/server/core/DefaultCoreSession.java
protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/BindHandler.java
Author: kayyagari
Date: Tue Jul 13 18:46:00 2010
New Revision: 963813
URL: http://svn.apache.org/viewvc?rev=963813&view=rev
Log:
o updated the methods to prevent losing controls added the the OperationContext in the case of a LdapException while performing the
actual operation
(this is required in the case of ppolicy implementation where a PwdPolicyResponseControl is added even when the operation throws a policy related exception)
Modified:
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultCoreSession.java
directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/BindHandler.java
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultCoreSession.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultCoreSession.java?rev=963813&r1=963812&r2=963813&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultCoreSession.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultCoreSession.java Tue Jul 13 18:46:00 2010
@@ -179,7 +179,15 @@ public class DefaultCoreSession implemen
addContext.setLogChange( log );
OperationManager operationManager = directoryService.getOperationManager();
- operationManager.add( addContext );
+ try
+ {
+ operationManager.add( addContext );
+ }
+ catch( LdapException e )
+ {
+ addRequest.getResultResponse().addAll( addContext.getResponseControls() );
+ throw e;
+ }
addRequest.getResultResponse().addAll( addContext.getResponseControls() );
}
@@ -788,7 +796,17 @@ public class DefaultCoreSession implemen
{
CompareOperationContext compareContext = new CompareOperationContext( this, compareRequest );
OperationManager operationManager = directoryService.getOperationManager();
- boolean result = operationManager.compare( compareContext );
+ boolean result = false;
+ try
+ {
+ result = operationManager.compare( compareContext );
+ }
+ catch( LdapException e )
+ {
+ compareRequest.getResultResponse().addAll( compareContext.getResponseControls() );
+ throw e;
+ }
+
compareRequest.getResultResponse().addAll( compareContext.getResponseControls() );
return result;
}
@@ -813,7 +831,16 @@ public class DefaultCoreSession implemen
deleteContext.setLogChange( log );
OperationManager operationManager = directoryService.getOperationManager();
- operationManager.delete( deleteContext );
+ try
+ {
+ operationManager.delete( deleteContext );
+ }
+ catch( LdapException e )
+ {
+ deleteRequest.getResultResponse().addAll( deleteContext.getResponseControls() );
+ throw e;
+ }
+
deleteRequest.getResultResponse().addAll( deleteContext.getResponseControls() );
}
@@ -845,7 +872,17 @@ public class DefaultCoreSession implemen
modifyContext.setLogChange( log );
OperationManager operationManager = directoryService.getOperationManager();
- operationManager.modify( modifyContext );
+
+ try
+ {
+ operationManager.modify( modifyContext );
+ }
+ catch( LdapException e )
+ {
+ modifyRequest.getResultResponse().addAll( modifyContext.getResponseControls() );
+ throw e;
+ }
+
modifyRequest.getResultResponse().addAll( modifyContext.getResponseControls() );
}
@@ -869,7 +906,17 @@ public class DefaultCoreSession implemen
moveContext.setLogChange( log );
OperationManager operationManager = directoryService.getOperationManager();
- operationManager.move( moveContext );
+
+ try
+ {
+ operationManager.move( moveContext );
+ }
+ catch( LdapException e )
+ {
+ modifyDnRequest.getResultResponse().addAll( moveContext.getResponseControls() );
+ throw e;
+ }
+
modifyDnRequest.getResultResponse().addAll( moveContext.getResponseControls() );
}
@@ -893,7 +940,17 @@ public class DefaultCoreSession implemen
moveAndRenameContext.setLogChange( log );
OperationManager operationManager = directoryService.getOperationManager();
- operationManager.moveAndRename( moveAndRenameContext );
+
+ try
+ {
+ operationManager.moveAndRename( moveAndRenameContext );
+ }
+ catch( LdapException e )
+ {
+ modifyDnRequest.getResultResponse().addAll( moveAndRenameContext.getResponseControls() );
+ throw e;
+ }
+
modifyDnRequest.getResultResponse().addAll( moveAndRenameContext.getResponseControls() );
}
@@ -917,7 +974,17 @@ public class DefaultCoreSession implemen
renameContext.setLogChange( log );
OperationManager operationManager = directoryService.getOperationManager();
- operationManager.rename( renameContext );
+
+ try
+ {
+ operationManager.rename( renameContext );
+ }
+ catch( LdapException e )
+ {
+ modifyDnRequest.getResultResponse().addAll( renameContext.getResponseControls() );
+ throw e;
+ }
+
modifyDnRequest.getResultResponse().addAll( renameContext.getResponseControls() );
}
@@ -926,7 +993,19 @@ public class DefaultCoreSession implemen
{
SearchOperationContext searchContext = new SearchOperationContext( this, searchRequest );
OperationManager operationManager = directoryService.getOperationManager();
- EntryFilteringCursor cursor = operationManager.search( searchContext );
+
+ EntryFilteringCursor cursor = null;
+
+ try
+ {
+ cursor = operationManager.search( searchContext );
+ }
+ catch( LdapException e )
+ {
+ searchRequest.getResultResponse().addAll( searchContext.getResponseControls() );
+ throw e;
+ }
+
searchRequest.getResultResponse().addAll( searchContext.getResponseControls() );
return cursor;
Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/BindHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/BindHandler.java?rev=963813&r1=963812&r2=963813&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/BindHandler.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/BindHandler.java Tue Jul 13 18:46:00 2010
@@ -188,6 +188,7 @@ public class BindHandler extends LdapReq
}
// Return the successful response
+ bindRequest.getResultResponse().addAll( bindContext.getResponseControls() );
sendBindSuccess( ldapSession, bindRequest, null );
}
catch ( Exception e )
@@ -237,6 +238,7 @@ public class BindHandler extends LdapReq
}
result.setErrorMessage( msg );
+ bindRequest.getResultResponse().addAll( bindContext.getResponseControls() );
ldapSession.getIoSession().write( bindRequest.getResultResponse() );
}
}