elk icon indicating copy to clipboard operation
elk copied to clipboard

Layered INCLUDE_CHILDREN with forceNodeModelOrder causes NPE

Open alexjmu opened this issue 3 months ago • 1 comments

Describe the bug

crossingMinimization.forceNodeModelOrder causes a NullPointerException when INCLUDE_CHILDREN is set.

Minimal graph:

graph root
algorithm: layered
hierarchyHandling: INCLUDE_CHILDREN
node container {
	crossingMinimization.forceNodeModelOrder: true
	node childOne {
		layout [ size: 10, 10 ]
	}
	node childTwo {
		layout [ size: 10, 10 ]
	}
}

Exception:

java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.eclipse.elk.alg.layered.graph.LGraph.getProperty(org.eclipse.elk.graph.properties.IProperty)" is null
    at org.eclipse.elk.alg.layered.p3order.ModelOrderBarycenterHeuristic.lambda$0 (ModelOrderBarycenterHeuristic.java:80)
    at org.eclipse.elk.alg.layered.p3order.ModelOrderBarycenterHeuristic.insertionSort (ModelOrderBarycenterHeuristic.java:240)
    at org.eclipse.elk.alg.layered.p3order.ModelOrderBarycenterHeuristic.minimizeCrossings (ModelOrderBarycenterHeuristic.java:124)
    at org.eclipse.elk.alg.layered.p3order.BarycenterHeuristic.setFirstLayerOrder (BarycenterHeuristic.java:360)
    at org.eclipse.elk.alg.layered.p3order.LayerSweepCrossingMinimizer.minimizeCrossingsWithCounter (LayerSweepCrossingMinimizer.java:244)
    at org.eclipse.elk.alg.layered.p3order.LayerSweepCrossingMinimizer.compareDifferentRandomizedLayouts (LayerSweepCrossingMinimizer.java:216)
    at org.eclipse.elk.alg.layered.p3order.LayerSweepCrossingMinimizer.minimizeCrossings (LayerSweepCrossingMinimizer.java:149)
    at org.eclipse.elk.alg.layered.p3order.LayerSweepCrossingMinimizer.process (LayerSweepCrossingMinimizer.java:127)
    at org.eclipse.elk.alg.layered.p3order.LayerSweepCrossingMinimizer.process (LayerSweepCrossingMinimizer.java:1)
    at org.eclipse.elk.alg.layered.ElkLayered.hierarchicalLayout (ElkLayered.java:269)
    at org.eclipse.elk.alg.layered.ElkLayered.doCompoundLayout (ElkLayered.java:186)
    at org.eclipse.elk.alg.layered.LayeredLayoutProvider.layout (LayeredLayoutProvider.java:53)
    at org.eclipse.elk.core.RecursiveGraphLayoutEngine.executeAlgorithm (RecursiveGraphLayoutEngine.java:456)
    at org.eclipse.elk.core.RecursiveGraphLayoutEngine.layoutRecursively (RecursiveGraphLayoutEngine.java:423)
    at org.eclipse.elk.core.RecursiveGraphLayoutEngine.layout (RecursiveGraphLayoutEngine.java:105)
    at org.eclipse.elk.core.RecursiveGraphLayoutEngine.layout (RecursiveGraphLayoutEngine.java:81)
    at com.pylon.ElkDebug.main (ElkDebug.java:28)
    at org.codehaus.mojo.exec.ExecJavaMojo.doExec (ExecJavaMojo.java:371)
    at org.codehaus.mojo.exec.ExecJavaMojo.lambda$execute$0 (ExecJavaMojo.java:289)
    at java.lang.Thread.run (Thread.java:1447)

Expected behavior

Should run without error, as in 0.10.0.

ELK Version

0.11.0 (not available on elk live)

alexjmu avatar Oct 02 '25 05:10 alexjmu