public class org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager extends java.lang.Object implements org.finos.legend.engine.plan.execution.stores.relational.connection.manager.ConnectionManager
{
private static final java.lang.String LOCAL_HOST;
private static final java.lang.String TEST_DB;
private static final org.slf4j.Logger LOGGER;
private final int testDbPort;
private org.eclipse.collections.api.list.MutableList authenticationStrategyKeyVisitors;
private org.eclipse.collections.api.list.MutableList authenticationStrategyTrans;
private org.eclipse.collections.api.list.MutableList dataSourceKeys;
private org.eclipse.collections.api.list.MutableList dataSourceTrans;
private java.util.Optional flowProviderHolder;
public void <init>(int, java.util.List)
{
java.util.List v;
int v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager v;
java.util.Optional v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager;
v := @parameter: int;
v := @parameter: java.util.List;
v = staticinvoke <java.util.Optional: java.util.Optional empty()>();
specialinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: void <init>(int,java.util.List,java.util.Optional)>(v, v, v);
return;
}
public void <init>(int, java.util.List, java.util.Optional)
{
org.eclipse.collections.api.list.MutableList v, v, v, v, v, v, v, v, v, v, v, v, v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.AuthenticationStrategyTransformer v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.AuthenticationStrategyKeyGenerator v;
java.util.Collection v;
java.util.ServiceLoader v;
java.util.List v;
java.util.Optional v;
java.lang.Object[] v, v;
org.eclipse.collections.api.block.function.Function v, v, v, v;
org.eclipse.collections.api.block.function.Function[] v;
org.eclipse.collections.api.factory.list.MutableListFactory v, v, v, v, v;
java.util.function.Function v, v;
org.eclipse.collections.api.block.function.Function v;
int v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager v;
java.util.function.Function[] v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager;
v := @parameter: int;
v := @parameter: java.util.List;
v := @parameter: java.util.Optional;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: java.util.Optional flowProviderHolder> = v;
v = staticinvoke <java.util.ServiceLoader: java.util.ServiceLoader load(java.lang.Class)>(class "Lorg/finos/legend/engine/plan/execution/stores/relational/connection/manager/strategic/StrategicConnectionExtension;");
v = <org.eclipse.collections.api.factory.Lists: org.eclipse.collections.api.factory.list.MutableListFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.list.MutableListFactory: org.eclipse.collections.api.list.MutableList empty()>();
v = staticinvoke <org.eclipse.collections.impl.utility.Iterate: java.util.Collection addAllTo(java.lang.Iterable,java.util.Collection)>(v, v);
v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: int testDbPort> = v;
v = <org.eclipse.collections.api.factory.Lists: org.eclipse.collections.api.factory.list.MutableListFactory mutable>;
v = newarray (org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategyVisitor)[1];
v = new org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.AuthenticationStrategyKeyGenerator;
specialinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.AuthenticationStrategyKeyGenerator: void <init>()>();
v[0] = v;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.list.MutableListFactory: org.eclipse.collections.api.list.MutableList 'with'(java.lang.Object[])>(v);
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$getExtraAuthenticationKeyGenerators__33: org.eclipse.collections.api.block.function.Function bootstrap$()>();
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: org.eclipse.collections.api.list.MutableList collect(org.eclipse.collections.api.block.function.Function)>(v);
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: org.eclipse.collections.api.list.MutableList withAll(java.lang.Iterable)>(v);
v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.eclipse.collections.api.list.MutableList authenticationStrategyKeyVisitors> = v;
v = <org.eclipse.collections.api.factory.Lists: org.eclipse.collections.api.factory.list.MutableListFactory mutable>;
v = newarray (org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategyVisitor)[1];
v = new org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.AuthenticationStrategyTransformer;
specialinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.AuthenticationStrategyTransformer: void <init>(java.util.List)>(v);
v[0] = v;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.list.MutableListFactory: org.eclipse.collections.api.list.MutableList 'with'(java.lang.Object[])>(v);
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$lambda_new_87baecfb_1__34: org.eclipse.collections.api.block.function.Function bootstrap$(java.util.List)>(v);
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: org.eclipse.collections.api.list.MutableList collect(org.eclipse.collections.api.block.function.Function)>(v);
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: org.eclipse.collections.api.list.MutableList withAll(java.lang.Iterable)>(v);
v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.eclipse.collections.api.list.MutableList authenticationStrategyTrans> = v;
v = <org.eclipse.collections.api.factory.Lists: org.eclipse.collections.api.factory.list.MutableListFactory mutable>;
v = newarray (java.util.function.Function)[1];
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$lambda_new_0__35: java.util.function.Function bootstrap$(int)>(v);
v[0] = v;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.list.MutableListFactory: org.eclipse.collections.api.list.MutableList 'with'(java.lang.Object[])>(v);
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$lambda_new_870a067c_1__36: org.eclipse.collections.api.block.function.Function bootstrap$(int)>(v);
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: org.eclipse.collections.api.list.MutableList collect(org.eclipse.collections.api.block.function.Function)>(v);
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: org.eclipse.collections.api.list.MutableList withAll(java.lang.Iterable)>(v);
v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.eclipse.collections.api.list.MutableList dataSourceKeys> = v;
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$lambda_new_2__37: java.util.function.Function bootstrap$(org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager)>(v);
v = <org.eclipse.collections.api.factory.Lists: org.eclipse.collections.api.factory.list.MutableListFactory mutable>;
v = newarray (org.eclipse.collections.api.block.function.Function)[1];
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$lambda_new_7d9d7c95_1__38: org.eclipse.collections.api.block.function.Function bootstrap$(java.util.function.Function)>(v);
v[0] = v;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.list.MutableListFactory: org.eclipse.collections.api.list.MutableList 'with'(java.lang.Object[])>(v);
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$lambda_new_e8b63017_1__39: org.eclipse.collections.api.block.function.Function bootstrap$(java.util.function.Function)>(v);
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: org.eclipse.collections.api.list.MutableList collect(org.eclipse.collections.api.block.function.Function)>(v);
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: org.eclipse.collections.api.list.MutableList withAll(java.lang.Iterable)>(v);
v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.eclipse.collections.api.list.MutableList dataSourceTrans> = v;
return;
}
private org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecificationKey buildDataSourceKey(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification, org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection)
{
org.eclipse.collections.api.block.function.Function v;
org.eclipse.collections.api.block.predicate.Predicate v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager v;
java.lang.RuntimeException v;
org.eclipse.collections.api.list.MutableList v, v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection v;
java.lang.Class v;
java.lang.Object v;
java.lang.String v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection;
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.eclipse.collections.api.list.MutableList dataSourceKeys>;
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$lambda_buildDataSourceKey_19c1f119_1__40: org.eclipse.collections.api.block.function.Function bootstrap$(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification,org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection)>(v, v);
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: org.eclipse.collections.api.list.MutableList collect(org.eclipse.collections.api.block.function.Function)>(v);
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$nonNull__41: org.eclipse.collections.api.block.predicate.Predicate bootstrap$()>();
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: java.lang.Object detect(org.eclipse.collections.api.block.predicate.Predicate)>(v);
if v != null goto label;
v = new java.lang.RuntimeException;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u is not supported!");
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>(v);
throw v;
label:
return v;
}
private org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.strategy.keys.AuthenticationStrategyKey buildAuthStrategyKey(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy)
{
org.eclipse.collections.api.block.function.Function v;
org.eclipse.collections.api.block.predicate.Predicate v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager v;
java.lang.RuntimeException v;
org.eclipse.collections.api.list.MutableList v, v;
java.lang.Class v;
java.lang.Object v;
java.lang.String v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy;
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.eclipse.collections.api.list.MutableList authenticationStrategyKeyVisitors>;
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$lambda_buildAuthStrategyKey_456b361b_1__42: org.eclipse.collections.api.block.function.Function bootstrap$(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy)>(v);
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: org.eclipse.collections.api.list.MutableList collect(org.eclipse.collections.api.block.function.Function)>(v);
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$nonNull__43: org.eclipse.collections.api.block.predicate.Predicate bootstrap$()>();
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: java.lang.Object detect(org.eclipse.collections.api.block.predicate.Predicate)>(v);
if v != null goto label;
v = new java.lang.RuntimeException;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u is not supported!");
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>(v);
throw v;
label:
return v;
}
private org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification buildDataSourceTrans(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification, org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection, org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey)
{
org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey v;
org.eclipse.collections.api.block.function.Function v;
org.eclipse.collections.api.block.predicate.Predicate v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager v;
java.lang.RuntimeException v;
org.eclipse.collections.api.list.MutableList v, v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection v;
java.lang.Class v;
java.lang.Object v;
java.lang.String v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection;
v := @parameter: org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey;
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.eclipse.collections.api.list.MutableList dataSourceTrans>;
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$lambda_buildDataSourceTrans_4719c105_1__44: org.eclipse.collections.api.block.function.Function bootstrap$(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification,org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection,org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey)>(v, v, v);
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: org.eclipse.collections.api.list.MutableList collect(org.eclipse.collections.api.block.function.Function)>(v);
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$nonNull__45: org.eclipse.collections.api.block.predicate.Predicate bootstrap$()>();
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: java.lang.Object detect(org.eclipse.collections.api.block.predicate.Predicate)>(v);
if v != null goto label;
v = new java.lang.RuntimeException;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Can\'t find a transformer for a datasource of type \'\u0001\'");
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>(v);
throw v;
label:
return v;
}
public java.sql.Connection getTestDatabaseConnection()
{
org.finos.legend.engine.shared.core.identity.Identity v;
java.sql.Connection v;
org.finos.legend.engine.plan.execution.stores.StoreExecutionState$RuntimeContext v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager v;
javax.security.auth.Subject v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification v;
java.util.Optional v, v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection buildTestDatabaseDatasourceSpecification()>();
v = null;
v = staticinvoke <org.finos.legend.engine.shared.core.identity.Identity: org.finos.legend.engine.shared.core.identity.Identity makeIdentity(java.lang.Object)>(v);
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: java.util.Optional flowProviderHolder>;
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.StoreExecutionState: org.finos.legend.engine.plan.execution.stores.StoreExecutionState$RuntimeContext emptyRuntimeContext()>();
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: java.util.Optional getCredential(java.util.Optional,org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection,org.finos.legend.engine.shared.core.identity.Identity,org.finos.legend.engine.plan.execution.stores.StoreExecutionState$RuntimeContext)>(v, v, v, v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification getDataSourceSpecification(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseConnection)>(v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification: java.sql.Connection getConnectionUsingIdentity(org.finos.legend.engine.shared.core.identity.Identity,java.util.Optional)>(v, v);
return v;
}
public org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection buildTestDatabaseDatasourceSpecification()
{
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.StaticDatasourceSpecification v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseType v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.TestDatabaseAuthenticationStrategy v;
int v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager;
v = new org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.StaticDatasourceSpecification;
specialinvoke v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.StaticDatasourceSpecification: void <init>()>();
v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.StaticDatasourceSpecification: java.lang.String databaseName> = "testDB";
v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.StaticDatasourceSpecification: java.lang.String host> = "127.0.0.1";
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: int testDbPort>;
v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.StaticDatasourceSpecification: int port> = v;
v = new org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection;
specialinvoke v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: void <init>()>();
v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification datasourceSpecification> = v;
v = new org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.TestDatabaseAuthenticationStrategy;
specialinvoke v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.TestDatabaseAuthenticationStrategy: void <init>()>();
v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy authenticationStrategy> = v;
v = <org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseType: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseType H2>;
v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseType type> = v;
return v;
}
public static java.util.Optional getCredential(java.util.Optional, org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection, org.finos.legend.engine.shared.core.identity.Identity, org.finos.legend.engine.plan.execution.stores.StoreExecutionState$RuntimeContext)
{
org.finos.legend.engine.shared.core.identity.Identity v;
org.finos.legend.engine.plan.execution.stores.StoreExecutionState$RuntimeContext v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection v;
java.util.Optional v, v, v;
java.lang.Object v;
boolean v;
v := @parameter: java.util.Optional;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection;
v := @parameter: org.finos.legend.engine.shared.core.identity.Identity;
v := @parameter: org.finos.legend.engine.plan.execution.stores.StoreExecutionState$RuntimeContext;
v = virtualinvoke v.<java.util.Optional: boolean isPresent()>();
if v != 0 goto label;
v = staticinvoke <java.util.Optional: java.util.Optional empty()>();
return v;
label:
v = virtualinvoke v.<java.util.Optional: java.lang.Object get()>();
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: java.util.Optional getCredential(org.finos.legend.engine.authentication.provider.DatabaseAuthenticationFlowProvider,org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection,org.finos.legend.engine.shared.core.identity.Identity,org.finos.legend.engine.plan.execution.stores.StoreExecutionState$RuntimeContext)>(v, v, v, v);
return v;
}
public static java.util.Optional getCredential(org.finos.legend.engine.authentication.provider.DatabaseAuthenticationFlowProvider, org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection, org.finos.legend.engine.shared.core.identity.Identity, org.finos.legend.engine.plan.execution.stores.StoreExecutionState$RuntimeContext)
{
org.finos.legend.engine.authentication.provider.DatabaseAuthenticationFlowProvider v;
org.finos.legend.engine.shared.core.identity.Identity v;
java.lang.Object[] v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy v, v;
org.finos.legend.engine.authentication.DatabaseAuthenticationFlow$RuntimeContext v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification v, v;
org.finos.legend.engine.authentication.credential.CredentialSupplier v;
java.lang.String v, v, v;
boolean v;
org.slf4j.Logger v;
org.finos.legend.engine.plan.execution.stores.StoreExecutionState$RuntimeContext v;
org.eclipse.collections.api.map.ImmutableMap v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection v;
java.util.Optional v, v, v;
java.lang.Class v, v;
java.lang.Object v;
v := @parameter: org.finos.legend.engine.authentication.provider.DatabaseAuthenticationFlowProvider;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection;
v := @parameter: org.finos.legend.engine.shared.core.identity.Identity;
v := @parameter: org.finos.legend.engine.plan.execution.stores.StoreExecutionState$RuntimeContext;
v = interfaceinvoke v.<org.finos.legend.engine.authentication.provider.DatabaseAuthenticationFlowProvider: java.util.Optional lookupFlow(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection)>(v);
v = virtualinvoke v.<java.util.Optional: boolean isPresent()>();
if v != 0 goto label;
v = newarray (java.lang.Object)[2];
v = v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification datasourceSpecification>;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v[0] = v;
v = v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy authenticationStrategy>;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Database authentication flow feature has been enabled. But flow for DbType=%s, AuthType=%s has not been configured", v);
v = <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.slf4j.Logger LOGGER>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String)>(v);
v = staticinvoke <java.util.Optional: java.util.Optional empty()>();
return v;
label:
v = new org.finos.legend.engine.authentication.credential.CredentialSupplier;
v = virtualinvoke v.<java.util.Optional: java.lang.Object get()>();
v = v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification datasourceSpecification>;
v = v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy authenticationStrategy>;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.StoreExecutionState$RuntimeContext: org.eclipse.collections.api.map.ImmutableMap getContextParams()>();
v = staticinvoke <org.finos.legend.engine.authentication.DatabaseAuthenticationFlow$RuntimeContext: org.finos.legend.engine.authentication.DatabaseAuthenticationFlow$RuntimeContext newWith(org.eclipse.collections.api.map.ImmutableMap)>(v);
specialinvoke v.<org.finos.legend.engine.authentication.credential.CredentialSupplier: void <init>(org.finos.legend.engine.authentication.DatabaseAuthenticationFlow,org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification,org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy,org.finos.legend.engine.authentication.DatabaseAuthenticationFlow$RuntimeContext)>(v, v, v, v);
v = staticinvoke <java.util.Optional: java.util.Optional of(java.lang.Object)>(v);
return v;
}
public org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey generateKeyFromDatabaseConnection(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseConnection)
{
org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager v;
org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.strategy.keys.AuthenticationStrategyKey v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecificationKey v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseConnection v;
boolean v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseConnection;
v = v instanceof org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection;
if v == 0 goto label;
v = new org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey;
v = v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification datasourceSpecification>;
v = specialinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecificationKey buildDataSourceKey(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification,org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection)>(v, v);
v = v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy authenticationStrategy>;
v = specialinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.strategy.keys.AuthenticationStrategyKey buildAuthStrategyKey(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy)>(v);
specialinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey: void <init>(org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecificationKey,org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.strategy.keys.AuthenticationStrategyKey)>(v, v);
return v;
label:
return null;
}
public org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification getDataSourceSpecification(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseConnection)
{
org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification v, v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseConnection v;
boolean v, v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseConnection;
v = v instanceof org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection;
if v != 0 goto label;
return null;
label:
v = specialinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: boolean resolveLocalMode(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification getLocalModeDataSourceSpecification(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection)>(v);
return v;
label:
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey generateKeyFromDatabaseConnection(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseConnection)>(v);
v = v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification datasourceSpecification>;
v = specialinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification buildDataSourceTrans(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification,org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection,org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey)>(v, v, v);
return v;
}
private boolean resolveLocalMode(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection)
{
org.eclipse.collections.api.block.predicate.Predicate v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager v;
java.util.ServiceLoader v;
org.eclipse.collections.api.factory.list.MutableListFactory v;
org.eclipse.collections.api.list.MutableList v, v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection v;
java.lang.Object v;
boolean v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection;
v = v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification datasourceSpecification>;
v = staticinvoke <java.util.ServiceLoader: java.util.ServiceLoader load(java.lang.Class)>(class "Lorg/finos/legend/engine/plan/execution/stores/relational/connection/manager/strategic/StrategicConnectionExtension;");
v = <org.eclipse.collections.api.factory.Lists: org.eclipse.collections.api.factory.list.MutableListFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.list.MutableListFactory: org.eclipse.collections.api.list.MutableList empty()>();
staticinvoke <org.eclipse.collections.impl.utility.Iterate: java.util.Collection addAllTo(java.lang.Iterable,java.util.Collection)>(v, v);
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager$lambda_resolveLocalMode_4d8f600a_1__46: org.eclipse.collections.api.block.predicate.Predicate bootstrap$(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification)>(v);
v = staticinvoke <org.eclipse.collections.impl.utility.ListIterate: java.lang.Object detect(java.util.List,org.eclipse.collections.api.block.predicate.Predicate)>(v, v);
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification getLocalModeDataSourceSpecification(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection)
{
org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseType v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy v;
org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification v;
java.lang.String v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection;
v = v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseType databaseType>;
if v != null goto label;
v = v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseType type>;
label:
v = virtualinvoke v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.DatabaseType: java.lang.String name()>();
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager fromString(java.lang.String)>(v);
v = v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification datasourceSpecification>;
v = v.<org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.RelationalDatabaseConnection: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy authenticationStrategy>;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification getLocalDataSourceSpecification(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification,org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy)>(v, v);
return v;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/finos/legend/engine/plan/execution/stores/relational/connection/manager/strategic/RelationalConnectionManager;");
<org.finos.legend.engine.plan.execution.stores.relational.connection.manager.strategic.RelationalConnectionManager: org.slf4j.Logger LOGGER> = v;
return;
}
}