public class org.finos.legend.engine.postgres.handler.legend.LegendHttpClient extends java.lang.Object implements org.finos.legend.engine.postgres.handler.legend.LegendClient
{
private static final org.slf4j.Logger LOGGER;
private static final com.fasterxml.jackson.databind.ObjectMapper mapper;
private static final io.opentelemetry.context.propagation.TextMapSetter TEXT_MAP_SETTER;
private final java.lang.String protocol;
private final java.lang.String host;
private final java.lang.String port;
public void <init>(java.lang.String, java.lang.String, java.lang.String)
{
org.finos.legend.engine.postgres.handler.legend.LegendHttpClient v;
java.lang.String v, v, v;
v := @this: org.finos.legend.engine.postgres.handler.legend.LegendHttpClient;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: java.lang.String protocol> = v;
v.<org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: java.lang.String host> = v;
v.<org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: java.lang.String port> = v;
return;
}
public java.io.InputStream executeQueryApi(java.lang.String)
{
org.slf4j.Logger v;
org.finos.legend.engine.postgres.handler.legend.LegendHttpClient v;
java.lang.String v;
java.io.InputStream v;
v := @this: org.finos.legend.engine.postgres.handler.legend.LegendHttpClient;
v := @parameter: java.lang.String;
v = <org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: org.slf4j.Logger LOGGER>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("executing query {}", v);
v = specialinvoke v.<org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: java.io.InputStream executeApi(java.lang.String,java.lang.String)>(v, "/api/sql/v1/execution/executeQueryString");
return v;
}
public java.io.InputStream executeSchemaApi(java.lang.String)
{
org.slf4j.Logger v;
org.finos.legend.engine.postgres.handler.legend.LegendHttpClient v;
java.lang.String v;
java.io.InputStream v;
v := @this: org.finos.legend.engine.postgres.handler.legend.LegendHttpClient;
v := @parameter: java.lang.String;
v = <org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: org.slf4j.Logger LOGGER>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("executing schema query {}", v);
v = specialinvoke v.<org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: java.io.InputStream executeApi(java.lang.String,java.lang.String)>(v, "/api/sql/v1/execution/getSchemaFromQueryString");
return v;
}
private java.io.InputStream executeApi(java.lang.String, java.lang.String)
{
java.lang.Throwable v, v;
org.apache.http.client.methods.HttpPost v;
java.util.concurrent.Callable v;
io.opentelemetry.api.trace.Tracer v;
io.opentelemetry.context.propagation.TextMapPropagator v;
java.nio.charset.Charset v;
org.apache.http.client.HttpClient v;
io.opentelemetry.api.trace.SpanBuilder v, v;
io.opentelemetry.context.propagation.TextMapSetter v;
java.lang.String v, v, v, v, v, v;
java.util.function.IntSupplier v;
io.opentelemetry.context.Context v;
io.opentelemetry.api.trace.Span v;
io.opentelemetry.context.Scope v;
org.apache.http.entity.StringEntity v;
java.io.IOException v;
java.lang.RuntimeException v;
io.opentelemetry.api.trace.SpanKind v;
org.apache.http.impl.client.BasicCookieStore v;
org.finos.legend.engine.postgres.handler.legend.LegendHttpClient v;
io.opentelemetry.api.common.AttributeKey v, v;
org.apache.http.HttpResponse v;
java.io.InputStream v;
v := @this: org.finos.legend.engine.postgres.handler.legend.LegendHttpClient;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = v.<org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: java.lang.String protocol>;
v = v.<org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: java.lang.String host>;
v = v.<org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: java.lang.String port>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String,java.lang.String)>(v, v, v, 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[])>("\u0001://\u0001:\u0001\u0001");
v = new org.apache.http.client.methods.HttpPost;
specialinvoke v.<org.apache.http.client.methods.HttpPost: void <init>(java.lang.String)>(v);
v = new org.apache.http.entity.StringEntity;
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
specialinvoke v.<org.apache.http.entity.StringEntity: void <init>(java.lang.String,java.nio.charset.Charset)>(v, v);
virtualinvoke v.<org.apache.http.entity.StringEntity: void setContentType(java.lang.String)>("text/plain");
virtualinvoke v.<org.apache.http.client.methods.HttpPost: void setEntity(org.apache.http.HttpEntity)>(v);
v = staticinvoke <org.finos.legend.engine.postgres.utils.OpenTelemetryUtil: io.opentelemetry.api.trace.Tracer getTracer()>();
v = interfaceinvoke v.<io.opentelemetry.api.trace.Tracer: io.opentelemetry.api.trace.SpanBuilder spanBuilder(java.lang.String)>("LegendHttpClient Execute Query");
v = <io.opentelemetry.api.trace.SpanKind: io.opentelemetry.api.trace.SpanKind CLIENT>;
v = interfaceinvoke v.<io.opentelemetry.api.trace.SpanBuilder: io.opentelemetry.api.trace.SpanBuilder setSpanKind(io.opentelemetry.api.trace.SpanKind)>(v);
v = interfaceinvoke v.<io.opentelemetry.api.trace.SpanBuilder: io.opentelemetry.api.trace.Span startSpan()>();
label:
v = interfaceinvoke v.<io.opentelemetry.api.trace.Span: io.opentelemetry.context.Scope makeCurrent()>();
label:
v = <io.opentelemetry.semconv.SemanticAttributes: io.opentelemetry.api.common.AttributeKey HTTP_REQUEST_METHOD>;
interfaceinvoke v.<io.opentelemetry.api.trace.Span: io.opentelemetry.api.trace.Span setAttribute(io.opentelemetry.api.common.AttributeKey,java.lang.Object)>(v, "POST");
v = <io.opentelemetry.semconv.SemanticAttributes: io.opentelemetry.api.common.AttributeKey URL_FULL>;
interfaceinvoke v.<io.opentelemetry.api.trace.Span: io.opentelemetry.api.trace.Span setAttribute(io.opentelemetry.api.common.AttributeKey,java.lang.Object)>(v, v);
v = staticinvoke <org.finos.legend.engine.postgres.utils.OpenTelemetryUtil: io.opentelemetry.context.propagation.TextMapPropagator getPropagators()>();
v = staticinvoke <io.opentelemetry.context.Context: io.opentelemetry.context.Context current()>();
v = <org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: io.opentelemetry.context.propagation.TextMapSetter TEXT_MAP_SETTER>;
interfaceinvoke v.<io.opentelemetry.context.propagation.TextMapPropagator: void inject(io.opentelemetry.context.Context,java.lang.Object,io.opentelemetry.context.propagation.TextMapSetter)>(v, v, v);
v = new org.apache.http.impl.client.BasicCookieStore;
specialinvoke v.<org.apache.http.impl.client.BasicCookieStore: void <init>()>();
v = staticinvoke <org.finos.legend.engine.shared.core.kerberos.HttpClientBuilder: org.apache.http.client.HttpClient getHttpClient(org.apache.http.client.CookieStore)>(v);
v = interfaceinvoke v.<org.apache.http.client.HttpClient: org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest)>(v);
v = staticinvoke <org.finos.legend.engine.postgres.handler.legend.LegendHttpClient$lambda_executeApi_1__83: java.util.concurrent.Callable bootstrap$(org.apache.http.HttpResponse)>(v);
v = staticinvoke <org.finos.legend.engine.postgres.handler.legend.LegendHttpClient$lambda_executeApi_2__84: java.util.function.IntSupplier bootstrap$(org.apache.http.HttpResponse)>(v);
v = staticinvoke <org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: java.io.InputStream handleResponse(java.lang.String,java.util.concurrent.Callable,java.util.function.IntSupplier)>(v, v, v);
label:
if v == null goto label;
interfaceinvoke v.<io.opentelemetry.context.Scope: void close()>();
label:
interfaceinvoke v.<io.opentelemetry.api.trace.Span: void end()>();
return v;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
interfaceinvoke v.<io.opentelemetry.api.trace.Span: void end()>();
throw v;
catch java.lang.Throwable from label to label with label;
catch java.io.IOException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
protected static java.io.InputStream handleResponse(java.lang.String, java.util.concurrent.Callable, java.util.function.IntSupplier)
{
java.lang.Object[] v, v, v;
java.util.concurrent.Callable v;
java.lang.Integer v;
java.nio.charset.Charset v;
int v, v, v;
java.lang.String v, v, v, v, v, v, v;
java.util.function.IntSupplier v;
boolean v;
org.slf4j.Logger v;
com.fasterxml.jackson.databind.ObjectMapper v;
java.lang.Exception v;
org.finos.legend.engine.postgres.handler.legend.LegendTdsClientException v, v, v;
java.lang.Object v, v;
v := @parameter: java.lang.String;
v := @parameter: java.util.concurrent.Callable;
v := @parameter: java.util.function.IntSupplier;
v = null;
label:
v = interfaceinvoke v.<java.util.concurrent.Callable: java.lang.Object call()>();
v = interfaceinvoke v.<java.util.function.IntSupplier: int getAsInt()>();
if v != 200 goto label;
label:
return v;
label:
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
v = staticinvoke <org.apache.commons.io.IOUtils: java.lang.String toString(java.io.InputStream,java.nio.charset.Charset)>(v, v);
v = <org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: com.fasterxml.jackson.databind.ObjectMapper mapper>;
v = virtualinvoke v.<com.fasterxml.jackson.databind.ObjectMapper: java.lang.Object readValue(java.lang.String,java.lang.Class)>(v, class "Lorg/finos/legend/engine/shared/core/operational/errorManagement/ExceptionError;");
v = "error";
v = v.<org.finos.legend.engine.shared.core.operational.errorManagement.ExceptionError: java.lang.String status>;
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.finos.legend.engine.shared.core.operational.errorManagement.ExceptionError: java.lang.String getMessage()>();
v = <org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: org.slf4j.Logger LOGGER>;
v = virtualinvoke v.<org.finos.legend.engine.shared.core.operational.errorManagement.ExceptionError: java.lang.String getTrace()>();
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("Failed to execute query: [{}], trace: [{}]", v, v);
goto label;
label:
v = newarray (java.lang.Object)[2];
v[0] = v;
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Status: [%s], Response: [%s]", v);
label:
v = new org.finos.legend.engine.postgres.handler.legend.LegendTdsClientException;
specialinvoke v.<org.finos.legend.engine.postgres.handler.legend.LegendTdsClientException: void <init>(java.lang.String)>(v);
throw v;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = newarray (java.lang.Object)[1];
v = interfaceinvoke v.<java.util.function.IntSupplier: int getAsInt()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Unable to parse json. Execution API response status[%s]", v);
v = interfaceinvoke v.<java.util.function.IntSupplier: int getAsInt()>();
if v == 200 goto label;
v = newarray (java.lang.Object)[2];
v[0] = v;
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("%s, response: [%s]", v);
label:
v = new org.finos.legend.engine.postgres.handler.legend.LegendTdsClientException;
specialinvoke v.<org.finos.legend.engine.postgres.handler.legend.LegendTdsClientException: void <init>(java.lang.String)>(v);
throw v;
catch org.finos.legend.engine.postgres.handler.legend.LegendTdsClientException from label to label with label;
catch java.lang.Exception from label to label with label;
catch java.lang.Exception from label to label with label;
}
static void <clinit>()
{
com.fasterxml.jackson.databind.ObjectMapper v;
io.opentelemetry.context.propagation.TextMapSetter v;
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/finos/legend/engine/postgres/handler/legend/LegendHttpClient;");
<org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: org.slf4j.Logger LOGGER> = v;
v = staticinvoke <org.finos.legend.engine.shared.core.ObjectMapperFactory: com.fasterxml.jackson.databind.ObjectMapper getNewStandardObjectMapperWithPureProtocolExtensionSupports()>();
<org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: com.fasterxml.jackson.databind.ObjectMapper mapper> = v;
v = staticinvoke <org.finos.legend.engine.postgres.handler.legend.LegendHttpClient$lambda_static_0__85: io.opentelemetry.context.propagation.TextMapSetter bootstrap$()>();
<org.finos.legend.engine.postgres.handler.legend.LegendHttpClient: io.opentelemetry.context.propagation.TextMapSetter TEXT_MAP_SETTER> = v;
return;
}
}