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/25 11:31:25 UTC

[jira] Commented: (HARMONY-1087) [classlib][crypto] compatibility: RI throws IllegalStateException while Harmony IOException (according to spec)

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

On the current classlib there are no Exceptions thrown at all.
If you look at the CipherInputStream.close() method description in the spec: "The close method of CipherInputStream calls the close method of its underlying input stream. ". Harmony implements exactly what is said in the description. Both InputStream instances(ByteArrayInputStream, BufferedInputStream) created from the test case suggested by Vladimir close without Exceptions as well in Harmony as they do in RI (you can check it running next test):
================ test.java ===================== 
import java.io.*; 

public class test { 
    public static void main (String[] args) { 

        try {
            ByteArrayInputStream bais = new ByteArrayInputStream(new byte[] { 1 });
            bais.close();
            System.out.println("ok!");
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            BufferedInputStream bis = new BufferedInputStream((InputStream) null);
            bis.close();
            System.out.println("ok!");
        } catch (Exception e) {
            e.printStackTrace();
        }
   } 
} 
============================================ 

Output: 

Harmony:java version "1.5.0" 
pre-alpha : not complete or compatible
svn = r431938, (Aug 16 2006), Windows/ia32/msvc 1310, release build
http://incubator.apache.org/harmony

ok!
ok!

RI:java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System optimized over throughput (initial strategy singleparpar))

ok!
ok!


Thus, behavior of Harmony looks quite normal for CipherInputStream.close(), IMHO it is 'non-bug diff'.

> [classlib][crypto] compatibility: RI throws IllegalStateException while Harmony IOException (according to spec)
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1087
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1087
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Vladimir Ivanov
>         Assigned To: Mikhail Loenko
>            Priority: Minor
>
> The spec says for the method javax.crypto.CipherInputStream().close(): "Throws: IOException - if an I/O error occurs."
> The Harmony implementation throws IOException for simple test while RI throws "IllegalStateException: Cipher not initialized".
> Seems, it is 'non-bug diff'.
> ================ test.java =====================
> import javax.crypto.*;
> import java.io.*;
> public class test  { 
>     public static void main (String[] args) {   
>        try {
>            new CipherInputStream(new ByteArrayInputStream(new byte[]{1}), Cipher.getInstance("DES/CBC/PKCS5Padding")).close();
>        } catch (Exception e) {
>            e.printStackTrace();
>        } 
>        try {
>            new CipherInputStream(new BufferedInputStream((InputStream)null), Cipher.getInstance("DES/CBC/PKCS5Padding")).close();
>        } catch (Exception e) {
>            e.printStackTrace();
>        } 
>     }
> }
> ============================================
> Output:
> C:\tmp\tmp17>C:\jdk1.5.0_06\bin\java.exe -cp . -showversion test
> java version "1.5.0_06"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
> Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)
> java.lang.IllegalStateException: Cipher not initialized
>         at javax.crypto.Cipher.c(DashoA12275)
>         at javax.crypto.Cipher.doFinal(DashoA12275)
>         at javax.crypto.CipherInputStream.close(DashoA12275)
>         at test.main(test.java:8)
> java.lang.IllegalStateException: Cipher not initialized
>         at javax.crypto.Cipher.c(DashoA12275)
>         at javax.crypto.Cipher.doFinal(DashoA12275)
>         at javax.crypto.CipherInputStream.close(DashoA12275)
>         at test.main(test.java:13)
> C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -cp . -showversion test
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System optimized over throughput (initial strategy singleparpar))
> java.lang.IllegalStateException: Cipher not initialized
>         at javax.crypto.Cipher.c()V(DashoA12275:???)
>         at javax.crypto.Cipher.doFinal()[B(DashoA12275:???)
>         at javax.crypto.CipherInputStream.close()V(DashoA12275:???)
>         at test.main(test.java:8)
> java.lang.IllegalStateException: Cipher not initialized
>         at javax.crypto.Cipher.c()V(DashoA12275:???)
>         at javax.crypto.Cipher.doFinal()[B(DashoA12275:???)
>         at javax.crypto.CipherInputStream.close()V(DashoA12275:???)
>         at test.main(test.java:13)
> C:\tmp\tmp17>C:\harmony\trunk_0427\deploy\jdk\jre\bin\java.exe -cp . -showversion test
> java version 1.5 (subset)
> (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> java.io.IOException: Stream is closed
>         at java.io.BufferedInputStream.close(BufferedInputStream.java:116)
>         at javax.crypto.CipherInputStream.close(CipherInputStream.java:136)
>         at test.main(test.java:13)

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