You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Ilya Okomin (JIRA)" <ji...@apache.org> on 2006/08/11 12:37:15 UTC

[jira] Commented: (HARMONY-1158) [classlib][luni]Compatibility: java.net.URL new URL("ss", null, -3, null) throws MalformedURLException while RI throws NPE

    [ http://issues.apache.org/jira/browse/HARMONY-1158?page=comments#action_12427497 ] 
            
Ilya Okomin commented on HARMONY-1158:
--------------------------------------

I believe this case is implementation dependent. If you look in the spec you can find phrase "No validation of the inputs is performed by this constructor." at the end. Thus all thrown exceptions during initialization is based on the inner logics. To be compatible with the RI we have to have the same inner logics that is impossible, because of it is private.
I was trying to catch this logics based on the constructor playing with arguments combination (correct/incorrect) and found that it is not trivial on RI:
1. new URL("ss", "0", -3, null);
java.net.MalformedURLException: Invalid port number :-3

2. new URL("ss", null, -3, null);
java.lang.NullPointerException

3. new URL("ss", "0", -3, "file");
java.net.MalformedURLException: Invalid port number :-3

4. new URL("ss", null, -3, "file");
java.net.MalformedURLException: unknown protocol: ss

5. new URL("ss", "0", -1, null);
java.lang.NullPointerException

As you can see: in 2 and 4 host is null, but we throw different exceptions.
If we assume that NPE depends on file ?= null (see 2 and 5) than it is false for the 1 case!!

I would suggest not to make any changes in the URL class constructor if existed implementation of URL class works correct and passes other unit tests.


> [classlib][luni]Compatibility: java.net.URL new URL("ss", null, -3, null) throws MalformedURLException while RI throws NPE
> --------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1158
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1158
>             Project: Harmony
>          Issue Type: Bug
>          Components: Non-bug differences from RI
>            Reporter: Ilya Okomin
>
> Compatibility. Different order of exceptions.
> RI throws unspecified NPE in java.net.URL("ss", null, -3, null) constructor if host ==null while Harmony at first checks port and throws MalformedURLException.
> If host != null both RI and Harmony throw MalformedURLException.
> =============test.java=============
> import java.net.*;
> public class test  {
>     public static void main (String[] args) {
>        try {
>             new URL("ss", "0", -3, null);
>        } catch (Exception e) {
>            e.printStackTrace();
>        }
>        try {
>             new URL("ss", null, -3, null);
>        } catch (Exception e) {
>            e.printStackTrace();
>        }
>     }
> }
> =======================================
> Output on RI:
> java.net.MalformedURLException: Invalid port number :-3
>         at java.net.URL.<init>(URL.java:373)
>         at java.net.URL.<init>(URL.java:283)
>         at test.main(test.java:7)
> java.lang.NullPointerException
>         at java.net.Parts.<init>(URL.java:1259)
>         at java.net.URL.<init>(URL.java:380)
>         at java.net.URL.<init>(URL.java:283)
>         at test.main(test.java:13)
> Output on Harmony:
> java.net.MalformedURLException: Port out of range: -3
>         at java.net.URL.<init>(URL.java:393)
>         at java.net.URL.<init>(URL.java:367)
>         at test.main(test.java:7)
> java.net.MalformedURLException: Port out of range: -3
>         at java.net.URL.<init>(URL.java:393)
>         at java.net.URL.<init>(URL.java:367)

-- 
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