From: SourceForge.net <no...@so...> - 2006-11-10 11:10:31
|
Bugs item #1593156, was opened at 2006-11-09 06:22 Message generated for change (Comment added) made by mungady You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=115494&aid=1593156&group_id=15494 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. >Category: General >Group: 1.0.x >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: Alex Mont (alex319) >Assigned to: David Gilbert (mungady) Summary: StackedXYAreaRenderer with line plotting causes NPE Initial Comment: If you create a StackedXYAreaRenderer with line plotting turned on (i.e. with "type" set to LINES or SHAPES_AND_LINES), it will throw a null pointer exception when you call drawItem() on it with pass == 0 and item > 0. This is caused because the result of areaState.getLine(), which is the field areaState.line, is dereferenced at lines 457, 461, and 464. However areaState.line will always be null, because it is set to null during the constructor for StackedXYAreaRendererState, and there is no possible way it can be set to anything else. (line is a private field of StackedXYAreaRendererState, and that class has no functions which could modify line). The following is a test case which demonstrates the error: ---- import org.jfree.chart.renderer.xy.StackedXYAreaRenderer; import org.jfree.chart.renderer.xy.XYItemRendererState; import org.jfree.data.statistics.*; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.plot.FastScatterPlot; import org.jfree.chart.plot.PlotRenderingInfo; import org.jfree.chart.plot.CrosshairState; import org.jfree.data.xy.DefaultTableXYDataset; import org.jfree.data.xy.XYSeries; import java.awt.Graphics2D; import java.awt.Button; import java.awt.geom.Rectangle2D; import java.awt.geom.Point2D; import java.util.ArrayList; import java.lang.Double; Button aButton = new Button(); Graphics2D theGraphics = (Graphics2D)aButton.getGraphics(); Rectangle2D theRectangle = new Rectangle2D.Double(0.0, 0.0, 1.0, 1.0); PlotRenderingInfo thePlotRenderingInfo = null; XYPlot theXYPlot = new XYPlot(); StackedXYAreaRenderer theRenderer = new StackedXYAreaRenderer(org.jfree.chart.renderer.xy.XYAreaRenderer.LINES); theRenderer.setPlot(theXYPlot); NumberAxis theXAxis = new NumberAxis("X axis"); NumberAxis theYAxis = new NumberAxis("Y axis"); XYSeries theSeries = new XYSeries("The Series", false, false); theSeries.add(0.8, 0.3); theSeries.add(0.6, 0.6); theSeries.add(0.4, 0.9); DefaultTableXYDataset theData = new DefaultTableXYDataset(); theData.addSeries(theSeries); int series = 0; CrosshairState theCrosshairState = new CrosshairState(); int thePass = 0; XYItemRendererState theState = theRenderer.initialise(theGraphics, theRectangle, theXYPlot, theData, thePlotRenderingInfo); try{ theRenderer.drawItem(theGraphics, theState, theRectangle, thePlotRenderingInfo, theXYPlot, theXAxis, theYAxis, theData, series, 0, theCrosshairState, thePass); theRenderer.drawItem(theGraphics, theState, theRectangle, thePlotRenderingInfo, theXYPlot, theXAxis, theYAxis, theData, series, 1, theCrosshairState, thePass); } catch(NullPointerException e){ System.out.println("A null pointer exception has occurred."); } ---- ---------------------------------------------------------------------- >Comment By: David Gilbert (mungady) Date: 2006-11-10 11:10 Message: Logged In: YES user_id=112975 Thanks for the report. I've committed a fix to CVS, for inclusion in the 1.0.3 release. Regards, Dave Gilbert JFreeChart Project Leader ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=115494&aid=1593156&group_id=15494 |