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/06/14 15:29:54 UTC

[sling-whiteboard] 01/03: [feature-diff] diff method args moved to data object in order to simplify readability and backward compatibility as suggested by @bosschaert

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

commit 25bfb6d4c597343590dcfa0b304f750d66cf2c3f
Author: Simo Tripodi <st...@adobe.com>
AuthorDate: Fri Jun 14 16:40:45 2019 +0200

    [feature-diff] diff method args moved to data object in order to
    simplify readability and backward compatibility as suggested by
    @bosschaert
---
 .../sling/feature/diff/DefaultDiffRequest.java     | 94 ++++++++++++++++++++++
 ...tureElementComparator.java => DiffRequest.java} | 17 +++-
 .../feature/diff/spi/FeatureElementComparator.java |  2 +
 3 files changed, 110 insertions(+), 3 deletions(-)

diff --git a/feature-diff/src/main/java/org/apache/sling/feature/diff/DefaultDiffRequest.java b/feature-diff/src/main/java/org/apache/sling/feature/diff/DefaultDiffRequest.java
new file mode 100644
index 0000000..d88cbae
--- /dev/null
+++ b/feature-diff/src/main/java/org/apache/sling/feature/diff/DefaultDiffRequest.java
@@ -0,0 +1,94 @@
+/*
+ * 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 java.util.Objects.requireNonNull;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.sling.feature.ArtifactId;
+import org.apache.sling.feature.Feature;
+
+public final class DefaultDiffRequest implements DiffRequest {
+
+    private final Set<String> includeComparators = new HashSet<>();
+
+    private final Set<String> excludeComparators = new HashSet<>();
+
+    private Feature previous;
+
+    private Feature current;
+
+    private ArtifactId resultId;
+
+    @Override
+    public Feature getPrevious() {
+        return previous;
+    }
+
+    public DefaultDiffRequest setPrevious(Feature previous) {
+        this.previous = requireNonNull(previous, "Impossible to compare null previous feature.");
+        return this;
+    }
+
+    @Override
+    public Feature getCurrent() {
+        return current;
+    }
+
+    public DefaultDiffRequest setCurrent(Feature current) {
+        this.current = requireNonNull(current, "Impossible to compare null current feature.");
+        return this;
+    }
+
+    @Override
+    public ArtifactId getResultId() {
+        return resultId;
+    }
+
+    public DefaultDiffRequest setResultId(String resultId) {
+        resultId = requireNonNull(resultId, "Impossible to create the Feature diff with a null id");
+        return setResultId(ArtifactId.parse(resultId));
+    }
+
+    public DefaultDiffRequest setResultId(ArtifactId resultId) {
+        this.resultId = requireNonNull(resultId, "Impossible to create the Feature diff with a null id");
+        return this;
+    }
+
+    public DefaultDiffRequest addIncludeComparator(String includeComparator) {
+        includeComparators.add(requireNonNull(includeComparator, "A null include comparator id is not valid"));
+        return this;
+    }
+
+    @Override
+    public Set<String> getIncludeComparators() {
+        return includeComparators;
+    }
+
+    public DefaultDiffRequest addExcludeComparator(String excludeComparator) {
+        excludeComparators.add(requireNonNull(excludeComparator, "A null exclude comparator id is not valid"));
+        return this;
+    }
+
+    @Override
+    public Set<String> getExcludeComparators() {
+        return excludeComparators;
+    }
+
+}
diff --git a/feature-diff/src/main/java/org/apache/sling/feature/diff/spi/FeatureElementComparator.java b/feature-diff/src/main/java/org/apache/sling/feature/diff/DiffRequest.java
similarity index 73%
copy from feature-diff/src/main/java/org/apache/sling/feature/diff/spi/FeatureElementComparator.java
copy to feature-diff/src/main/java/org/apache/sling/feature/diff/DiffRequest.java
index 89cbe50..b5f4e39 100644
--- a/feature-diff/src/main/java/org/apache/sling/feature/diff/spi/FeatureElementComparator.java
+++ b/feature-diff/src/main/java/org/apache/sling/feature/diff/DiffRequest.java
@@ -14,12 +14,23 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.sling.feature.diff.spi;
+package org.apache.sling.feature.diff;
 
+import java.util.Set;
+
+import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Feature;
 
-public interface FeatureElementComparator {
+public interface DiffRequest {
+
+    Feature getPrevious();
+
+    Feature getCurrent();
+
+    ArtifactId getResultId();
+
+    Set<String> getIncludeComparators();
 
-    public void computeDiff(Feature previous, Feature current, Feature target);
+    Set<String> getExcludeComparators();
 
 }
diff --git a/feature-diff/src/main/java/org/apache/sling/feature/diff/spi/FeatureElementComparator.java b/feature-diff/src/main/java/org/apache/sling/feature/diff/spi/FeatureElementComparator.java
index 89cbe50..7c697f4 100644
--- a/feature-diff/src/main/java/org/apache/sling/feature/diff/spi/FeatureElementComparator.java
+++ b/feature-diff/src/main/java/org/apache/sling/feature/diff/spi/FeatureElementComparator.java
@@ -20,6 +20,8 @@ import org.apache.sling.feature.Feature;
 
 public interface FeatureElementComparator {
 
+    String getId();
+
     public void computeDiff(Feature previous, Feature current, Feature target);
 
 }