From c5245dae6cccfb602ff1815424b86ab27047187a Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Mon, 11 May 2009 14:22:29 +0000
Subject: [PATCH] - fix NDB backend workflow element processing broken by changes introduced in revision 5273.

---
 opends/src/server/org/opends/server/workflowelement/ndb/NDBModifyOperation.java   |   19 +++++++--
 opends/src/server/org/opends/server/workflowelement/ndb/NDBSearchOperation.java   |   19 +++++++--
 opends/src/server/org/opends/server/workflowelement/ndb/NDBModifyDNOperation.java |   19 +++++++--
 opends/src/server/org/opends/server/workflowelement/ndb/NDBCompareOperation.java  |   20 +++++++--
 opends/src/server/org/opends/server/workflowelement/ndb/NDBDeleteOperation.java   |   19 +++++++--
 opends/src/server/org/opends/server/workflowelement/ndb/NDBAddOperation.java      |   19 +++++++--
 6 files changed, 85 insertions(+), 30 deletions(-)

diff --git a/opends/src/server/org/opends/server/workflowelement/ndb/NDBAddOperation.java b/opends/src/server/org/opends/server/workflowelement/ndb/NDBAddOperation.java
index 4d1ef5c..d0b4872 100644
--- a/opends/src/server/org/opends/server/workflowelement/ndb/NDBAddOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/ndb/NDBAddOperation.java
@@ -433,12 +433,21 @@
         // FIXME: earlier checks to see if the entry already exists or
         // if the parent entry does not exist may have already exposed
         // sensitive information to the client.
-        if (AccessControlConfigManager.getInstance().getAccessControlHandler().
-                 isAllowed(this) == false)
+        try
         {
-          setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-          appendErrorMessage(ERR_ADD_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS.get(
-                                  String.valueOf(entryDN)));
+          if (AccessControlConfigManager.getInstance()
+              .getAccessControlHandler().isAllowed(this) == false)
+          {
+            setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
+            appendErrorMessage(ERR_ADD_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS
+                .get(String.valueOf(entryDN)));
+            break addProcessing;
+          }
+        }
+        catch (DirectoryException e)
+        {
+          setResultCode(e.getResultCode());
+          appendErrorMessage(e.getMessageObject());
           break addProcessing;
         }
 
diff --git a/opends/src/server/org/opends/server/workflowelement/ndb/NDBCompareOperation.java b/opends/src/server/org/opends/server/workflowelement/ndb/NDBCompareOperation.java
index b1c6212..ce1dc22 100644
--- a/opends/src/server/org/opends/server/workflowelement/ndb/NDBCompareOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/ndb/NDBCompareOperation.java
@@ -202,11 +202,21 @@
 
       // FIXME: earlier checks to see if the entry already exists may
       // have already exposed sensitive information to the client.
-      if (!AccessControlConfigManager.getInstance().
-        getAccessControlHandler().isAllowed(this)) {
-        setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-        appendErrorMessage(ERR_COMPARE_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS.get(
-          String.valueOf(entryDN)));
+      try
+      {
+        if (!AccessControlConfigManager.getInstance()
+            .getAccessControlHandler().isAllowed(this))
+        {
+          setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
+          appendErrorMessage(ERR_COMPARE_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS
+              .get(String.valueOf(entryDN)));
+          break compareProcessing;
+        }
+      }
+      catch (DirectoryException e)
+      {
+        setResultCode(e.getResultCode());
+        appendErrorMessage(e.getMessageObject());
         break compareProcessing;
       }
 
diff --git a/opends/src/server/org/opends/server/workflowelement/ndb/NDBDeleteOperation.java b/opends/src/server/org/opends/server/workflowelement/ndb/NDBDeleteOperation.java
index f6e9b87..54866bf 100644
--- a/opends/src/server/org/opends/server/workflowelement/ndb/NDBDeleteOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/ndb/NDBDeleteOperation.java
@@ -213,12 +213,21 @@
 
         // FIXME: earlier checks to see if the entry already exists may
         // have already exposed sensitive information to the client.
-        if (! AccessControlConfigManager.getInstance().
-                   getAccessControlHandler().isAllowed(this))
+        try
         {
-          setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-          appendErrorMessage(ERR_DELETE_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS.get(
-                                  String.valueOf(entryDN)));
+          if (!AccessControlConfigManager.getInstance()
+              .getAccessControlHandler().isAllowed(this))
+          {
+            setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
+            appendErrorMessage(ERR_DELETE_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS
+                .get(String.valueOf(entryDN)));
+            break deleteProcessing;
+          }
+        }
+        catch (DirectoryException e)
+        {
+          setResultCode(e.getResultCode());
+          appendErrorMessage(e.getMessageObject());
           break deleteProcessing;
         }
 
diff --git a/opends/src/server/org/opends/server/workflowelement/ndb/NDBModifyDNOperation.java b/opends/src/server/org/opends/server/workflowelement/ndb/NDBModifyDNOperation.java
index 649a85a..e98dab5 100644
--- a/opends/src/server/org/opends/server/workflowelement/ndb/NDBModifyDNOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/ndb/NDBModifyDNOperation.java
@@ -291,12 +291,21 @@
         // FIXME: earlier checks to see if the entry or new superior
         // already exists may have already exposed sensitive information
         // to the client.
-        if (! AccessControlConfigManager.getInstance().
-                   getAccessControlHandler().isAllowed(this))
+        try
         {
-          setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-          appendErrorMessage(ERR_MODDN_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS.get(
-                                  String.valueOf(entryDN)));
+          if (!AccessControlConfigManager.getInstance()
+              .getAccessControlHandler().isAllowed(this))
+          {
+            setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
+            appendErrorMessage(ERR_MODDN_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS
+                .get(String.valueOf(entryDN)));
+            break modifyDNProcessing;
+          }
+        }
+        catch (DirectoryException e)
+        {
+          setResultCode(e.getResultCode());
+          appendErrorMessage(e.getMessageObject());
           break modifyDNProcessing;
         }
 
diff --git a/opends/src/server/org/opends/server/workflowelement/ndb/NDBModifyOperation.java b/opends/src/server/org/opends/server/workflowelement/ndb/NDBModifyOperation.java
index 5748aaf..cf3d5da 100644
--- a/opends/src/server/org/opends/server/workflowelement/ndb/NDBModifyOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/ndb/NDBModifyOperation.java
@@ -291,12 +291,21 @@
 
         // FIXME: earlier checks to see if the entry already exists may have
         // already exposed sensitive information to the client.
-        if (! AccessControlConfigManager.getInstance().
-                   getAccessControlHandler().isAllowed(this))
+        try
         {
-          setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-          appendErrorMessage(ERR_MODIFY_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS.get(
-                                  String.valueOf(entryDN)));
+          if (!AccessControlConfigManager.getInstance()
+              .getAccessControlHandler().isAllowed(this))
+          {
+            setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
+            appendErrorMessage(ERR_MODIFY_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS
+                .get(String.valueOf(entryDN)));
+            break modifyProcessing;
+          }
+        }
+        catch (DirectoryException e)
+        {
+          setResultCode(e.getResultCode());
+          appendErrorMessage(e.getMessageObject());
           break modifyProcessing;
         }
 
diff --git a/opends/src/server/org/opends/server/workflowelement/ndb/NDBSearchOperation.java b/opends/src/server/org/opends/server/workflowelement/ndb/NDBSearchOperation.java
index e37b18f..690cbcc 100644
--- a/opends/src/server/org/opends/server/workflowelement/ndb/NDBSearchOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/ndb/NDBSearchOperation.java
@@ -158,12 +158,21 @@
       // FIXME: for now assume that this will check all permission
       // pertinent to the operation. This includes proxy authorization
       // and any other controls specified.
-      if (! AccessControlConfigManager.getInstance().getAccessControlHandler().
-                 isAllowed(this))
+      try
       {
-        setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-        appendErrorMessage(ERR_SEARCH_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS.get(
-                                String.valueOf(baseDN)));
+        if (!AccessControlConfigManager.getInstance()
+            .getAccessControlHandler().isAllowed(this))
+        {
+          setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
+          appendErrorMessage(ERR_SEARCH_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS
+              .get(String.valueOf(baseDN)));
+          break searchProcessing;
+        }
+      }
+      catch (DirectoryException e)
+      {
+        setResultCode(e.getResultCode());
+        appendErrorMessage(e.getMessageObject());
         break searchProcessing;
       }
 

--
Gitblit v1.10.0