harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Denis Kishenko" <dkishe...@gmail.com>
Subject Re: [jira] Created: (HARMONY-1538) [classlib][awt] Successor of CubicCurve2D throws NPE in contains() if getBounds2D() returns null
Date Mon, 25 Sep 2006 11:57:57 GMT
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) <jira@apache.org>:
> [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: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message