mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

gbellato
06.12.2007 c4c23b471528c582b8c4133a834e46c539f234c6
fix for isue 1632 : schema check should not be done for replicated operation.

The fix is simply not to do the schema tests when the operation is a
synchronization operation.

A test has been added for this.
3 files modified
53 ■■■■ changed files
opends/src/server/org/opends/server/core/ModifyDNOperation.java 8 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java 31 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/replication/UpdateOperationTest.java 14 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/ModifyDNOperation.java
@@ -1501,9 +1501,11 @@
          }
        }
        // Make sure that the resulting entry is valid as per the server schema.
        if (DirectoryServer.checkSchema())
        // If the server is configured to check the schema and the
        // operation is not a synchronization operation,
        // make sure that the resulting entry is valid as per the server schema.
        if ((DirectoryServer.checkSchema()) &&
            (!isSynchronizationOperation()) )
        {
          StringBuilder invalidReason = new StringBuilder();
          if (! newEntry.conformsToSchema(null, false, true, true,
opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
@@ -1250,10 +1250,12 @@
              break modifyProcessing;
            }
            // Make sure that all the new values are valid according to the
            // If the server is configured to check schema and the
            // operation is not a synchronization operation,
            // make sure that all the new values are valid according to the
            // associated syntax.
            if (DirectoryServer.checkSchema())
            if ((DirectoryServer.checkSchema()) &&
                (!localOp.isSynchronizationOperation()) )
            {
              AcceptRejectWarn syntaxPolicy =
                DirectoryServer.getSyntaxEnforcementPolicy();
@@ -1467,11 +1469,13 @@
              break;
            }
            // Make sure that all the new values are valid according to the
            // If the server is configured to check schema and the
            // operation is not a synchronization operation,
            // make sure that all the new values are valid according to the
            // associated syntax.
            newValues = a.getValues();
            if (DirectoryServer.checkSchema())
            if ((DirectoryServer.checkSchema()) &&
                (!localOp.isSynchronizationOperation()) )
            {
              AcceptRejectWarn syntaxPolicy =
                DirectoryServer.getSyntaxEnforcementPolicy();
@@ -1937,8 +1941,11 @@
            break modifyProcessing;
        }
        // Make sure that the new entry is valid per the server schema.
        if (DirectoryServer.checkSchema())
        // If the server is configured to check the schema and the
        // operation is not a sycnhronization operation,
        // make sure that the new entry is valid per the server schema.
        if ((DirectoryServer.checkSchema()) &&
            (!localOp.isSynchronizationOperation()) )
        {
          StringBuilder invalidReason = new StringBuilder();
          if (! modifiedEntry.conformsToSchema(null, false, false, false,
@@ -4964,10 +4971,12 @@
          }
        }
        // Check to see if the entry is valid according to the server schema,
        // If the server is configured to check schema and the
        // operation is not a synchronization operation,
        // check to see if the entry is valid according to the server schema,
        // and also whether its attributes are valid according to their syntax.
        if (DirectoryServer.checkSchema())
        if ((DirectoryServer.checkSchema()) &&
            (!localOp.isSynchronizationOperation()) )
        {
          StringBuilder invalidReason = new StringBuilder();
          if (! entry.conformsToSchema(parentEntry, true, true, true,
opends/tests/unit-tests-testng/src/server/org/opends/server/replication/UpdateOperationTest.java
@@ -1283,6 +1283,20 @@
      if (found == false)
        fail("The modification has not been correctly replayed.");
      // Test that replication is able to add attribute that do
      // not exist in the schema.
      List<Modification> invalidMods = generatemods("badattribute", "value");
      modMsg = new ModifyMsg(gen.newChangeNumber(), personWithUUIDEntry.getDN(),
          invalidMods, user1entryUUID);
      if (assured)
        modMsg.setAssured();
      broker.publish(modMsg);
      found = checkEntryHasAttribute(
          personWithUUIDEntry.getDN(), "badattribute", "value", 10000, true);
      if (found == false)
        fail("The modification has not been correctly replayed.");
      /*
       * Test the Reception of Modify Dn Msg