From dev-return-39827-apmail-harmony-dev-archive=harmony.apache.org@harmony.apache.org Mon Sep 20 14:10:11 2010 Return-Path: Delivered-To: apmail-harmony-dev-archive@www.apache.org Received: (qmail 14135 invoked from network); 20 Sep 2010 14:10:11 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 20 Sep 2010 14:10:11 -0000 Received: (qmail 26876 invoked by uid 500); 20 Sep 2010 14:10:11 -0000 Delivered-To: apmail-harmony-dev-archive@harmony.apache.org Received: (qmail 26689 invoked by uid 500); 20 Sep 2010 14:10:08 -0000 Mailing-List: contact dev-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list dev@harmony.apache.org Received: (qmail 26680 invoked by uid 99); 20 Sep 2010 14:10:07 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 20 Sep 2010 14:10:07 +0000 X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of zhoukevin83@gmail.com designates 209.85.210.49 as permitted sender) Received: from [209.85.210.49] (HELO mail-pz0-f49.google.com) (209.85.210.49) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 20 Sep 2010 14:09:59 +0000 Received: by pzk32 with SMTP id 32so1569136pzk.36 for ; Mon, 20 Sep 2010 07:09:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=45yjjW06RC6u8NJoinrNxz5B1iTvctnzfXzKhj/AlMo=; b=Eln2aTH/0ejCKceumKM3xH0UQD4v3OEwAaa6v1DrK7d8vb6FKYgNnvKtI4PMZB+PCY zSwxC6gJejN5kUuMgB/EZa2iG6EJewlIAWxIzay8Wahwdz0b1/9BVgFAOHkbXo3Z13C+ S0L2u6urqgJuV1UJ3D/xlFyzGeK/5xdXIsSGg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; b=mKkWfNbamwWSRVJWXUArUK/3S1jZLnSLwMXKIQSE6XGu4nDYWQdVNieg8scllL9fzm IbzES6yM0VXXASrOXjjaJXoKh/ikFtSUFZZMQMMFBHRnOknjfnSLNrZqTvOYw06bxJZx SQwzMR6m+TR1RKZRs4BiY8R7IB52NcmoqgRog= Received: by 10.114.66.20 with SMTP id o20mr10020668waa.163.1284991779375; Mon, 20 Sep 2010 07:09:39 -0700 (PDT) Received: from [192.168.0.2] ([112.64.220.84]) by mx.google.com with ESMTPS id o17sm13582142wal.9.2010.09.20.07.09.34 (version=SSLv3 cipher=RC4-MD5); Mon, 20 Sep 2010 07:09:37 -0700 (PDT) Message-ID: <4C976B14.8060106@gmail.com> Date: Mon, 20 Sep 2010 22:09:24 +0800 From: Kevin Zhou User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.9) Gecko/20100915 Lightning/1.0b2 Thunderbird/3.1.4 MIME-Version: 1.0 To: dev@harmony.apache.org Subject: Re: svn commit: r998763 - in /harmony/enhanced/java/branches/java6/classlib/modules/beans/src: main/java/java/beans/ test/java/org/apache/harmony/beans/tests/java/beans/ test/resources/xml/ References: <20100920023230.0A31423889F1@eris.apache.org> <201009200817.o8K8HUQR012125@d12av02.megacenter.de.ibm.com> In-Reply-To: <201009200817.o8K8HUQR012125@d12av02.megacenter.de.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 2010-9-20 16:17, Mark Hindess wrote: > Kevin, > > You might want to check your svn client is configured to set the > svn:eol-style property for new text files. See: > > http://wiki.apache.org/harmony/NewCommitter#line-29 > > I fixed this (and a missing license header) in r998814 and r998823. > > Regards, > -Mark. > > > In message<20100920023230.0A31423889F1@eris.apache.org>, zhoukevin@apache.org > writes: >> Author: zhoukevin >> Date: Mon Sep 20 02:32:29 2010 >> New Revision: 998763 >> >> URL: http://svn.apache.org/viewvc?rev=998763&view=rev >> Log: >> When encoding a Enum property in a bean class, if it doesn't set a customized >> persistence delegate for Enum class thru java.beans.Encoder.setPersistenceDe >> legate(Class, PersistenceDelegate), RI6 encodes this property successfully wh >> ile HARMONY6 fails to encode this property with some exception messages: >> >> Exception during encoding:java.lang.Exception: failed to write expression: XM >> LEncoderTest$Element=Class.new(); >> Continue... >> Exception during encoding:java.lang.Exception: failed to write expression: XM >> LEncoderTest$Element=Class.new(); >> Continue... >> >> By comparison, RI5 performs the same as HARMONY5, which fails to encode this >> property with the above exceptions. That's why this patch is only committed t >> o HARMONY6 branch to follow the behavior of RI6. >> >> Added: >> harmony/enhanced/java/branches/java6/classlib/modules/beans/src/main/java >> /java/beans/LangEnumPersistenceDelegate.java >> harmony/enhanced/java/branches/java6/classlib/modules/beans/src/test/reso >> urces/xml/MockEnumObject.xml >> Modified: >> harmony/enhanced/java/branches/java6/classlib/modules/beans/src/main/java >> /java/beans/Encoder.java >> harmony/enhanced/java/branches/java6/classlib/modules/beans/src/test/java >> /org/apache/harmony/beans/tests/java/beans/XMLEncoderTest.java >> >> Modified: harmony/enhanced/java/branches/java6/classlib/modules/beans/src/mai >> n/java/java/beans/Encoder.java >> URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/java6/classl >> ib/modules/beans/src/main/java/java/beans/Encoder.java?rev=998763&r1=998762&r >> 2=998763&view=diff >> ============================================================================= >> = >> --- harmony/enhanced/java/branches/java6/classlib/modules/beans/src/main/java >> /java/beans/Encoder.java (original) >> +++ harmony/enhanced/java/branches/java6/classlib/modules/beans/src/main/java >> /java/beans/Encoder.java Mon Sep 20 02:32:29 2010 >> @@ -64,7 +64,6 @@ import javax.swing.ToolTipManager; >> *

>> * >> */ >> -@SuppressWarnings("unchecked") >> public class Encoder { >> >> private static final Hashtable, PersistenceDelegate> delegates >> = new Hashtable, PersistenceDelegate>(); >> @@ -105,6 +104,7 @@ public class Encoder { >> delegates.put(String.class, new StringPersistenceDelegate()); >> delegates.put(Proxy.class, new ProxyPersistenceDelegate()); >> delegates.put(Date.class, new UtilDatePersistenceDelegate()); >> + delegates.put(Enum.class, new LangEnumPersistenceDelegate()); >> } >> >> private ExceptionListener listener = defaultExListener; >> @@ -199,9 +199,10 @@ public class Encoder { >> registerSwingPDs(); >> isInitilizedSwing = true; >> } >> - >> + >> // registered delegate >> - PersistenceDelegate registeredPD = delegates.get(type); >> + PersistenceDelegate registeredPD = Enum.class.isAssignableFrom(type) >> ? delegates >> + .get(Enum.class) : delegates.get(type); >> if (registeredPD != null) { >> return registeredPD; >> } >> @@ -423,7 +424,7 @@ public class Encoder { >> if (o == null) { >> return; >> } >> - Class type = o.getClass(); >> + Class type = o.getClass(); >> getPersistenceDelegate(type).writeObject(o, this); >> } >> >> >> Added: harmony/enhanced/java/branches/java6/classlib/modules/beans/src/main/j >> ava/java/beans/LangEnumPersistenceDelegate.java >> URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/java6/classl >> ib/modules/beans/src/main/java/java/beans/LangEnumPersistenceDelegate.java?re >> v=998763&view=auto >> ============================================================================= >> = >> --- harmony/enhanced/java/branches/java6/classlib/modules/beans/src/main/java >> /java/beans/LangEnumPersistenceDelegate.java (added) >> +++ harmony/enhanced/java/branches/java6/classlib/modules/beans/src/main/java >> /java/beans/LangEnumPersistenceDelegate.java Mon Sep 20 02:32:29 2010 >> @@ -0,0 +1,28 @@ >> +/* >> + * Licensed to the Apache Software Foundation (ASF) under one or more >> + * contributor license agreements. See the NOTICE file distributed with >> + * this work for additional information regarding copyright ownership. >> + * The ASF licenses this file to You under the Apache License, Version 2.0 >> + * (the "License"); you may not use this file except in compliance with >> + * the License. You may obtain a copy of the License at >> + * >> + * http://www.apache.org/licenses/LICENSE-2.0 >> + * >> + * Unless required by applicable law or agreed to in writing, software >> + * distributed under the License is distributed on an "AS IS" BASIS, >> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. >> + * See the License for the specific language governing permissions and >> + * limitations under the License. >> + */ >> +package java.beans; >> + >> +class LangEnumPersistenceDelegate extends PersistenceDelegate { >> + >> + @Override >> + protected Expression instantiate(Object oldInstance, Encoder enc) { >> + Enum oldEnum = (Enum) oldInstance; >> + return new Expression(oldEnum, oldEnum.getClass(), "valueOf", >> + new Object[] { oldEnum.name() }); >> + } >> + >> +} >> >> Modified: harmony/enhanced/java/branches/java6/classlib/modules/beans/src/tes >> t/java/org/apache/harmony/beans/tests/java/beans/XMLEncoderTest.java >> URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/java6/classl >> ib/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/XMLE >> ncoderTest.java?rev=998763&r1=998762&r2=998763&view=diff >> ============================================================================= >> = >> --- harmony/enhanced/java/branches/java6/classlib/modules/beans/src/test/java >> /org/apache/harmony/beans/tests/java/beans/XMLEncoderTest.java (original) >> +++ harmony/enhanced/java/branches/java6/classlib/modules/beans/src/test/java >> /org/apache/harmony/beans/tests/java/beans/XMLEncoderTest.java Mon Sep 20 02: >> 32:29 2010 >> @@ -59,20 +59,6 @@ import org.xml.sax.helpers.XMLReaderFact >> */ >> public class XMLEncoderTest extends TestCase { >> >> - public static void main(String[] args) { >> - >> - // VerboseEncoder enc = new VerboseEncoder(); >> - // >> - // MockBean4Codec b = new MockBean4Codec(); >> - // b.getBornFriend().getZarr()[0] = 888; >> - // b.setNill(b.getBornFriend()); >> - // >> - // enc.writeObject(b); >> - // enc.flush(); >> - >> - junit.textui.TestRunner.run(XMLEncoderTest.class); >> - } >> - >> public static class DependencyBean { >> private int ints[] = new int[] { 1 }; >> >> @@ -120,9 +106,8 @@ public class XMLEncoderTest extends Test >> return result; >> } >> >> - @SuppressWarnings("unchecked") >> @Override >> - public PersistenceDelegate getPersistenceDelegate(Class type) { >> + public PersistenceDelegate getPersistenceDelegate(Class type) { >> PersistenceDelegate result = super.getPersistenceDelegate(type); >> return result; >> } >> @@ -328,6 +313,7 @@ public class XMLEncoderTest extends Test >> } >> */ >> >> + @SuppressWarnings({ "unchecked", "rawtypes" }) >> public void testWriteObject_MockTreeMap() throws Exception { >> Map> innerTreeMap = new MockTreeMapC >> lass(); >> TreeMap resultTreeMap = innerTreeMap.get("outKey"); >> @@ -340,6 +326,29 @@ public class XMLEncoderTest extends Test >> assertEquals(1, innerTreeMap.size()); >> } >> >> + public static enum Element { >> + ELEMENTA, ELEMENTB, ELEMENTC >> + } >> + >> + public static class MockEnumObject { >> + >> + Element element; >> + >> + public Element getElement() { >> + return element; >> + } >> + >> + public void setElement(Element element) { >> + this.element = element; >> + } >> + } >> + >> + public void testWriteObject_EnumObject() throws Exception { >> + MockEnumObject mockEnumObject = new MockEnumObject(); >> + mockEnumObject.setElement(Element.ELEMENTA); >> + assertCodedXML(mockEnumObject, "/xml/MockEnumObject.xml"); >> + } >> + >> public void testClose() { >> ByteArrayOutputStream out = new ByteArrayOutputStream() { >> boolean closeCalled = false; >> @@ -783,9 +792,8 @@ public class XMLEncoderTest extends Test >> final Object object = new Object(); >> e.setPersistenceDelegate(AType.class, >> new DefaultPersistenceDelegate() { >> - @SuppressWarnings("unchecked") >> @Override >> - protected void initialize(Class type, >> + protected void initialize(Class type, >> Object oldInstance, Object newInstance, >> Encoder out) { >> out.writeExpression(new Expression(object, >> >> Added: harmony/enhanced/java/branches/java6/classlib/modules/beans/src/test/r >> esources/xml/MockEnumObject.xml >> URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/java6/classl >> ib/modules/beans/src/test/resources/xml/MockEnumObject.xml?rev=998763&view=au >> to >> ============================================================================= >> = >> --- harmony/enhanced/java/branches/java6/classlib/modules/beans/src/test/reso >> urces/xml/MockEnumObject.xml (added) >> +++ harmony/enhanced/java/branches/java6/classlib/modules/beans/src/test/reso >> urces/xml/MockEnumObject.xml Mon Sep 20 02:32:29 2010 >> @@ -0,0 +1,10 @@ >> + >> + >> + >> + >> + >> +ELEMENTA >> + >> + >> + >> + >> \ No newline at end of file >> > Hi Mark, Thank you very much!