diff --git a/Jenkinsfile.groovy b/Jenkinsfile.groovy
index ef372a4..e799493 100644
--- a/Jenkinsfile.groovy
+++ b/Jenkinsfile.groovy
@@ -15,6 +15,14 @@ pipeline {
error("Build failed because SNAPSHOT version")
}
}
+ stage('Static Code Analysis') {
+ steps {
+ withMaven(maven: 'maven 3.5.2', jdk: 'JDK 1.8') {
+ sh "${mvn} compile checkstyle:checkstyle pmd:pmd"
+ }
+ pmd canComputeNew: false, defaultEncoding: '', healthy: '', pattern: '', unHealthy: ''
+ }
+ }
stage('Build') {
parallel {
stage('Java 8') {
@@ -51,15 +59,10 @@ pipeline {
archiveArtifacts '**/target/*.jar'
}
}
- stage('Quality') {
- steps {
- pmd canComputeNew: false, defaultEncoding: '', healthy: '', pattern: '', unHealthy: ''
- }
- }
stage('Deploy') {
when { expression { (env.GIT_BRANCH == 'master') } }
steps {
- withMaven(maven: 'maven 3.5.2', jdk: 'JDK 9') {
+ withMaven(maven: 'maven 3.5.2', jdk: 'JDK 1.8') {
sh "${mvn} deploy --activate-profiles release -DskipTests=true"
}
}
diff --git a/pom.xml b/pom.xml
index d71e264..e4e2b9c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
3.9.1
4.3.0
2.10
- 0.6.1
+ 0.7.1
2.20.1
2.20.1
1.16.20
diff --git a/src/main/java/net/kemitix/conditional/Action.java b/src/main/java/net/kemitix/conditional/Action.java
new file mode 100644
index 0000000..67508e5
--- /dev/null
+++ b/src/main/java/net/kemitix/conditional/Action.java
@@ -0,0 +1,36 @@
+/**
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2017 Paul Campbell
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies
+ * or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+ * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+package net.kemitix.conditional;
+
+/**
+ * An action to perform in a clause when a {@link Condition} is met.
+ *
+ * @author Paul Campbell (pcampbell@kemitix.net)
+ */
+@FunctionalInterface
+public interface Action {
+
+ /**
+ * The action to perform.
+ */
+ void perform();
+}
diff --git a/src/main/java/net/kemitix/conditional/Condition.java b/src/main/java/net/kemitix/conditional/Condition.java
index 7129574..000268c 100644
--- a/src/main/java/net/kemitix/conditional/Condition.java
+++ b/src/main/java/net/kemitix/conditional/Condition.java
@@ -78,6 +78,7 @@ public interface Condition {
*
* @return the Condition
*/
+ @SuppressWarnings("PMD.ShortMethodName")
Condition or(boolean clause);
/**
@@ -98,14 +99,14 @@ public interface Condition {
*
* @return the Condition
*/
- Condition then(Runnable response);
+ Condition then(Action response);
/**
* Perform this response if the {@code Condition} is {@code false}.
*
* @param response the response to perform
*/
- void otherwise(Runnable response);
+ void otherwise(Action response);
/**
* Create a new {@code Condition} for the clause as a continuation to an existing {@code Condition}.
diff --git a/src/main/java/net/kemitix/conditional/FalseCondition.java b/src/main/java/net/kemitix/conditional/FalseCondition.java
index 165a649..07881c7 100644
--- a/src/main/java/net/kemitix/conditional/FalseCondition.java
+++ b/src/main/java/net/kemitix/conditional/FalseCondition.java
@@ -28,7 +28,7 @@ package net.kemitix.conditional;
*/
final class FalseCondition implements Condition {
- protected static final Condition FALSE = new net.kemitix.conditional.FalseCondition();
+ public static final Condition FALSE = new net.kemitix.conditional.FalseCondition();
@Override
public Condition and(final boolean clause) {
@@ -36,18 +36,19 @@ final class FalseCondition implements Condition {
}
@Override
+ @SuppressWarnings("PMD.ShortMethodName")
public Condition or(final boolean secondClause) {
return Condition.where(secondClause);
}
@Override
- public Condition then(final Runnable response) {
+ public Condition then(final Action response) {
return FALSE;
}
@Override
- public void otherwise(final Runnable response) {
- response.run();
+ public void otherwise(final Action response) {
+ response.perform();
}
}
diff --git a/src/main/java/net/kemitix/conditional/FalseValueClause.java b/src/main/java/net/kemitix/conditional/FalseValueClause.java
index e0143e0..672d285 100644
--- a/src/main/java/net/kemitix/conditional/FalseValueClause.java
+++ b/src/main/java/net/kemitix/conditional/FalseValueClause.java
@@ -45,6 +45,7 @@ class FalseValueClause implements Value.ValueClause {
}
@Override
+ @SuppressWarnings("PMD.ShortMethodName")
public Value.ValueClause or(final boolean clause) {
return Value.where(clause);
}
diff --git a/src/main/java/net/kemitix/conditional/TrueCondition.java b/src/main/java/net/kemitix/conditional/TrueCondition.java
index d2132d1..06f041b 100644
--- a/src/main/java/net/kemitix/conditional/TrueCondition.java
+++ b/src/main/java/net/kemitix/conditional/TrueCondition.java
@@ -28,7 +28,7 @@ package net.kemitix.conditional;
*/
final class TrueCondition implements Condition {
- protected static final Condition TRUE = new net.kemitix.conditional.TrueCondition();
+ public static final Condition TRUE = new net.kemitix.conditional.TrueCondition();
@Override
public Condition and(final boolean clause) {
@@ -36,18 +36,19 @@ final class TrueCondition implements Condition {
}
@Override
+ @SuppressWarnings("PMD.ShortMethodName")
public Condition or(final boolean secondClause) {
return TRUE;
}
@Override
- public Condition then(final Runnable response) {
- response.run();
+ public Condition then(final Action response) {
+ response.perform();
return TRUE;
}
@Override
- public void otherwise(final Runnable response) {
+ public void otherwise(final Action response) {
// do nothing
}
diff --git a/src/main/java/net/kemitix/conditional/TrueValueClause.java b/src/main/java/net/kemitix/conditional/TrueValueClause.java
index c98f2be..9d3fbcc 100644
--- a/src/main/java/net/kemitix/conditional/TrueValueClause.java
+++ b/src/main/java/net/kemitix/conditional/TrueValueClause.java
@@ -47,6 +47,7 @@ class TrueValueClause implements Value.ValueClause {
}
@Override
+ @SuppressWarnings("PMD.ShortMethodName")
public Value.ValueClause or(final boolean clause) {
return this;
}
@@ -57,7 +58,7 @@ class TrueValueClause implements Value.ValueClause {
@RequiredArgsConstructor
private class TrueValueSupplier implements ValueSupplier {
- private final Supplier valueSupplier;
+ private final transient Supplier valueSupplier;
@Override
public T otherwise(final Supplier falseSupplier) {
diff --git a/src/main/java/net/kemitix/conditional/Value.java b/src/main/java/net/kemitix/conditional/Value.java
index 6345564..9b1c3b6 100644
--- a/src/main/java/net/kemitix/conditional/Value.java
+++ b/src/main/java/net/kemitix/conditional/Value.java
@@ -41,6 +41,7 @@ public interface Value {
*
* @return the value from either the trueSupplier or the falseSupplier
*/
+ @SuppressWarnings("PMD.LawOfDemeter")
static T where(
boolean clause,
Supplier trueSupplier,
@@ -123,6 +124,7 @@ public interface Value {
*
* @return a true or false value clause
*/
+ @SuppressWarnings("PMD.ShortMethodName")
ValueClause or(boolean clause);
/**
diff --git a/src/test/java/net/kemitix/conditional/ConditionalTest.java b/src/test/java/net/kemitix/conditional/ConditionalTest.java
index 0093cd4..525c534 100644
--- a/src/test/java/net/kemitix/conditional/ConditionalTest.java
+++ b/src/test/java/net/kemitix/conditional/ConditionalTest.java
@@ -10,9 +10,9 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
public class ConditionalTest {
- private Runnable thenResponse;
+ private Action thenResponse;
- private Runnable otherwiseResponse;
+ private Action otherwiseResponse;
private boolean thenFlag;