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());
+ }
+
+}