Return-Path: Delivered-To: apmail-incubator-harmony-dev-archive@www.apache.org Received: (qmail 87113 invoked from network); 7 Jun 2006 10:24:16 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 7 Jun 2006 10:24:16 -0000 Received: (qmail 76884 invoked by uid 500); 7 Jun 2006 10:24:15 -0000 Delivered-To: apmail-incubator-harmony-dev-archive@incubator.apache.org Received: (qmail 76144 invoked by uid 500); 7 Jun 2006 10:24:12 -0000 Mailing-List: contact harmony-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: harmony-dev@incubator.apache.org Delivered-To: mailing list harmony-dev@incubator.apache.org Received: (qmail 76133 invoked by uid 99); 7 Jun 2006 10:24:12 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 07 Jun 2006 03:24:12 -0700 X-ASF-Spam-Status: No, hits=1.4 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (asf.osuosl.org: 202.81.18.152 is neither permitted nor denied by domain of firepure@gmail.com) Received: from [202.81.18.152] (HELO ausmtp04.au.ibm.com) (202.81.18.152) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 07 Jun 2006 03:24:10 -0700 Received: from sd0109e.au.ibm.com (d23rh905.au.ibm.com [202.81.18.225]) by ausmtp04.au.ibm.com (8.13.6/8.13.5) with ESMTP id k57AR1M5202846 for ; Wed, 7 Jun 2006 20:27:01 +1000 Received: from d23av01.au.ibm.com (d23av01.au.ibm.com [9.190.250.242]) by sd0109e.au.ibm.com (8.12.10/NCO/VER6.8) with ESMTP id k57AQr32068644 for ; Wed, 7 Jun 2006 20:26:55 +1000 Received: from d23av01.au.ibm.com (loopback [127.0.0.1]) by d23av01.au.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id k57ANJBS029622 for ; Wed, 7 Jun 2006 20:23:19 +1000 Received: from d23m0011.cn.ibm.com (d23m0011.cn.ibm.com [9.181.32.74]) by d23av01.au.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id k57ANHXg029479 for ; Wed, 7 Jun 2006 20:23:17 +1000 Received: from [9.181.107.166] ([9.181.107.166]) by d23m0011.cn.ibm.com (Lotus Domino Release 6.5.5HF262) with ESMTP id 2006060718231459-18047 ; Wed, 7 Jun 2006 18:23:14 +0800 Message-ID: <4486A89D.8030609@gmail.com> Date: Wed, 07 Jun 2006 18:21:17 +0800 From: "Jimmy, Jing Lv" User-Agent: Thunderbird 1.5.0.4 (Windows/20060516) MIME-Version: 1.0 To: harmony-dev@incubator.apache.org Subject: Re: [classlib] Enum ready to go References: <4485B59A.1090901@gmail.com> <6e47b64f0606062217i80985c6tf3f3975a9ed82503@mail.gmail.com> <4d0b24970606062229h936ef3dw501c4cd7e0518edb@mail.gmail.com> <6e47b64f0606062250p2ac0a283t3665dd72e847219f@mail.gmail.com> <4d0b24970606070023x3ac81970q57e097504fc1fe9a@mail.gmail.com> <44869CFC.1030007@gmail.com> <906dd82e0606070245t2b657820o958ea72cf7c0556d@mail.gmail.com> <4486A50C.6080200@gmail.com> <906dd82e0606070312k747964d6sd7db47a5a952008@mail.gmail.com> In-Reply-To: <906dd82e0606070312k747964d6sd7db47a5a952008@mail.gmail.com> X-MIMETrack: Itemize by SMTP Server on D23M0011/23/M/IBM(Release 6.5.5HF262 | April 5, 2006) at 07/06/2006 18:23:14, Serialize by Router on D23M0011/23/M/IBM(Release 6.5.5HF262 | April 5, 2006) at 07/06/2006 18:23:17, Serialize complete at 07/06/2006 18:23:17 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Mikhail Loenko wrote: > 2006/6/7, Tim Ellison : >> The Sun 1.5.0_06 compiler was driven directly by our build scripts (so >> using jsr14) and the Eclipse 3.2RC4 compiler has source 1.5 target 1.4 >> set. >> >> I could throw an IAE from Enum#valueOf(Class, null) when the Enum is >> empty, but seems a bit of a drag to work around the compilers. >> >> (which version of BEA javac?) > > javac -version prints just "1.5.0" > java -version prints "build 1.5.0-b64" > I would bet the tests shall pass if using javac of java-version "build 1.5.0_01" or later :) And as the tests also fail on RI of "build 1.5.0-b64" (I've just find one:) ), I guess it is a bug of RI, which was fixed in the later version. What's more, shall we also suggest that everyone use a latest version of javac to avoid such problem? > >> >> Regards, >> Tim >> >> Mikhail Loenko wrote: >> > Are you compiling with "jsr14" as our build does? >> > >> > I'm using BEA javac with "jsr14" it compiles to something like this: >> > for(i=0; i < values.length; i++ ) >> > if( values[i].name().equals(argument) ) >> > return values[i].name().equals(argument) >> > throw IAE >> > >> > 2006/6/7, Tim Ellison : >> >> Maybe compiler specific. >> >> >> >> Looking at Proxy.Type it appears that the Sun compiler 1.5.0_06 >> >> delegates to the Enum type: >> >> >> >> public static Type valueOf(String name) >> >> { >> >> return (Type)Enum.valueOf( >> >> Proxy.class$java$net$Proxy$Type != null ? >> >> Proxy.class$java$net$Proxy$Type : >> >> ( >> >> Proxy.class$java$net$Proxy$Type = >> >> Proxy._mthclass$("java.net.Proxy$Type") >> >> ), >> >> name); >> >> } >> >> >> >> >> >> and the Eclipse compiler 3.2RC4 looks up the constant itself: >> >> >> >> public static Type valueOf(String s) >> >> { >> >> Type atype[]; >> >> Type type1; >> >> for(int i = (atype = ENUM$VALUES).length; --i >= 0;) >> >> if(s.equals((type1 = atype[i]).name())) >> >> return type1; >> >> throw new IllegalArgumentException(s); >> >> } >> >> >> >> >> >> In the Sun compiler a null name argument gets passed to >> >> Enum#valueOf(Class, String) where I check and throw NPE. >> >> >> >> In the Eclipse compiler the line if(s.equals(...)... will cause a NPE >> >> iff there are entries in the VALUES array (otherwise it doesn't go >> into >> >> the for-loop) and throws an IAE without going into my code. >> >> >> >> Maybe I can withdraw the null name test while we settle this? >> > >> > We now have 3 tests failing >> > >> > Thanks, >> > Mikhail >> > >> > >> > >> >> >> >> Regards, >> >> Tim >> >> >> >> >> >> Andrew Zhang wrote: >> >> > Hi, Stepan, >> >> > >> >> > The test you metioned is passed in my environment: >> >> > RI version: 1.5.0_02. >> >> > Linux: Read hat Enterprise Linux AS(2.4.21-15.EL) >> >> > >> >> > Is the problem caused by earlier version javac? >> >> > >> >> > I remember that RI of earlier verion throws IAE instead of NPE >> when the >> >> > arguement is null. >> >> > >> >> > Would you please check "java" version? >> >> > >> >> > Thanks. >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > On 6/7/06, Stepan Mishura wrote: >> >> >> >> >> >> I found the reason - tests expect NPE when valueOf(null) is invoked >> >> but >> >> >> IAE >> >> >> is thrown instead. For example, >> >> >> >> >> >> java.lang.IllegalArgumentException >> >> >> at org.apache.harmony.tests.java.lang.EnumTest$Sample.valueOf( >> >> >> EnumTest.java >> >> >> :22) >> >> >> at >> >> >> >> >> >> org.apache.harmony.tests.java.lang.EnumTest.test_valueOfLjava_lang_String >> >> >> (EnumTest.java :113) >> >> >> at >> >> java.lang.reflect.AccessibleObject.invokeV(AccessibleObject.java:205) >> >> >> >> >> >> Thanks, >> >> >> Stepan. >> >> >> >> >> >> On 6/7/06, Andrew Zhang wrote: >> >> >> > >> >> >> > Hello Stepan and Mikhail, >> >> >> > >> >> >> > All tests passed on my machine. >> >> >> > >> >> >> > Which test case was failed in your environment, on RI or Harmony? >> >> >> > >> >> >> > Thanks! >> >> >> > >> >> >> > >> >> >> > On 6/7/06, Stepan Mishura wrote: >> >> >> > > >> >> >> > > Hi Tim, >> >> >> > > >> >> >> > > On 6/7/06, Tim Ellison wrote: >> >> >> > > > >> >> >> > > > Heads up that I completed the implementation of j.l.Enum >> >> today; so >> >> >> you >> >> >> > > > can go mad and use enum types in classlib code for real now. >> >> >> > > >> >> >> > > >> >> >> > > Cool! >> >> >> > > >> >> >> > > I wrote a bunch of tests but if you could hammer on it and >> try to >> >> >> break >> >> >> > > > it that would be good :-) >> >> >> > > >> >> >> > > >> >> >> > > And did you run it? :-) It fails for me :-( >> >> >> > > >> >> >> > > Thanks, >> >> >> > > Stepan. >> >> >> > > >> >> >> > > If you take a look at the implementation [1] of valueOf(Class, >> >> >> String) >> >> >> > > > it uses reflection to get the enum constant values. I'm not >> >> sure >> >> >> how >> >> >> > > > 'popular' the valueOf() method is, but since the values don't >> >> >> change >> >> >> > > > they are a good candidate for being cached if it proves to be >> >> >> called >> >> >> > > > frequently. I'm happy to do that if people think it is >> >> worthwhile. >> >> >> > > > >> >> >> > > > Regards, >> >> >> > > > Tim >> >> >> > > > >> >> >> > > > >> >> >> > > > [1] >> >> >> > > > >> >> >> > > > >> >> >> > > >> >> >> > >> >> >> >> >> >> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Enum.java?revision=412166&view=markup >> >> >> >> >> >> >> >> >> > > > >> >> >> > >> >> >> > >> >> >> > >> >> >> >> >> >> >> >> >> ------------------------------------------------------ >> >> >> 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 >> >> >> >> >> >> >> >> > >> >> > >> >> >> >> -- >> >> >> >> Tim Ellison (t.p.ellison@gmail.com) >> >> IBM Java technology centre, UK. >> >> >> >> --------------------------------------------------------------------- >> >> 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 >> >> >> >> >> > >> > --------------------------------------------------------------------- >> > 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 >> > >> > >> >> -- >> >> Tim Ellison (t.p.ellison@gmail.com) >> IBM Java technology centre, UK. >> >> --------------------------------------------------------------------- >> 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 >> >> > > --------------------------------------------------------------------- > 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 > > -- Best Regards! Jimmy, Jing Lv China Software Development Lab, IBM --------------------------------------------------------------------- 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