fix(lineChart): prevent NullPointerException when lines is not configured#4919
fix(lineChart): prevent NullPointerException when lines is not configured#4919Ma77Ball wants to merge 6 commits intoapache:mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates the Line Chart visualization operator to fail fast when no line series are configured, instead of crashing with a NullPointerException during Python code generation. It fits into the visualization operator code by aligning LineChartOpDesc's configuration handling with the validation style used by similar chart operators.
Changes:
- Initialize
LineChartOpDesc.lineswith an emptyArrayListinstead of leaving itnull. - Add a non-empty assertion in
createPlotlyFigure()before generating Plotly traces. - Update
LineChartOpDescSpecto expectAssertionErrorfor default and explicitly emptylinesconfigurations.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala |
Changes Line Chart config initialization and adds fail-fast validation before trace generation. |
common/workflow-operator/src/test/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDescSpec.scala |
Updates unit tests to cover the new empty/default lines validation behavior. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@aglinxinyuan please review. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4919 +/- ##
============================================
- Coverage 42.68% 42.12% -0.57%
+ Complexity 2183 2181 -2
============================================
Files 1031 980 -51
Lines 38110 36254 -1856
Branches 4004 3787 -217
============================================
- Hits 16269 15271 -998
+ Misses 20824 20051 -773
+ Partials 1017 932 -85
*This pull request uses carry forward flags. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@aglinxinyuan, can you merge if it looks good? |
What changes were proposed in this PR?
LineChartOpDesc declared var lines: util.List[LineConfig] = _, which defaults to null in Scala/Java. Calling generatePythonCode() on a freshly constructed instance immediately crashed with a NullPointerException at
createPlotlyFigure because .asScala.map(...) was called on a null reference.
Two changes:
Any related issues, documentation, or discussions?
closes: #4811
How was this PR tested?
Unit tests in LineChartOpDescSpec cover:
Was this PR authored or co-authored using generative AI tooling?
Co-authored with Claude opus 4.6 in compliance with ASF