public class org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement extends java.lang.Object
{
private final org.eclipse.collections.api.map.MutableMap dependentToDependencies;
private final org.eclipse.collections.api.map.MutableMap dependencyToDependents;
private final org.eclipse.collections.api.list.MutableList topologicallyOrderedClasses;
private final org.eclipse.collections.api.map.MutableMap rankBySize;
private final org.eclipse.collections.api.map.MutableMap unionFind;
private final org.eclipse.collections.api.set.MutableSet disjointDependencyGraphs;
public void <init>(org.eclipse.collections.api.map.MutableMap)
{
org.eclipse.collections.api.block.procedure.Procedure v;
org.eclipse.collections.api.factory.list.MutableListFactory v;
org.eclipse.collections.api.factory.map.MutableMapFactory v, v, v, v;
org.eclipse.collections.api.list.MutableList v;
org.eclipse.collections.api.set.MutableSet v, v;
org.eclipse.collections.api.map.MutableMap v, v, v, v, v, v;
java.util.function.BiConsumer v;
org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement v;
org.eclipse.collections.api.factory.set.MutableSetFactory v, v;
v := @this: org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement;
v := @parameter: org.eclipse.collections.api.map.MutableMap;
specialinvoke v.<java.lang.Object: void <init>()>();
v = <org.eclipse.collections.api.factory.Maps: org.eclipse.collections.api.factory.map.MutableMapFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.map.MutableMapFactory: org.eclipse.collections.api.map.MutableMap empty()>();
v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap dependentToDependencies> = v;
v = <org.eclipse.collections.api.factory.Maps: org.eclipse.collections.api.factory.map.MutableMapFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.map.MutableMapFactory: org.eclipse.collections.api.map.MutableMap empty()>();
v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap dependencyToDependents> = v;
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.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.list.MutableList topologicallyOrderedClasses> = v;
v = <org.eclipse.collections.api.factory.Maps: org.eclipse.collections.api.factory.map.MutableMapFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.map.MutableMapFactory: org.eclipse.collections.api.map.MutableMap empty()>();
v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap rankBySize> = v;
v = <org.eclipse.collections.api.factory.Maps: org.eclipse.collections.api.factory.map.MutableMapFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.map.MutableMapFactory: org.eclipse.collections.api.map.MutableMap empty()>();
v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap unionFind> = v;
v = <org.eclipse.collections.api.factory.Sets: org.eclipse.collections.api.factory.set.MutableSetFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.set.MutableSetFactory: org.eclipse.collections.api.set.MutableSet empty()>();
v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.set.MutableSet disjointDependencyGraphs> = v;
v = <org.eclipse.collections.api.factory.Sets: org.eclipse.collections.api.factory.set.MutableSetFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.set.MutableSetFactory: org.eclipse.collections.api.set.MutableSet empty()>();
v = staticinvoke <org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement$lambda_new_1__2307: java.util.function.BiConsumer bootstrap$(org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement,org.eclipse.collections.api.set.MutableSet,org.eclipse.collections.api.map.MutableMap)>(v, v, v);
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: void forEach(java.util.function.BiConsumer)>(v);
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap dependentToDependencies>;
v = staticinvoke <org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement$lambda_new_266a6953_1__2308: org.eclipse.collections.api.block.procedure.Procedure bootstrap$(org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement,org.eclipse.collections.api.set.MutableSet)>(v, v);
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: void forEachKey(org.eclipse.collections.api.block.procedure.Procedure)>(v);
return;
}
private void collectAbstractClasses(java.lang.Class, org.eclipse.collections.api.set.MutableSet)
{
org.eclipse.collections.api.set.MutableSet v;
int v;
org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement v;
java.lang.Class v;
boolean v;
v := @this: org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement;
v := @parameter: java.lang.Class;
v := @parameter: org.eclipse.collections.api.set.MutableSet;
v = virtualinvoke v.<java.lang.Class: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isAbstract(int)>(v);
if v == 0 goto label;
interfaceinvoke v.<org.eclipse.collections.api.set.MutableSet: boolean add(java.lang.Object)>(v);
label:
return;
}
public void detectCircularDependency()
{
org.finos.legend.engine.protocol.pure.v.model.context.EngineErrorType v;
org.eclipse.collections.api.factory.map.MutableMapFactory v;
org.eclipse.collections.api.list.MutableList v;
org.eclipse.collections.api.set.MutableSet v;
org.eclipse.collections.api.map.MutableMap v, v, v, v;
int v, v, v, v;
java.util.function.BiConsumer v, v;
org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement v;
java.util.LinkedList v;
boolean v;
org.eclipse.collections.api.factory.set.MutableSetFactory v;
java.util.function.Consumer v;
org.finos.legend.engine.shared.core.operational.errorManagement.EngineException v;
java.lang.Object v, v;
v := @this: org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement;
v = <org.eclipse.collections.api.factory.Maps: org.eclipse.collections.api.factory.map.MutableMapFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.map.MutableMapFactory: org.eclipse.collections.api.map.MutableMap empty()>();
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap dependentToDependencies>;
v = staticinvoke <org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement$lambda_detectCircularDependency_3__2309: java.util.function.BiConsumer bootstrap$(org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement,org.eclipse.collections.api.map.MutableMap)>(v, v);
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: void forEach(java.util.function.BiConsumer)>(v);
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v = staticinvoke <org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement$lambda_detectCircularDependency_4__2310: java.util.function.BiConsumer bootstrap$(java.util.Queue)>(v);
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: void forEach(java.util.function.BiConsumer)>(v);
v = 0;
label:
v = interfaceinvoke v.<java.util.Queue: boolean isEmpty()>();
if v != 0 goto label;
v = interfaceinvoke v.<java.util.Queue: int size()>();
v = <org.eclipse.collections.api.factory.Sets: org.eclipse.collections.api.factory.set.MutableSetFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.set.MutableSetFactory: org.eclipse.collections.api.set.MutableSet empty()>();
v = 0;
label:
if v >= v goto label;
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
interfaceinvoke v.<org.eclipse.collections.api.set.MutableSet: boolean add(java.lang.Object)>(v);
v = v + 1;
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap dependencyToDependents>;
v = interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object get(java.lang.Object)>(v);
v = staticinvoke <org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement$lambda_detectCircularDependency_5__2311: java.util.function.Consumer bootstrap$(org.eclipse.collections.api.map.MutableMap,java.util.Queue)>(v, v);
interfaceinvoke v.<java.util.Collection: void forEach(java.util.function.Consumer)>(v);
v = v + 1;
goto label;
label:
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.list.MutableList topologicallyOrderedClasses>;
interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap dependencyToDependents>;
v = interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: int size()>();
if v == v goto label;
v = new org.finos.legend.engine.shared.core.operational.errorManagement.EngineException;
v = <org.finos.legend.engine.protocol.pure.v.model.context.EngineErrorType: org.finos.legend.engine.protocol.pure.v.model.context.EngineErrorType COMPILATION>;
specialinvoke v.<org.finos.legend.engine.shared.core.operational.errorManagement.EngineException: void <init>(java.lang.String,org.finos.legend.engine.protocol.pure.v.model.context.EngineErrorType)>("Detected a circular dependency in dependencyGraph", v);
throw v;
label:
return;
}
public org.eclipse.collections.api.map.MutableMap getDependentToDependencies()
{
org.eclipse.collections.api.factory.map.FixedSizeMapFactory v;
org.eclipse.collections.api.map.MutableMap v;
org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement v;
java.lang.Object v;
v := @this: org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement;
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap dependentToDependencies>;
if v != null goto label;
v = <org.eclipse.collections.api.factory.Maps: org.eclipse.collections.api.factory.map.FixedSizeMapFactory fixedSize>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.map.FixedSizeMapFactory: org.eclipse.collections.api.map.FixedSizeMap empty()>();
goto label;
label:
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap dependentToDependencies>;
label:
return v;
}
public org.eclipse.collections.api.map.MutableMap getDependencyToDependents()
{
org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement v;
org.eclipse.collections.api.map.MutableMap v;
v := @this: org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement;
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap dependencyToDependents>;
return v;
}
public org.eclipse.collections.api.list.MutableList getTopologicallyOrderedClasses()
{
org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement v;
org.eclipse.collections.api.list.MutableList v;
v := @this: org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement;
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.list.MutableList topologicallyOrderedClasses>;
return v;
}
public org.eclipse.collections.api.set.MutableSet getDisjointDependencyGraphs()
{
org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement v;
org.eclipse.collections.api.set.MutableSet v;
v := @this: org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement;
specialinvoke v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: void constructDisjointDependencyGraphs()>();
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.set.MutableSet disjointDependencyGraphs>;
return v;
}
private void constructDisjointDependencyGraphs()
{
java.util.Collection v;
org.eclipse.collections.api.factory.map.MutableMapFactory v;
org.eclipse.collections.api.set.MutableSet v;
org.eclipse.collections.api.map.MutableMap v, v, v;
java.util.function.BiConsumer v, v;
org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement v;
v := @this: org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement;
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap dependentToDependencies>;
v = staticinvoke <org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement$lambda_constructDisjointDependencyGraphs_7__2312: java.util.function.BiConsumer bootstrap$(org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement)>(v);
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: void forEach(java.util.function.BiConsumer)>(v);
v = <org.eclipse.collections.api.factory.Maps: org.eclipse.collections.api.factory.map.MutableMapFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.map.MutableMapFactory: org.eclipse.collections.api.map.MutableMap empty()>();
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap unionFind>;
v = staticinvoke <org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement$lambda_constructDisjointDependencyGraphs_8__2313: java.util.function.BiConsumer bootstrap$(org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement,org.eclipse.collections.api.map.MutableMap)>(v, v);
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: void forEach(java.util.function.BiConsumer)>(v);
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.set.MutableSet disjointDependencyGraphs>;
v = interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.util.Collection values()>();
interfaceinvoke v.<org.eclipse.collections.api.set.MutableSet: boolean addAll(java.util.Collection)>(v);
return;
}
private boolean connected(java.lang.Class, java.lang.Class)
{
org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement v;
java.lang.Class v, v, v, v;
boolean v;
v := @this: org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Class;
v = specialinvoke v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: java.lang.Class find(java.lang.Class)>(v);
v = specialinvoke v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: java.lang.Class find(java.lang.Class)>(v);
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private java.lang.Class find(java.lang.Class)
{
org.eclipse.collections.api.map.MutableMap v, v, v, v;
org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement v;
java.lang.Class v, v;
java.lang.Object v, v, v;
v := @this: org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement;
v := @parameter: java.lang.Class;
v = v;
label:
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap unionFind>;
v = interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object get(java.lang.Object)>(v);
if v == v goto label;
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap unionFind>;
v = interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object get(java.lang.Object)>(v);
goto label;
label:
if v == v goto label;
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap unionFind>;
v = interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object get(java.lang.Object)>(v);
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap unionFind>;
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v;
goto label;
label:
return v;
}
private void union(java.lang.Class, java.lang.Class)
{
java.lang.Integer v, v, v, v;
org.eclipse.collections.api.map.MutableMap v, v, v, v, v, v, v, v;
int v, v, v, v;
org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement v;
boolean v;
java.lang.Class v, v, v, v;
java.lang.Object v, v;
v := @this: org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Class;
v = specialinvoke v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: boolean connected(java.lang.Class,java.lang.Class)>(v, v);
if v == 0 goto label;
return;
label:
v = specialinvoke v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: java.lang.Class find(java.lang.Class)>(v);
v = specialinvoke v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: java.lang.Class find(java.lang.Class)>(v);
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap rankBySize>;
v = interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object get(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap rankBySize>;
v = interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object get(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
if v <= v goto label;
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap unionFind>;
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap rankBySize>;
v = v + v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap rankBySize>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(0);
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap unionFind>;
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap rankBySize>;
v = v + v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.finos.legend.engine.language.pure.compiler.toPureGraph.DependencyManagement: org.eclipse.collections.api.map.MutableMap rankBySize>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(0);
interfaceinvoke v.<org.eclipse.collections.api.map.MutableMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
return;
}
}