From 8006c79df79e157656f50b5537c58077186bfc61 Mon Sep 17 00:00:00 2001 From: Valery Kharseko Date: Tue, 24 Sep 2024 08:28:35 +0300 Subject: [PATCH] [#401] Change "Object class violation (65)" -> "Naming violation (64)" LDAP result code for DIT Structure Rule violation (#410) Co-authored-by: Maxim Thomas --- .../src/main/java/org/opends/server/types/Entry.java | 12 +++++++++++- .../localbackend/LocalBackendAddOperation.java | 2 +- .../localbackend/LocalBackendModifyDNOperation.java | 5 +++-- .../localbackend/LocalBackendModifyOperation.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 a2fdb87aa2..621792aea6 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 @@ public void applyModifications(List mods) } - + 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 @@ public boolean conformsToSchema(Entry parentEntry, 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 @@ else if (structuralPolicy == AcceptRejectWarn.WARN) 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 3aa4daa70c..1b86927170 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 @@ private void checkSchema(Entry parentEntry) throws DirectoryException 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 91af23b47e..a0a575d59e 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 @@ private void applyRDNChanges(List modifications) 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 @@ private void applyPreOpModifications(List modifications, 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 070c5288c7..6995427b84 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 @@ private void processModify() throws CanceledOperationException 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; }