public abstract class org.finos.legend.engine.shared.javaCompiler.StringJavaSource extends javax.tools.SimpleJavaFileObject
{
private static final java.util.regex.Pattern PACKAGE_DECLARATION_PATTERN;
private void <init>(java.lang.String, java.lang.String)
{
java.lang.String v, v, v, v, v, v, v;
java.net.URI v;
org.finos.legend.engine.shared.javaCompiler.StringJavaSource v;
javax.tools.JavaFileObject$Kind v, v;
boolean v;
v := @this: org.finos.legend.engine.shared.javaCompiler.StringJavaSource;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(46, 47);
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>(".");
if v == 0 goto label;
v = "";
goto label;
label:
v = "/";
label:
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(46, 47);
v = <javax.tools.JavaFileObject$Kind: javax.tools.JavaFileObject$Kind SOURCE>;
v = v.<javax.tools.JavaFileObject$Kind: java.lang.String extension>;
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[])>("string:///\u0001\u0001\u0001\u0001");
v = staticinvoke <java.net.URI: java.net.URI create(java.lang.String)>(v);
v = <javax.tools.JavaFileObject$Kind: javax.tools.JavaFileObject$Kind SOURCE>;
specialinvoke v.<javax.tools.SimpleJavaFileObject: void <init>(java.net.URI,javax.tools.JavaFileObject$Kind)>(v, v);
return;
}
public java.lang.CharSequence getCharContent(boolean)
{
java.lang.String v;
org.finos.legend.engine.shared.javaCompiler.StringJavaSource v;
boolean v;
v := @this: org.finos.legend.engine.shared.javaCompiler.StringJavaSource;
v := @parameter: boolean;
v = virtualinvoke v.<org.finos.legend.engine.shared.javaCompiler.StringJavaSource: java.lang.String getCode()>();
return v;
}
public abstract java.lang.String getCode();
public abstract int size();
public static org.finos.legend.engine.shared.javaCompiler.StringJavaSource newStringJavaSource(java.lang.String, java.lang.String, java.lang.String)
{
java.lang.String v, v, v;
org.finos.legend.engine.shared.javaCompiler.StringJavaSource v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = staticinvoke <org.finos.legend.engine.shared.javaCompiler.StringJavaSource: org.finos.legend.engine.shared.javaCompiler.StringJavaSource newStringJavaSource(java.lang.String,java.lang.String,java.lang.String,boolean)>(v, v, v, 1);
return v;
}
public static org.finos.legend.engine.shared.javaCompiler.StringJavaSource newStringJavaSource(java.lang.String, java.lang.String, java.lang.String, boolean)
{
byte[] v, v;
java.nio.charset.Charset v;
org.finos.legend.engine.shared.javaCompiler.StringJavaSource$CompressedStringJavaSource v;
int v;
org.finos.legend.engine.shared.javaCompiler.StringJavaSource$SimpleStringJavaSource v, v;
java.lang.String v, v, v, v;
org.finos.legend.engine.shared.javaCompiler.StringJavaSource v;
boolean v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v = staticinvoke <org.finos.legend.engine.shared.javaCompiler.StringJavaSource: java.lang.String possiblyAddPackage(java.lang.String,java.lang.String)>(v, v);
if v != 0 goto label;
v = new org.finos.legend.engine.shared.javaCompiler.StringJavaSource$SimpleStringJavaSource;
specialinvoke v.<org.finos.legend.engine.shared.javaCompiler.StringJavaSource$SimpleStringJavaSource: void <init>(java.lang.String,java.lang.String,java.lang.String)>(v, v, v);
return v;
label:
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.nio.charset.Charset)>(v);
v = staticinvoke <org.finos.legend.engine.shared.javaCompiler.StringJavaSource: byte[] possiblyCompressCode(byte[])>(v);
if v != null goto label;
v = new org.finos.legend.engine.shared.javaCompiler.StringJavaSource$SimpleStringJavaSource;
v = v;
specialinvoke v.<org.finos.legend.engine.shared.javaCompiler.StringJavaSource$SimpleStringJavaSource: void <init>(java.lang.String,java.lang.String,java.lang.String)>(v, v, v);
goto label;
label:
v = new org.finos.legend.engine.shared.javaCompiler.StringJavaSource$CompressedStringJavaSource;
v = v;
v = lengthof v;
specialinvoke v.<org.finos.legend.engine.shared.javaCompiler.StringJavaSource$CompressedStringJavaSource: void <init>(java.lang.String,java.lang.String,int,byte[])>(v, v, v, v);
label:
return v;
}
static boolean hasPackageDeclaration(java.lang.String)
{
java.util.regex.Matcher v;
java.lang.String v;
java.util.regex.Pattern v;
boolean v;
v := @parameter: java.lang.String;
v = <org.finos.legend.engine.shared.javaCompiler.StringJavaSource: java.util.regex.Pattern PACKAGE_DECLARATION_PATTERN>;
v = virtualinvoke v.<java.util.regex.Pattern: java.util.regex.Matcher matcher(java.lang.CharSequence)>(v);
v = virtualinvoke v.<java.util.regex.Matcher: boolean find()>();
return v;
}
private static java.lang.String possiblyAddPackage(java.lang.String, java.lang.String)
{
java.lang.String v, v, v;
boolean v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = staticinvoke <org.finos.legend.engine.shared.javaCompiler.StringJavaSource: boolean hasPackageDeclaration(java.lang.String)>(v);
if v == 0 goto label;
v = v;
goto label;
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("package \u;\n\u0001");
label:
return v;
}
private static byte[] possiblyCompressCode(byte[])
{
java.lang.Throwable v;
byte[] v, v, v;
java.lang.RuntimeException v;
java.util.zip.Deflater v;
java.nio.charset.Charset v;
int v, v, v, v;
java.lang.String v, v;
v := @parameter: byte[];
v = new java.util.zip.Deflater;
specialinvoke v.<java.util.zip.Deflater: void <init>(int)>(1);
label:
v = lengthof v;
v = newarray (byte)[v];
virtualinvoke v.<java.util.zip.Deflater: void setInput(byte[])>(v);
v = lengthof v;
v = virtualinvoke v.<java.util.zip.Deflater: int deflate(byte[],int,int,int)>(v, 0, v, 3);
if v != 0 goto label;
v = new java.lang.RuntimeException;
v = new java.lang.String;
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
specialinvoke v.<java.lang.String: void <init>(byte[],java.nio.charset.Charset)>(v, v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(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[])>("Error compressing string: \u0001");
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>(v);
throw v;
label:
v = lengthof v;
if v < v goto label;
label:
virtualinvoke v.<java.util.zip.Deflater: void end()>();
return null;
label:
v = staticinvoke <java.util.Arrays: byte[] copyOfRange(byte[],int,int)>(v, 0, v);
label:
virtualinvoke v.<java.util.zip.Deflater: void end()>();
return v;
label:
v := @caughtexception;
virtualinvoke v.<java.util.zip.Deflater: void end()>();
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private static java.lang.String decompressToString(int, byte[])
{
byte[] v, v;
java.nio.charset.Charset v;
int v;
java.lang.String v;
v := @parameter: int;
v := @parameter: byte[];
v = new java.lang.String;
v = staticinvoke <org.finos.legend.engine.shared.javaCompiler.StringJavaSource: byte[] decompressToBytes(int,byte[])>(v, v);
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
specialinvoke v.<java.lang.String: void <init>(byte[],java.nio.charset.Charset)>(v, v);
return v;
}
private static byte[] decompressToBytes(int, byte[])
{
java.lang.Throwable v;
byte[] v, v;
java.util.zip.Inflater v;
java.lang.RuntimeException v, v;
int v, v, v, v;
java.util.zip.DataFormatException v;
java.lang.String v;
v := @parameter: int;
v := @parameter: byte[];
v = new java.util.zip.Inflater;
specialinvoke v.<java.util.zip.Inflater: void <init>(boolean)>(0);
label:
virtualinvoke v.<java.util.zip.Inflater: void setInput(byte[])>(v);
v = newarray (byte)[v];
v = 0;
label:
v = v - v;
v = virtualinvoke v.<java.util.zip.Inflater: int inflate(byte[],int,int)>(v, v, v);
if v == 0 goto label;
v = v + v;
goto label;
label:
if v >= v goto label;
v = new java.lang.RuntimeException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int,int)>(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[])>("Error decompressing code: expected \u bytes, got \u bytes");
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>(v);
throw v;
label:
virtualinvoke v.<java.util.zip.Inflater: void end()>();
return v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String,java.lang.Throwable)>("Error decompressing code", v);
throw v;
label:
v := @caughtexception;
virtualinvoke v.<java.util.zip.Inflater: void end()>();
throw v;
catch java.util.zip.DataFormatException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
static void <clinit>()
{
java.util.regex.Pattern v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String,int)>("^\\h*package\\h+[^;\\s]+\\h*;", 8);
<org.finos.legend.engine.shared.javaCompiler.StringJavaSource: java.util.regex.Pattern PACKAGE_DECLARATION_PATTERN> = v;
return;
}
}