Skip to content

Layered INCLUDE_CHILDREN with forceNodeModelOrder causes NPE #1173

@alexjmu

Description

@alexjmu

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugErroneous behaviour.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions