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/05/31 15:37:42 UTC
[sling-whiteboard] branch master updated: [featurediff] added
requirements comparator
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 132b6e3 [featurediff] added requirements comparator
new acc4c98 Merge branch 'master' of github.com:apache/sling-whiteboard
132b6e3 is described below
commit 132b6e3d6ff2e6e14011b167ec9ef2d4da7be945
Author: Simo Tripodi <st...@adobe.com>
AuthorDate: Fri May 31 17:37:16 2019 +0200
[featurediff] added requirements comparator
---
feature-diff/pom.xml | 7 ++-
.../org/apache/sling/feature/diff/DiffSection.java | 4 +-
.../org/apache/sling/feature/diff/FeatureDiff.java | 2 +
.../sling/feature/diff/RequirementsComparator.java | 54 ++++++++++++++++++++++
.../apache/sling/feature/diff/DiffSectionTest.java | 3 +-
5 files changed, 66 insertions(+), 4 deletions(-)
diff --git a/feature-diff/pom.xml b/feature-diff/pom.xml
index 6df816e..f952362 100644
--- a/feature-diff/pom.xml
+++ b/feature-diff/pom.xml
@@ -53,9 +53,14 @@
| Sling Feature Model libraries
-->
<dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.feature</artifactId>
- <version>1.0.0</version>
+ <version>1.0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/feature-diff/src/main/java/org/apache/sling/feature/diff/DiffSection.java b/feature-diff/src/main/java/org/apache/sling/feature/diff/DiffSection.java
index a62aa51..1d282ec 100644
--- a/feature-diff/src/main/java/org/apache/sling/feature/diff/DiffSection.java
+++ b/feature-diff/src/main/java/org/apache/sling/feature/diff/DiffSection.java
@@ -71,7 +71,9 @@ public final class DiffSection {
protected void markUpdated(DiffSection diffSection) {
DiffSection checkedSection = requireNonNull(diffSection);
- updates.add(checkedSection);
+ if (!diffSection.isEmpty()) {
+ updates.add(checkedSection);
+ }
}
public Iterable<DiffSection> getUpdates() {
diff --git a/feature-diff/src/main/java/org/apache/sling/feature/diff/FeatureDiff.java b/feature-diff/src/main/java/org/apache/sling/feature/diff/FeatureDiff.java
index e86a6e2..76e0474 100644
--- a/feature-diff/src/main/java/org/apache/sling/feature/diff/FeatureDiff.java
+++ b/feature-diff/src/main/java/org/apache/sling/feature/diff/FeatureDiff.java
@@ -42,7 +42,9 @@ public final class FeatureDiff {
featureDiff.addSection(new GenericMapComparator("framework-properties").compare(previous.getFrameworkProperties(), current.getFrameworkProperties()));
featureDiff.addSection(new ArtifactsComparator("bundles").apply(previous.getBundles(), current.getBundles()));
featureDiff.addSection(new ConfigurationsComparator().apply(previous.getConfigurations(), current.getConfigurations()));
+ featureDiff.addSection(new RequirementsComparator().apply(previous.getRequirements(), current.getRequirements()));
featureDiff.addSection(new ExtensionsComparator().apply(previous.getExtensions(), current.getExtensions()));
+ featureDiff.addSection(new GenericMapComparator("variables").compare(previous.getVariables(), current.getVariables()));
return featureDiff;
}
diff --git a/feature-diff/src/main/java/org/apache/sling/feature/diff/RequirementsComparator.java b/feature-diff/src/main/java/org/apache/sling/feature/diff/RequirementsComparator.java
new file mode 100644
index 0000000..12b64da
--- /dev/null
+++ b/feature-diff/src/main/java/org/apache/sling/feature/diff/RequirementsComparator.java
@@ -0,0 +1,54 @@
+/*
+ * 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 java.util.List;
+
+import org.osgi.resource.Requirement;
+
+final class RequirementsComparator extends AbstractFeatureElementComparator<Requirement, List<Requirement>> {
+
+ public RequirementsComparator() {
+ super("requirements");
+ }
+
+ @Override
+ public DiffSection compare(Requirement previous, Requirement current) {
+ DiffSection diffSection = new DiffSection(getId(current));
+
+ diffSection.markUpdated(new GenericMapComparator("directives").compare(previous.getDirectives(), current.getDirectives()));
+ diffSection.markUpdated(new GenericMapComparator("attributes").compare(previous.getAttributes(), current.getAttributes()));
+
+ return diffSection;
+ }
+
+ @Override
+ protected String getId(Requirement item) {
+ return item.getNamespace();
+ }
+
+ @Override
+ protected Requirement find(Requirement item, List<Requirement> requirements) {
+ for (Requirement requirement : requirements) {
+ if (getId(item).equals(getId(requirement))) {
+ return requirement;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/feature-diff/src/test/java/org/apache/sling/feature/diff/DiffSectionTest.java b/feature-diff/src/test/java/org/apache/sling/feature/diff/DiffSectionTest.java
index 2720381..b06fd39 100644
--- a/feature-diff/src/test/java/org/apache/sling/feature/diff/DiffSectionTest.java
+++ b/feature-diff/src/test/java/org/apache/sling/feature/diff/DiffSectionTest.java
@@ -92,8 +92,7 @@ public class DiffSectionTest {
DiffSection childDiff = new DiffSection("child");
mainDiff.markUpdated(childDiff);
- assertFalse(mainDiff.isEmpty());
- assertEquals(mainDiff.getUpdates().iterator().next(), childDiff);
+ assertTrue(mainDiff.isEmpty());
}
}