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