Hi all
I think this is non-bug difference.
If successor of CubicCurve2D returns null instead of bounds then
Harmony throws NPE in contains() method while RI doesn't. It seems
like RI doesn't use getBounds2D() to implement contains() method while
Harmony does.
I see three possibilities
1. Exclude using of getBounds2D() from contains(). In this case
algorithm efficiency will slow down because it's part of optimization.
2. Add at contains() method an additional bounds calculation. In this
case we will get strange code duplication.
3. Stay as non-bug difference. It's very strange situation if shape
returns null bounds but such shapes are drawn well (run the test).
Comments?
2006/9/22, Denis Kishenko (JIRA) <[EMAIL PROTECTED]>:
[classlib][awt] Successor of CubicCurve2D throws NPE in contains() if
getBounds2D() returns null
-------------------------------------------------------------------------------------------------
Key: HARMONY-1538
URL: http://issues.apache.org/jira/browse/HARMONY-1538
Project: Harmony
Issue Type: Bug
Components: Classlib
Reporter: Denis Kishenko
If successor of CubicCurve2D returns null instead of bounds then Harmony throws
NPE while RI doesn't. Harmony use shape bounds getBounds2D() to implement
contains() and intersects() methods but It seems like RI doesn't use bounds for
this.
============== Test.java =================
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.*;
public class Test {
static public void main(String[] args) {
final CubicCurve2DImpl obj = new CubicCurve2DImpl(100, 100, 200, 200,
200, 100, 100, 200);
Frame f = new Frame("Test") {
public void paint(Graphics g) {
((Graphics2D)g).draw(obj);
}
};
f.setSize(600, 400);
f.show();
System.out.println("obj.contains="+obj.contains(0, 0));
}
}
class CubicCurve2DImpl extends java.awt.geom.CubicCurve2D.Double {
public CubicCurve2DImpl(double x1, double y1, double x2, double
y2, double x3, double y3, double x4, double y4) {
super(x1, y1, x2, y2, x3, y3, x4, y4);
}
public Rectangle2D getBounds2D() {
return null;
}
}
========= RI Output =========
obj.contains=false
======== Harmony output =====
java.lang.NullPointerException
at org.apache.harmony.awt.gl.Crossing.crossShape(Crossing.java:506)
at java.awt.geom.CubicCurve2D.contains(CubicCurve2D.java:537)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
--
Denis M. Kishenko
Intel Middleware Products Division
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]