From af105fd6f3de045f55081c0caab704a9854fa5af Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Tue, 16 Jul 2024 12:39:46 +0000
Subject: [PATCH] [#148,#261,#282] FIX control-panel schema errors in remote mode (#359)

---
 opendj-server-legacy/src/main/java/org/opends/server/util/ServerConstants.java                      |    2 +-
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java  |    2 +-
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java    |    8 ++++----
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java |    4 ++--
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromConnection.java  |    2 +-
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomAttributePanel.java    |    2 +-
 6 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
index b7f8bd1..154f863 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
@@ -537,8 +537,8 @@
 
     return areAttributeTypesEqual(schema1, schema2)
         && areObjectClassesEqual(schema1, schema2)
-        && Objects.equals(schema1.getMatchingRules(), schema2.getMatchingRules())
-        && Objects.equals(schema1.getSyntaxes(), schema2.getSyntaxes());
+        && (schema1.getMatchingRules().size()==schema2.getMatchingRules().size() && schema1.getMatchingRules().containsAll(schema2.getMatchingRules()))
+        && (schema1.getSyntaxes().size()==schema2.getSyntaxes().size() && schema1.getSyntaxes().containsAll(schema2.getSyntaxes()));
   }
 
   private static boolean areAttributeTypesEqual(Schema schema1, Schema schema2)
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomAttributePanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomAttributePanel.java
index 67780a0..e16e6cc 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomAttributePanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomAttributePanel.java
@@ -1082,7 +1082,7 @@
         .noUserModification(nonModifiable.isSelected())
         .singleValue(singleValued.isSelected())
         .extraProperties(getExtraProperties())
-        .addToSchema()
+        .addToSchemaOverwrite()
       .toSchema()
       .getAttributeType(getOID());
   }
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java
index ca1162c..9f12d39 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java
@@ -973,7 +973,7 @@
         .type(getObjectClassType())
         .obsolete(obsolete.isSelected())
         .extraProperties(getExtraProperties())
-        .addToSchema()
+        .addToSchemaOverwrite()
         .toSchema()
         .getObjectClass(getOID());
   }
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromConnection.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromConnection.java
index 4a0b6b7..7c49b13 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromConnection.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromConnection.java
@@ -320,7 +320,7 @@
       }
       catch (OpenDsException oe)
       {
-        errors.add(oe);
+        //errors.add(oe);
       }
     }
   }
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java
index b353a5e..17bfc9d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java
@@ -81,17 +81,17 @@
 
     // Add missing matching rules and attribute syntaxes to base schema to allow read of remote server schema
     // (see OPENDJ-1122 for more details)
-    //SchemaHandler.addServerSyntaxesAndMatchingRules(schemaBuilder);
+    SchemaHandler.addServerSyntaxesAndMatchingRules(schemaBuilder);
 
     // Add remote schema entry
     final SearchRequest request = newSearchRequest(
         DN.valueOf(DN_DEFAULT_SCHEMA_ROOT), BASE_OBJECT, Filter.alwaysTrue(),
         ATTR_LDAP_SYNTAXES, ATTR_ATTRIBUTE_TYPES, ATTR_OBJECTCLASSES);
     final SearchResultEntry entry = connWrapper.getConnection().searchSingleEntry(request);
-    removeNonOpenDjOrOpenDsSyntaxes(entry);
-    new SchemaBuilder(getBaseSchema()).addSchema(entry, true);
+    //removeNonOpenDjOrOpenDsSyntaxes(entry);
+    schemaBuilder.addSchema(entry, true);
 
-    return buildSchema(schemaBuilder); 
+    return schemaBuilder.toSchema();
 
   }
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/util/ServerConstants.java b/opendj-server-legacy/src/main/java/org/opends/server/util/ServerConstants.java
index 16fed10..42f8e43 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/util/ServerConstants.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/util/ServerConstants.java
@@ -1981,7 +1981,7 @@
   /**
    * The value that will be used for the vendorName attribute in the root DSE.
    */
-  public static final String SERVER_VENDOR_NAME = "ForgeRock AS.";
+  public static final String SERVER_VENDOR_NAME = "Open Identity Platform Community";
 
 
 

--
Gitblit v1.10.0