From fbda6e0892dcfcc8dd43d21f6fb134aabb8d0cac Mon Sep 17 00:00:00 2001
From: jarnou <jarnou@localhost>
Date: Tue, 03 Jul 2007 09:29:17 +0000
Subject: [PATCH] Commits the refactoring of the core server to provide support for proxy/distribution/virtual functionnalities. This includes the new set of local operations, as well as the workflow and networkgroup support.
---
opends/src/server/org/opends/server/core/PluginConfigManager.java | 228 ++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 193 insertions(+), 35 deletions(-)
diff --git a/opends/src/server/org/opends/server/core/PluginConfigManager.java b/opends/src/server/org/opends/server/core/PluginConfigManager.java
index ae23fab..a5a75a2 100644
--- a/opends/src/server/org/opends/server/core/PluginConfigManager.java
+++ b/opends/src/server/org/opends/server/core/PluginConfigManager.java
@@ -80,6 +80,28 @@
import org.opends.server.types.SearchResultReference;
import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.operation.PostOperationAddOperation;
+import org.opends.server.types.operation.PostOperationBindOperation;
+import org.opends.server.types.operation.PostOperationDeleteOperation;
+import org.opends.server.types.operation.PostOperationModifyOperation;
+import org.opends.server.types.operation.PostOperationSearchOperation;
+import org.opends.server.types.operation.PostResponseAddOperation;
+import org.opends.server.types.operation.PostResponseBindOperation;
+import org.opends.server.types.operation.PostResponseDeleteOperation;
+import org.opends.server.types.operation.PostResponseModifyOperation;
+import org.opends.server.types.operation.PostResponseSearchOperation;
+import org.opends.server.types.operation.PreOperationAddOperation;
+import org.opends.server.types.operation.PreOperationBindOperation;
+import org.opends.server.types.operation.PreOperationDeleteOperation;
+import org.opends.server.types.operation.PreOperationModifyOperation;
+import org.opends.server.types.operation.PreOperationSearchOperation;
+import org.opends.server.types.operation.PreParseAddOperation;
+import org.opends.server.types.operation.PreParseBindOperation;
+import org.opends.server.types.operation.PreParseDeleteOperation;
+import org.opends.server.types.operation.PreParseModifyOperation;
+import org.opends.server.types.operation.PreParseSearchOperation;
+import org.opends.server.workflowelement.localbackend.*;
+
import static org.opends.server.loggers.ErrorLogger.*;
import static org.opends.server.loggers.debug.DebugLogger.*;
import org.opends.server.loggers.debug.DebugTracer;
@@ -1758,8 +1780,8 @@
*
* @return The result of processing the pre-parse add plugins.
*/
- public PreParsePluginResult invokePreParseAddPlugins(AddOperation
- addOperation)
+ public PreParsePluginResult invokePreParseAddPlugins(
+ PreParseAddOperation addOperation)
{
PreParsePluginResult result = null;
@@ -1839,7 +1861,7 @@
* @return The result of processing the pre-parse bind plugins.
*/
public PreParsePluginResult invokePreParseBindPlugins(
- BindOperation bindOperation)
+ PreParseBindOperation bindOperation)
{
PreParsePluginResult result = null;
@@ -2001,7 +2023,7 @@
* @return The result of processing the pre-parse delete plugins.
*/
public PreParsePluginResult invokePreParseDeletePlugins(
- DeleteOperation deleteOperation)
+ PreParseDeleteOperation deleteOperation)
{
PreParsePluginResult result = null;
@@ -2159,13 +2181,13 @@
* Invokes the set of pre-parse modify plugins that have been configured in
* the Directory Server.
*
- * @param modifyOperation The modify operation for which to invoke the
+ * @param operation The modify operation for which to invoke the
* pre-parse plugins.
*
* @return The result of processing the pre-parse modify plugins.
*/
public PreParsePluginResult invokePreParseModifyPlugins(
- ModifyOperation modifyOperation)
+ PreParseModifyOperation operation)
{
PreParsePluginResult result = null;
@@ -2173,7 +2195,7 @@
{
try
{
- result = p.doPreParse(modifyOperation);
+ result = p.doPreParse(operation);
}
catch (Exception e)
{
@@ -2185,17 +2207,17 @@
int msgID = MSGID_PLUGIN_PRE_PARSE_PLUGIN_EXCEPTION;
String message =
getMessage(msgID,
- modifyOperation.getOperationType().getOperationName(),
+ operation.getOperationType().getOperationName(),
String.valueOf(p.getPluginEntryDN()),
- modifyOperation.getConnectionID(),
- modifyOperation.getOperationID(),
+ operation.getConnectionID(),
+ operation.getOperationID(),
stackTraceToSingleLineString(e));
logError(ErrorLogCategory.PLUGIN, ErrorLogSeverity.SEVERE_ERROR,
message, msgID);
- modifyOperation.setResultCode(
+ operation.setResultCode(
DirectoryServer.getServerErrorResultCode());
- modifyOperation.appendErrorMessage(message);
+ operation.appendErrorMessage(message);
return new PreParsePluginResult(false, false, true);
}
@@ -2205,16 +2227,16 @@
int msgID = MSGID_PLUGIN_PRE_PARSE_PLUGIN_RETURNED_NULL;
String message =
getMessage(msgID,
- modifyOperation.getOperationType().getOperationName(),
+ operation.getOperationType().getOperationName(),
String.valueOf(p.getPluginEntryDN()),
- modifyOperation.getConnectionID(),
- modifyOperation.getOperationID());
+ operation.getConnectionID(),
+ operation.getOperationID());
logError(ErrorLogCategory.PLUGIN, ErrorLogSeverity.SEVERE_ERROR,
message, msgID);
- modifyOperation.setResultCode(
+ operation.setResultCode(
DirectoryServer.getServerErrorResultCode());
- modifyOperation.appendErrorMessage(message);
+ operation.appendErrorMessage(message);
return new PreParsePluginResult(false, false, true);
}
@@ -2329,7 +2351,7 @@
* @return The result of processing the pre-parse search plugins.
*/
public PreParsePluginResult invokePreParseSearchPlugins(
- SearchOperation searchOperation)
+ PreParseSearchOperation searchOperation)
{
PreParsePluginResult result = null;
@@ -2493,7 +2515,7 @@
* @return The result of processing the pre-operation add plugins.
*/
public PreOperationPluginResult invokePreOperationAddPlugins(
- AddOperation addOperation)
+ PreOperationAddOperation addOperation)
{
PreOperationPluginResult result = null;
@@ -2573,7 +2595,7 @@
* @return The result of processing the pre-operation bind plugins.
*/
public PreOperationPluginResult invokePreOperationBindPlugins(
- BindOperation bindOperation)
+ PreOperationBindOperation bindOperation)
{
PreOperationPluginResult result = null;
@@ -2735,7 +2757,7 @@
* @return The result of processing the pre-operation delete plugins.
*/
public PreOperationPluginResult invokePreOperationDeletePlugins(
- DeleteOperation deleteOperation)
+ PreOperationDeleteOperation deleteOperation)
{
PreOperationPluginResult result = null;
@@ -2899,7 +2921,7 @@
* @return The result of processing the pre-operation modify plugins.
*/
public PreOperationPluginResult invokePreOperationModifyPlugins(
- ModifyOperation modifyOperation)
+ PreOperationModifyOperation modifyOperation)
{
PreOperationPluginResult result = null;
@@ -3063,7 +3085,7 @@
* @return The result of processing the pre-operation search plugins.
*/
public PreOperationPluginResult invokePreOperationSearchPlugins(
- SearchOperation searchOperation)
+ PreOperationSearchOperation searchOperation)
{
PreOperationPluginResult result = null;
@@ -3227,7 +3249,7 @@
* @return The result of processing the post-operation add plugins.
*/
public PostOperationPluginResult invokePostOperationAddPlugins(
- AddOperation addOperation)
+ PostOperationAddOperation addOperation)
{
PostOperationPluginResult result = null;
@@ -3307,7 +3329,7 @@
* @return The result of processing the post-operation bind plugins.
*/
public PostOperationPluginResult invokePostOperationBindPlugins(
- BindOperation bindOperation)
+ PostOperationBindOperation bindOperation)
{
PostOperationPluginResult result = null;
@@ -3469,7 +3491,7 @@
* @return The result of processing the post-operation delete plugins.
*/
public PostOperationPluginResult invokePostOperationDeletePlugins(
- DeleteOperation deleteOperation)
+ PostOperationDeleteOperation deleteOperation)
{
PostOperationPluginResult result = null;
@@ -3633,7 +3655,7 @@
* @return The result of processing the post-operation modify plugins.
*/
public PostOperationPluginResult invokePostOperationModifyPlugins(
- ModifyOperation modifyOperation)
+ PostOperationModifyOperation modifyOperation)
{
PostOperationPluginResult result = null;
@@ -3797,7 +3819,7 @@
* @return The result of processing the post-operation search plugins.
*/
public PostOperationPluginResult invokePostOperationSearchPlugins(
- SearchOperation searchOperation)
+ PostOperationSearchOperation searchOperation)
{
PostOperationPluginResult result = null;
@@ -3961,7 +3983,7 @@
* @return The result of processing the post-response add plugins.
*/
public PostResponsePluginResult invokePostResponseAddPlugins(
- AddOperation addOperation)
+ PostResponseAddOperation addOperation)
{
PostResponsePluginResult result = null;
@@ -4035,7 +4057,7 @@
* @return The result of processing the post-response bind plugins.
*/
public PostResponsePluginResult invokePostResponseBindPlugins(
- BindOperation bindOperation)
+ PostResponseBindOperation bindOperation)
{
PostResponsePluginResult result = null;
@@ -4183,7 +4205,7 @@
* @return The result of processing the post-response delete plugins.
*/
public PostResponsePluginResult invokePostResponseDeletePlugins(
- DeleteOperation deleteOperation)
+ PostResponseDeleteOperation deleteOperation)
{
PostResponsePluginResult result = null;
@@ -4331,7 +4353,7 @@
* @return The result of processing the post-response modify plugins.
*/
public PostResponsePluginResult invokePostResponseModifyPlugins(
- ModifyOperation modifyOperation)
+ PostResponseModifyOperation modifyOperation)
{
PostResponsePluginResult result = null;
@@ -4479,7 +4501,7 @@
* @return The result of processing the post-response search plugins.
*/
public PostResponsePluginResult invokePostResponseSearchPlugins(
- SearchOperation searchOperation)
+ PostResponseSearchOperation searchOperation)
{
PostResponsePluginResult result = null;
@@ -4541,7 +4563,75 @@
return result;
}
+ /**
+ * Invokes the set of search result entry plugins that have been configured
+ * in the Directory Server.
+ *
+ * @param searchOperation The search operation for which to invoke the
+ * search result entry plugins.
+ * @param searchEntry The search result entry to be processed.
+ *
+ * @return The result of processing the search result entry plugins.
+ */
+ public SearchEntryPluginResult invokeSearchResultEntryPlugins(
+ LocalBackendSearchOperation searchOperation,
+ SearchResultEntry searchEntry)
+ {
+ SearchEntryPluginResult result = null;
+ for (DirectoryServerPlugin p : searchResultEntryPlugins)
+ {
+ try
+ {
+ result = p.processSearchEntry(searchOperation, searchEntry);
+ }
+ catch (Exception e)
+ {
+ if (debugEnabled())
+ {
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
+ }
+
+ int msgID = MSGID_PLUGIN_SEARCH_ENTRY_PLUGIN_EXCEPTION;
+ String message = getMessage(msgID, String.valueOf(p.getPluginEntryDN()),
+ searchOperation.getConnectionID(),
+ searchOperation.getOperationID(),
+ String.valueOf(searchEntry.getDN()),
+ stackTraceToSingleLineString(e));
+ logError(ErrorLogCategory.PLUGIN, ErrorLogSeverity.SEVERE_ERROR,
+ message, msgID);
+
+ return new SearchEntryPluginResult(false, false, false, false);
+ }
+
+ if (result == null)
+ {
+ int msgID = MSGID_PLUGIN_SEARCH_ENTRY_PLUGIN_RETURNED_NULL;
+ String message = getMessage(msgID, String.valueOf(p.getPluginEntryDN()),
+ searchOperation.getConnectionID(),
+ searchOperation.getOperationID(),
+ String.valueOf(searchEntry.getDN()));
+ logError(ErrorLogCategory.PLUGIN, ErrorLogSeverity.SEVERE_ERROR,
+ message, msgID);
+
+ return new SearchEntryPluginResult(false, false, false, false);
+ }
+ else if (result.connectionTerminated() ||
+ (! result.continuePluginProcessing()))
+ {
+ return result;
+ }
+ }
+
+ if (result == null)
+ {
+ // This should only happen if there were no search result entry plugins
+ // registered, which is fine.
+ result = SearchEntryPluginResult.SUCCESS;
+ }
+
+ return result;
+ }
/**
* Invokes the set of search result entry plugins that have been configured
@@ -4554,7 +4644,7 @@
* @return The result of processing the search result entry plugins.
*/
public SearchEntryPluginResult invokeSearchResultEntryPlugins(
- SearchOperation searchOperation,
+ SearchOperationBasis searchOperation,
SearchResultEntry searchEntry)
{
SearchEntryPluginResult result = null;
@@ -4613,7 +4703,75 @@
return result;
}
+ /**
+ * Invokes the set of search result reference plugins that have been
+ * configured in the Directory Server.
+ *
+ * @param searchOperation The search operation for which to invoke the
+ * search result reference plugins.
+ * @param searchReference The search result reference to be processed.
+ *
+ * @return The result of processing the search result reference plugins.
+ */
+ public SearchReferencePluginResult invokeSearchResultReferencePlugins(
+ LocalBackendSearchOperation searchOperation,
+ SearchResultReference searchReference)
+ {
+ SearchReferencePluginResult result = null;
+ for (DirectoryServerPlugin p : searchResultReferencePlugins)
+ {
+ try
+ {
+ result = p.processSearchReference(searchOperation, searchReference);
+ }
+ catch (Exception e)
+ {
+ if (debugEnabled())
+ {
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
+ }
+
+ int msgID = MSGID_PLUGIN_SEARCH_REFERENCE_PLUGIN_EXCEPTION;
+ String message = getMessage(msgID, String.valueOf(p.getPluginEntryDN()),
+ searchOperation.getConnectionID(),
+ searchOperation.getOperationID(),
+ searchReference.getReferralURLString(),
+ stackTraceToSingleLineString(e));
+ logError(ErrorLogCategory.PLUGIN, ErrorLogSeverity.SEVERE_ERROR,
+ message, msgID);
+
+ return new SearchReferencePluginResult(false, false, false, false);
+ }
+
+ if (result == null)
+ {
+ int msgID = MSGID_PLUGIN_SEARCH_REFERENCE_PLUGIN_RETURNED_NULL;
+ String message = getMessage(msgID, String.valueOf(p.getPluginEntryDN()),
+ searchOperation.getConnectionID(),
+ searchOperation.getOperationID(),
+ searchReference.getReferralURLString());
+ logError(ErrorLogCategory.PLUGIN, ErrorLogSeverity.SEVERE_ERROR,
+ message, msgID);
+
+ return new SearchReferencePluginResult(false, false, false, false);
+ }
+ else if (result.connectionTerminated() ||
+ (! result.continuePluginProcessing()))
+ {
+ return result;
+ }
+ }
+
+ if (result == null)
+ {
+ // This should only happen if there were no search result reference
+ // plugins registered, which is fine.
+ result = SearchReferencePluginResult.SUCCESS;
+ }
+
+ return result;
+ }
/**
* Invokes the set of search result reference plugins that have been
@@ -4626,7 +4784,7 @@
* @return The result of processing the search result reference plugins.
*/
public SearchReferencePluginResult invokeSearchResultReferencePlugins(
- SearchOperation searchOperation,
+ SearchOperationBasis searchOperation,
SearchResultReference searchReference)
{
SearchReferencePluginResult result = null;
--
Gitblit v1.10.0