diff --git a/pom.xml b/pom.xml
index 1a55a2c..28b8e9d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
com.switcherapi
switcher-client
jar
- 1.9.0
+ 1.9.1
Switcher Client
Switcher Client SDK for working with Switcher API
diff --git a/src/main/java/com/switcherapi/client/model/SwitcherRequest.java b/src/main/java/com/switcherapi/client/model/SwitcherRequest.java
index c5195a0..5e21bbe 100644
--- a/src/main/java/com/switcherapi/client/model/SwitcherRequest.java
+++ b/src/main/java/com/switcherapi/client/model/SwitcherRequest.java
@@ -9,7 +9,7 @@
import java.util.*;
/**
- * SwitcherRequest are the entry point to evaluate criteria and return the result.
+ * SwitcherRequest is 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)
@@ -19,12 +19,6 @@
* @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;
@@ -150,7 +144,7 @@ private boolean canUseAsync() {
private Optional getFromHistory() {
for (SwitcherResult switcherResult : historyExecution) {
- if (switcherResult.getEntry().equals(getEntry())) {
+ if (switcherResult.getEntry().equals(entry)) {
return Optional.of(switcherResult);
}
}
diff --git a/src/main/java/com/switcherapi/client/remote/ClientWS.java b/src/main/java/com/switcherapi/client/remote/ClientWS.java
index c2a119f..cf10834 100644
--- a/src/main/java/com/switcherapi/client/remote/ClientWS.java
+++ b/src/main/java/com/switcherapi/client/remote/ClientWS.java
@@ -41,6 +41,21 @@ public interface ClientWS {
* Returns array of switcher keys not found
*/
String CHECK_SWITCHERS = "%s/criteria/switchers_check";
+
+ /**
+ * Constant for query params (Switcher Key)
+ */
+ String KEY = "key";
+
+ /**
+ * Constant for query params (Show Reason)
+ */
+ String SHOW_REASON = "showReason";
+
+ /**
+ * Constant for query params (Bypass Metric)
+ */
+ String BYPASS_METRIC = "bypassMetric";
/**
* Returns the verification configured for a specific switcher (key)
diff --git a/src/main/java/com/switcherapi/client/remote/ClientWSImpl.java b/src/main/java/com/switcherapi/client/remote/ClientWSImpl.java
index ebc8217..9524a03 100644
--- a/src/main/java/com/switcherapi/client/remote/ClientWSImpl.java
+++ b/src/main/java/com/switcherapi/client/remote/ClientWSImpl.java
@@ -3,7 +3,6 @@
import com.switcherapi.client.SwitcherProperties;
import com.switcherapi.client.exception.SwitcherRemoteException;
import com.switcherapi.client.model.ContextKey;
-import com.switcherapi.client.model.SwitcherRequest;
import com.switcherapi.client.model.criteria.Snapshot;
import com.switcherapi.client.remote.dto.*;
@@ -47,9 +46,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(SwitcherRequest.KEY, criteriaRequest.getSwitcherKey())
- .queryParam(SwitcherRequest.SHOW_REASON, Boolean.TRUE)
- .queryParam(SwitcherRequest.BYPASS_METRIC, criteriaRequest.isBypassMetric());
+ .queryParam(KEY, criteriaRequest.getSwitcherKey())
+ .queryParam(SHOW_REASON, Boolean.TRUE)
+ .queryParam(BYPASS_METRIC, criteriaRequest.isBypassMetric());
try {
final Response response = myResource.request(MediaType.APPLICATION_JSON)
diff --git a/src/main/java/com/switcherapi/client/service/local/SwitcherLocalService.java b/src/main/java/com/switcherapi/client/service/local/SwitcherLocalService.java
index 2caf71c..de13f15 100644
--- a/src/main/java/com/switcherapi/client/service/local/SwitcherLocalService.java
+++ b/src/main/java/com/switcherapi/client/service/local/SwitcherLocalService.java
@@ -104,24 +104,24 @@ public boolean notifyChange(final String snapshotFile) {
}
@Override
- public SwitcherResult executeCriteria(final SwitcherRequest switcher) {
- SwitcherUtils.debug(logger, "[Local] request: {}", switcher);
+ public SwitcherResult executeCriteria(final SwitcherRequest switcherRequest) {
+ SwitcherUtils.debug(logger, "[Local] request: {}", switcherRequest);
SwitcherResult response;
try {
- if (switcher.isRemote()) {
- response = Mapper.mapFrom(this.clientRemote.executeCriteria(Mapper.mapFrom(switcher)));
+ if (switcherRequest.isRemote()) {
+ response = Mapper.mapFrom(this.clientRemote.executeCriteria(Mapper.mapFrom(switcherRequest)), switcherRequest);
SwitcherUtils.debug(logger, "[Remote] response: {}", response);
} else {
- response = this.clientLocal.executeCriteria(switcher, this.domain);
+ response = this.clientLocal.executeCriteria(switcherRequest, this.domain);
SwitcherUtils.debug(logger, "[Local] response: {}", response);
}
} catch (SwitcherKeyNotFoundException e) {
- if (StringUtils.isBlank(switcher.getDefaultResult())) {
+ if (StringUtils.isBlank(switcherRequest.getDefaultResult())) {
throw e;
}
- response = SwitcherFactory.buildFromDefault(switcher);
+ response = SwitcherFactory.buildFromDefault(switcherRequest);
SwitcherUtils.debug(logger, "[Default] response: {}", response);
}
diff --git a/src/main/java/com/switcherapi/client/service/remote/SwitcherRemoteService.java b/src/main/java/com/switcherapi/client/service/remote/SwitcherRemoteService.java
index 411e8c9..e34a983 100644
--- a/src/main/java/com/switcherapi/client/service/remote/SwitcherRemoteService.java
+++ b/src/main/java/com/switcherapi/client/service/remote/SwitcherRemoteService.java
@@ -39,17 +39,17 @@ public SwitcherRemoteService(final ClientRemote clientRemote, final SwitcherExec
}
@Override
- public SwitcherResult executeCriteria(final SwitcherRequest switcher) {
- SwitcherUtils.debug(logger, "[Remote] request: {}", switcher);
+ public SwitcherResult executeCriteria(final SwitcherRequest switcherRequest) {
+ SwitcherUtils.debug(logger, "[Remote] request: {}", switcherRequest);
try {
- final CriteriaResponse response = this.clientRemote.executeCriteria(Mapper.mapFrom(switcher));
+ final CriteriaResponse response = this.clientRemote.executeCriteria(Mapper.mapFrom(switcherRequest));
SwitcherUtils.debug(logger, "[Remote] response: {}", response);
- return Mapper.mapFrom(response);
+ return Mapper.mapFrom(response, switcherRequest);
} catch (final SwitcherRemoteException e) {
logger.error("Failed to execute criteria - Cause: {}", e.getMessage(), e.getCause());
- return tryExecuteLocalCriteria(switcher, e);
+ return tryExecuteLocalCriteria(switcherRequest, e);
}
}
diff --git a/src/main/java/com/switcherapi/client/utils/Mapper.java b/src/main/java/com/switcherapi/client/utils/Mapper.java
index 7b71b12..39843f4 100644
--- a/src/main/java/com/switcherapi/client/utils/Mapper.java
+++ b/src/main/java/com/switcherapi/client/utils/Mapper.java
@@ -17,12 +17,14 @@ public static CriteriaRequest mapFrom(final SwitcherRequest switcher) {
return request;
}
- public static SwitcherResult mapFrom(final CriteriaResponse criteriaResponse) {
+ public static SwitcherResult mapFrom(final CriteriaResponse criteriaResponse,
+ final SwitcherRequest switcherRequest) {
SwitcherResult switcherResult = new SwitcherResult();
switcherResult.setSwitcherKey(criteriaResponse.getSwitcherKey());
switcherResult.setResult(criteriaResponse.getResult());
switcherResult.setReason(criteriaResponse.getReason());
switcherResult.setMetadata(criteriaResponse.getMetadata());
+ switcherResult.setEntry(switcherRequest.getEntry());
return switcherResult;
}
}
diff --git a/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java b/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java
index 94c8539..c1ffc18 100644
--- a/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java
+++ b/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java
@@ -48,16 +48,18 @@ void resetSwitcherContextState() {
void shouldReturnTrue_withThrottle() {
Switchers.initializeClient();
- // Throttled call
+ // Initial remote call
givenResponse(generateMockAuth(10)); //auth
- givenResponse(generateCriteriaResponse("true", false)); //criteria
+ givenResponse(generateCriteriaResponse("true", false)); //criteria - sync (cached)
- // After throttle
- givenResponse(generateCriteriaResponse("false", false)); //criteria
+ // Throttle period - should use cache
+ givenResponse(generateCriteriaResponse("false", false)); //criteria - async (background)
+ givenResponse(generateCriteriaResponse("false", false)); //criteria - async after 1 sec (background)
//test
Switcher switcher = Switchers
.getSwitcher(Switchers.REMOTE_KEY)
+ .checkValue("value")
.throttle(1000);
for (int i = 0; i < 100; i++) {
diff --git a/src/test/java/com/switcherapi/client/remote/ClientRemoteTest.java b/src/test/java/com/switcherapi/client/remote/ClientRemoteTest.java
index ac1d4f9..c833481 100644
--- a/src/test/java/com/switcherapi/client/remote/ClientRemoteTest.java
+++ b/src/test/java/com/switcherapi/client/remote/ClientRemoteTest.java
@@ -74,13 +74,13 @@ void shouldExecuteCriteria() {
SwitcherProperties switcherProperties = Switchers.getSwitcherProperties();
SwitcherValidator validatorService = new ValidatorService();
ClientLocal clientLocal = new ClientLocalService(validatorService);
- SwitcherRequest switcher = new SwitcherRequest(
+ SwitcherRequest switcherRequest = new SwitcherRequest(
"KEY",
new SwitcherRemoteService(clientRemote, new SwitcherLocalService(clientRemote, clientLocal, switcherProperties)),
switcherProperties);
//test
- SwitcherResult actual = Mapper.mapFrom(clientRemote.executeCriteria(Mapper.mapFrom(switcher)));
+ SwitcherResult actual = Mapper.mapFrom(clientRemote.executeCriteria(Mapper.mapFrom(switcherRequest)), switcherRequest);
assertTrue(actual.isItOn());
}