You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by Mark Hindess <ma...@googlemail.com> on 2010/09/20 10:17:29 UTC
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/
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 <20...@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;
> * </p>
> *
> */
> -@SuppressWarnings("unchecked")
> public class Encoder {
>
> private static final Hashtable<Class<?>, PersistenceDelegate> delegates
> = new Hashtable<Class<?>, 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<String, TreeMap<String, String>> 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 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<java version="${version}" class="java.beans.XMLDecoder">
> + <object class="${classname}">
> + <void property="element">
> + <object class="org.apache.harmony.beans.tests.java.beans.XMLEncoderTest$E
> lement" method="valueOf">
> + <string>ELEMENTA</string>
> + </object>
> + </void>
> + </object>
> +</java>
> \ No newline at end of file
>
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/
Posted by Kevin Zhou <zh...@gmail.com>.
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<20...@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;
>> *</p>
>> *
>> */
>> -@SuppressWarnings("unchecked")
>> public class Encoder {
>>
>> private static final Hashtable<Class<?>, PersistenceDelegate> delegates
>> = new Hashtable<Class<?>, 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<String, TreeMap<String, String>> 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 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +<java version="${version}" class="java.beans.XMLDecoder">
>> +<object class="${classname}">
>> +<void property="element">
>> +<object class="org.apache.harmony.beans.tests.java.beans.XMLEncoderTest$E
>> lement" method="valueOf">
>> +<string>ELEMENTA</string>
>> +</object>
>> +</void>
>> +</object>
>> +</java>
>> \ No newline at end of file
>>
>
Hi Mark,
Thank you very much!