You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by si...@apache.org on 2019/04/03 12:26:45 UTC

[sling-whiteboard] branch master updated: [feature-diff] added ConfigurationsComparatorTest and refined related implementation

This is an automated email from the ASF dual-hosted git repository.

simonetripodi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git


The following commit(s) were added to refs/heads/master by this push:
     new b827aad  [feature-diff] added ConfigurationsComparatorTest and refined related implementation
b827aad is described below

commit b827aada5c3e9da2d861dcd9e4663658b32587c1
Author: stripodi <st...@192.168.1.111>
AuthorDate: Wed Apr 3 14:26:38 2019 +0200

    [feature-diff] added ConfigurationsComparatorTest and refined related
    implementation
---
 .../diff/AbstractFeatureElementComparator.java     |   2 +-
 .../feature/diff/ConfigurationsComparator.java     |   9 +-
 .../feature/diff/ConfigurationsComparatorTest.java | 101 +++++++++++++++++++++
 3 files changed, 106 insertions(+), 6 deletions(-)

diff --git a/feature-diff/src/main/java/org/apache/sling/feature/diff/AbstractFeatureElementComparator.java b/feature-diff/src/main/java/org/apache/sling/feature/diff/AbstractFeatureElementComparator.java
index 1e1a3d3..5de0ca2 100644
--- a/feature-diff/src/main/java/org/apache/sling/feature/diff/AbstractFeatureElementComparator.java
+++ b/feature-diff/src/main/java/org/apache/sling/feature/diff/AbstractFeatureElementComparator.java
@@ -55,7 +55,7 @@ abstract class AbstractFeatureElementComparator<T, I extends Iterable<T>> implem
             if (previous == null) {
                 diffDsection.markAdded(getId(current));
             }
-        };
+        }
 
         return diffDsection;
     }
diff --git a/feature-diff/src/main/java/org/apache/sling/feature/diff/ConfigurationsComparator.java b/feature-diff/src/main/java/org/apache/sling/feature/diff/ConfigurationsComparator.java
index ec0db60..2f82e8d 100644
--- a/feature-diff/src/main/java/org/apache/sling/feature/diff/ConfigurationsComparator.java
+++ b/feature-diff/src/main/java/org/apache/sling/feature/diff/ConfigurationsComparator.java
@@ -16,11 +16,10 @@
  */
 package org.apache.sling.feature.diff;
 
-import static org.apache.commons.lang3.builder.EqualsBuilder.reflectionEquals;
-
 import java.util.Dictionary;
 import java.util.Enumeration;
 
+import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.sling.feature.Configuration;
 import org.apache.sling.feature.Configurations;
 
@@ -37,14 +36,14 @@ final class ConfigurationsComparator extends AbstractFeatureElementComparator<Co
 
     @Override
     public Configuration find(Configuration configuration, Configurations configurations) {
-        return configurations.getConfiguration(configuration.getPid());
+        return configurations.getConfiguration(getId(configuration));
     }
 
     @Override
     public DiffSection compare(Configuration previous, Configuration current) {
         Dictionary<String, Object> previousProperties = previous.getConfigurationProperties();
         Dictionary<String, Object> currentProperties = current.getConfigurationProperties();
-        final DiffSection dictionaryDiffs = new DiffSection("properties");
+        final DiffSection dictionaryDiffs = new DiffSection(getId(current));
 
         Enumeration<String> previousKeys = previousProperties.keys();
         while (previousKeys.hasMoreElements()) {
@@ -55,7 +54,7 @@ final class ConfigurationsComparator extends AbstractFeatureElementComparator<Co
 
             if (currentValue == null && previousValue != null) {
                 dictionaryDiffs.markRemoved(previousKey);
-            } else if (!reflectionEquals(previousValue, currentValue, true)) {
+            } else if (!new EqualsBuilder().reflectionAppend(previousValue, currentValue).isEquals()) {
                 dictionaryDiffs.markItemUpdated(previousKey, previousValue, currentValue);
             }
         }
diff --git a/feature-diff/src/test/java/org/apache/sling/feature/diff/ConfigurationsComparatorTest.java b/feature-diff/src/test/java/org/apache/sling/feature/diff/ConfigurationsComparatorTest.java
new file mode 100644
index 0000000..5fba06b
--- /dev/null
+++ b/feature-diff/src/test/java/org/apache/sling/feature/diff/ConfigurationsComparatorTest.java
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.sling.feature.diff;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import org.apache.sling.feature.Configuration;
+import org.apache.sling.feature.Configurations;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ConfigurationsComparatorTest {
+
+    private ConfigurationsComparator comparator;
+
+    @Before
+    public void setUp() {
+        comparator = new ConfigurationsComparator();
+    }
+
+    @After
+    public void tearDown() {
+        comparator = null;
+    }
+
+    @Test
+    public void checkRemoved() {
+        Configuration previousConfiguration = new Configuration("org.apache.sling.feature.diff.config");
+        Configurations previousConfigurations = new Configurations();
+        previousConfigurations.add(previousConfiguration);
+
+        Configurations currentConfigurations = new Configurations();
+
+        DiffSection configurationsDiff = comparator.apply(previousConfigurations, currentConfigurations);
+        assertFalse(configurationsDiff.isEmpty());
+
+        assertEquals(previousConfiguration.getPid(), configurationsDiff.getRemoved().iterator().next());
+    }
+
+    @Test
+    public void checkAdded() {
+        Configurations previousConfigurations = new Configurations();
+
+        Configuration currentConfiguration = new Configuration("org.apache.sling.feature.diff.config");
+        Configurations currentConfigurations = new Configurations();
+        currentConfigurations.add(currentConfiguration);
+
+        DiffSection configurationsDiff = comparator.apply(previousConfigurations, currentConfigurations);
+        assertFalse(configurationsDiff.isEmpty());
+
+        assertEquals(currentConfiguration.getPid(), configurationsDiff.getAdded().iterator().next());
+    }
+
+    @Test
+    public void checkUpdated() {
+        Configuration previousConfiguration = new Configuration("org.apache.sling.feature.diff.config");
+        previousConfiguration.getProperties().put("removed", 123);
+        previousConfiguration.getProperties().put("updated", new String[] { "/log" });
+
+        Configurations previousConfigurations = new Configurations();
+        previousConfigurations.add(previousConfiguration);
+
+        Configuration currentConfiguration = new Configuration("org.apache.sling.feature.diff.config");
+        currentConfiguration.getProperties().put("updated", new String[] { "/log", "/etc" });
+        currentConfiguration.getProperties().put("added", true);
+
+        Configurations currentConfigurations = new Configurations();
+        currentConfigurations.add(currentConfiguration);
+
+        DiffSection configurationsDiff = comparator.apply(previousConfigurations, currentConfigurations);
+        assertFalse(configurationsDiff.isEmpty());
+
+        DiffSection configurationDiff = configurationsDiff.getUpdates().iterator().next();
+
+        assertEquals("removed", configurationDiff.getRemoved().iterator().next());
+        assertEquals("added", configurationDiff.getAdded().iterator().next());
+
+        UpdatedItem<?> updated = configurationDiff.getUpdatedItems().iterator().next();
+        assertEquals("updated", updated.getId());
+        assertArrayEquals(new String[] { "/log" }, (String[]) updated.getPrevious());
+        assertArrayEquals(new String[] { "/log", "/etc" }, (String[]) updated.getCurrent());
+    }
+
+}