public class org.apache.dubbo.common.compiler.support.JavassistCompiler extends org.apache.dubbo.common.compiler.support.AbstractCompiler
{
private static final java.util.regex.Pattern IMPORT_PATTERN;
private static final java.util.regex.Pattern EXTENDS_PATTERN;
private static final java.util.regex.Pattern IMPLEMENTS_PATTERN;
private static final java.util.regex.Pattern METHODS_PATTERN;
private static final java.util.regex.Pattern FIELD_PATTERN;
public void <init>()
{
org.apache.dubbo.common.compiler.support.JavassistCompiler v;
v := @this: org.apache.dubbo.common.compiler.support.JavassistCompiler;
specialinvoke v.<org.apache.dubbo.common.compiler.support.AbstractCompiler: void <init>()>();
return;
}
public java.lang.Class doCompile(java.lang.String, java.lang.String) throws java.lang.Throwable
{
org.apache.dubbo.common.compiler.support.JavassistCompiler v;
javassist.CtClass v;
java.util.regex.Matcher v, v, v;
boolean v, v, v;
java.util.function.Predicate v;
org.apache.dubbo.common.compiler.support.CtClassBuilder v;
java.util.stream.Stream v, v, v, v;
java.lang.ClassLoader v;
java.util.regex.Pattern v, v, v, v;
java.lang.String[] v, v;
java.util.function.Function v;
int v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v;
java.util.function.Consumer v, v;
java.security.ProtectionDomain v;
java.lang.Class v, v, v;
v := @this: org.apache.dubbo.common.compiler.support.JavassistCompiler;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = new org.apache.dubbo.common.compiler.support.CtClassBuilder;
specialinvoke v.<org.apache.dubbo.common.compiler.support.CtClassBuilder: void <init>()>();
virtualinvoke v.<org.apache.dubbo.common.compiler.support.CtClassBuilder: void setClassName(java.lang.String)>(v);
v = <org.apache.dubbo.common.compiler.support.JavassistCompiler: java.util.regex.Pattern IMPORT_PATTERN>;
v = virtualinvoke v.<java.util.regex.Pattern: java.util.regex.Matcher matcher(java.lang.CharSequence)>(v);
label:
v = virtualinvoke v.<java.util.regex.Matcher: boolean find()>();
if v == 0 goto label;
v = virtualinvoke v.<java.util.regex.Matcher: java.lang.String group(int)>(1);
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
virtualinvoke v.<org.apache.dubbo.common.compiler.support.CtClassBuilder: void addImports(java.lang.String)>(v);
goto label;
label:
v = <org.apache.dubbo.common.compiler.support.JavassistCompiler: java.util.regex.Pattern EXTENDS_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()>();
if v == 0 goto label;
v = virtualinvoke v.<java.util.regex.Matcher: java.lang.String group(int)>(1);
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
virtualinvoke v.<org.apache.dubbo.common.compiler.support.CtClassBuilder: void setSuperClassName(java.lang.String)>(v);
label:
v = <org.apache.dubbo.common.compiler.support.JavassistCompiler: java.util.regex.Pattern IMPLEMENTS_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()>();
if v == 0 goto label;
v = virtualinvoke v.<java.util.regex.Matcher: java.lang.String group(int)>(1);
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>("\\,");
v = staticinvoke <java.util.Arrays: java.util.stream.Stream stream(java.lang.Object[])>(v);
v = staticinvoke <org.apache.dubbo.common.compiler.support.JavassistCompiler$lambda_doCompile_0__144: java.util.function.Consumer bootstrap$(org.apache.dubbo.common.compiler.support.CtClassBuilder)>(v);
interfaceinvoke v.<java.util.stream.Stream: void forEach(java.util.function.Consumer)>(v);
label:
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(123);
v = v + 1;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(v, v);
v = <org.apache.dubbo.common.compiler.support.JavassistCompiler: java.util.regex.Pattern METHODS_PATTERN>;
v = virtualinvoke v.<java.util.regex.Pattern: java.lang.String[] split(java.lang.CharSequence)>(v);
v = staticinvoke <org.apache.dubbo.common.compiler.support.ClassUtils: java.lang.String getSimpleClassName(java.lang.String)>(v);
v = staticinvoke <java.util.Arrays: java.util.stream.Stream stream(java.lang.Object[])>(v);
v = staticinvoke <org.apache.dubbo.common.compiler.support.JavassistCompiler$trim__141: java.util.function.Function bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream map(java.util.function.Function)>(v);
v = staticinvoke <org.apache.dubbo.common.compiler.support.JavassistCompiler$lambda_doCompile_1__142: java.util.function.Predicate bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream filter(java.util.function.Predicate)>(v);
v = staticinvoke <org.apache.dubbo.common.compiler.support.JavassistCompiler$lambda_doCompile_2__143: java.util.function.Consumer bootstrap$(java.lang.String,org.apache.dubbo.common.compiler.support.CtClassBuilder)>(v, v);
interfaceinvoke v.<java.util.stream.Stream: void forEach(java.util.function.Consumer)>(v);
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <org.apache.dubbo.common.utils.ClassUtils: java.lang.ClassLoader getCallerClassLoader(java.lang.Class)>(v);
v = virtualinvoke v.<org.apache.dubbo.common.compiler.support.CtClassBuilder: javassist.CtClass build(java.lang.ClassLoader)>(v);
v = class "Lorg/apache/dubbo/common/compiler/support/JavassistCompiler;";
v = virtualinvoke v.<java.lang.Class: java.security.ProtectionDomain getProtectionDomain()>();
v = virtualinvoke v.<javassist.CtClass: java.lang.Class toClass(java.lang.ClassLoader,java.security.ProtectionDomain)>(v, v);
return v;
}
static void <clinit>()
{
java.util.regex.Pattern v, v, v, v, v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("import\\s+([\\w\\.\\*]+);\n");
<org.apache.dubbo.common.compiler.support.JavassistCompiler: java.util.regex.Pattern IMPORT_PATTERN> = v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("\\s+extends\\s+([\\w\\.]+)[^\\{]*\\{\n");
<org.apache.dubbo.common.compiler.support.JavassistCompiler: java.util.regex.Pattern EXTENDS_PATTERN> = v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("\\s+implements\\s+([\\w\\.]+)\\s*\\{\n");
<org.apache.dubbo.common.compiler.support.JavassistCompiler: java.util.regex.Pattern IMPLEMENTS_PATTERN> = v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("\n(private|public|protected)\\s+");
<org.apache.dubbo.common.compiler.support.JavassistCompiler: java.util.regex.Pattern METHODS_PATTERN> = v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("[^\n]+=[^\n]+;");
<org.apache.dubbo.common.compiler.support.JavassistCompiler: java.util.regex.Pattern FIELD_PATTERN> = v;
return;
}
}