asyncSwitcher;
-
/**
- * Use {@link SwitcherContext#getSwitcher(String)} to create this object.
- *
- * @param switcherKey name of the key created
- * @param context client context in which the switcher will be executed (local/remote)
+ * This method builds the Switcher object.
+ * Uses to isolate Switcher creation from the execution.
+ *
+ * For example:
+ *
+ * Switcher switcher = SwitcherContext
+ * .getSwitcher(MY_SWITCHER)
+ * .remote(true)
+ * .throttle(1000)
+ * .checkValue("value")
+ * .build();
+ *
+ *
+ * @return instance of SwitcherInterface
+ * @see SwitcherRequest
*/
- public Switcher(final String switcherKey, final SwitcherExecutor context) {
- super(context.getSwitcherProperties());
- this.context = context;
- this.switcherKey = switcherKey;
- this.historyExecution = new HashSet<>();
- this.entry = new ArrayList<>();
- }
-
- @Override
- public Switcher build() {
- return this;
- }
-
- @Override
- public Switcher prepareEntry(final List entry) {
- this.entry = Optional.ofNullable(entry).orElse(new ArrayList<>());
- return this;
- }
-
- @Override
- public Switcher prepareEntry(final Entry entry, final boolean add) {
- if (!add) {
- this.entry.clear();
- }
-
- if (!this.entry.contains(entry)) {
- this.entry.add(entry);
- }
-
- return this;
- }
-
- @Override
- public Switcher prepareEntry(final Entry entry) {
- return this.prepareEntry(entry, false);
- }
-
- @Override
- public boolean isItOn() throws SwitcherException {
- final SwitcherResult response = submit();
- return response.isItOn();
- }
-
- @Override
- public SwitcherResult submit() throws SwitcherException {
- if (SwitcherExecutor.getBypass().containsKey(switcherKey)) {
- return SwitcherExecutor.getBypass().get(switcherKey).buildFromSwitcher(switcherKey, entry);
- }
-
- if (canUseAsync()) {
- if (Objects.isNull(asyncSwitcher)) {
- asyncSwitcher = new AsyncSwitcher<>(this, super.delay);
- }
-
- asyncSwitcher.execute();
- final Optional response = getFromHistory();
- if (response.isPresent()) {
- return response.get();
- }
- }
-
- final SwitcherResult response = this.context.executeCriteria(this);
- this.updateHistoryExecution(response);
- return response;
- }
+ Switcher build();
- @Override
- public SwitcherResult executeCriteria() {
- return this.context.executeCriteria(this);
- }
+ /**
+ * Prepare the Switcher including a list of inputs necessary to run the criteria afterward.
+ *
+ * @param entry input object
+ * @return instance of SwitcherInterface
+ */
+ Switcher prepareEntry(final List entry);
- @Override
- public void updateHistoryExecution(final SwitcherResult response) {
- this.historyExecution.removeIf(item ->
- this.switcherKey.equals(item.getSwitcherKey()) && this.entry.equals(item.getEntry()));
+ /**
+ * Prepare the Switcher including a list of inputs necessary to run the criteria afterward.
+ *
+ * @param entry input object
+ * @param add if false, the list will be cleaned and the entry provided will be the only input for this Switcher.
+ * @return instance of SwitcherInterface
+ */
+ Switcher prepareEntry(final Entry entry, final boolean add);
- this.historyExecution.add(response);
- }
+ /**
+ * It adds an input to the list of inputs.
+ *
Under the table it calls {@link #prepareEntry(Entry, boolean)} passing true to the second argument.
+ *
+ * @param entry input object
+ * @return instance of SwitcherInterface
+ */
+ Switcher prepareEntry(final Entry entry);
- @Override
- public String getSwitcherKey() {
- return this.switcherKey;
- }
+ /**
+ * Execute criteria based on a given switcher key provided via {@link SwitcherContext#getSwitcher(String)}.
+ *
The detailed result is available in list of {@link SwitcherResult}.
+ *
+ * @return criteria result
+ * @throws SwitcherException connectivity or criteria errors regarding reading malformed snapshots
+ */
+ boolean isItOn() throws SwitcherException;
- @Override
- public List getEntry() {
- return this.entry;
- }
+ /**
+ * Execute criteria based on a given switcher key provided via {@link SwitcherContext#getSwitcher(String)}.
+ *
The detailed result is available in list of {@link SwitcherResult}.
+ *
+ * @return {@link SwitcherResult}
+ * @throws SwitcherException connectivity or criteria errors regarding reading malformed snapshots
+ */
+ SwitcherResult submit() throws SwitcherException;
- public boolean isBypassMetrics() {
- return bypassMetrics;
- }
-
- public void resetEntry() {
- this.entry = new ArrayList<>();
- }
+ /**
+ * Execute the criteria evaluation.
+ *
+ * @return the switcher result
+ */
+ SwitcherResult executeCriteria();
- private boolean canUseAsync() {
- return super.delay > 0 && !this.historyExecution.isEmpty();
- }
+ /**
+ * Update the history of executions.
+ *
+ * @param response the response to be updated
+ */
+ void updateHistoryExecution(SwitcherResult response);
- private Optional getFromHistory() {
- for (SwitcherResult switcherResult : historyExecution) {
- if (switcherResult.getEntry().equals(getEntry())) {
- return Optional.of(switcherResult);
- }
- }
- return Optional.empty();
- }
+ /**
+ * Get the key of the switcher.
+ *
+ * @return the key of the switcher
+ */
+ String getSwitcherKey();
- @Override
- public String toString() {
- return String.format("Switcher [switcherKey= %s, entry= %s, bypassMetrics= %s]",
- switcherKey, entry, bypassMetrics);
- }
+ /**
+ * Get the entry input list for the switcher.
+ *
+ * @return the entry of the switcher
+ */
+ List getEntry();
}
diff --git a/src/main/java/com/github/switcherapi/client/model/SwitcherBuilder.java b/src/main/java/com/github/switcherapi/client/model/SwitcherBuilder.java
index 5ac96c94..82aef0bc 100644
--- a/src/main/java/com/github/switcherapi/client/model/SwitcherBuilder.java
+++ b/src/main/java/com/github/switcherapi/client/model/SwitcherBuilder.java
@@ -13,7 +13,7 @@
*
* @author Roger Floriano (petruki)
*/
-public abstract class SwitcherBuilder implements SwitcherInterface {
+public abstract class SwitcherBuilder implements Switcher {
protected final SwitcherProperties properties;
diff --git a/src/main/java/com/github/switcherapi/client/model/SwitcherInterface.java b/src/main/java/com/github/switcherapi/client/model/SwitcherInterface.java
deleted file mode 100644
index b021c7b5..00000000
--- a/src/main/java/com/github/switcherapi/client/model/SwitcherInterface.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.github.switcherapi.client.model;
-
-import com.github.switcherapi.client.SwitcherContext;
-import com.github.switcherapi.client.exception.SwitcherException;
-
-import java.util.List;
-
-/**
- * Defines minimal contract for Switcher implementations for:
- *
- *
- * - Switcher creation
- * - Switcher execution
- * - Switcher get input/output
- *
- */
-public interface SwitcherInterface {
-
- /**
- * This method builds the Switcher object.
- * Uses to isolate Switcher creation from the execution.
- *
- * For example:
- *
- * Switcher switcher = SwitcherContext
- * .getSwitcher(MY_SWITCHER)
- * .remote(true)
- * .throttle(1000)
- * .checkValue("value")
- * .build();
- *
- *
- * @return instance of SwitcherInterface
- * @see Switcher
- */
- T build();
-
- /**
- * Prepare the Switcher including a list of inputs necessary to run the criteria afterward.
- *
- * @param entry input object
- * @return instance of SwitcherInterface
- */
- T prepareEntry(final List entry);
-
- /**
- * Prepare the Switcher including a list of inputs necessary to run the criteria afterward.
- *
- * @param entry input object
- * @param add if false, the list will be cleaned and the entry provided will be the only input for this Switcher.
- * @return instance of SwitcherInterface
- */
- T prepareEntry(final Entry entry, final boolean add);
-
- /**
- * It adds an input to the list of inputs.
- *
Under the table it calls {@link #prepareEntry(Entry, boolean)} passing true to the second argument.
- *
- * @param entry input object
- * @return instance of SwitcherInterface
- */
- T prepareEntry(final Entry entry);
-
- /**
- * Execute criteria based on a given switcher key provided via {@link SwitcherContext#getSwitcher(String)}.
- *
The detailed result is available in list of {@link SwitcherResult}.
- *
- * @return criteria result
- * @throws SwitcherException connectivity or criteria errors regarding reading malformed snapshots
- */
- boolean isItOn() throws SwitcherException;
-
- /**
- * Execute criteria based on a given switcher key provided via {@link SwitcherContext#getSwitcher(String)}.
- *
The detailed result is available in list of {@link SwitcherResult}.
- *
- * @return {@link SwitcherResult}
- * @throws SwitcherException connectivity or criteria errors regarding reading malformed snapshots
- */
- SwitcherResult submit() throws SwitcherException;
-
- /**
- * Execute the criteria evaluation.
- *
- * @return the switcher result
- */
- SwitcherResult executeCriteria();
-
- /**
- * Update the history of executions.
- *
- * @param response the response to be updated
- */
- void updateHistoryExecution(SwitcherResult response);
-
- /**
- * Get the key of the switcher.
- *
- * @return the key of the switcher
- */
- String getSwitcherKey();
-
- /**
- * Get the entry input list for the switcher.
- *
- * @return the entry of the switcher
- */
- List getEntry();
-
-}
diff --git a/src/main/java/com/github/switcherapi/client/model/SwitcherRequest.java b/src/main/java/com/github/switcherapi/client/model/SwitcherRequest.java
new file mode 100644
index 00000000..a9f8978d
--- /dev/null
+++ b/src/main/java/com/github/switcherapi/client/model/SwitcherRequest.java
@@ -0,0 +1,157 @@
+package com.github.switcherapi.client.model;
+
+import com.github.switcherapi.client.SwitcherContext;
+import com.github.switcherapi.client.SwitcherExecutor;
+import com.github.switcherapi.client.exception.SwitcherException;
+
+import java.util.*;
+
+/**
+ * SwitcherRequest are the entry point to evaluate criteria and return the result.
+ *
To execute a criteria evaluation, use one of the available methods: {@link #isItOn()}.
+ *
+ * @author Roger Floriano (petruki)
+ * @since 2019-12-24
+ *
+ * @see #isItOn()
+ * @see #submit()
+ */
+public final class SwitcherRequest extends SwitcherBuilder {
+
+ public static final String KEY = "key";
+
+ public static final String SHOW_REASON = "showReason";
+
+ public static final String BYPASS_METRIC = "bypassMetric";
+
+ private final SwitcherExecutor switcherExecutor;
+
+ private final String switcherKey;
+
+ private final Set historyExecution;
+
+ private AsyncSwitcher asyncSwitcher;
+
+ /**
+ * Use {@link SwitcherContext#getSwitcher(String)} to create this object.
+ *
+ * @param switcherKey name of the key created
+ * @param switcherExecutor client context in which the switcher will be executed (local/remote)
+ */
+ public SwitcherRequest(final String switcherKey, final SwitcherExecutor switcherExecutor) {
+ super(switcherExecutor.getSwitcherProperties());
+ this.switcherExecutor = switcherExecutor;
+ this.switcherKey = switcherKey;
+ this.historyExecution = new HashSet<>();
+ this.entry = new ArrayList<>();
+ }
+
+ @Override
+ public SwitcherRequest build() {
+ return this;
+ }
+
+ @Override
+ public SwitcherRequest prepareEntry(final List entry) {
+ this.entry = Optional.ofNullable(entry).orElse(new ArrayList<>());
+ return this;
+ }
+
+ @Override
+ public SwitcherRequest prepareEntry(final Entry entry, final boolean add) {
+ if (!add) {
+ this.entry.clear();
+ }
+
+ if (!this.entry.contains(entry)) {
+ this.entry.add(entry);
+ }
+
+ return this;
+ }
+
+ @Override
+ public SwitcherRequest prepareEntry(final Entry entry) {
+ return this.prepareEntry(entry, false);
+ }
+
+ @Override
+ public boolean isItOn() throws SwitcherException {
+ final SwitcherResult response = submit();
+ return response.isItOn();
+ }
+
+ @Override
+ public SwitcherResult submit() throws SwitcherException {
+ if (SwitcherExecutor.getBypass().containsKey(switcherKey)) {
+ return SwitcherExecutor.getBypass().get(switcherKey).buildFromSwitcher(switcherKey, entry);
+ }
+
+ if (canUseAsync()) {
+ if (Objects.isNull(asyncSwitcher)) {
+ asyncSwitcher = new AsyncSwitcher(this, super.delay);
+ }
+
+ asyncSwitcher.execute();
+ final Optional response = getFromHistory();
+ if (response.isPresent()) {
+ return response.get();
+ }
+ }
+
+ final SwitcherResult response = this.switcherExecutor.executeCriteria(this);
+ this.updateHistoryExecution(response);
+ return response;
+ }
+
+ @Override
+ public SwitcherResult executeCriteria() {
+ return this.switcherExecutor.executeCriteria(this);
+ }
+
+ @Override
+ public void updateHistoryExecution(final SwitcherResult response) {
+ this.historyExecution.removeIf(item ->
+ this.switcherKey.equals(item.getSwitcherKey()) && this.entry.equals(item.getEntry()));
+
+ this.historyExecution.add(response);
+ }
+
+ @Override
+ public String getSwitcherKey() {
+ return this.switcherKey;
+ }
+
+ @Override
+ public List getEntry() {
+ return this.entry;
+ }
+
+ public boolean isBypassMetrics() {
+ return bypassMetrics;
+ }
+
+ public void resetEntry() {
+ this.entry = new ArrayList<>();
+ }
+
+ private boolean canUseAsync() {
+ return super.delay > 0 && !this.historyExecution.isEmpty();
+ }
+
+ private Optional getFromHistory() {
+ for (SwitcherResult switcherResult : historyExecution) {
+ if (switcherResult.getEntry().equals(getEntry())) {
+ return Optional.of(switcherResult);
+ }
+ }
+ return Optional.empty();
+ }
+
+ @Override
+ public String toString() {
+ return String.format("SwitcherRequest [switcherKey= %s, entry= %s, bypassMetrics= %s]",
+ switcherKey, entry, bypassMetrics);
+ }
+
+}
diff --git a/src/main/java/com/github/switcherapi/client/remote/ClientWSImpl.java b/src/main/java/com/github/switcherapi/client/remote/ClientWSImpl.java
index 85fc1aa4..f56d8ce7 100644
--- a/src/main/java/com/github/switcherapi/client/remote/ClientWSImpl.java
+++ b/src/main/java/com/github/switcherapi/client/remote/ClientWSImpl.java
@@ -3,7 +3,7 @@
import com.github.switcherapi.client.SwitcherProperties;
import com.github.switcherapi.client.exception.SwitcherRemoteException;
import com.github.switcherapi.client.model.ContextKey;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.client.model.criteria.Snapshot;
import com.github.switcherapi.client.remote.dto.SwitchersCheck;
import com.github.switcherapi.client.remote.dto.*;
@@ -48,9 +48,9 @@ public static ClientWS build(SwitcherProperties switcherProperties, ExecutorServ
public CriteriaResponse executeCriteria(final CriteriaRequest criteriaRequest, final String token) {
final String url = switcherProperties.getValue(ContextKey.URL);
final WebTarget myResource = client.target(String.format(CRITERIA_URL, url))
- .queryParam(Switcher.KEY, criteriaRequest.getSwitcherKey())
- .queryParam(Switcher.SHOW_REASON, Boolean.TRUE)
- .queryParam(Switcher.BYPASS_METRIC, criteriaRequest.isBypassMetric());
+ .queryParam(SwitcherRequest.KEY, criteriaRequest.getSwitcherKey())
+ .queryParam(SwitcherRequest.SHOW_REASON, Boolean.TRUE)
+ .queryParam(SwitcherRequest.BYPASS_METRIC, criteriaRequest.isBypassMetric());
try {
final Response response = myResource.request(MediaType.APPLICATION_JSON)
diff --git a/src/main/java/com/github/switcherapi/client/service/SwitcherFactory.java b/src/main/java/com/github/switcherapi/client/service/SwitcherFactory.java
index 253cbef1..35aef579 100644
--- a/src/main/java/com/github/switcherapi/client/service/SwitcherFactory.java
+++ b/src/main/java/com/github/switcherapi/client/service/SwitcherFactory.java
@@ -1,6 +1,6 @@
package com.github.switcherapi.client.service;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.client.model.SwitcherResult;
import static com.github.switcherapi.client.model.SwitcherResult.DEFAULT_REASON;
@@ -10,18 +10,18 @@ public class SwitcherFactory {
private SwitcherFactory() {}
- public static SwitcherResult buildFromDefault(Switcher switcher) {
+ public static SwitcherResult buildFromDefault(SwitcherRequest switcher) {
return new SwitcherResult(
switcher.getSwitcherKey(),
Boolean.parseBoolean(switcher.getDefaultResult()),
DEFAULT_REASON, switcher.getEntry());
}
- public static SwitcherResult buildResultFail(String reason, Switcher switcher) {
+ public static SwitcherResult buildResultFail(String reason, SwitcherRequest switcher) {
return new SwitcherResult(switcher.getSwitcherKey(), Boolean.FALSE, reason, switcher.getEntry());
}
- public static SwitcherResult buildResultSuccess(Switcher switcher) {
+ public static SwitcherResult buildResultSuccess(SwitcherRequest switcher) {
return new SwitcherResult(switcher.getSwitcherKey(), Boolean.TRUE, DEFAULT_SUCCESS, switcher.getEntry());
}
diff --git a/src/main/java/com/github/switcherapi/client/service/local/ClientLocal.java b/src/main/java/com/github/switcherapi/client/service/local/ClientLocal.java
index 44e76c57..3c43eb44 100644
--- a/src/main/java/com/github/switcherapi/client/service/local/ClientLocal.java
+++ b/src/main/java/com/github/switcherapi/client/service/local/ClientLocal.java
@@ -1,7 +1,7 @@
package com.github.switcherapi.client.service.local;
import com.github.switcherapi.client.exception.SwitcherException;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.client.model.criteria.Domain;
import com.github.switcherapi.client.model.SwitcherResult;
@@ -34,6 +34,6 @@ public interface ClientLocal {
* @return The criteria result
* @throws SwitcherException If encountered either invalid input or misconfiguration
*/
- SwitcherResult executeCriteria(final Switcher switcher, final Domain domain);
+ SwitcherResult executeCriteria(final SwitcherRequest switcher, final Domain domain);
}
diff --git a/src/main/java/com/github/switcherapi/client/service/local/ClientLocalService.java b/src/main/java/com/github/switcherapi/client/service/local/ClientLocalService.java
index f11c987d..dd2dae25 100644
--- a/src/main/java/com/github/switcherapi/client/service/local/ClientLocalService.java
+++ b/src/main/java/com/github/switcherapi/client/service/local/ClientLocalService.java
@@ -3,7 +3,7 @@
import com.github.switcherapi.client.exception.SwitcherException;
import com.github.switcherapi.client.exception.SwitcherKeyNotFoundException;
import com.github.switcherapi.client.model.Entry;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.client.model.criteria.Config;
import com.github.switcherapi.client.model.criteria.Domain;
import com.github.switcherapi.client.model.criteria.Group;
@@ -62,7 +62,7 @@ public List checkSwitchers(final Set switchers, final Domain dom
}
@Override
- public SwitcherResult executeCriteria(final Switcher switcher, final Domain domain) {
+ public SwitcherResult executeCriteria(final SwitcherRequest switcher, final Domain domain) {
if (!domain.isActivated()) {
return SwitcherFactory.buildResultFail(DISABLED_DOMAIN, switcher);
}
@@ -79,7 +79,7 @@ public SwitcherResult executeCriteria(final Switcher switcher, final Domain doma
throw new SwitcherKeyNotFoundException(switcher.getSwitcherKey());
}
- private SwitcherResult getSwitcherResult(Switcher switcher, Group group, Config config) {
+ private SwitcherResult getSwitcherResult(SwitcherRequest switcher, Group group, Config config) {
if (!group.isActivated()) {
return SwitcherFactory.buildResultFail(DISABLED_GROUP, switcher);
}
@@ -111,7 +111,7 @@ private Config findConfigInGroup(final Group group, final String switcherKey) {
* @throws SwitcherException If encountered either invalid input or misconfiguration
*/
private SwitcherResult processOperation(final Strategy[] configStrategies, final List input,
- final Switcher switcher) {
+ final SwitcherRequest switcher) {
SwitcherUtils.debug(logger, LOG_PROCESS_OP_TEMPLATE, Arrays.toString(configStrategies));
for (final Strategy strategy : configStrategies) {
@@ -133,7 +133,7 @@ private SwitcherResult processOperation(final Strategy[] configStrategies, final
return SwitcherFactory.buildResultSuccess(switcher);
}
- private SwitcherResult strategyFailed(Switcher switcher, Strategy strategy, String pattern) {
+ private SwitcherResult strategyFailed(SwitcherRequest switcher, Strategy strategy, String pattern) {
return SwitcherFactory.buildResultFail(String.format(pattern, strategy.getStrategy()), switcher);
}
diff --git a/src/main/java/com/github/switcherapi/client/service/local/SwitcherLocalService.java b/src/main/java/com/github/switcherapi/client/service/local/SwitcherLocalService.java
index 67627d7e..8a4207a9 100644
--- a/src/main/java/com/github/switcherapi/client/service/local/SwitcherLocalService.java
+++ b/src/main/java/com/github/switcherapi/client/service/local/SwitcherLocalService.java
@@ -7,7 +7,7 @@
import com.github.switcherapi.client.exception.SwitcherSnapshotLoadException;
import com.github.switcherapi.client.exception.SwitchersValidationException;
import com.github.switcherapi.client.model.ContextKey;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.client.model.SwitcherResult;
import com.github.switcherapi.client.service.SwitcherFactory;
import com.github.switcherapi.client.service.remote.ClientRemote;
@@ -104,7 +104,7 @@ public boolean notifyChange(final String snapshotFile) {
}
@Override
- public SwitcherResult executeCriteria(final Switcher switcher) {
+ public SwitcherResult executeCriteria(final SwitcherRequest switcher) {
SwitcherUtils.debug(logger, "[Local] request: {}", switcher);
SwitcherResult response;
diff --git a/src/main/java/com/github/switcherapi/client/service/remote/SwitcherRemoteService.java b/src/main/java/com/github/switcherapi/client/service/remote/SwitcherRemoteService.java
index e76f8ee6..d3b5c782 100644
--- a/src/main/java/com/github/switcherapi/client/service/remote/SwitcherRemoteService.java
+++ b/src/main/java/com/github/switcherapi/client/service/remote/SwitcherRemoteService.java
@@ -4,7 +4,7 @@
import com.github.switcherapi.client.exception.SwitcherRemoteException;
import com.github.switcherapi.client.exception.SwitchersValidationException;
import com.github.switcherapi.client.model.ContextKey;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.client.model.SwitcherResult;
import com.github.switcherapi.client.remote.dto.CriteriaResponse;
import com.github.switcherapi.client.remote.dto.SwitchersCheck;
@@ -37,7 +37,7 @@ public SwitcherRemoteService(ClientRemote clientRemote, SwitcherExecutor switche
}
@Override
- public SwitcherResult executeCriteria(final Switcher switcher) {
+ public SwitcherResult executeCriteria(final SwitcherRequest switcher) {
SwitcherUtils.debug(logger, "[Remote] request: {}", switcher);
try {
@@ -51,7 +51,7 @@ public SwitcherResult executeCriteria(final Switcher switcher) {
}
}
- private SwitcherResult tryExecuteLocalCriteria(final Switcher switcher,
+ private SwitcherResult tryExecuteLocalCriteria(final SwitcherRequest switcher,
final SwitcherRemoteException e) {
if (StringUtils.isNotBlank(switcherProperties.getValue(ContextKey.SILENT_MODE))) {
final SwitcherResult response = this.switcherLocal.executeCriteria(switcher);
diff --git a/src/main/java/com/github/switcherapi/client/utils/Mapper.java b/src/main/java/com/github/switcherapi/client/utils/Mapper.java
index 00d9b134..2c5b6706 100644
--- a/src/main/java/com/github/switcherapi/client/utils/Mapper.java
+++ b/src/main/java/com/github/switcherapi/client/utils/Mapper.java
@@ -1,6 +1,6 @@
package com.github.switcherapi.client.utils;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.client.model.SwitcherResult;
import com.github.switcherapi.client.remote.dto.CriteriaRequest;
import com.github.switcherapi.client.remote.dto.CriteriaResponse;
@@ -9,7 +9,7 @@ public class Mapper {
private Mapper() {}
- public static CriteriaRequest mapFrom(final Switcher switcher) {
+ public static CriteriaRequest mapFrom(final SwitcherRequest switcher) {
CriteriaRequest request = new CriteriaRequest();
request.setSwitcherKey(switcher.getSwitcherKey());
request.setEntry(switcher.getEntry());
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherBasicCriteriaResponseTest.java b/src/test/java/com/github/switcherapi/client/SwitcherBasicCriteriaResponseTest.java
index 5cb25d7b..353af422 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherBasicCriteriaResponseTest.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherBasicCriteriaResponseTest.java
@@ -1,7 +1,7 @@
package com.github.switcherapi.client;
import com.github.switcherapi.Switchers;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.client.model.SwitcherResult;
import com.github.switcherapi.fixture.MetadataErrorSample;
import com.github.switcherapi.fixture.MetadataSample;
@@ -58,7 +58,7 @@ void shouldReturnCriteriaResponse() {
givenResponse(generateCriteriaResponse("true", "Success"));
//test
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
SwitcherResult response = switcher.submit();
assertTrue(response.isItOn());
@@ -74,7 +74,7 @@ void shouldReturnCriteriaResponseWithInputs() {
givenResponse(generateCriteriaResponse("false", "Strategy VALUE_VALIDATION does not agree"));
//test
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
SwitcherResult response = switcher
.checkValue("value")
.checkNumeric("10")
@@ -93,7 +93,7 @@ void shouldReturnCriteriaResponseWithMetadata() {
givenResponse(generateCriteriaResponse(new MetadataSample("123")));
//test
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
SwitcherResult response = switcher.submit();
assertEquals("123", response.getMetadata(MetadataSample.class).getTransactionId());
@@ -108,7 +108,7 @@ void shouldReturnCriteriaResponseWithWrongMetadata() {
givenResponse(generateCriteriaResponse(new MetadataErrorSample("123")));
//test
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
SwitcherResult response = switcher.submit();
assertNotNull(response.getMetadata(MetadataSample.class));
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherBasicTest.java b/src/test/java/com/github/switcherapi/client/SwitcherBasicTest.java
index 4848dc3f..7c3dd131 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherBasicTest.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherBasicTest.java
@@ -1,7 +1,7 @@
package com.github.switcherapi.client;
import com.github.switcherapi.Switchers;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.fixture.MockWebServerHelper;
import mockwebserver3.QueueDispatcher;
import org.junit.jupiter.api.AfterAll;
@@ -56,7 +56,7 @@ void shouldReturnTrue() {
givenResponse(generateCriteriaResponse("true", false));
//test
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
assertTrue(switcher.isItOn());
}
@@ -69,7 +69,7 @@ void shouldReturnFalse() {
givenResponse(generateCriteriaResponse("false", false));
//test
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
assertFalse(switcher.isItOn());
}
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherBypassTest.java b/src/test/java/com/github/switcherapi/client/SwitcherBypassTest.java
index fcec35a7..d23677b0 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherBypassTest.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherBypassTest.java
@@ -1,6 +1,7 @@
package com.github.switcherapi.client;
import com.github.switcherapi.client.model.StrategyValidator;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.client.model.Switcher;
import com.github.switcherapi.client.model.SwitcherResult;
import com.github.switcherapi.client.test.SwitcherTest;
@@ -43,7 +44,7 @@ void shouldReturnFalse_afterAssumingItsFalse() {
SwitcherContext.initializeClient();
//test
- Switcher switcher = getSwitcher(USECASE11);
+ SwitcherRequest switcher = getSwitcher(USECASE11);
assertTrue(switcher.isItOn());
SwitcherExecutor.assume(USECASE11, false);
@@ -56,7 +57,7 @@ void shouldReturnTrue_afterAssumingItsTrue() {
SwitcherContext.configure(ContextBuilder.builder().snapshotLocation(SNAPSHOTS_LOCAL).environment(FIXTURE2));
SwitcherContext.initializeClient();
- Switcher switcher = getSwitcher(USECASE111);
+ SwitcherRequest switcher = getSwitcher(USECASE111);
assertFalse(switcher.isItOn());
SwitcherExecutor.assume(USECASE111, true);
@@ -70,7 +71,7 @@ void shouldReturnTrue_afterForgettingItWasFalse() {
SwitcherContext.initializeClient();
//test
- Switcher switcher = getSwitcher(USECASE11);
+ SwitcherRequest switcher = getSwitcher(USECASE11);
assertTrue(switcher.isItOn());
SwitcherExecutor.assume(USECASE11, false);
@@ -87,7 +88,7 @@ void shouldReturnFalse_afterAssumingItsTrue() {
SwitcherContext.initializeClient();
//test
- Switcher switcher = getSwitcher(USECASE111);
+ SwitcherRequest switcher = getSwitcher(USECASE111);
assertFalse(switcher.isItOn());
SwitcherExecutor.assume(USECASE111, true);
@@ -104,7 +105,7 @@ void shouldReturnFalse_usingAnnotationAsFalse() {
SwitcherContext.initializeClient();
//test
- Switcher switcher = getSwitcher(USECASE111);
+ SwitcherRequest switcher = getSwitcher(USECASE111);
assertFalse(switcher.isItOn());
}
@@ -172,7 +173,7 @@ void shouldReturnTrue_usingAnnotationAsTrue() {
SwitcherContext.initializeClient();
//test
- Switcher switcher = getSwitcher(USECASE111);
+ SwitcherRequest switcher = getSwitcher(USECASE111);
assertTrue(switcher.isItOn());
}
@@ -183,7 +184,7 @@ void shouldReturnSwitcherBypassedAsReason() {
SwitcherContext.initializeClient();
//test
- Switcher switcher = getSwitcher(USECASE111);
+ SwitcherRequest switcher = getSwitcher(USECASE111);
SwitcherResult switcherResult = switcher.submit();
assertTrue(switcherResult.isItOn());
assertEquals("Switcher bypassed", switcherResult.getReason());
@@ -199,7 +200,7 @@ void shouldReturnTrue_usingMultipleSwitchersAnnotation() {
SwitcherContext.initializeClient();
//test
- Switcher switcher = getSwitcher(USECASE111);
+ SwitcherRequest switcher = getSwitcher(USECASE111);
assertTrue(switcher.isItOn());
switcher = getSwitcher(USECASE112);
@@ -218,7 +219,7 @@ void shouldReturnWithMetadata() {
SwitcherContext.initializeClient();
//test
- Switcher switcher = getSwitcher(USECASE111);
+ SwitcherRequest switcher = getSwitcher(USECASE111);
SwitcherResult switcherResult = switcher.submit();
assertEquals("123", switcherResult.getMetadata(MetadataSample.class).getTransactionId());
}
@@ -233,7 +234,7 @@ void shouldReturnWithMetadata_usingMultipleSwitchersAnnotation() {
SwitcherContext.initializeClient();
//test
- Switcher switcher = getSwitcher(USECASE111);
+ SwitcherRequest switcher = getSwitcher(USECASE111);
SwitcherResult switcherResult = switcher.submit();
assertEquals("123", switcherResult.getMetadata(MetadataSample.class).getTransactionId());
@@ -279,7 +280,7 @@ void shouldReturnFalse_afterAssumingItsTrueWhenValueNotMatches() {
* It is used to AB Test behavior when the same result is expected.
*/
private String workBothWay() {
- Switcher switcher = getSwitcher(USECASE111);
+ SwitcherRequest switcher = getSwitcher(USECASE111);
// Using String.format
if (switcher.isItOn()) {
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherContextBuilderTest.java b/src/test/java/com/github/switcherapi/client/SwitcherContextBuilderTest.java
index 95aba567..259e191b 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherContextBuilderTest.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherContextBuilderTest.java
@@ -3,7 +3,7 @@
import com.github.switcherapi.SwitchersBase;
import com.github.switcherapi.client.exception.SwitcherContextException;
import com.github.switcherapi.client.model.ContextKey;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.Test;
@@ -33,7 +33,7 @@ void shouldReturnSuccess() {
initializeClient();
//test
- Switcher switcher = getSwitcher(USECASE11);
+ SwitcherRequest switcher = getSwitcher(USECASE11);
assertTrue(switcher.isItOn());
}
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherContextRemoteExecutorTest.java b/src/test/java/com/github/switcherapi/client/SwitcherContextRemoteExecutorTest.java
index 483a0fa6..2482492f 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherContextRemoteExecutorTest.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherContextRemoteExecutorTest.java
@@ -3,7 +3,7 @@
import com.github.switcherapi.Switchers;
import com.github.switcherapi.SwitchersBase;
import com.github.switcherapi.client.exception.SwitcherRemoteException;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.fixture.MockWebServerHelper;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
@@ -47,7 +47,7 @@ void shouldConfigureRemotePoolSize() {
SwitchersBase.initializeClient();
//test
- Switcher switcher = SwitchersBase.getSwitcher(Switchers.USECASE11);
+ SwitcherRequest switcher = SwitchersBase.getSwitcher(Switchers.USECASE11);
assertTrue(switcher.isItOn());
}
@@ -73,7 +73,7 @@ void shouldConfigureRemoteTimeout() {
SwitchersBase.initializeClient();
//test
- Switcher switcher = SwitchersBase.getSwitcher(Switchers.USECASE11);
+ SwitcherRequest switcher = SwitchersBase.getSwitcher(Switchers.USECASE11);
Exception ex = assertThrows(SwitcherRemoteException.class, switcher::isItOn);
assertEquals("java.net.SocketTimeoutException: Read timed out", ex.getCause().getMessage());
}
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherFail1Test.java b/src/test/java/com/github/switcherapi/client/SwitcherFail1Test.java
index 841ba38f..4deabe53 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherFail1Test.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherFail1Test.java
@@ -3,7 +3,7 @@
import com.github.switcherapi.Switchers;
import com.github.switcherapi.client.exception.SwitcherException;
import com.github.switcherapi.client.exception.SwitcherRemoteException;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.fixture.CountDownHelper;
import com.github.switcherapi.fixture.MockWebServerHelper;
import mockwebserver3.QueueDispatcher;
@@ -59,7 +59,7 @@ void shouldReturnError_keyNotFound() {
//criteria
givenResponse(generateStatusResponse("404"));
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
assertThrows(SwitcherRemoteException.class, switcher::isItOn);
}
@@ -71,7 +71,7 @@ void shouldReturnSuccessDefaultResult_keyNotFound() {
//criteria
givenResponse(generateStatusResponse("404"));
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
assertTrue(switcher.defaultResult(true).isItOn());
assertFalse(switcher.defaultResult(false).isItOn());
}
@@ -81,7 +81,7 @@ void shouldReturnError_unauthorizedAPIAccess() {
//auth
givenResponse(generateStatusResponse("401"));
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
assertThrows(SwitcherException.class, switcher::isItOn);
}
@@ -93,7 +93,7 @@ void shouldReturnTrue_tokenExpired() {
//criteria
givenResponse(generateCriteriaResponse("true", false));
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
//test
assertTrue(switcher.isItOn());
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherFail2Test.java b/src/test/java/com/github/switcherapi/client/SwitcherFail2Test.java
index 6d3478af..d9cce345 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherFail2Test.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherFail2Test.java
@@ -3,7 +3,7 @@
import com.github.switcherapi.Switchers;
import com.github.switcherapi.client.exception.SwitcherContextException;
import com.github.switcherapi.client.exception.SwitcherRemoteException;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.fixture.MockWebServerHelper;
import mockwebserver3.QueueDispatcher;
import org.junit.jupiter.api.AfterAll;
@@ -56,13 +56,13 @@ void shouldReturnError_componentNotRegistered() {
//criteria
givenResponse(generateStatusResponse("401"));
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
assertThrows(SwitcherRemoteException.class, switcher::isItOn);
}
@Test
void shouldReturnError_switcherCannotRunLocally() {
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
Exception ex = assertThrows(SwitcherContextException.class, () -> switcher.remote(false));
assertEquals("Something went wrong: Context has errors - Switcher is not configured to run locally", ex.getMessage());
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherForceResolveTest.java b/src/test/java/com/github/switcherapi/client/SwitcherForceResolveTest.java
index d00ba909..5f2d45c0 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherForceResolveTest.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherForceResolveTest.java
@@ -1,7 +1,7 @@
package com.github.switcherapi.client;
import com.github.switcherapi.Switchers;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.fixture.MockWebServerHelper;
import mockwebserver3.QueueDispatcher;
import org.apache.commons.lang3.StringUtils;
@@ -47,7 +47,7 @@ void restoreStubs() {
@Test
void shouldResolveLocally() {
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE11);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE11);
assertTrue(switcher.remote(false).isItOn());
}
@@ -60,7 +60,7 @@ void shouldForceResolveRemotely() {
givenResponse(generateCriteriaResponse("false", false));
//test
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE11);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE11);
assertFalse(switcher.remote(true).isItOn());
}
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherLocal1Test.java b/src/test/java/com/github/switcherapi/client/SwitcherLocal1Test.java
index 03cc6f92..1c57691c 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherLocal1Test.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherLocal1Test.java
@@ -7,7 +7,7 @@
import com.github.switcherapi.client.model.ContextKey;
import com.github.switcherapi.client.model.Entry;
import com.github.switcherapi.client.model.StrategyValidator;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.fixture.Product;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringUtils;
@@ -49,37 +49,37 @@ void localShouldValidateContext() {
@Test
void localShouldReturnTrue() {
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE11, true);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE11, true);
assertTrue(switcher.isItOn());
}
@Test
void localShouldReturnFalse() {
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE12);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE12);
assertFalse(switcher.isItOn());
}
@Test
void localShouldReturnFalse_groupDisabled() {
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE21);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE21);
assertFalse(switcher.isItOn());
}
@Test
void localShouldReturnTrue_strategyDisabled() {
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE71);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE71);
assertTrue(switcher.isItOn());
}
@Test
void localShouldNotReturn_keyNotFound() {
- Switcher switcher = Switchers.getSwitcher(Switchers.NOT_FOUND_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.NOT_FOUND_KEY);
assertThrows(SwitcherKeyNotFoundException.class, switcher::isItOn);
}
@Test
void localShouldReturnFalse_nullEntryForStrategy() {
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE31);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE31);
List entry = null;
assertFalse(switcher
@@ -104,7 +104,7 @@ static Stream dateTestArguments() {
@ParameterizedTest()
@MethodSource("dateTestArguments")
void localShouldTest_dateValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
Entry entry = Entry.build(StrategyValidator.DATE, input);
assertEquals(expected, switcher.prepareEntry(entry).isItOn());
@@ -113,14 +113,13 @@ void localShouldTest_dateValidation(String useCaseKey, String input, boolean exp
@ParameterizedTest()
@MethodSource("dateTestArguments")
void localShouldTestChained_dateValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
- switcher.checkDate(input);
- assertEquals(expected, switcher.isItOn());
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
+ assertEquals(expected, switcher.checkDate(input).isItOn());
}
@Test
void localShouldReturnFalse_dateValidationWrongFormat() {
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE33);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE33);
Entry input = Entry.build(StrategyValidator.DATE, "2019/121/13");
switcher.prepareEntry(input);
@@ -147,7 +146,7 @@ static Stream valueTestArguments() {
@ParameterizedTest()
@MethodSource("valueTestArguments")
void localShouldTest_valueValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
Entry entry = Entry.build(StrategyValidator.VALUE, input);
switcher.prepareEntry(entry);
@@ -157,7 +156,7 @@ void localShouldTest_valueValidation(String useCaseKey, String input, boolean ex
@ParameterizedTest()
@MethodSource("valueTestArguments")
void localShouldTestChained_valueValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
switcher.checkValue(input);
assertEquals(expected, switcher.isItOn());
}
@@ -188,7 +187,7 @@ static Stream numericTestArguments() {
@ParameterizedTest()
@MethodSource("numericTestArguments")
void localShouldTest_numericValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
Entry entry = Entry.build(StrategyValidator.NUMERIC, input);
switcher.prepareEntry(entry);
@@ -198,14 +197,14 @@ void localShouldTest_numericValidation(String useCaseKey, String input, boolean
@ParameterizedTest()
@MethodSource("numericTestArguments")
void localShouldTestChained_numericValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
switcher.checkNumeric(input);
assertEquals(expected, switcher.isItOn());
}
@Test
void localShouldReturnException_invalidNumericInput() {
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE81);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE81);
Entry input = Entry.build(StrategyValidator.NUMERIC, "INVALID_NUMBER");
switcher.prepareEntry(input);
@@ -229,7 +228,7 @@ static Stream timeTestArguments() {
@ParameterizedTest()
@MethodSource("timeTestArguments")
void localShouldTest_timeValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
Entry entry = Entry.build(StrategyValidator.TIME, input);
switcher.prepareEntry(entry);
@@ -239,14 +238,13 @@ void localShouldTest_timeValidation(String useCaseKey, String input, boolean exp
@ParameterizedTest()
@MethodSource("timeTestArguments")
void localShouldTestChained_timeValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
- switcher.checkTime(input);
- assertEquals(expected, switcher.isItOn());
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
+ assertEquals(expected, switcher.checkTime(input).isItOn());
}
@Test
void localShouldReturnFalse_timeValidationWrongFormat() {
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE53);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE53);
Entry input = Entry.build(StrategyValidator.TIME, "2019-12-10");
switcher.prepareEntry(input);
@@ -270,7 +268,7 @@ static Stream networkTestArguments() {
@ParameterizedTest()
@MethodSource("networkTestArguments")
void localShouldTest_networkValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
Entry entry = Entry.build(StrategyValidator.NETWORK, input);
switcher.prepareEntry(entry);
@@ -280,20 +278,19 @@ void localShouldTest_networkValidation(String useCaseKey, String input, boolean
@ParameterizedTest()
@MethodSource("networkTestArguments")
void localShouldTestChained_networkValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
- switcher.checkNetwork(input);
- assertEquals(expected, switcher.isItOn());
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
+ assertEquals(expected, switcher.checkNetwork(input).isItOn());
}
@Test
void localShouldReturnFalse_strategyRequiresInput() {
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE63);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE63);
assertFalse(switcher.isItOn());
}
@Test
void localShouldReturnFalse_invalidStrategyInput() {
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE33);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE33);
switcher.prepareEntry(Entry.build(StrategyValidator.INVALID, "Value"));
assertFalse(switcher.isItOn());
}
@@ -320,7 +317,7 @@ static Stream regexTestArguments() {
@ParameterizedTest()
@MethodSource("regexTestArguments")
void localShouldTest_regexValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
Entry entry = Entry.build(StrategyValidator.REGEX, input);
switcher.prepareEntry(entry);
@@ -330,9 +327,8 @@ void localShouldTest_regexValidation(String useCaseKey, String input, boolean ex
@ParameterizedTest()
@MethodSource("regexTestArguments")
void localShouldTestChained_regexValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
- switcher.checkRegex(input);
- assertEquals(expected, switcher.isItOn());
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
+ assertEquals(expected, switcher.checkRegex(input).isItOn());
}
static Stream payloadTestArguments() {
@@ -350,7 +346,7 @@ static Stream payloadTestArguments() {
@ParameterizedTest()
@MethodSource("payloadTestArguments")
void localShouldTest_payloadValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
Entry entry = Entry.build(StrategyValidator.PAYLOAD, input);
switcher.prepareEntry(entry);
@@ -360,9 +356,8 @@ void localShouldTest_payloadValidation(String useCaseKey, String input, boolean
@ParameterizedTest()
@MethodSource("payloadTestArguments")
void localShouldTestChained_payloadValidation(String useCaseKey, String input, boolean expected) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
- switcher.checkPayload(input);
- assertEquals(expected, switcher.isItOn());
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
+ assertEquals(expected, switcher.checkPayload(input).isItOn());
}
}
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherLocal2Test.java b/src/test/java/com/github/switcherapi/client/SwitcherLocal2Test.java
index 95ad26e4..8a8b0305 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherLocal2Test.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherLocal2Test.java
@@ -9,7 +9,7 @@
import org.junit.jupiter.api.Test;
import com.github.switcherapi.Switchers;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
class SwitcherLocal2Test {
@@ -28,7 +28,7 @@ static void setupContext() {
@Test
void localShouldReturnFalse_domainDisabled() {
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE111);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE111);
assertFalse(switcher.isItOn());
}
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherLocal3Test.java b/src/test/java/com/github/switcherapi/client/SwitcherLocal3Test.java
index 780e1fcd..45bbfa48 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherLocal3Test.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherLocal3Test.java
@@ -29,7 +29,7 @@
import com.github.switcherapi.client.exception.SwitchersValidationException;
import com.github.switcherapi.client.model.Entry;
import com.github.switcherapi.client.model.StrategyValidator;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.client.service.local.SwitcherLocalService;
import static com.github.switcherapi.client.remote.Constants.DEFAULT_TIMEOUT;
@@ -78,7 +78,7 @@ static Stream failTestArguments() {
@MethodSource("failTestArguments")
void localShouldReturnError(String useCaseKey, String strategyValidator,
String input, Class error) {
- Switcher switcher = Switchers.getSwitcher(useCaseKey);
+ SwitcherRequest switcher = Switchers.getSwitcher(useCaseKey);
switcher.prepareEntry(Entry.build(strategyValidator, input));
assertThrows(error, switcher::isItOn);
@@ -129,7 +129,7 @@ void localShouldCheckSwitchers_notFound() {
@Test
void localShouldReturnTrue_defaultResult() {
- Switcher switcher = Switchers.getSwitcher(Switchers.NOT_FOUND_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.NOT_FOUND_KEY);
assertTrue(switcher.defaultResult(true).isItOn());
}
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherRemoteUnavailableTest.java b/src/test/java/com/github/switcherapi/client/SwitcherRemoteUnavailableTest.java
index ac85acbb..6af80a20 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherRemoteUnavailableTest.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherRemoteUnavailableTest.java
@@ -7,7 +7,7 @@
import com.github.switcherapi.Switchers;
import com.github.switcherapi.client.exception.SwitcherRemoteException;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
class SwitcherRemoteUnavailableTest {
@@ -23,7 +23,7 @@ void shouldReturnError_noConnection() {
SwitcherContext.initializeClient();
//test
- Switcher switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.REMOTE_KEY);
assertThrows(SwitcherRemoteException.class, switcher::isItOn);
}
diff --git a/src/test/java/com/github/switcherapi/client/SwitcherSilentModeTest.java b/src/test/java/com/github/switcherapi/client/SwitcherSilentModeTest.java
index 4ffbbf32..39c1ae7e 100644
--- a/src/test/java/com/github/switcherapi/client/SwitcherSilentModeTest.java
+++ b/src/test/java/com/github/switcherapi/client/SwitcherSilentModeTest.java
@@ -1,7 +1,7 @@
package com.github.switcherapi.client;
import com.github.switcherapi.Switchers;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.fixture.CountDownHelper;
import com.github.switcherapi.fixture.MockWebServerHelper;
import mockwebserver3.QueueDispatcher;
@@ -64,7 +64,7 @@ void shouldReturnTrue_silentMode() {
givenResponse(generateCriteriaResponse("true", false));
//test
- Switcher switcher = Switchers.getSwitcher(Switchers.USECASE11);
+ SwitcherRequest switcher = Switchers.getSwitcher(Switchers.USECASE11);
assertTrue(switcher.isItOn());
CountDownHelper.wait(2);
diff --git a/src/test/java/com/github/switcherapi/client/remote/ClientRemoteTest.java b/src/test/java/com/github/switcherapi/client/remote/ClientRemoteTest.java
index 46a5327a..fdbed95d 100644
--- a/src/test/java/com/github/switcherapi/client/remote/ClientRemoteTest.java
+++ b/src/test/java/com/github/switcherapi/client/remote/ClientRemoteTest.java
@@ -3,7 +3,7 @@
import com.github.switcherapi.Switchers;
import com.github.switcherapi.client.ContextBuilder;
import com.github.switcherapi.client.SwitcherProperties;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.client.model.SwitcherResult;
import com.github.switcherapi.client.remote.dto.SwitchersCheck;
import com.github.switcherapi.client.service.SwitcherValidator;
@@ -72,7 +72,7 @@ void shouldExecuteCriteria() {
SwitcherValidator validatorService = new ValidatorService();
ClientLocal clientLocal = new ClientLocalService(validatorService);
- Switcher switcher = new Switcher("KEY", new SwitcherRemoteService(clientRemote,
+ SwitcherRequest switcher = new SwitcherRequest("KEY", new SwitcherRemoteService(clientRemote,
new SwitcherLocalService(clientRemote, clientLocal, Switchers.getSwitcherProperties())));
//test
diff --git a/src/test/java/com/github/switcherapi/client/utils/SnapshotWatcherTest.java b/src/test/java/com/github/switcherapi/client/utils/SnapshotWatcherTest.java
index 2f978e92..e3d6468f 100644
--- a/src/test/java/com/github/switcherapi/client/utils/SnapshotWatcherTest.java
+++ b/src/test/java/com/github/switcherapi/client/utils/SnapshotWatcherTest.java
@@ -2,7 +2,7 @@
import com.github.switcherapi.SwitchersBase;
import com.github.switcherapi.client.ContextBuilder;
-import com.github.switcherapi.client.model.Switcher;
+import com.github.switcherapi.client.model.SwitcherRequest;
import com.github.switcherapi.client.model.criteria.Data;
import com.github.switcherapi.client.model.criteria.Snapshot;
import com.github.switcherapi.fixture.CountDownHelper;
@@ -98,7 +98,7 @@ void writeFixture(String content) {
@Test
void shouldNotReloadDomainAfterChangingSnapshot() {
- Switcher switcher = SwitchersBase.getSwitcher(SwitchersBase.USECASE11);
+ SwitcherRequest switcher = SwitchersBase.getSwitcher(SwitchersBase.USECASE11);
//initial value is true
assertTrue(switcher.isItOn());
@@ -116,7 +116,7 @@ void shouldNotReloadDomainAfterChangingSnapshot() {
@Test
void shouldReloadDomainAfterChangingSnapshot() {
- Switcher switcher = SwitchersBase.getSwitcher(SwitchersBase.USECASE11);
+ SwitcherRequest switcher = SwitchersBase.getSwitcher(SwitchersBase.USECASE11);
//initial value is true
assertTrue(switcher.isItOn());
diff --git a/src/test/java/com/github/switcherapi/playground/ClientPlayground.java b/src/test/java/com/github/switcherapi/playground/ClientPlayground.java
index 4b0f048c..c5bfd890 100644
--- a/src/test/java/com/github/switcherapi/playground/ClientPlayground.java
+++ b/src/test/java/com/github/switcherapi/playground/ClientPlayground.java
@@ -19,7 +19,9 @@ public class ClientPlayground {
public static void test() {
new Features().configureClient();
- Switcher switcher = getSwitcher(MY_SWITCHER);
+ Switcher switcher = getSwitcher(MY_SWITCHER)
+ .bypassMetrics()
+ .build();
scheduler.scheduleAtFixedRate(() -> {
long time = System.currentTimeMillis();