Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 21 additions & 18 deletions common/src/main/java/com/skyflow/BaseSkyflow.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,17 @@
import java.util.Map;


abstract class BaseSkyflow<Self extends BaseSkyflow, V extends BaseVaultConfig, VC> implements ISkyflow<Self, V, Credentials, VC> {
protected final BaseSkyflowClientBuilder<V, VC> builder;
abstract class BaseSkyflow<Self extends BaseSkyflow, V extends BaseVaultConfig> implements ISkyflow<Self, V, Credentials> {
protected final BaseSkyflowClientBuilder<V> builder;

protected BaseSkyflow(BaseSkyflowClientBuilder<V, VC> builder) {
protected BaseSkyflow(BaseSkyflowClientBuilder<V> builder) {
this.builder = builder;
LogUtil.printInfoLog(InfoLogs.CLIENT_INITIALIZED.getLog());
}

protected abstract Self self();

@Override
public Self addVaultConfig(V vaultConfig) throws SkyflowException {
this.builder.addVaultConfigTemplate(vaultConfig);
return self();
Expand All @@ -35,34 +36,35 @@ public V getVaultConfig(String vaultId) {
return this.builder.vaultConfigMap.get(vaultId);
}

@Override
public Self updateVaultConfig(V vaultConfig) throws SkyflowException {
this.builder.updateVaultConfigTemplate(vaultConfig);
return self();
}

@Override
public Self removeVaultConfig(String vaultId) throws SkyflowException {
this.builder.removeVaultConfigTemplate(vaultId);
return self();
}

@Override
public Self updateSkyflowCredentials(Credentials credentials) throws SkyflowException {
this.builder.addSkyflowCredentialsTemplate(credentials);
return self();
}

@Override
public Self setLogLevel(LogLevel logLevel) {
this.builder.setLogLevel(logLevel);
return self();
}

@Override
public LogLevel getLogLevel() {
return this.builder.logLevel;
}

public VC vault() throws SkyflowException {
return resolveOrThrow(this.builder.vaultClientsMap, null, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList);
}

protected static <T> T resolveOrThrow(Map<String, T> map, String key,
ErrorLogs errorLog, ErrorMessage errorMessage) throws SkyflowException {
T value = key != null ? map.get(key) : map.values().stream().findFirst().orElse(null);
Expand All @@ -73,36 +75,35 @@ protected static <T> T resolveOrThrow(Map<String, T> map, String key,
return value;
}

abstract static class BaseSkyflowClientBuilder<V extends BaseVaultConfig, VC> {
abstract static class BaseSkyflowClientBuilder<V extends BaseVaultConfig> {
protected final LinkedHashMap<String, V> vaultConfigMap = new LinkedHashMap<>();
protected final LinkedHashMap<String, VC> vaultClientsMap = new LinkedHashMap<>();
protected Credentials skyflowCredentials;
protected LogLevel logLevel = LogLevel.ERROR;

protected BaseSkyflowClientBuilder() {
}

public BaseSkyflowClientBuilder<V, VC> addVaultConfig(V vaultConfig) throws SkyflowException {
public BaseSkyflowClientBuilder<V> addVaultConfig(V vaultConfig) throws SkyflowException {
addVaultConfigTemplate(vaultConfig);
return this;
}

public BaseSkyflowClientBuilder<V, VC> updateVaultConfig(V vaultConfig) throws SkyflowException {
public BaseSkyflowClientBuilder<V> updateVaultConfig(V vaultConfig) throws SkyflowException {
updateVaultConfigTemplate(vaultConfig);
return this;
}

public BaseSkyflowClientBuilder<V, VC> removeVaultConfig(String vaultId) throws SkyflowException {
public BaseSkyflowClientBuilder<V> removeVaultConfig(String vaultId) throws SkyflowException {
removeVaultConfigTemplate(vaultId);
return this;
}

public BaseSkyflowClientBuilder<V, VC> addSkyflowCredentials(Credentials credentials) throws SkyflowException {
public BaseSkyflowClientBuilder<V> addSkyflowCredentials(Credentials credentials) throws SkyflowException {
addSkyflowCredentialsTemplate(credentials);
return this;
}

protected BaseSkyflowClientBuilder<V, VC> setLogLevel(LogLevel logLevel) {
protected BaseSkyflowClientBuilder<V> setLogLevel(LogLevel logLevel) {
this.logLevel = logLevel == null ? LogLevel.ERROR : logLevel;
LogUtil.setupLogger(this.logLevel);
LogUtil.printInfoLog(BaseUtils.parameterizedString(
Expand All @@ -116,7 +117,7 @@ protected final void addVaultConfigTemplate(V vaultConfig) throws SkyflowExcepti
validateVaultConfig(vaultConfig);
V vaultConfigCopy = cloneVaultConfig(vaultConfig);
String vaultId = extractVaultId(vaultConfigCopy);
if (this.vaultClientsMap.containsKey(vaultId)) {
if (this.vaultConfigMap.containsKey(vaultId)) {
LogUtil.printErrorLog(BaseUtils.parameterizedString(
ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultId
));
Expand All @@ -131,7 +132,7 @@ protected final void updateVaultConfigTemplate(V vaultConfig) throws SkyflowExce
LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog());
validateVaultConfig(vaultConfig);
String vaultId = extractVaultId(vaultConfig);
if (!this.vaultClientsMap.containsKey(vaultId)) {
if (!this.vaultConfigMap.containsKey(vaultId)) {
LogUtil.printErrorLog(BaseUtils.parameterizedString(
ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId
));
Expand All @@ -143,11 +144,11 @@ protected final void updateVaultConfigTemplate(V vaultConfig) throws SkyflowExce
}

protected final void removeVaultConfigTemplate(String vaultId) throws SkyflowException {
if (!this.vaultClientsMap.containsKey(vaultId)) {
if (!this.vaultConfigMap.containsKey(vaultId)) {
LogUtil.printErrorLog(BaseUtils.parameterizedString(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId));
throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage());
}
this.vaultClientsMap.remove(vaultId);
onVaultConfigRemoved(vaultId);
this.vaultConfigMap.remove(vaultId);
}

Expand Down Expand Up @@ -199,6 +200,8 @@ protected final V mergeVaultConfig(V incoming, V existing) {

protected abstract void onVaultConfigUpdated(V updatedConfig) throws SkyflowException;

protected abstract void onVaultConfigRemoved(String vaultId) throws SkyflowException;

protected abstract void onCredentialsUpdated(Credentials credentials) throws SkyflowException;
}

Expand Down
3 changes: 2 additions & 1 deletion common/src/main/java/com/skyflow/BaseVaultClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.skyflow.config.BaseCredentials;
import com.skyflow.config.BaseVaultConfig;
import com.skyflow.errors.ErrorCode;
import com.skyflow.errors.ErrorMessage;
import com.skyflow.errors.SkyflowException;
Expand All @@ -24,7 +25,7 @@
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;

class BaseVaultClient<V> {
class BaseVaultClient<V extends BaseVaultConfig> {
protected V vaultConfig;
protected OkHttpClient sharedHttpClient;
protected String currentVaultURL;
Expand Down
6 changes: 3 additions & 3 deletions common/src/main/java/com/skyflow/ISkyflow.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.skyflow;

import com.skyflow.config.BaseCredentials;
import com.skyflow.config.BaseVaultConfig;
import com.skyflow.enums.LogLevel;
import com.skyflow.errors.SkyflowException;

public interface ISkyflow<Self, V, C, VC> {
public interface ISkyflow<Self, V extends BaseVaultConfig, C extends BaseCredentials> {
Self addVaultConfig(V vaultConfig) throws SkyflowException;

Self updateVaultConfig(V vaultConfig) throws SkyflowException;
Expand All @@ -15,6 +17,4 @@ public interface ISkyflow<Self, V, C, VC> {
Self setLogLevel(LogLevel logLevel);

LogLevel getLogLevel();

VC vault() throws SkyflowException;
}
22 changes: 20 additions & 2 deletions flowvault/src/main/java/com/skyflow/Skyflow.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import com.skyflow.config.Credentials;
import com.skyflow.config.VaultConfig;
import com.skyflow.enums.LogLevel;
import com.skyflow.errors.ErrorMessage;
import com.skyflow.errors.SkyflowException;
import com.skyflow.logs.ErrorLogs;
import com.skyflow.logs.InfoLogs;
import com.skyflow.utils.Constants;
import com.skyflow.utils.SdkVersion;
Expand All @@ -12,10 +14,15 @@
import com.skyflow.utils.validations.Validations;
import com.skyflow.vault.controller.VaultController;

public final class Skyflow extends BaseSkyflow<Skyflow, VaultConfig, VaultController> {
import java.util.LinkedHashMap;

public final class Skyflow extends BaseSkyflow<Skyflow, VaultConfig> {

private final SkyflowClientBuilder builder;

private Skyflow(SkyflowClientBuilder builder) {
super(builder);
this.builder = builder;
}

@Override
Expand All @@ -33,7 +40,13 @@ public VaultConfig getVaultConfig() {
return (VaultConfig) array[0];
}

public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder<VaultConfig, VaultController> {
public VaultController vault() throws SkyflowException {
return resolveOrThrow(this.builder.vaultClientsMap, null, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList);
}

public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder<VaultConfig> {
private final LinkedHashMap<String, VaultController> vaultClientsMap = new LinkedHashMap<>();

@Override
protected void validateVaultConfig(VaultConfig vaultConfig) throws SkyflowException {
Validations.validateVaultConfiguration(vaultConfig);
Expand All @@ -50,6 +63,11 @@ protected void onVaultConfigUpdated(VaultConfig updatedConfig) throws SkyflowExc
this.vaultClientsMap.put(updatedConfig.getVaultId(), new VaultController(updatedConfig, this.skyflowCredentials));
}

@Override
protected void onVaultConfigRemoved(String vaultId) throws SkyflowException {
this.vaultClientsMap.remove(vaultId);
}

@Override
protected void onCredentialsUpdated(Credentials credentials) throws SkyflowException {
for (VaultController vault : this.vaultClientsMap.values()) {
Expand Down
14 changes: 12 additions & 2 deletions v2/src/main/java/com/skyflow/Skyflow.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

import java.util.LinkedHashMap;

public final class Skyflow extends BaseSkyflow<Skyflow, VaultConfig, VaultController> {
public final class Skyflow extends BaseSkyflow<Skyflow, VaultConfig> {
private final SkyflowClientBuilder builder;

private Skyflow(SkyflowClientBuilder builder) {
Expand Down Expand Up @@ -61,6 +61,10 @@ public Skyflow updateLogLevel(LogLevel logLevel) {
return setLogLevel(logLevel);
}

public VaultController vault() throws SkyflowException {
return resolveOrThrow(this.builder.vaultClientsMap, null, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList);
}

public VaultController vault(String vaultId) throws SkyflowException {
return resolveOrThrow(this.builder.vaultClientsMap, vaultId, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList);
}
Expand All @@ -81,7 +85,8 @@ public DetectController detect(String vaultId) throws SkyflowException {
return resolveOrThrow(this.builder.detectClientsMap, vaultId, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList);
}

public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder<VaultConfig, VaultController> {
public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder<VaultConfig> {
private final LinkedHashMap<String, VaultController> vaultClientsMap = new LinkedHashMap<>();
private final LinkedHashMap<String, ConnectionController> connectionsMap = new LinkedHashMap<>();
private final LinkedHashMap<String, DetectController> detectClientsMap = new LinkedHashMap<>();
private final LinkedHashMap<String, ConnectionConfig> connectionConfigMap = new LinkedHashMap<>();
Expand All @@ -104,6 +109,11 @@ protected void onVaultConfigUpdated(VaultConfig updatedConfig) throws SkyflowExc
this.vaultClientsMap.get(updatedConfig.getVaultId()).updateVaultConfig();
}

@Override
protected void onVaultConfigRemoved(String vaultId) throws SkyflowException {
this.vaultClientsMap.remove(vaultId);
}

@Override
protected void onCredentialsUpdated(Credentials credentials) throws SkyflowException {
for (VaultController vault : this.vaultClientsMap.values()) {
Expand Down
Loading