From 8006c79df79e157656f50b5537c58077186bfc61 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Tue, 24 Sep 2024 05:28:35 +0000
Subject: [PATCH] [#401] Change "Object class violation (65)" -> "Naming violation (64)" LDAP result code for DIT Structure Rule violation (#410)

---
 opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java                                                |   12 +++++++++++-
 opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java   |    2 +-
 opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java |    5 +++--
 opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java      |    2 +-
 4 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java b/opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java
index a2fdb87..621792a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java
@@ -1507,7 +1507,15 @@
   }
 
 
-
+  private ResultCode typeConformsToSchemaError = null;
+  
+   /**
+   * Returns a error when entry type does not conform to a schema 
+   * requirements.  Otherwise returns {@code null}
+   **/
+  public ResultCode getTypeConformsToSchemaError() {
+    return typeConformsToSchemaError;
+  }
   /**
    * Indicates whether this entry conforms to the server's schema
    * requirements.  The checks performed by this method include:
@@ -1564,6 +1572,7 @@
                                   boolean validateStructureRules,
                                   LocalizableMessageBuilder invalidReason)
   {
+    typeConformsToSchemaError = OBJECTCLASS_VIOLATION;
     // Get the structural objectclass for the entry.  If there isn't
     // one, or if there's more than one, then see if that's OK.
     AcceptRejectWarn structuralPolicy =
@@ -1640,6 +1649,7 @@
 
       if (validateNameForms)
       {
+        typeConformsToSchemaError = NAMING_VIOLATION;
         /**
          * There may be multiple nameforms registered with this
          * structural objectclass.However, we need to select only one
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java
index 3aa4daa..1b86927 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java
@@ -803,7 +803,7 @@
     LocalizableMessageBuilder invalidReason = new LocalizableMessageBuilder();
     if (! entry.conformsToSchema(parentEntry, true, true, true, invalidReason))
     {
-      throw new DirectoryException(ResultCode.OBJECTCLASS_VIOLATION,
+      throw new DirectoryException(entry.getTypeConformsToSchemaError(),
                                    invalidReason.toMessage());
     }
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java
index 91af23b..a0a575d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java
@@ -13,6 +13,7 @@
  *
  * Copyright 2008-2010 Sun Microsystems, Inc.
  * Portions Copyright 2011-2016 ForgeRock AS.
+ * Portions copyright 2024 3A Systems,LLC.
  */
 package org.opends.server.workflowelement.localbackend;
 
@@ -670,7 +671,7 @@
       if (! newEntry.conformsToSchema(null, false, true, true,
                                       invalidReason))
       {
-        throw new DirectoryException(ResultCode.OBJECTCLASS_VIOLATION,
+        throw new DirectoryException(newEntry.getTypeConformsToSchemaError(),
             ERR_MODDN_VIOLATES_SCHEMA.get(entryDN, invalidReason));
       }
 
@@ -742,7 +743,7 @@
       if (! newEntry.conformsToSchema(null, false, true, true,
                                       invalidReason))
       {
-        throw new DirectoryException(ResultCode.OBJECTCLASS_VIOLATION,
+        throw new DirectoryException(newEntry.getTypeConformsToSchemaError(),
             ERR_MODDN_PREOP_VIOLATES_SCHEMA.get(entryDN, invalidReason));
       }
     }
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
index 070c528..6995427 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
@@ -469,7 +469,7 @@
         LocalizableMessageBuilder invalidReason = new LocalizableMessageBuilder();
         if (!modifiedEntry.conformsToSchema(null, false, false, false, invalidReason))
         {
-          setResultCode(ResultCode.OBJECTCLASS_VIOLATION);
+          setResultCode(modifiedEntry.getTypeConformsToSchemaError());
           appendErrorMessage(ERR_MODIFY_VIOLATES_SCHEMA.get(entryDN, invalidReason));
           return;
         }

--
Gitblit v1.10.0