diff --git a/src/main/java/com/github/switcherapi/client/SwitcherContext.java b/src/main/java/com/github/switcherapi/client/SwitcherContext.java index 612dfae3..36502d23 100644 --- a/src/main/java/com/github/switcherapi/client/SwitcherContext.java +++ b/src/main/java/com/github/switcherapi/client/SwitcherContext.java @@ -3,7 +3,7 @@ import com.github.switcherapi.client.exception.SwitcherKeyNotFoundException; 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; /** * Switcher Context @@ -54,7 +54,7 @@ public static void initializeClient() { * @return a ready to use Switcher * @throws SwitcherKeyNotFoundException in case the key was not properly loaded */ - public static Switcher getSwitcher(String key, boolean keepEntries) { + public static SwitcherRequest getSwitcher(String key, boolean keepEntries) { return SwitcherContextBase.getSwitcher(key, keepEntries); } @@ -64,7 +64,7 @@ public static Switcher getSwitcher(String key, boolean keepEntries) { * @param key name * @return a ready to use Switcher */ - public static Switcher getSwitcher(String key) { + public static SwitcherRequest getSwitcher(String key) { return SwitcherContextBase.getSwitcher(key); } diff --git a/src/main/java/com/github/switcherapi/client/SwitcherContextBase.java b/src/main/java/com/github/switcherapi/client/SwitcherContextBase.java index 98d56cc9..36c7a78f 100644 --- a/src/main/java/com/github/switcherapi/client/SwitcherContextBase.java +++ b/src/main/java/com/github/switcherapi/client/SwitcherContextBase.java @@ -5,7 +5,7 @@ import com.github.switcherapi.client.exception.SwitcherKeyNotFoundException; 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.remote.ClientWS; import com.github.switcherapi.client.remote.ClientWSImpl; import com.github.switcherapi.client.service.SwitcherValidator; @@ -85,7 +85,7 @@ public abstract class SwitcherContextBase extends SwitcherConfig { protected static SwitcherProperties switcherProperties; protected static Set switcherKeys; - protected static Map switchers; + protected static Map switchers; protected static SwitcherExecutor instance; private static ScheduledExecutorService scheduledExecutorService; private static ExecutorService watcherExecutorService; @@ -257,7 +257,7 @@ private static void loadSwitchers() { switchers.clear(); for (String key : switcherKeys) { - switchers.put(key, new Switcher(key, instance)); + switchers.put(key, new SwitcherRequest(key, instance)); } } @@ -353,14 +353,14 @@ private static ClientWS initRemotePoolExecutorService() { * @return a ready to use Switcher * @throws SwitcherKeyNotFoundException in case the key was not properly loaded */ - public static Switcher getSwitcher(String key, boolean keepEntries) { + public static SwitcherRequest getSwitcher(String key, boolean keepEntries) { SwitcherUtils.debug(logger, "key: {} - keepEntries: {}", key, keepEntries); if (!switchers.containsKey(key)) { throw new SwitcherKeyNotFoundException(key); } - final Switcher switcher = switchers.get(key); + final SwitcherRequest switcher = switchers.get(key); if (!keepEntries) { switcher.resetEntry(); } @@ -374,7 +374,7 @@ public static Switcher getSwitcher(String key, boolean keepEntries) { * @param key name * @return a ready to use Switcher */ - public static Switcher getSwitcher(String key) { + public static SwitcherRequest getSwitcher(String key) { return getSwitcher(key, false); } diff --git a/src/main/java/com/github/switcherapi/client/SwitcherExecutor.java b/src/main/java/com/github/switcherapi/client/SwitcherExecutor.java index 20b2e4f8..7ff68845 100644 --- a/src/main/java/com/github/switcherapi/client/SwitcherExecutor.java +++ b/src/main/java/com/github/switcherapi/client/SwitcherExecutor.java @@ -3,7 +3,7 @@ import com.github.switcherapi.client.exception.SwitcherRemoteException; import com.github.switcherapi.client.exception.SwitcherSnapshotWriteException; 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.Domain; import com.github.switcherapi.client.model.criteria.Snapshot; import com.github.switcherapi.client.model.SwitcherResult; @@ -47,7 +47,7 @@ protected SwitcherExecutor(final SwitcherProperties switcherProperties) { * @param switcher to be evaluated * @return Criteria response containing the evaluation details */ - public abstract SwitcherResult executeCriteria(final Switcher switcher); + public abstract SwitcherResult executeCriteria(final SwitcherRequest switcher); /** * Check the snapshot versions against the Remote configuration. diff --git a/src/main/java/com/github/switcherapi/client/model/AsyncSwitcher.java b/src/main/java/com/github/switcherapi/client/model/AsyncSwitcher.java index b8fb8bfb..1f5b577e 100644 --- a/src/main/java/com/github/switcherapi/client/model/AsyncSwitcher.java +++ b/src/main/java/com/github/switcherapi/client/model/AsyncSwitcher.java @@ -18,19 +18,19 @@ * @since 2021-11-27 * */ -public class AsyncSwitcher { +public class AsyncSwitcher { private static final Logger logger = LoggerFactory.getLogger(AsyncSwitcher.class); private final ExecutorService executorService; - private final SwitcherInterface switcherInterface; + private final Switcher switcher; private final long delay; private long nextRun = 0; - public AsyncSwitcher(final SwitcherInterface switcherInterface, long delay) { + public AsyncSwitcher(final Switcher switcher, long delay) { this.executorService = Executors.newCachedThreadPool(r -> { Thread thread = new Thread(r); thread.setName(SWITCHER_ASYNC_WORKER.toString()); @@ -38,7 +38,7 @@ public AsyncSwitcher(final SwitcherInterface switcherInterface, long delay) { return thread; }); - this.switcherInterface = switcherInterface; + this.switcher = switcher; this.delay = delay; } @@ -59,8 +59,8 @@ public synchronized void execute() { public void run() { try { - final SwitcherResult response = switcherInterface.executeCriteria(); - switcherInterface.updateHistoryExecution(response); + final SwitcherResult response = switcher.executeCriteria(); + switcher.updateHistoryExecution(response); } catch (SwitcherException e) { logger.error(e.getMessage(), e); } diff --git a/src/main/java/com/github/switcherapi/client/model/Switcher.java b/src/main/java/com/github/switcherapi/client/model/Switcher.java index 1f3a0778..2abc0076 100644 --- a/src/main/java/com/github/switcherapi/client/model/Switcher.java +++ b/src/main/java/com/github/switcherapi/client/model/Switcher.java @@ -1,157 +1,110 @@ 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.*; +import java.util.List; /** - * Switchers 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() + * The API that handles the switcher operations. + * + *
    + *
  • Switcher creation
  • + *
  • Switcher execution
  • + *
  • Switcher get input/output
  • + *
*/ -public final class Switcher extends SwitcherBuilder { - - public static final String KEY = "key"; - - public static final String SHOW_REASON = "showReason"; - - public static final String BYPASS_METRIC = "bypassMetric"; +public interface Switcher { - private final SwitcherExecutor context; - - 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 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 9b25bfc1..a199bc5b 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.*; @@ -55,9 +55,9 @@ public CriteriaResponse executeCriteria(final CriteriaRequest criteriaRequest, f try { final URI uri = new URI(url) .resolve(String.format(CRITERIA_URL, url, - Switcher.KEY, criteriaRequest.getSwitcherKey(), - Switcher.SHOW_REASON, Boolean.TRUE, - Switcher.BYPASS_METRIC, criteriaRequest.isBypassMetric())); + SwitcherRequest.KEY, criteriaRequest.getSwitcherKey(), + SwitcherRequest.SHOW_REASON, Boolean.TRUE, + SwitcherRequest.BYPASS_METRIC, criteriaRequest.isBypassMetric())); final HttpResponse response = client.send(HttpRequest.newBuilder() .uri(uri) 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 bb2ce7ec..66be4c14 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 c37f3719..0763c8b0 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.client.service.WorkerName; import com.github.switcherapi.fixture.MockWebServerHelper; import org.junit.jupiter.api.AfterAll; @@ -48,7 +48,7 @@ void shouldConfigureRemotePoolSize() { SwitchersBase.initializeClient(); //test - Switcher switcher = SwitchersBase.getSwitcher(Switchers.USECASE11); + SwitcherRequest switcher = SwitchersBase.getSwitcher(Switchers.USECASE11); assertTrue(switcher.isItOn()); //assert pool size @@ -79,7 +79,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("request 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 2b62ad6b..84a19370 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();